查看完整版本 : AlphaZero

assembly.jc 2017-12-7 03:55 PM

AlphaZero

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

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

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

xianrenb 2017-12-7 04:27 PM

[quote]原帖由 [i]assembly.jc[/i] 於 2017-12-7 03:55 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472046379&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
DeepMind 又發表新論文,今次是通用的棋類 AI。詳情可看下列報導。

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

論文中提到自我對奕用上 5 ... [/quote]

強!
只約略閱讀了。
但:
[url=https://arxiv.org/pdf/1712.01815.pdf]https://arxiv.org/pdf/1712.01815.pdf[/url]
[quote]...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....[/quote]

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

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

ncream 2017-12-7 06:46 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-12-7 04:27 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472047928&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]


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


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

我估到個取巧原因。
只要 AlphaZero training 時所用資料中的開局走法 ... [/quote]

當然唔係咁。

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

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

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

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

xianrenb 2017-12-7 07:13 PM

[quote]原帖由 [i]ncream[/i] 於 2017-12-7 06:46 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472053522&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]


當然唔係咁。

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

依家最新情況極可能係Alphazero 已睇穿晒整個19x19棋盤。同 ... [/quote]

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

xianrenb 2017-12-8 08:52 AM

或者看錯了一點,但同時前面資料上有缺失。
[url=https://en.wikipedia.org/wiki/Stockfish_(chess)#Stockfish_versus_AlphaZero]https://en.wikipedia.org/wiki/Stockfish_(chess)#Stockfish_versus_AlphaZero[/url]
[quote]...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]...[/quote]
如果按這段資料,是 Stockfish 根本無用到開局或殘局庫。

另一方面,其實 AlphaZero 的 training 或者不應該說是故意取巧,而是實質自動等效於前述的取巧。
因為一般自我對奕的 machine learning ,大概是每次對局一整局。
如整局用上 50 回合,即雙方共 100 着分出勝負。
training 的資料,大概就會是:
第 1 着前的局面,走第 1 着,100 着後,得勝。
第 2 着前的局面,走第 2 着,99 着後,得負。
第 3 着前的局面,走第 3 着,98 着後,得勝。
第 4 着前的局面,走第 4 着,97 着後,得負。
如此類推。
training 的目標,是用最少着數取勝及肯定敗時,(要對手)用最多着數。
換言之,這樣的 training 的效果,等於開局時有 100 着的算力!
下第一着的效果,對比來說,會像分析一定數量的人類棋手在比賽時走第一着的統計數據是走什麼。
第二着亦如此。
所以這樣的 training ,肯定比用 Alpha-beta Pruning 類的傳統棋類算法要優勝。
原因是開局能選的變化,其實很有限。
而 neural network 可以 train 到 100% match 到開局局面而考慮到數十回合後的效果。

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

xianrenb 2017-12-8 08:37 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-12-8 08:52 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472074489&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
或者看錯了一點,但同時前面資料上有缺失。
[url=https://en.wikipedia.org/wiki/Stockfish_]https://en.wikipedia.org/wiki/Stockfish_[/url](chess)#Stockfish_versus_AlphaZero

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

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

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

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

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

xianrenb 2017-12-18 01:50 PM

[quote]原帖由 [i]assembly.jc[/i] 於 2017-12-7 03:55 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472046379&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
DeepMind 又發表新論文,今次是通用的棋類 AI。詳情可看下列報導。

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

論文中提到自我對奕用上 5 ... [/quote]

有一點比較奇怪,就是 AlphaZero 沒有對戰中國象棋。
然而,西方人也不是不知道有中國象棋的:
[url=http://home.hccnet.nl/h.g.muller/XQ.html]http://home.hccnet.nl/h.g.muller/XQ.html[/url]
[quote]...all Chess variants, and Xiangqi is the obvously most important of those, greatly exceeding even western Chess in popularity....[/quote]

以我估計,很可能不是沒有試過以中國象棋作測試對象,而是實際效果相對另外兩款棋類的差太多。
原因可能是中國象棋有些相對比較古怪的規則,如撬馬腳、塞象眼、炮要隔子打一子,及王不見王但困於九宮等等。
這些特色規則,使中國象棋的局面變化,走多一着與走少一着可以有很大的差別。
換言之,即使有算法能有效學習一整個棋局每着與最終結局的關係,亦難以不論着數深度地來判斷上述特色規則相關的着法怎樣走才算好棋。
很可能還是要做 tree search 才能確定當中變化的實際效果。
而這卻算是 AlphaZero 的弱項。

Susan﹏汪汪 2017-12-18 03:48 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-12-18 01:50 PM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=472554113&ptid=27107630][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


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


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

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

然後可以試試例如eight queens puzzle

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

xianrenb 2017-12-18 07:23 PM

[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2017-12-18 03:48 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472558784&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]

之前darigold 提起prolog

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

然後可以試試例如eight queens puzzle [/quote]

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

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

Susan﹏汪汪 2017-12-18 07:30 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-12-18 07:23 PM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=472567444&ptid=27107630][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


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

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

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

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

Susan﹏汪汪 2017-12-18 07:36 PM

舉個例

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

大概會咁

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

sum([X|Xs], [Y|Ys]) :- 多位數加法
[/code]

然後AI係學習的是計算加法的規則
而不是我們寫死個規則落AI model裡面

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

xianrenb 2017-12-18 08:51 PM

[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2017-12-18 07:36 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=472567888&ptid=27107630][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
舉個例

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

大概會咁


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

sum([X|Xs], [Y|Ys]) :- ... [/quote]

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

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

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

Susan﹏汪汪 2017-12-18 09:06 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-12-18 08:51 PM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=472570968&ptid=27107630][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


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

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

不過另一方面, AlphaZero 一類的程式表現,正正向我們人類說明,可能好多人類研究多年的正統知識 ... [/quote]
唔係統計
係Logic 的描述語言

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

[/code]
第一行係空集

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

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

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

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

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

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

Susan﹏汪汪 2017-12-18 09:09 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-12-18 08:51 PM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=472570968&ptid=27107630][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


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

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

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

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

stupidsing 2017-12-19 08:52 AM

sum([0|A], [0|B], [0|C]) :- sum(A, B, C).
sum([0|A], [1|B], [1|C]) :- sum(A, B, C).
sum([1|A], [0|B], [1|C]) :- sum(A, B, C).
sum([1|A], [1|B], [0|D]) :- sum(A, B, C), sum(C, [1], D).
sum([], A, A).
sum(A, [], A).

LSB 行先就易寫。好似係。
頁: [1]
查看完整版本: AlphaZero