阿爾法狗的工作原理及核心技術(shù)
阿爾法圍棋(AlphaGo)是第一個(gè)擊敗人類職業(yè)圍棋選手、第一個(gè)戰(zhàn)勝圍棋世界冠軍的人工智能程序,由谷歌(Google)旗下DeepMind公司戴密斯·哈薩比斯領(lǐng)銜的團(tuán)隊(duì)開(kāi)發(fā)。
那么阿爾法狗的工作原理是什么?相關(guān)技術(shù)又有哪些呢?下面讓我們一起來(lái)看看。
阿爾法狗工作原理阿爾法圍棋(AlphaGo)為了應(yīng)對(duì)圍棋的復(fù)雜性,結(jié)合了監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)的優(yōu)勢(shì)。它通過(guò)訓(xùn)練形成一個(gè)策略網(wǎng)絡(luò)(policynetwork),將棋盤上的局勢(shì)作為輸入信息,并對(duì)所有可行的落子位置生成一個(gè)概率分布。然后,訓(xùn)練出一個(gè)價(jià)值網(wǎng)絡(luò)(valuenetwork)對(duì)自我對(duì)弈進(jìn)行預(yù)測(cè),以-1(對(duì)手的絕對(duì)勝利)到1(AlphaGo的絕對(duì)勝利)的標(biāo)準(zhǔn),預(yù)測(cè)所有可行落子位置的結(jié)果。這兩個(gè)網(wǎng)絡(luò)自身都十分強(qiáng)大,而阿爾法圍棋將這兩種網(wǎng)絡(luò)整合進(jìn)基于概率的蒙特卡羅樹(shù)搜索(MCTS)中,實(shí)現(xiàn)了它真正的優(yōu)勢(shì)。新版的阿爾法圍棋產(chǎn)生大量自我對(duì)弈棋局,為下一代版本提供了訓(xùn)練數(shù)據(jù),此過(guò)程循環(huán)往復(fù)。
在獲取棋局信息后,阿爾法圍棋會(huì)根據(jù)策略網(wǎng)絡(luò)(policynetwork)探索哪個(gè)位置同時(shí)具備高潛在價(jià)值和高可能性,進(jìn)而決定最佳落子位置。在分配的搜索時(shí)間結(jié)束時(shí),模擬過(guò)程中被系統(tǒng)最頻繁考察的位置將成為阿爾法圍棋的最終選擇。在經(jīng)過(guò)先期的全盤探索和過(guò)程中對(duì)最佳落子的不斷揣摩后,阿爾法圍棋的搜索算法就能在其計(jì)算能力之上加入近似人類的直覺(jué)判斷。
圍棋棋盤是19x19路,所以一共是361個(gè)交叉點(diǎn),每個(gè)交叉點(diǎn)有三種狀態(tài),可以用1表示黑子,-1表示白字,0表示無(wú)子,考慮到每個(gè)位置還可能有落子的時(shí)間、這個(gè)位置的氣等其他信息,我們可以用一個(gè)361*n維的向量來(lái)表示一個(gè)棋盤的狀態(tài)。我們把一個(gè)棋盤狀態(tài)向量記為s。
當(dāng)狀態(tài)s下,我們暫時(shí)不考慮無(wú)法落子的地方,可供下一步落子的空間也是361個(gè)。我們把下一步的落子的行動(dòng)也用361維的向量來(lái)表示,記為a。
這樣,設(shè)計(jì)一個(gè)圍棋人工智能的程序,就轉(zhuǎn)換成為了,任意給定一個(gè)s狀態(tài),尋找最好的應(yīng)對(duì)策略a,讓你的程序按照這個(gè)策略走,最后獲得棋盤上最大的地盤。
阿爾法狗三大核心技術(shù)AlphaGo結(jié)合了3大塊技術(shù):先進(jìn)的搜索算法、機(jī)器學(xué)習(xí)算法(即強(qiáng)化學(xué)習(xí)),以及深度神經(jīng)網(wǎng)絡(luò)。這三者的關(guān)系大致可以理解為:
1、蒙特卡洛樹(shù)搜索(MCTS)是大框架
實(shí)質(zhì)上可以看成一種增強(qiáng)學(xué)習(xí)
蒙特卡羅樹(shù)搜索(MCTS)會(huì)逐漸的建立一顆不對(duì)稱的樹(shù)。可以分為四步并反復(fù)迭代:
?。?)選擇
從根節(jié)點(diǎn),也就是要做決策的局面R出發(fā)向下選擇一個(gè)最急迫需要被拓展的節(jié)點(diǎn)T;局面R是第一個(gè)被檢查的節(jié)點(diǎn),被檢查的節(jié)點(diǎn)如果存在一個(gè)沒(méi)有被評(píng)價(jià)過(guò)的招式m,那么被檢查的節(jié)點(diǎn)在執(zhí)行m后得到的新局面就是我們所需要展開(kāi)的T;如果被檢查的局面所有可行的招式已經(jīng)都被評(píng)價(jià)過(guò)了,那么利用ucb公式得到一個(gè)擁有最大ucb值的可行招式,并且對(duì)這個(gè)招式產(chǎn)生的新局面再次進(jìn)行檢查;如果被檢查的局面是一個(gè)游戲已經(jīng)結(jié)束的游戲局面,那么直接執(zhí)行步驟4;通過(guò)反復(fù)的進(jìn)行檢查,最終得到一個(gè)在樹(shù)的最底層的最后一次被檢查的局面c和它的一個(gè)沒(méi)有被評(píng)價(jià)過(guò)的招式m,執(zhí)行步驟2。
?。?)拓展
對(duì)于此時(shí)存在于內(nèi)存中的局面c,添加一個(gè)它的子節(jié)點(diǎn)。這個(gè)子節(jié)點(diǎn)由局面c執(zhí)行招式m而得到,也就是T。
(3)模擬
從局面T出發(fā),雙方開(kāi)始隨機(jī)的落子。最終得到一個(gè)結(jié)果(win/lost),以此更新T節(jié)點(diǎn)的勝利率。
?。?)反向傳播
在T模擬結(jié)束之后,它的父節(jié)點(diǎn)c以及其所有的祖先節(jié)點(diǎn)依次更新勝利率。一個(gè)節(jié)點(diǎn)的勝利率為這個(gè)節(jié)點(diǎn)所有的子節(jié)點(diǎn)的平均勝利率。并從T開(kāi)始,一直反向傳播到根節(jié)點(diǎn)R,因此路徑上所有的節(jié)點(diǎn)的勝利率都會(huì)被更新。
之后,重新從第一步開(kāi)始,不斷地進(jìn)行迭代。使得添加的局面越來(lái)越多,則對(duì)于R所有的子節(jié)點(diǎn)的勝利率也越來(lái)越準(zhǔn)。最后,選擇勝利率最高的招式。
實(shí)際應(yīng)用中,mcts還可以伴隨非常多的改進(jìn)。我描述的這個(gè)算法是mcts這個(gè)算法族中最出名的uct算法,現(xiàn)在大部分著名的ai都在這個(gè)基礎(chǔ)上有了大量的改進(jìn)了?! ?、強(qiáng)化學(xué)習(xí)(RL)是學(xué)習(xí)方法,用來(lái)提升AI的實(shí)力。
2、強(qiáng)化學(xué)習(xí) (RL) 是學(xué)習(xí)方法,用來(lái)提升AI的實(shí)力
強(qiáng)化學(xué)習(xí)是從動(dòng)物學(xué)習(xí)、參數(shù)擾動(dòng)自適應(yīng)控制等理論發(fā)展而來(lái),其基本原理是:
如果Agent的某個(gè)行為策略導(dǎo)致環(huán)境正的獎(jiǎng)賞(強(qiáng)化信號(hào)),那么Agent以后產(chǎn)生這個(gè)行為策略的趨勢(shì)便會(huì)加強(qiáng)。Agent的目標(biāo)是在每個(gè)離散狀態(tài)發(fā)現(xiàn)最優(yōu)策略以使期望的折扣獎(jiǎng)賞和最大。
強(qiáng)化學(xué)習(xí)把學(xué)習(xí)看作試探評(píng)價(jià)過(guò)程,Agent選擇一個(gè)動(dòng)作用于環(huán)境,環(huán)境接受該動(dòng)作后狀態(tài)發(fā)生變化,同時(shí)產(chǎn)生一個(gè)強(qiáng)化信號(hào)(獎(jiǎng)或懲)反饋給Agent,Agent根據(jù)強(qiáng)化信號(hào)和環(huán)境當(dāng)前狀態(tài)再選擇下一個(gè)動(dòng)作,選擇的原則是使受到正強(qiáng)化(獎(jiǎng))的概率增大。選擇的動(dòng)作不僅影響立即強(qiáng)化值,而且影響環(huán)境下一時(shí)刻的狀態(tài)及最終的強(qiáng)化值。
強(qiáng)化學(xué)習(xí)不同于連接主義學(xué)習(xí)中的監(jiān)督學(xué)習(xí),主要表現(xiàn)在教師信號(hào)上,強(qiáng)化學(xué)習(xí)中由環(huán)境提供的強(qiáng)化信號(hào)是Agent對(duì)所產(chǎn)生動(dòng)作的好壞作一種評(píng)價(jià)(通常為標(biāo)量信號(hào)),而不是告訴Agent如何去產(chǎn)生正確的動(dòng)作。由于外部環(huán)境提供了很少的信息,Agent必須靠自身的經(jīng)歷進(jìn)行學(xué)習(xí)。通過(guò)這種方式,Agent在行動(dòng)一一評(píng)價(jià)的環(huán)境中獲得知識(shí),改進(jìn)行動(dòng)方案以適應(yīng)環(huán)境。
強(qiáng)化學(xué)習(xí)系統(tǒng)學(xué)習(xí)的目標(biāo)是動(dòng)態(tài)地調(diào)整參數(shù),以達(dá)到強(qiáng)化信號(hào)最大。若已知r/A梯度信息,則可直接可以使用監(jiān)督學(xué)習(xí)算法。因?yàn)閺?qiáng)化信號(hào)r與Agent產(chǎn)生的動(dòng)作A沒(méi)有明確的函數(shù)形式描述,所以梯度信息r/A無(wú)法得到。因此,在強(qiáng)化學(xué)習(xí)系統(tǒng)中,需要某種隨機(jī)單元,使用這種隨機(jī)單元,Agent在可能動(dòng)作空間中進(jìn)行搜索并發(fā)現(xiàn)正確的動(dòng)作。
3、深度神經(jīng)網(wǎng)絡(luò)(DNN)是工具,用來(lái)擬合局面評(píng)估函數(shù)和策略函數(shù)
深度神經(jīng)網(wǎng)絡(luò),也被稱為深度學(xué)習(xí),是人工智能領(lǐng)域的重要分支,根據(jù)麥卡錫(人工智能之父)的定義,人工智能是創(chuàng)造像人一樣的智能機(jī)械的科學(xué)工程。
通過(guò)比較當(dāng)前網(wǎng)絡(luò)的預(yù)測(cè)值和我們真正想要的目標(biāo)值,再根據(jù)兩者的差異情況來(lái)更新每一層的權(quán)重矩陣(比如,如果網(wǎng)絡(luò)的預(yù)測(cè)值高了,就調(diào)整權(quán)重讓它預(yù)測(cè)低一些,不斷調(diào)整,直到能夠預(yù)測(cè)出目標(biāo)值)。因此就需要先定義“如何比較預(yù)測(cè)值和目標(biāo)值的差異”,這便是損失函數(shù)或目標(biāo)函數(shù)(lossfuncTIonorobjecTIvefuncTIon),用于衡量預(yù)測(cè)值和目標(biāo)值的差異的方程。lossfuncTIon的輸出值(loss)越高表示差異性越大。那神經(jīng)網(wǎng)絡(luò)的訓(xùn)練就變成了盡可能的縮小loss的過(guò)程。
所用的方法是梯度下降(Gradientdescent):通過(guò)使loss值向當(dāng)前點(diǎn)對(duì)應(yīng)梯度的反方向不斷移動(dòng),來(lái)降低loss。一次移動(dòng)多少是由學(xué)習(xí)速率(learningrate)來(lái)控制的。
總結(jié)這三大技術(shù)都不是AlphaGo或者DeepMind團(tuán)隊(duì)首創(chuàng)的技術(shù)。但是強(qiáng)大的團(tuán)隊(duì)將這些結(jié)合在一起,配合Google公司強(qiáng)大的計(jì)算資源,成就了歷史性的飛躍。