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