引用:
作者Godzilla2014
AlphaGo 下一步不是要「散功」嗎?
就是不輸入人類的棋譜,讓 AlphaGo 只從圍棋基本規則重新自我學習,不知到時會長成什麼東西出來....
|
現在的AlphaGo只能靠「輸入棋譜」來下棋或學棋,
因為他是「根據棋譜走向」來
計算概率
棋譜用在兩個地方:
對方的回合:AG看很多棋譜(數據)來猜(統計)對方可能怎麼走,縮小蒙利卡羅搜索樹的範圍
自己的回合:AG看很多棋譜(數據)參考人類通常怎麼走,選(統計)出最好的結果
拿掉棋譜(數據)它就沒辦法下(統計),等於整個砍掉重練一樣囉。
我照它的邏輯把它擬人化一下:
AG白棋後手的情形:
黑1:「我下在這裡」
白2:(看看棋譜裡有沒有這一手)
「恩恩,棋譜裡有,我看接下來怎麼走比較可能贏」
「棋盤360個位置,高手都這麼下,白2下這裡贏的機會最高,我下這裡」
「棋盤太多位置惹,把接下來全部的可能算完會算到世界末日,怎麼辦?」
「如果我知道你接下來會怎麼走,不就可以把不用考慮的位置剔除嗎?好!」
「但是不知道你會怎麼下,我先翻翻棋譜來猜你接下來會怎麼走」
(挑出數個勝率比較高的重點位置開始往下計算)
黑3:「我下在這裡」
白4:「恩恩,被我猜對惹,你果然這樣下,我下了三千萬場還沒看過其他落子比我選的位置還要重要滴」
「趁你在思考黑3的時候我已經把接下來算好惹,只要接下來我沒猜錯我都這樣走下去」
「我白4下在這裡」
(我先來猜你黑5會怎麼下,翻翻以前的對戰棋譜挑出幾個位置...)
黑5...
所以說,如果黑1下的地方不在AG棋譜裡就很有趣了(例如第一手天元),
不過就算前幾手AG沒猜中,它還是可以照棋譜慢慢修正,
或是跳回上一步重新計算就好了,
第四戰結束後,工程師看log檔發現AG
一開始認為白78手無關緊要,到它黑87手才發現事情大條了
就是說,AG算出「自己的勝率突然掉下來會故障」開始亂下
(這又是另一個問題:工程師可以看log檔發現軟體出錯,軟體有沒有辦法「意識」到自己犯錯)
AG黑棋先手的情形:
黑1:「我參考棋譜數據下在這裡,應該沒錯吧?」
「我開始猜你白2會怎麼下,翻翻以前的棋譜挑出幾個位置...」
白2:「我下在這裡」
黑3:「好險,他下的地方我有猜對,因為我一開始分數就落後(貼目)了」
(我不懂圍棋,不曉得黑子貼七目半是領先還是落後,反正設計師是以「最壞情況」來寫程式,
讓AG假定自己最後會「因為貼目而輸掉」的情況努力追上來比較保險)
(也許棋界可以用AG龐大的統計數據得出「黑子到底要貼幾目比較公平」的答案)
「根據棋譜其他高手的建議,把黑3下在這,然後開始猜你白4會下在哪」
白4:「我下在這裡」
黑5:「恩恩,我沒有猜錯,這個人下的棋應該和其他三千萬場的結果差不多,繼續走下去」
「我參考高手把黑5下在這裡,開始猜你白6會怎麼下」
白6...
第二戰AG黑37子有趣的地方是,他應該要找過去的棋譜考慮怎麼下
但是它卻找了一個過去很少人下的位置(1/10000)展開棋譜,意外發現勝率反而比較高,所以下在那
這個有點複雜,看看Google工程師怎麼解釋:
https://youtu.be/qUAmTYHEyM8?t=16m20s