註冊 登入



打印

[程式編寫] AlphaZero

AlphaZero E-mail 此主題給朋友

[隱藏]
DeepMind 又發表新論文,今次是通用的棋類 AI。詳情可看下列報導。

報導: https://tw.appledaily.com/new/realtime/20171207/1255053/
論文: https://arxiv.org/pdf/1712.01815.pdf

論文中提到自我對奕用上 5000個 1代 TPUs, Training neural network 就用上 64 個 2代 TPUs.



實用相關搜尋: APPLE network 論文
引用:
原帖由 assembly.jc 於 2017-12-7 03:55 PM 發表

DeepMind 又發表新論文,今次是通用的棋類 AI。詳情可看下列報導。

報導: https://tw.appledaily.com/new/realtime/20171207/1255053/
論文: https://arxiv.org/pdf/1712.01815.pdf

論文中提到自我對奕用上 5 ...
強!
只約略閱讀了。
但:
https://arxiv.org/pdf/1712.01815.pdf
引用:
...We also analysed the relative performance of AlphaZero’s MCTS search compared to the
state-of-the-art alpha-beta search engines used by Stockfish and Elmo. AlphaZero searches just
80 thousand positions per second in chess and 40 thousand in shogi, compared to 70 million
for Stockfish and 35 million for Elmo....
AlphaZero 相對 search position 得咁少,理論上無可能贏吧?

我估到個取巧原因。
只要 AlphaZero training 時所用資料中的開局走法深度超過對手程式而有絕對優勢。
training data 基本上會 100% match 到應用時的開局走法。
那麼這樣的全局對局, AlphaZero 便可以有絕對優勢的開局。
之後再走要輸或和,基本上就無可能了。






引用:
原帖由 xianrenb 於 2017-12-7 04:27 PM 發表



強!
只約略閱讀了。
但:
https://arxiv.org/pdf/1712.01815.pdf


AlphaZero 相對 search position 得咁少,理論上無可能贏吧?

我估到個取巧原因。
只要 AlphaZero training 時所用資料中的開局走法 ...
當然唔係咁。

Seach poistion愈少。代表學習得更好。棋力更高。因為盤數愈多。AI經驗愈多。好多明知唔會贏的步數唔會想,一開始就唔考慮飛走左。

依家最新情況極可能係Alphazero 已睇穿晒整個19x19棋盤。同佢捉棋可能只search幾千個position。

同人相似。但速度記憶遠勝人。

[ 本帖最後由 ncream 於 2017-12-7 06:49 PM 編輯 ]






免責聲明
本人所發表的文章,圖片、聲音、影片、超連結或其他,並不可靠,均不構成任何投資的邀約或建議!!!
引用:
原帖由 ncream 於 2017-12-7 06:46 PM 發表



當然唔係咁。

Seach poistion愈少。代表學習得更好。棋力更高。因為盤數愈多。AI經驗愈多。好多明知唔會贏的步數唔會想,一開始就唔考慮飛走左。

依家最新情況極可能係Alphazero 已睇穿晒整個19x19棋盤。同 ...
大路咁睇是 search position 越少即是 AI 算法做得越好。
但問題是, search 的層數點都同 search position 數目有關。
基本上可以用後者推算到前者,以及每層的分支數目。
當然可以某些分支到某一層就不分支,但這亦同時代表該層根本無(用到)“棋力”。
相對來說對手若用了“棋力”來分析之後的分支,就好有可能找到得勝之法。
如果話不重要的分支可以不分析的話,其實一般人或傳統棋類算法或多或少都有。
頂級棋類程式更不可能沒有類似功能。
所以結論是,一定是以某種方式取巧,才有可能以那樣大的 search position 數目差距來取勝。
不然的話,就是一次邪門表現。






回覆 引用 TOP

[隱藏]
或者看錯了一點,但同時前面資料上有缺失。
https://en.wikipedia.org/wiki/Stockfish_(chess)#Stockfish_versus_AlphaZero
引用:
...In December 2017, DeepMind's AlphaZero dominated Stockfish after just 4 hours of self-play, with no access to opening books or endgame tables.[26][27] Each program was given one minute's worth of thinking time per move. In 100 games from the normal start position AlphaZero won 25 games as white, won 3 as black, and tied the remaining 72.[28]...
如果按這段資料,是 Stockfish 根本無用到開局或殘局庫。

另一方面,其實 AlphaZero 的 training 或者不應該說是故意取巧,而是實質自動等效於前述的取巧。
因為一般自我對奕的 machine learning ,大概是每次對局一整局。
如整局用上 50 回合,即雙方共 100 茪壎X勝負。
training 的資料,大概就會是:
第 1 茷e的局面,走第 1 荂A100 茷寣A得勝。
第 2 茷e的局面,走第 2 荂A99 茷寣A得負。
第 3 茷e的局面,走第 3 荂A98 茷寣A得勝。
第 4 茷e的局面,走第 4 荂A97 茷寣A得負。
如此類推。
training 的目標,是用最少蚍い勝及肯定敗時,(要對手)用最多蚍ヾC
換言之,這樣的 training 的效果,等於開局時有 100 茠犖滮O!
下第一茠漁蘆G,對比來說,會像分析一定數量的人類棋手在比賽時走第一茠熔峟p數據是走什麼。
第二茈蝳p此。
所以這樣的 training ,肯定比用 Alpha-beta Pruning 類的傳統棋類算法要優勝。
原因是開局能選的變化,其實很有限。
而 neural network 可以 train 到 100% match 到開局局面而考慮到數十回合後的效果。

[ 本帖最後由 xianrenb 於 2017-12-8 08:27 PM 編輯 ]



實用相關搜尋: mac network IT 數據
引用:
原帖由 xianrenb 於 2017-12-8 08:52 AM 發表

或者看錯了一點,但同時前面資料上有缺失。
https://en.wikipedia.org/wiki/Stockfish_(chess)#Stockfish_versus_AlphaZero

如果按這段資料,是 Stockfish 根本無用到開局或殘局庫。

另一方面,其實 AlphaZer ...
如果前述說法正確,要人類或程式贏 AlphaZero 也不是無可能。

例如可以鬥解殘局, AlphaZero 很可能無 train 到某些特殊殘局的佈局形式。
如果單靠 search tree 的速度,就可能慢過人或別的程式。

如果鬥全局對局,就要開局中途故意走差一點的冷門棋,使局面走至 AlphaZero 正常對局 training 不會走至的分支。
然後再以十足棋力應付,就有機會取勝。

不過,說是容易,要做到就應該很難了。






回覆 引用 TOP

引用:
原帖由 assembly.jc 於 2017-12-7 03:55 PM 發表

DeepMind 又發表新論文,今次是通用的棋類 AI。詳情可看下列報導。

報導: https://tw.appledaily.com/new/realtime/20171207/1255053/
論文: https://arxiv.org/pdf/1712.01815.pdf

論文中提到自我對奕用上 5 ...
有一點比較奇怪,就是 AlphaZero 沒有對戰中國象棋。
然而,西方人也不是不知道有中國象棋的:
http://home.hccnet.nl/h.g.muller/XQ.html
引用:
...all Chess variants, and Xiangqi is the obvously most important of those, greatly exceeding even western Chess in popularity....
以我估計,很可能不是沒有試過以中國象棋作測試對象,而是實際效果相對另外兩款棋類的差太多。
原因可能是中國象棋有些相對比較古怪的規則,如撬馬腳、塞象眼、炮要隔子打一子,及王不見王但困於九宮等等。
這些特色規則,使中國象棋的局面變化,走多一蚖P走少一茈i以有很大的差別。
換言之,即使有算法能有效學習一整個棋局每蚖P最終結局的關係,亦難以不論蚍ぎ`度地來判斷上述特色規則相關的茠k怎樣走才算好棋。
很可能還是要做 tree search 才能確定當中變化的實際效果。
而這卻算是 AlphaZero 的弱項。






引用:
原帖由 xianrenb 於 2017-12-18 01:50 PM 發表



有一點比較奇怪,就是 AlphaZero 沒有對戰中國象棋。
然而,西方人也不是不知道有中國象棋的:
http://home.hccnet.nl/h.g.muller/XQ.html


以我估計,很可能不是沒有試過以中國象棋作測試對象,而是實際效 ...
之前darigold 提起prolog

汪汪一直諗緊
應該可以寫一套logic programming
個推論引擎用AI去做

然後可以試試例如eight queens puzzle

[ 本帖最後由 Susan﹏汪汪 於 2017-12-18 03:51 PM 編輯 ]






引用:
原帖由 Susan﹏汪汪 於 2017-12-18 03:48 PM 發表


之前darigold 提起prolog

汪汪一直諗緊
應該可以寫一套logic programming
個推論引擎用AI去做

然後可以試試例如eight queens puzzle
logic programming 我只聽說過 Prolog 。
有少少印象是接觸過,但現在已不太清楚是什麼來的了。
無記錯是內置了一種 tree search ,只要設定了條件,就能“自動”找 solution 。

但如果無理解錯,用其他電腦語言寫等效的 tree search ,可能更靈活。



實用相關搜尋: 電腦
[隱藏]
引用:
原帖由 xianrenb 於 2017-12-18 07:23 PM 發表



logic programming 我只聽說過 Prolog 。
有少少印象是接觸過,但現在已不太清楚是什麼來的了。
無記錯是內置了一種 tree search ,只要設定了條件,就能“自動”找 solution 。

但如果無理解錯,用其他電腦 ...
跟汪汪的理解差不多

但汪汪所思考的不是效率問題
而係prolog之類的語言是用讓機械理解問題的方式做描述

如果可以寫個AI引擎的話
或者會係真正意義的「教」AI去看問題
而不是我們單純提供sample 去training



實用相關搜尋: 電腦

回覆 引用 TOP

舉個例

可能如果要教AI去用人類的方法做數字加法
用二進制做例

大概會咁
複製內容到剪貼板
代碼:
sum([], []) :- []
sum([0], [0]) :- [0]
sum([1], [0]) :- [1]
sum([0], [1]) :- [1]
sum([1], [1]) :- [1, 0]

sum([X|Xs], [Y|Ys]) :- 多位數加法
然後AI係學習的是計算加法的規則
而不是我們寫死個規則落AI model裡面

[ 本帖最後由 Susan﹏汪汪 於 2017-12-18 07:37 PM 編輯 ]



實用相關搜尋: 學習
引用:
原帖由 Susan﹏汪汪 於 2017-12-18 07:36 PM 發表

舉個例

可能如果要教AI去用人類的方法做數字加法
用二進制做例

大概會咁


sum([], []) :- []
sum([0], [0]) :- [0]
sum([1], [0]) :- [1]
sum([0], [1]) :- [1]
sum([1], [1]) :- [1, 0]

sum([X|Xs], [Y|Ys]) :- ...
大概你說的是用類似統計的方法,從一堆資料中自動找出規則出來吧?

或許有正統方法做,不過這些我都不懂。

不過另一方面, AlphaZero 一類的程式表現,正正向我們人類說明,可能好多人類研究多年的正統知識,其實都有不足,甚至錯誤的地方。
很可能從頭從無任何基礎開始推敲方法,得出的結果會更理想。



實用相關搜尋: 程式
引用:
原帖由 xianrenb 於 2017-12-18 08:51 PM 發表



大概你說的是用類似統計的方法,從一堆資料中自動找出規則出來吧?

或許有正統方法做,不過這些我都不懂。

不過另一方面, AlphaZero 一類的程式表現,正正向我們人類說明,可能好多人類研究多年的正統知識 ...
唔係統計
係Logic 的描述語言
複製內容到剪貼板
代碼:
sum([], []) :- []
sum([0], [0]) :- [0]
sum([1], [0]) :- [1]
sum([0], [1]) :- [1]
sum([1], [1]) :- [1, 0]
第一行係空集

第二行係解釋緊0+0 = 0
第三同四行係解釋0+1 = 1

第五行係1+1 = 10(二進制)
呢步出現進位

最後的規則(太複雜唔識寫)
複製內容到剪貼板
代碼:
sum([X|Xs], [Y|Ys]) :- ?????????
係多位數的計算
裡面條式應該係有
A = sum(X, Y)
B = sum(Xs, Ys)
然後睇B係咪有進位需要加落去A到

電腦知道左呢幾條規則就會識做加法

有D似教小朋友點計加數一樣

[ 本帖最後由 Susan﹏汪汪 於 2017-12-18 09:10 PM 編輯 ]







回覆 引用 TOP

引用:
原帖由 xianrenb 於 2017-12-18 08:51 PM 發表



大概你說的是用類似統計的方法,從一堆資料中自動找出規則出來吧?

或許有正統方法做,不過這些我都不懂。

不過另一方面, AlphaZero 一類的程式表現,正正向我們人類說明,可能好多人類研究多年的正統知識 ...
正確來講係我們不會提供資料
只有描述個規則

然後我們向AI問問題、AI自己推論同回答



實用相關搜尋: 程式

回覆 引用 TOP

[按此隱藏 Google 建議的相符內容]





重要聲明:本討論區是以即時上載留言的方式運作,香港討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意 見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們。香港討論區有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ), 同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權 。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。


Copyright©2003- Discuss.com.hk Limited. All Right Reserved.
版權所有,不得轉載。