查看完整版本 : 棋力計算問題

xianrenb 2018-6-14 09:20 AM

棋力計算問題

在網上找了一些關於棋力的資料,分享一下並想問問大家一些問題。
[url=http://chess.fortherapy.co.uk/home/arduino-chess/]http://chess.fortherapy.co.uk/home/arduino-chess/[/url]
[quote]... The power is around 500 nps and i feel the level is 1600-1650 ELO....[/quote]
即是說用某種簡單硬件組成的國際象棋系統算力達每秒 500 個局面,能做到等級分 1600~1650 。
我想問大家這個說法合不合理?
中國象棋的情況又是否大致相同?

另外, nps 數值,應該每兩倍多幾多等級分左右呢?

關於國際象棋的找到一些層數的資料:
[url=https://chessprogramming.wikispaces.com/Depth]https://chessprogramming.wikispaces.com/Depth[/url]
4 ~ 9 層的等級分約為:
1235
1570
1826
2031
2208
2328

中國象棋的話,層數對應等級分會是如何呢?

謝謝大家。

xianrenb 2018-6-16 09:48 AM

[quote]原帖由 [i]xianrenb[/i] 於 2018-6-14 09:20 AM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=481985493&ptid=27508626][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]
在網上找了一些關於棋力的資料,分享一下並想問問大家一些問題。
[url=http://chess.fortherapy.co.uk/home/arduino-chess/]http://chess.fortherapy.co.uk/home/arduino-chess/[/url]

即是說用某種簡單硬件組成的國際象棋系統算力達每秒 500 個局面,能做到等級分 1600~1650 。
我想問大家這個說法合不合理?
中國象棋的情況又是否大致相同?

另外, nps 數值,應該每兩倍多幾多等級分左右呢?
... [/quote]

或者我試以數值算算看。
如果上面提到的 500 nps ,以 15 秒有效時間來算,就是 500 * 15 = 7500 個局面。
如果說有效分支數為每層 5 個,就等於 log(7500)/log(5) ~= 5.5 層。
而前面的列表, 5.5 層約等效於等級分 (1570 + 1826)/2 = 1698 分。
這樣看與 1600~1650 差別不大,看來頗為合理。

另外,找到:
[url=https://github.com/xqbase/eleeye/blob/master/README.md]https://github.com/xqbase/eleeye/blob/master/README.md[/url]
[quote]...ElephantEye 的设计重点在搜索算法,但在知识上比较欠缺。在2.8GHz的处理器上每秒可搜索约1,000,000个结点(包括常规搜索和静态搜索),一般的中局局面在1分钟内可搜索约11层。
...  ElephantEye 在联众、弈天等象棋对弈网站上作过测试,用等级分来衡量,联众网的战绩在2500分左右,弈天网快棋的战绩在2000分左右,慢棋在1500分左右。...[/quote]
按理無可能 11 層也是 1500 分。
而 11 層/1 分鐘的棋力,達 2500 分看來頗為合理。
因為前面列表, 9 層達 2328 分。
兩層之差而加多 200 分左右應該算正常。

大家認為上面的說法如何?

xianrenb 2018-6-17 09:29 AM

[quote]原帖由 [i]xianrenb[/i] 於 2018-6-16 09:48 AM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=482112525&ptid=27508626][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


或者我試以數值算算看。
如果上面提到的 500 nps ,以 15 秒有效時間來算,就是 500 * 15 = 7500 個局面。
如果說有效分支數為每層 5 個,就等於 log(7500)/log(5) ~= 5.5 層。
而前面的列表, 5.5 層約等效於等級分 (1570 + 1826)/2 = 1698 分。
這樣看與 1600~1650 差別不大,看來頗為合理。

另 ... [/quote]

或者直接以 2 樓的 ElephantEye 資料來算。
如果 60 秒、每秒 1,000,000 個局面達 11 層的話,每層等效分支數值是 10^(log(60 * 1,000,000)/11) ~= 5.095 。
而 11 層的等級分約為 2500 分。
前面 1 樓提到國際象棋 9 層等級分是 2328 ,假設中國象棋亦如是。
1 層的等級分差,應為 (2500 - 2328)/(11 - 9) = 86 。
換言之,等級分每差 50 分,等值於 50/86 ~= 0.5814 層,即算力變化 5.095^0.5814 ~= 2.577 倍。
那麼等級分與 nps 算力理應大約如以下換算:
等級分   nps
2500   1,000,000
2450   388,048
2400   150,581
2350   58,433
2300   22,675
2250   8,799
2200   3,414

[[i] 本帖最後由 xianrenb 於 2018-6-17 09:37 AM 編輯 [/i]]

xianrenb 2018-7-10 08:30 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-6-17 09:29 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=482169782&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


或者直接以 2 樓的 ElephantEye 資料來算。
如果 60 秒、每秒 1,000,000 個局面達 11 層的話,每層等效分支數值是 10^(log(60 * 1,000,000)/11) ~= 5.095 。
而 11 層的等級分約為 2500 分。
前面 1 樓提到國際象棋 9 層等級分是 2328 ,假設中國象棋亦如是。
1 層的等級分差,應為 (2500 - 23 ... [/quote]

或者 3 樓的算法有點問題。
這是假設層數與棋力/等級分數值成線性關係。

但是按 1 樓的資料, 5 層與 4 層差等級分 1570 - 1235 = 335 。
而 9 層與 8 層差等級分 2328 - 2208 = 120 。
這是超過兩倍的分別。
所以前面的說法就有點不合理。

或許這樣想, 3 層與 2 層的算力分別,肯定遠大於 101 層與 100 層算力的差別。
所以,我會認為比較正確的關係,可以是 log(層數)與等級分成線性關係。
(1570 - 1235)/(log(5) - log(4)) ~= 3457
(2328 - 2208)/(log(9) - log(8)) ~= 2346

3457/2346 ~= 1.474

雖然數值不大吻合,但比起原先的說法合理得多,頭尾差少於 50% 的分別。

那麼,按 3 樓的資料,大概以下算式應該符合:
層數 d = log(NPS * 60)/log(5.095)
等級分 s = (2328 - 2208)/(log(9) - log(8)) * (log(d) - log(9))  + 2328
即 s = 2346 * (log(log(NPS * 60)/log(5.095)) - log(9))  + 2328

那麼 NPS 與等級分的換算, 可以大概如下:
NPS   等級分
1,000,000   2532
300,000   2461
100,000   2392
30,000   2310
10,000   2230
3,000   2133

xianrenb 2018-7-11 08:42 AM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-10 08:30 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483520598&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


或者 3 樓的算法有點問題。
這是假設層數與棋力/等級分數值成線性關係。

但是按 1 樓的資料, 5 層與 4 層差等級分 1570 - 1235 = 335 。
而 9 層與 8 層差等級分 2328 - 2208 = 120 。
這是超過兩倍的分別。
所以前面的說法就有點不合理。

或許這樣想, 3 層與 2 層的算力分別,肯定遠大於 101 層與 100 層算力的差 ... [/quote]

不過, 1 樓提到的 500 NPS 達 1600~1650 等級分的情況與 4 樓提出的的算式不吻合。
思考過後,我認為 500 NPS 的資料中的比較,很可能是用不對等思考時間的。
估計可能是電腦以 500 NPS 思考 3 秒,對比人類思考 60 秒(或無限時間)。
這樣的話,算式約是:
s = 2346 * (log(log(500 * 3)/log(5.095)) - log(9))  + 2328
s ~= 1620

catjoke 2018-7-16 11:28 AM

理論分數意義不大,由它實戰操作一年至三年,
那最後的分數才算穩定

因為你沒有理會程式背後的價值觀,那個才是大問題!
只懂食子的程式,給你算到十二層也可以是垃圾。
但若預先有開局譜、圈套組合,可能計算到六層已經好多人中計。

至於拿其他棋類作比較,意義也會相差很遠,
國際象棋有升變,要是日本將棋,直頭可以把喫掉的棋子重新放回棋盤裏!

就算只是[size=5]5[/size]步照連殺,日本將棋考起你就考起你。
下面的殘局,由於有棋例,步兵打(放回棋盤時),不能直接將死對方!屬禁手唔畀行。

平時中國象棋的殘局,要計算十幾步連照殺(包括棄子)都覺得不難。
但現在顯得自己連心計也不懂!但這只是非常入門的殘局。

[img=350,600]https://img.eservice-hk.net/upload/2018/03/19/214510_ea3dc39ca0b2f6b5f17abddec1f0e9a4.png[/img]

xianrenb 2018-7-16 02:12 PM

[quote]原帖由 [i]catjoke[/i] 於 2018-7-16 11:28 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483854689&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
理論分數意義不大,由它實戰操作一年至三年,
那最後的分數才算穩定

因為你沒有理會程式背後的價值觀,那個才是大問題!
只懂食子的程式,給你算到十二層也可以是垃圾。
但若預先有開局譜、圈套組合,可能計算到六層已經好多人中計。

至於拿其他棋類作比較,意義也會相差很遠,
國際象棋有升變,要是日本將棋,直頭可以把喫掉的棋子重新放回棋盤裏!

就算只是5步照連殺,日本將棋考起你就考起你 ... [/quote]

我未玩過日本將棋。
好像說因規則原因,是一種超難的棋類。
看了點 [url=https://zh.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B_(%E6%97%A5%E6%9C%AC)]https://zh.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B_(%E6%97%A5%E6%9C%AC)[/url]
,是否兩隻“角”可以走出敵陣就可以升變做“龍馬”?
圖中是否有一隻“步”可以選擇打入?

不過點都好,要精於一款棋類,至少都要玩上一年吧?
我連規則都未了解清楚呢!
相對來說,我了解中國象棋的程度,至少足夠讓我寫好一個象棋程式。

或者你是不喜歡“只懂食子”的程式。
老實說,我一直下棋都不喜歡這種風格。
但是偶然之下,我的程式試用了一種特別的算法後就出現了這種下棋風格。
起初並非故意的而只是追求運算速度,但後來對比之後,發現這種算法的運算速度十分理想,也就保留至今。
想想亦很合理。
這種不斷吃棋的風格,即是不必每着算出最佳或必勝的最短走法。
而只要算出保險不敗的走法,也就是損耗對手棋力的走法,就已足夠。
我對電腦下快棋時,亦領略到這種方式省時間、保險得多。
否則好易超時。

另一方面,我相信我可以大膽說我已試過了好多種算法(的微調)。
我認為一個象棋程式的棋力,極大程度是按 NPS 而定,而非算法。
算法的影響總會有,但並不是想像般大。
很好能不及一、二百分等級分。
不過網上找到的象棋程式的等級分,可能被高估很多。
就算實際測過,很可能測計方法有問題。
因為用同一部電腦/硬件,要做出一定的分支而又一定的層數並不易。
要深兩三層或更多幾乎不可能。
而高棋力的程式,一分鐘十幾層應該好正常。
多一兩層棋力,未必足以盤盤必勝,可能有些和局。
那麼等級分就不應差超過 400 了。

catjoke 2018-7-16 08:37 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018/7/16 14:12 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483863352&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
我未玩過日本將棋。
好像說因規則原因,是一種超難的棋類。
看了點 [url=https://zh.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B_%28%E6%97%A5%E6%9C%AC%29]https://zh.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B_(%E6%97%A5%E6%9C%AC)[/url]
,是否兩隻「角」可以走出敵陣就可以升變做「龍馬」?
圖中是否有一隻「步」可以選擇打入?

不過點都好,要精於一款棋類,至少都要玩上一年吧?
我連規則都未瞭解清楚呢!
相對來說,我瞭解中國象棋的程度,至少足夠讓我寫好一個象棋程式。

或者你是不喜歡「只懂食子」的程式。
老實說,我一直下棋都不喜歡這種風格。
但是偶然之下,我的程式試用了一種特別的算法後就出現了這種下棋風格。
起初並非故意的而只是追求運算速度,但後來對比之後,發現這種算法的運算速度十分理想,也就保留至今。
想想亦很合理。
這種不斷吃棋的風格,即是不必每著算出最佳或必勝的最短走法。
而只要算出保險不敗的走法,也就是損耗對手棋力的走法,就已足夠。
我對電腦下快棋時,亦領略到這種方式省時間、保險得多。
否則好易超時。

另一方面,我相信我可以大膽說我已試過了好多種算法(的微調)。
我認為一個象棋程式的棋力,極大程度是按 NPS 而定,而非算法。
算法的影響總會有,但並不是想像般大。
很好能不及一、二百分等級分。
不過網上找到的象棋程式的等級分,可能被高估很多。
就算實際測過,很可能測計方法有問題。
因為用同一部電腦/硬件,要做出一定的分支而又一定的層數並不易。
要深兩三層或更多幾乎不可能。
而高棋力的程式,一分鐘十幾層應該好正常。
多一兩層棋力,未必足以盤盤必勝,可能有些和局。
那麼等級分就不應差超過 400 了。 [/quote]

無錯,角在 上方三行 再走子時有權選擇升變,或者保留唔升變。
龍馬的近身範圍跟玉一樣全方位,而步兵打基本上是棋盤第二行至近自己第九行任放空格
只是由於要行多一步必須升變,不能首放時放第一行。

而維基是很齊全的說明,棋譜怎樣記都寫清楚。

以圖為例:
引7二角成
9一王

引的意思是退後,最高的角退至7二的位,再升變為龍馬
變成龍馬和角互相保護對方兼將軍,令玉不能貪吃,只能逼至死角

但此時不能 9二步打 ,因為放步兵時已將死對方,屬禁著。

平時要你研究9個格內的殘局,只會覺得小菜一碟,
但日本將棋就係咁特別,子少都可以好深奧
由於日本將棋入面,金將、銀將、步兵、玉 都是附近行一格,
適應以後,再下中國象棋會令兵卒的運用自動提升

Apps 有專門研究連照殺的殘局,名字要搵:詰將棋
簡單 level 1 的詰將棋都可以考起好多人

catjoke 2018-7-17 11:49 AM

開估,五連照,9move完:

引7二角成
9一王
7三馬 (升變龍馬後,可以當玉咁後退一格)
8二金打
9二步打
8一王
7二角成 (今次升變埋另一隻送食)

食步兵的話:
9二王
右8二馬 (前面隻龍馬橫行一步)

金食龍馬的話:
金同 ( 棋譜記錄若吃最後行的位,同)
9一と成 (步兵升變と)

本來8二金打係阻了7三馬的控制範圍
送食後引走隻金,就用步兵升變殺棋

詰將棋好多時都要用到呢個戰術
所以就算係五連照殺
對初心者黎講,都變得好難搵到答案

感受到花園阿伯臨老才學象棋果種無力
用好多時間都學得好慢
錯漏百出

[[i] 本帖最後由 catjoke 於 2018-7-17 11:50 AM 編輯 [/i]]

rhwlam 2018-7-17 03:17 PM

[quote]原帖由 [i]catjoke[/i] 於 2018-7-17 11:49 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483914908&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
感受到花園阿伯臨老才學象棋果種無力
用好多時間都學得好慢
錯漏百出 [/quote]
小弟還沒那麼老, 已經覺得學中國象棋有心無力了. :smile_27:

catjoke 2018-7-17 08:43 PM

[quote]原帖由 [i]rhwlam[/i] 於 2018/7/17 15:17 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483925921&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
小弟還沒那麼老, 已經覺得學中國象棋有心無力了. :smile_27: [/quote]
一月有套動畫講日本將棋,並且介紹當中的戰術、佈局
才的起心肝去學
盤後分析而言,即使初哥到不得了,
一些有段位的高手一樣耐心研究感想戰
講解那一步可行,那些不可行
認真程度很高,沒有架子
不會因為屬秘密武器而避開不談

初學全盤可以搵一個有(雞仔)icon 的Android 將棋
它在棋子有點提醒可行的範圍
對零認識的人算係幾好上手的入門
到你能清楚記住每隻棋子能走的位置
就可以試其他apps

然而,詰將棋會令你覺得自己完全不是下棋的材料

xianrenb 2018-7-19 08:34 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-16 02:12 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483863352&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


我未玩過日本將棋。
好像說因規則原因,是一種超難的棋類。
看了點 [url=https://zh.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B_]https://zh.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B_[/url](%E6%97%A5%E6%9C%AC)
,是否兩隻“角”可以走出敵陣就可以升變做“龍馬”?
圖中是否有一隻“步”可以選擇打入?

不過點都好,要精於一款棋類,至少都要玩上一年吧?
我連規則都未了解清楚呢!
相對 ... [/quote]

查過一些資料,我在 7 樓提到的等級分差 400 分內代表不可能全分勝負的說法看來是錯的。
雖然差 400 分已經很大機會(應該 > 90%)是必分勝負(不計和),但並不是這樣算。
應該是差 800 分或以上才可以是必分勝負(無和)。
參考:
[url=https://en.wikipedia.org/wiki/Elo_rating_system#Performance_rating]https://en.wikipedia.org/wiki/Elo_rating_system#Performance_rating[/url]

xianrenb 2018-7-19 08:45 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-19 08:34 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=484062180&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


查過一些資料,我在 7 樓提到的等級分差 400 分內代表不可能全分勝負的說法看來是錯的。
雖然差 400 分已經很大機會(應該 > 90%)是必分勝負(不計和),但並不是這樣算。
應該是差 800 分或以上才可以是必分勝負(無和)。
參考:
[url=https://en.wikipedia.org/wiki/Elo_rating_system#Performance_rating]https://en.wikipedia.org/wiki/Elo_rating_system#Performance_rating[/url] ... [/quote]

不過知道這點就有趣了。
[url=http://home.hccnet.nl/h.g.muller/XQucci.html]http://home.hccnet.nl/h.g.muller/XQucci.html[/url] 列出了一次象棋程式測試比較的結果。
最低分的為 2175 ,最高的為 2869 。
好明顯是相差不足 800 分的。
間接部份印證我之前的說法,即象棋程式棋力的重點應為 NPS 數值。
不同的算法應該影響不會太大,即不會做成必分勝負般差距的棋力變化。
不過表中無 NPS 數值,不能就此確定我的說法完全正確。

[[i] 本帖最後由 xianrenb 於 2018-7-21 08:44 AM 編輯 [/i]]

rhwlam 2018-7-23 10:30 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-11 08:42 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483544607&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
不過, 1 樓提到的 500 NPS 達 1600~1650 等級分的情況與 4 樓提出的的算式不吻合。
思考過後,我認為 500 NPS 的資料中的比較,很可能是用不對等思考時間的。
估計可能是電腦以 500 NPS 思考 3 秒,對比人類思考 60 秒(或無限時間)。
這樣的話,算式約是:
s = 2346 * (log(log(500 * 3)/log(5.095)) - l ... [/quote]
姑勿論是否合理, 小弟也試一下個計算.
如果一位特級大師能於每個盤面建構一個思考棋路樹, 當中棋路樹有300個節點(其實可能連100個節點也沒有)應該是極限了吧.
那麼只對應3.5層, 而等級分為1366分.
如果人類對盤面的認知/判斷可以將等級分推上最多800分, 即特大的等級分最多為2166分.
那麼人類特大應該不如[url=http://home.hccnet.nl/h.g.muller/XQucci.html]http://home.hccnet.nl/h.g.muller/XQucci.html[/url]列出的最弱的程式(jiaolong 1.0, 2175分)了.
但是, 奇怪了, 請看這個連結([url]https://zhidao.baidu.com/question/89613000.html[/url]). 別人有說人類特大比旋風(cyclone 2009)的15層(其估計的等級分為2848分)肯定再強一點.

這到底問題出在哪裡呢?

xianrenb 2018-7-24 09:10 AM

[quote]原帖由 [i]rhwlam[/i] 於 2018-7-23 10:30 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=484289555&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

姑勿論是否合理, 小弟也試一下個計算.
如果一位特級大師能於每個盤面建構一個思考棋路樹, 當中棋路樹有300個節點(其實可能連100個節點也沒有)應該是極限了吧.
那麼只對應3.5層, 而等級分為1366分.
如果人類對盤面的認知/判斷可以將等級分推上最多800分, 即特大的等級分最多為2166分.
那麼人類特大應該不如[url=http://home.hccnet.nl/h.g.muller]http://home.hccnet.nl/h.g.muller[/url] ... [/quote]

baidu 的連結中,有個 LV12 的使用者答案似乎合理些:
[quote]...不一定,12层有时就能算出正招。解排局时,有时要到17层。
最好是人机与特大下;纯机的话并不理想,和棋居多。
旋风虽然泼辣、控子能力强,但是飞刀还是比较弱的,特别是残局。...[/quote]

其實對於這個問題,我自己也約略想過,還是想不出絕對合理的原因。
但是前面對於層數的分析,還是應該合理。
即是稱得上象棋高手的話,應該要有 7 層或以上的算力。
依 1 樓資料,大約是 2031 分。
問題是,機器要有 7 層算力,每層等效分支為 5 的話,也要分析共 5^7 = 78125 個局面。
但真人下棋,大概不可能同樣分析 78125 個局面。
如果是有稱號的高手,應有的棋力還要高很多,應該要分析的局面也要多很多,就更不可能用前面的看法。

或許,會不會是統計學上的抽樣效果?
即是人類算棋,很可能中途層數分支數目很小,甚至只得抽樣一個分支。
但就算了很多層。
同時,該抽樣很可能很有代表性,又或者算是最佳的選擇。
換言之,人類算出的,可能是一個深度值很大的搜尋樹。
但是很分散,分支不齊,或者應該說有很大程度上的缺失。
而分析這個樹的結果,會是分析一個完整樹的近似效果。

xianrenb 2018-7-26 01:29 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-24 09:10 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=484305634&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


baidu 的連結中,有個 LV12 的使用者答案似乎合理些:


其實對於這個問題,我自己也約略想過,還是想不出絕對合理的原因。
但是前面對於層數的分析,還是應該合理。
即是稱得上象棋高手的話,應該要有 7 層或以上的算力。
依 1 樓資料,大約是 2031 分。
問題是,機器要有 7 層算力,每層等效分支為 5 的話,也要分析共 5^7 = 78125 個局面。
但真人 ... [/quote]

我在
[url=https://www.discuss.com.hk/viewthread.php?tid=27599503&extra=page%3D1]https://www.discuss.com.hk/viewthread.php?tid=27599503&extra=page%3D1[/url] 說明過我試了一些測試,說明一般程式,現時是無法模仿到人類下棋的思考模式的。

對此,我又想了想,會不會是人類思考棋着,不是每着獨立看,而是每次以一連串的組合/步法當作一個大動作來看?
即是例如,人類無論是自己下棋領悟到,還是看棋書得知某種殘局殺法,記入腦中就是一連串的步法。
思考另一盤棋時,會不自覺地與這些領悟到的局面比對。
如果有差不多的,合於該步法的,就會運用該一連串步法,連走數着。
即是有兩點重點,其一是人類可能同時間比對眼前局面與腦中過萬種局面而不自知。
而且想像中的局面每次變,也會作類似比對。
即是等效的局面分析速度,未必像一般人想像般低。
其二是,人類下棋,可能每十數着的步法,分為兩三串連串組合步法。
即是機器中的十數層分析,在人腦中可能只是兩三層的思考,一層等於幾層。

如此看來,機器不一定不可能模仿到人類的思考模式。
但看來不是用一般的電腦硬件,而是要高度平行運算。
要能同時比對大量資料,亦要找方法把連走步法的分析寫成程式才可。
或者 AlphaZero 實際等效做到的,就如上面所述般。

xianrenb 2018-7-26 05:55 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-26 01:29 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=484450279&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


我在
[url=https://www.discuss.com.hk/viewthread.php?tid=27599503&extra=page%3D1]https://www.discuss.com.hk/viewthread.php?tid=27599503&extra=page%3D1[/url] 說明過我試了一些測試,說明一般程式,現時是無法模仿到人類下棋的思考模式的。

對此,我又想了想,會不會是人類思考棋着,不是每着獨立看,而是每次以一連串的組合/步法當作一個大動作來看?
即是例如,人類無論是自己下棋領悟到,還是看棋書得知某種 ... [/quote]

補充一些,上面提到人類下棋思考的等效分析速度可以很高。
這裏舉個例方便大家理解。
例如人類知道《橘中秘》棄馬局的效果而遇到同一局面做黑方的話,立刻就知道不應吃紅馬。
這個不吃紅馬,其實可以相等於知道 20 層(舉例)之後,局面對黑很不利。
如果每層等效分支為 5 的話,約等於 5^20 ~= 9.537E13 個局面。
這個數字,應該遠超於任何正常象棋算法在正常條件運作下的效能。
人類知道這點,就不用花時間分析這麼多個局面,也有等效的思考結果。

xianrenb 2018-7-27 09:03 AM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-10 08:30 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=483520598&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


或者 3 樓的算法有點問題。
這是假設層數與棋力/等級分數值成線性關係。

但是按 1 樓的資料, 5 層與 4 層差等級分 1570 - 1235 = 335 。
而 9 層與 8 層差等級分 2328 - 2208 = 120 。
這是超過兩倍的分別。
所以前面的說法就有點不合理。

或許這樣想, 3 層與 2 層的算力分別,肯定遠大於 101 層與 100 層算力的差 ... [/quote]

補充 4 樓的看法。
如果程式與對戰棋手/機器是用相等時間限制的話,可以以下公式計算等效棋力/等級分::
s = 2346 * (log(log(NPS * 60)/log(5.095)) - log(9))  + 2328
但如果程式的結果是以有限時間(t 秒)運算,而對手是無時間的限制,例如將結果當作棋譜參考用的話,該結果可以以下公式計算等效棋力/等級分:
s = 2346 * (log(log(NPS * t)/log(5.095)) - log(9))  + 2328

例如 NPS = 30,000 , t = 7.5 秒的話:
s = 2346 * (log(log(30,000 * 7.5)/log(5.095)) - log(9))  + 2328
s ~= 2152

xianrenb 2018-8-28 01:00 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-7-19 08:34 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=484062180&ptid=27508626][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


查過一些資料,我在 7 樓提到的等級分差 400 分內代表不可能全分勝負的說法看來是錯的。
雖然差 400 分已經很大機會(應該 > 90%)是必分勝負(不計和),但並不是這樣算。
應該是差 800 分或以上才可以是必分勝負(無和)。
參考:
[url=https://en.wikipedia.org/wiki/Elo_rating_system#Performance_rating]https://en.wikipedia.org/wiki/Elo_rating_system#Performance_rating[/url] ... [/quote]

看來前文資料有些問題,相差 800 分等級分,按理論也許不一定是一方全勝。
前面表中的 p = 1.00 ,也許應為 0.99 。
可以參考:
[url=https://en.wikipedia.org/wiki/Elo_rating_system#Mathematical_details]https://en.wikipedia.org/wiki/Elo_rating_system#Mathematical_details[/url]
[url=http://www.xqbase.com/protocol/elostat.htm]http://www.xqbase.com/protocol/elostat.htm[/url]

如果對手比自己高約 800 等級分,自己勝率應約為 1/(1 + 10^(800/400)) = 1/101 ~= 0.01。
如果對手比自己低約 800 等級分,自己勝率應約為 1/(1 + 10^(-800/400)) = 1/1.01 ~= 0.99。
頁: [1]
查看完整版本: 棋力計算問題