作者stimim (qqaa)
看板GO
標題Re: [討論] 電腦弱點:中腹有打劫可能的複雜生死戰?
時間Mon Mar 14 17:56:38 2016
: 電腦好似還有一個問題就是落後時下出的各種大虧損無理手。當然可以理解電腦
: 的邏輯就是:這樣下你不應我就贏了所以勝率很高,但這對人類是沒用的。相對
: 於之前有人假設電腦落後會變更強因為要追回來,目前看起來反而是電腦落後就
: 走遠了,因為它的追棋方式對人類來說是毫無意義的只會讓自己越虧越多勝機越
: 渺茫。
其實如果我們假想自己是電腦,應該很容易可以理解這樣的行為。
在人的世界,當我們發現自己落後時,所用的方法可能是把局面弄的更複雜,
和對手比計算力;可能是採取守勢,等對手犯錯等等之類的。這些的前題是,
我們知道對手也是人,人在複雜的局面容易犯錯,人在慢長的棋局中很難每一
手都下的完美,可能這裡虧一點,那裡虧一點,最後就被追上了。
電腦呢?「他以為人的思考方式和他一樣」,所以,當他發現自己落後時,代
表在他所想的到的變化中,只要對手正確的回應,他都追不回來。
那他覺得對手會犯錯嗎?
1. 我想到了,為什麼他想不到
2. 如果他真的會下錯,那在每一種情況下都應該都有可能犯錯
=> 如果他每一種都有可能犯錯,那我當然下他犯錯後我得利最大的
所以我們在第四局會看到這些不可思議的棋。
換句話說,電腦並不知道「這一手很難,他可能想不到」這種事情,對於追回目
數的兩種選擇:
a) 這一手如果對手應錯了我得利 1 目
b) 這一手如果對手應錯了我得利 10 目
對人類來說,a 的難度可能遠大於 b ,所以我們下 a ,而不去下 b 。
但是這兩個選擇對電腦來說卻是 b > a ,
因為他覺得對手在 a b 兩個情況下犯錯的機率可能是差不多的。
以上是我對第四盤 87 手開始的解釋
(當然他在87手之後還是有比較正常的應手,所以這也不能完美的解釋他的行為)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.14.230.41
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GO/M.1457949401.A.F0F.html
1F:推 NaoGaTsu: 推這篇,實際上八九不離十。 03/14 18:04
2F:→ ilw4e: 對阿,所以才說這種機制對人類來說反而更容易維持優勢 03/14 18:07
3F:推 profyang: 對腦不是選得利最大的吧 是選勝率最大的 03/14 18:11
4F:→ goldduck: 如果這樣的話 那一開始就出現一堆這種棋了 但是可惜都沒 03/14 18:12
5F:→ goldduck: 有 03/14 18:12
6F:→ profyang: 你這假設是a和b犯錯率差不多 但是如果犯錯率不一樣呢? 03/14 18:12
7F:→ profyang: 更何況今天這盤電腦開始起笑的時候他還沒輸 就自己算不 03/14 18:12
8F:→ profyang: 清楚就開始發瘋了 03/14 18:13
首先,我們回憶一下 Demis (Deepmind CEO) 的 Twitter
thought it was doing well, but got confused on move 87.
We are in trouble now...
Mistake was on move 79, but #AlphaGo only came to that
realisation on around move 87
When I say 'thought' and 'realisation' I just mean the output of
#AlphaGo value net. It was around 70% at move 79 and then dived on move 87
他在這裡用了 "dived" ,我猜勝率可能只有 30% 之類的,
再來要說一下「勝率最大」這件事 -- 這其實是錯的。
在 paper 上說的其實是
Once the search is complete, the algorithm chooses the most visited move
from the root position.
當搜尋完成後,演算法會選擇「被造訪最多次」的下一手。
我記得古力在轉播時點目,應該差了 10 目以上,換句話說, AlphaGo 要覺得勝率高,
也是要追回十目才行。
現在有兩個分枝:
a 分枝有一手對手可能應錯,追回一目,所以勝率還是 30% 左右
b 分枝有一手對手可能應錯,追回十目,勝率一下回到 50%
在這種情況下,AlphaGo 可能會對 b 分枝更有興趣所以做了更多的搜尋,所以 b 分
枝被造訪了更多次,最後選擇了 b
※ 編輯: stimim (72.14.230.41), 03/14/2016 18:31:17
9F:→ ilw4e: 那邊人算覺得不明,也許電腦已經估自己勝率掉到很低了 03/14 18:17
10F:推 MicroB: 就是要把她打成豬頭連他媽(Aja大神)都不認得她才能逼瘋AG 03/14 18:20
11F:推 kurc: 推,觀念很接近這樣,因為電腦是自己和自己對練來做learning 03/14 18:23
12F:推 Verola: 邏輯上很合理 03/14 18:27
13F:→ vencil: 我也是這樣想,所以AlphaGo落後時反而可能下的跟豬一樣 03/14 18:35
14F:→ birdy590: 這程式根本從頭到尾都不知道什麼叫目數 03/14 18:36
15F:→ stimim: 他的確不知道,可是他覺得「會贏」,其實就是目數要比較多 03/14 18:38
16F:→ stimim: 所以如果一個變化的目數追不回來,value network 的分數 03/14 18:39
17F:→ stimim: 大概也不會太高 03/14 18:39
18F:推 anjackie: 所以其實alphago如果建立賽局理論的模型是否可修正bug? 03/14 19:11
19F:推 broodworld: 要到確定輸才會下怪,前幾盤落後棋盤大很會追 03/14 20:01
20F:推 pttview: 如果是這樣那對練時不就知道了... 03/14 20:30
21F:→ aaaba: 你的意思是alphaGo有“對手若應錯”的概念嗎?在論文哪裡? 03/14 20:57
我們所說的「對手應錯」,在 ALPHAGO 的理解應該是「對手沒有下出最好的一步」
但是我不確定電腦是否可以「合理的估算」這種事情發生的機率。
這裡所謂的合理是對人類而言合理。這種事情不跟其他人下棋,電腦自己跟自己下是
很難學到的。
在論文中,搜尋時,如果我們搜到盤面 s_t ,想要決定下一步 a_t ,
那決定方法是:
a_t = argmax_a (Q(s_t, a) + u(s_t, a))
Q(s_t, a) 是在盤面為 s_t 時,對可能的下一步 a 的評分。
而 u(s_t, a) 則是一個調整搜尋方向的函數,他和
1. policy network 的評分有關 (正相關)
2. 這個狀態被搜尋過幾次有關 (負相關)
所以對人類來說不可能下錯的地方(就假設是 s_t, a_e 好了),
可能 P(s_t, a_e) 很低,Q(s_t, a_e) 也很低,
但隨時間過去,搜過的點越來越多,就他一直沒被搜過,他的分數
可能就「相對的」高了,這個狀態就被搜到了。然後因為這一步讓
對手大損,value net 的評估就變好了,可能會讓他更想找這一個
分枝的後序,然後就壞掉了…
當然,這還是猜測,一切都要看 log 才會準。
※ 編輯: stimim (72.14.230.41), 03/15/2016 11:03:38