查看完整版本 : [雜談] 再說局面價值計算法

rhwlam 2018-9-3 08:34 PM

[雜談] 再說局面價值計算法

[b][u]這帖的最終目的是希望透過對局面價值的思考, 以提高自己的象棋[/u][/b][b][u]思考效率[/u][/b][b][u]和[/u][u]實戰水平.[/u][/b]

一年前, 小弟轉載了黃少龍提出的一種"局面價值計算法"([url=https://www.discuss.com.hk/viewthread.php?tid=26904041]https://www.discuss.com.hk/viewthread.php?tid=26904041[/url]).
另外, 小弟也在另一帖([url=https://www.discuss.com.hk/viewthread.php?tid=27643968]https://www.discuss.com.hk/viewthread.php?tid=27643968[/url])提出局面價值計算的重要性.

近來, 小弟花了點功夫修改了黃少龍的計算法. 大概的做法是先定立局面計算公式, 但當中的一些常數/參數還沒固定. 而把這些數值固定的方法, 是透過一百個已知優勢(大於+2分), 均勢, 或劣勢(小於-2分)的經典局面透過最優法擬合出來. 現將結果分享如下(當中的計算只應用於輪到我方走的局面).

[color=#ff0000][b]局面價值[/b][b] = 局面固有能 + 局面動能 + 局面控制勢能 + 局面威懾勢能[/b][/color]
[color=#ff0000][b]註:[/b] 這個新的計算方法對於人對象棋理解有相對高的聯繫, 而且計算比黃少龍的方法更簡單(當中的乘除數更方便心算), 甚至可以不用計算機大概估算出來. 對於一般愛好者在審局時(尤其是在看不棋局關鍵焦點時)有一定參考性.[/color]

[b]1. 棋子的固有能[/b][b]:[/b]
兵、卒= 1 分,   仕/相、士/象 = 2 分,   馬、炮= 4 分,   車 = 8 分
這個是根據擬合出來的數值取其四捨五入的整數. 很神奇, 這跟黃少龍提出的數值一致!
[u]局面的固有能為:  我方的[/u][u]現存強子總[/u][u]固有能 - 對方的[/u][u]現存強子總[/u][u]固有能[/u]

[b]2. 動能[/b][b]:[/b]
黃少龍提出的計算法是考慮車, 馬和炮的最大動能都是一樣(=1).
但是小弟將這個最大值改成一個未知數後, 發覺車和馬的動能最大值大概為2, 而炮的動能最大值大概為1. 一個比較方便的計算方式如下: [b][color=#ff0000]**[/color][/b]
車 = 可走步數 x 0.1 (10分之一),
馬 = 可走步數 x 0.25 (4分之一),
炮 = 可走步數 x 0.05 (20分之一)
[u]局面的動能為:  我方的現存強子總動能 - 對方的[/u][u]現存強子總[/u][u]動能[/u]
[color=#ff0000]**[/color] [b]補註:[/b] 若改為只考慮"[b]有效動能[/b]" (請看以下帖#10和#11), 車 = 可走步數 x 0.2, 馬 = 可走步數 x 0.5, 炮 = 可走步數 x 0.1

[b]3.[/b] [b]控制勢能[/b][b]:[/b]
這裡的改動比較大.
[attach]8728760[/attach]
我方棋子每點的控制 -- 對方九宮 = 0.5 分, 其他每個在對方藍框位置 = 0.1 分, 黃色範圍內的四個點 = 1 分
對方棋子每點的控制 -- 黃色範圍 = 0.5 分, 綠色範圍的四個點 = 0.5 分
[u]局面的控制能為:  我方的所有控制點的總分 [/u][u]- 對方的[/u][u]所有控制點的總分[/u]
(多子對於同一點的控制只算作一點的分數)

[b]4. 威懾勢能[/b][b]:[/b]
這裡的改動也比較大.
4a. 我方:
若現在局面我方可有吃子/兌子的著法, 因為我方有選擇權, 我們只考慮對我方有利的交換.
每一著法計算方法為"力子交換後我方所得的棋子固有能".
4b. 對方:
雖然現在的我方走棋, 但我們假想是變成對方走棋, 因為對方有選擇權, 對們只考慮對對方有利的交換.
每一著法計算方法為"力子交換後對方所得的棋子固有能".
[u]局面的威懾勢能為:  我方的所有交換著法的總分 x 1[/u][u] - 對方的[/u][u]所有[/u][u]交換著法的總分 x 0.5 [/u][b][color=#ff0000]***[/color][/b]
(因為對方不能立即走棋, 所以對方的權重參數(=0.5)比我方的數值(=1)要少.)

[b][color=#ff0000]***[/color][/b] [b]補註:[/b] 若是用作評價一著棋的價值, 應改為: [u]局面的威懾勢能為:  我方的所有交換著法的總分 x 0.5 - 對方的所有交換著法的總分 x 1[/u] (解釋請看帖#05和帖#09)

[[i] 本帖最後由 rhwlam 於 2019-4-3 02:33 PM 編輯 [/i]]

rhwlam 2018-9-4 10:23 AM

帖#01所提出的局面價值計算法可以對於[b][u]約80%[/u][/b]的局面優劣作出正確的判斷. 另外, 這個計算方法在將軍和單純捉子的狀態不適用; 比較合適的局面應該是相對靜態的中局.
所以說這只可以當作一個參考數值.

到底如何應用呢?
試舉一例, 若首著紅走炮二進七吃馬, 黑車9平8必然.
那麼當中局面價值變化應如何呢?
紅失一炮(-4分)及其動能(-0.6分), 而紅七路炮多了平一和平二兩著(+0.1分), 黑8路炮能多一格走法(-0.05分). 而黑方失去一馬(+4分)和其動能(+0.5分).
因此, 這樣的一個回合交換局面價值變化為-0.05分, 紅方沒有便宜.

另外, 首回合炮二平五 炮8平5的價值變化為0.6分(0.5分來自對捉中兵, 0.1分來自黑中卒前的控制), 而炮二平五 馬8進7的價值變化會是0分.
總的來說, [u]這個計算方法可以看出首著紅炮二平五比炮二進七要好.[/u]

[[i] 本帖最後由 rhwlam 於 2018-9-6 08:32 AM 編輯 [/i]]

xianrenb 2018-9-4 01:01 PM

[quote]原帖由 [i]rhwlam[/i] 於 2018-9-3 08:34 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486721324&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
一年前, 小弟轉載了黃少龍提出的一種"局面價值計算法"([url=https://www.discuss.com.hk/viewthread.php?tid=26904041]https://www.discuss.com.hk/viewthread.php?tid=26904041[/url]).
另外, 小弟也在另一帖([url=https://www.discuss.com.hk/viewthread.php?tid=27643968]https://www.discuss.com.hk/viewthread.php?tid=27643968[/url])提出局面價值計算的重要性.

近來, 小弟花了點功夫修改了黃少龍的計算法. 大概的做法是先 ... [/quote]

其實局面價值計算很難說某一種方法較好。
每一種方法,都總有一些根據。
某程度上可以說,可以定下某些分數計法,但分值由人工神經網絡因應訓練資料調節就不錯。
不過這種做法,一來複雜,二來要做大量訓練,所以我從未試過按這個方向研究過。

至於 rhwlam 兄列出的(固定分值)計算方法,看上去應該不錯。
不過對於過河兵卒的固有能未有特別處理,可能考慮上有所不足。
另一方面,計算上亦頗多步驟。
我看就算用程式來算,效能上或許會不夠理想。
以我理解,象棋小巫師在這方面是把分數計算減少至加減幾個數值就可變換局面(分數)。
相對來說,效能應會理想很多。

rhwlam 2018-9-4 02:09 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-9-4 13:01 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486752208&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
某程度上可以說,可以定下某些分數計法,但分值由人工神經網絡因應訓練資料調節就不錯。[/quote]
在這裡, 小弟是以100個經典局面在為參數的調節/訓練. 只是當中的數學模型並不是神經網絡, 而是另一個局面價值函數.

[quote]原帖由 [i]xianrenb[/i] 於 2018-9-4 13:01 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486752208&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
不過對於過河兵卒的固有能未有特別處理,可能考慮上有所不足。[/quote]
其實是有考慮到的. 兵卒過河在這裡不會影響固有能, 而是控制勢能增加了.

[quote]原帖由 [i]xianrenb[/i] 於 2018-9-4 13:01 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486752208&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
另一方面,計算上亦頗多步驟。[/quote]
對的...
若編程的話, 這個計算法也不太耗時(都只是加減乘除數), 但若是純人審局的話這個計算始終複雜.

rhwlam 2018-9-4 10:57 PM

帖#02提出的一個應用方法是基於不同著法在若干回合後的局面價值變化, 從而比較出一個較好的著法.
以紅方走子時, 以一個回合的推演來說, 可以看成以下步驟:
[b]當前紅方局面(價值) --> 紅方走子 --> 黑方走子 --> 預測紅方局面(價值)[/b]
但是, 當紅方走子後, 黑方走子前的時候會有局面價值呢? 此時, 輸到黑方走子, 所以局面價值應以黑方為"我方", 而對應的價值若是正數, 則為黑優 (所以我會要將這個數值乘以-1, 以方便比較). 如下:
[b]當前紅方局面(價值) --> 紅方走子 [/b][b]--> [u]預測黑方局面(價值) x -1[/u] [/b][b]--> 黑方走子 --> 預測紅方局面(價值)[/b]
這樣的話, 我們便可估計出紅方走了一著後的局面價值變化, 而不甪考慮黑方不同的應著. 即:
[b]當前紅方局面(價值) --> 紅方走子 [/b][b]--> [u]預測黑方局面(價值) x -1[/u][/b]
這種考慮方法很合理, 但是以純人計算的話, 仍會是很繁瑣, 難以以心算計算正確.

現在, 我們為了計算方便, 放棄了某程度的局面價值估計的準確性, 作出以下修攺:
[b]當前紅方局面(價值) --> 紅方走子 [/b][b]--> [u]預測黑方局面(價值), 但仍以紅方為"我方"[/u][/b]
當紅方下了一個著法後, 若我們仍以紅方為"我方"估計出走子後的局面價值, 那麼計算便會簡單一點了.

那麼我們便可以估計出一著棋的價值, 即:
[b]一著棋的價值 = 預測黑方局面價值(紅方為"我方") - 當前紅方局面價值[/b]

[b]注意:[/b] 這裡, 我們不用考慮整個局面的價值, 而是所走的一著棋對於局面價值的影響. 這樣的話心算會簡單一點.

另外, 因為這終歸是一個估算, 計算的時候我們可以只考慮比較重要的價值影響.
例如:
1. 如首著紅炮二平五, 威懾黑中卒(+1分), 再控制卒前的一格(+0.1分), 所以首炮二平五的價值為1.1分. 若黑應炮8平5, 這著對捉中兵可算有-0.5分的價值.
2. 如首回合炮二進七 車9平8, 大概是單純子力交換, 所以這個回合的價值大概是0分. (另外, 黑多了一著"有效著法", 所以其實是紅吃虧.)
3. 又如首回合炮二平五(+1.1分) 馬8進7, 當中的黑馬守中卒(-1分)同時也給出以後黑車9平8的可能(-0.1分), 所以這個著進馬大概也是-1.1分.

總的來說, 以這方式估計一著棋的價值, 其功用主要是讓像小弟這種不太懂棋的人能夠在對奕時的每個局面能夠選出一些較有"價值"的著法, 再加以思考, 從而選出當中最有把握的一著.

[[i] 本帖最後由 rhwlam 於 2018-9-6 08:33 AM 編輯 [/i]]

xianrenb 2018-9-5 07:53 PM

[quote]原帖由 [i]rhwlam[/i] 於 2018-9-4 10:57 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486781079&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
帖#02提出的一個應用方法是基於不同著法在若干回合後的局面價值變化, 從而比較出一個較好的著法.
以紅方走子時, 以一個回合的推演來說, 可以看成以下步驟:
當前紅方局面(價值) --> 紅方走子 --> 黑方走子 --> 預測紅方局面(價值)
但是, 當紅方走子後, 黑方走子前的時候會有局面價值呢? 此時, 輸到黑方走子, 所以局面價值應以黑方為"我方", 而對應的價值若是正數, 則為黑優 ... [/quote]

以我的理解,按前面解說,首着若炮二平五的話,計法有點不同。

首先看固有能,因為無吃子,所以不變。
然後看動能,本來炮在二路,然後變為五路,看來右炮少了 4 個目的地可選,左炮則少了 3 個目的地可選。
己方變化為 0.05 * (-4 - 3) = -0.35 。
黑砲則多了 1 個目的地可選。
對方變化為 0.05 * (1) = 0.05 。
跟着是控制勢能,多了 5 路卒前的一格。
己方變化為 0.1 * 1 = 0.1 。
對方變化為 0 。
最後是威懾勢能,原本紅二路炮可吃黑 8 路馬,然後變為可吃 5 路卒。
即是權重 * 己方變化,為 1 * (-4 + 1) = -3 。
而對方黑 8 路砲本來可吃紅二路馬,然後變為吃不到。
即是權重 * 對方變化,為 0.5 * (-4) = -2
總分變化 = -0.35 - (0.05) + 0.1 - (0) - 3 - (-2) =  -1.3 。

[[i] 本帖最後由 xianrenb 於 2018-9-5 08:19 PM 編輯 [/i]]

xianrenb 2018-9-5 09:00 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-9-5 07:53 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486830209&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


以我的理解,按前面解說,首着若炮二平五的話,計法有點不同。

首先看固有能,因為無吃子,所以不變。
然後看動能,本來炮在二路,然後變為五路,看來右炮少了 4 個目的地可選,左炮則少了 3 個目的地可選。
己方變化為 0.05 * (-4 - 3) = -0.35 。
黑砲則多了 1 個目的地可選。
對方變化為 0.05 * (1) = 0.05 。
跟着是控制勢能,多了 5 ... [/quote]

再想清楚些,發現 6 樓的分數變化算法還是出現問題/算錯了。
這是因為控制勢能及威懾勢能的算法,按前面所述,正常不是同一局面紅黑調轉(即轉換誰下下一着棋)就只乘一個正負號,而是用另一種算法或用不同的權重。

平心而論,這樣算的話,單算一着變化,普通人或我已感到困難了,如果實用上要算 4 、 5 着之後的變化,恐怕分數計算比正常棋路思考還要難很多。

rhwlam 2018-9-5 10:03 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-9-5 21:00 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486834172&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
平心而論,這樣算的話,單算一着變化,普通人或我已感到困難了,如果實用上要算 4 、 5 着之後的變化,恐怕分數計算比正常棋路思考還要難很多。[/quote]
感謝xianrenb兄細心閱讀這個計算.
是的, 如果老老實實人手完整計算的話, 的確很繁瑣.
(但若是電腦計算的話, 運算時間其實很短, 我已寫了個程式用作找出帖#01提出的所有數值, 所以這個我是肯定的.)
所以, 如果要應用於下棋的話, 只能如之前的簡化方法估計了.

rhwlam 2018-9-6 01:00 PM

現在延續帖#05的討論.

之前我們提到一個簡化計算一著棋的價值為:
[b]一著棋的價值 = 預測黑方局面價值(紅方為"我方") - 當前紅方局面價值[/b]

依同一簡化的思路, 我們也可提出另一種簡化方法(以黑方為"我方"), 即:
[b]紅方當前可選的一著棋的價值 = 預測黑方局面價值(黑方為"我方") - 當前局面價值[/b][b](黑方為"我方")[/b]

為其麼要提出這另一個簡化想法呢?
原因是當紅方真的走子後, 接著的走子方是黑方; 所以當紅方選了一著捉黑方一子後, 對於黑方而言, 黑方可以立即反應. 那麼黑方威懾勢能的權重應為1.0較合理, 而不是0.5.
但是, 另一方面, 若以控制勢能來看的話, 以紅方為"我方"計算的話可以引導紅方的棋子往黑方九宮靠進.

因此, 小弟其實想提出的著法價值計算其實是:
如帖#05一樣計算, 而唯一不同的是, 雙方威懾勢能的權重(1.0和0.5)應對調.

[color=#ff0000][b]註:[/b] 以上這個調整已在帖#01補上.[/color]

[[i] 本帖最後由 rhwlam 於 2018-9-6 01:04 PM 編輯 [/i]]

rhwlam 2018-9-7 12:16 AM

[b]以"著法價值"思考的一局[/b]

這裡, 小弟試以之前說的"著法價值"的方式跟象棋巫師業餘級(計算深度約6層)下一局.
當中每個回合, 我們嘗試只以最少的推演(最多推演一個著法往後的一至兩個回合)而選出"最有價值"的一著.
以下是對局(巫師執紅, 小弟執黑).

1. 炮八平五
[attach]8740361[/attach]
小弟會在以下每個回合列出一些可能的著法, 以及其估計"著法價值". 而最終選擇會以底線標出. 如下:
炮2平5(0.6), [u]馬2進3(1.1)[/u], 馬8進7(1.0), 炮8平5(0.6), 炮2平3(0.35), 車1進1(0.8)*...
* 車1進1的價值在下一回合有所討論.
1. ........ 馬2進3    2. 兵七進一
[attach]8740362[/attach]
卒7進1(0.1), 車1進1(0.2), 炮8平7(0.35), 炮2進2(0.6) [u]炮8平5(0.6)[/u]...
車1進1這一著可以多討論一下. 雖然車1進1後, 可以多橫移8格, 但時有意義的位置只有平4和平6兩個位置.
2. ........ 炮8平5    3. 馬八進七
[attach]8740363[/attach]
炮2進2(0.55), [u]馬8進7(0.35)[/u]*, 車1進1(0.2)...
馬8進7提供了以後車9平8的一著, 以後8路車的動能會提升(有增加~0.15分的可能); 另外馬8進7後也可考慮卒7進1增加馬2格的動能(+0.5分). 相對於炮2進2, 馬8進7是比較有"潛力"的, 長期對於局勢發展也比較好. 但是, 在這裡要看到馬8進7的好處, 我門至少要有一點點的推演能力(至少有一著的深度).
3. ........ 馬8進7    4. 馬二進三
[attach]8740364[/attach]
車9平8(0.15), [u]卒7進1(0.6)[/u]...
4. ........ 卒7進1    5. 炮二進四
[u]車9平8(1.75)[/u]
5. ........ 車9平8    6. 車一平二
[attach]8740365[/attach]
[u]馬7進6(0.85)[/u], 炮2進4(0.6)...
6. ........ 馬7進6    7. 車九進一
[attach]8740366[/attach]
[u]馬6進7(1.25)[/u], 車1進1(0.3), 炮2進4(0.35)...
7. ........ 馬6進7    8. 車九平八
[attach]8740367[/attach]
車1進1(0.3)*, 馬6進7(-1.5), 卒7進1(0.1), [u]炮2平1(0.25)[/u]...
*這裡我們若多考車1進1後, 紅可能炮二平七, 變成一個不平穩局面, 黑若接車8進9, 紅炮七進三 士4進5, 馬二退三, 紅得象(-2分). 所以這著雖然[b]表面價值[/b]為0.3分, 但[b]潛在價值[/b]郤是負分...
8. ........ 炮2平1    9. 炮二進一
[u]馬3退5(2)[/u]...
9. ........ 馬3退5   10. 炮二平九
其實, 此時是一個不平穩局面, 這裡不多討論了.
10. ...... 車8進9   11. 馬三退二
[attach]8740368[/attach]
初想一下, 車1進2(4.2), 象3進1(3.9)*...
另外, 馬7進5後是不平穩局面, 若紅接相三進五, 黑方會失去7路馬的動能(-1.5分)而紅炮的勢能也沒了(+1分), 但是下一著吃炮有所補償(+4分).
* 再想一下, 若車1進2或象3進1後, 紅當然炮五進四, 那麼之後黑中炮馬被牽不能動, 其實黑會再多損失馬和炮的所有動能和勢能(共約-1分)...
[b]調整後的價值估計:[/b] [u]馬7進5(3.5)[/u], 車1進2(3.2), 象3進1(2.9)
11. ...... 馬7進5   12. 相三進五
[u]車1進2(4.2)[/u]...
12. ...... 車1進2   13. 仕六進五
[u]馬5進7(0.75)[/u]...
13. ...... 馬5進7   14. 車八進四
[u]象7進9(1)[/u]...
14. ...... 象7進9   15. 馬二進三
[u]車1平4(2)[/u]...
15. ...... 車1平4   16. 馬三進四
[u]車4進6(0.1)[/u], 卒9進1(0.1)...
16. ...... 車4進6   17. 馬四進三
[attach]8740426[/attach]
[u]士6進5(0)[/u], 車4退2(0), 車4平3(0.4)*...
* 車4平3後只要多想一著, 便看見馬七進六, 詳細不多說了.
17. ...... 士6進5   18. 車八進四
[u]車4平3(0.4)[/u]...
18. ...... 車4平3   19. 車八平七
車3退1(4), [u]象9退7(4)[/u]...
19. ...... 象9退7   20. 馬七進六
[u]炮5進4(0.4)[/u]...
20. ...... 炮5進4   21. 帥五平六
[attach]8740427[/attach]
[b]表面價值:[/b] [u]炮5平8(0.35)[/u], 車3平2(0.4)...
但是, 只要我們在車3平2後多想一著, 便會看見黑有馬四進六的一著, 所以我們要選炮5平8.
21. ...... 炮5平8   22. 仕五進四
車3平6(1.6)*, [u]炮8進3[/u](會形成不平穩局面)...
* 若車3平6後我們多想一著, 我們便會看見仕四進五困車. 所以其實車3平6是吃虧的.
22. ...... 炮8進3   23. 仕四進五
[u]車3退2(0.5)[/u]...
23. ...... 車3退2   24. 車七退二
[u]車3平4[/u](不平穩), 若要算清其[b]潛在價值[/b], 應算紅接帥六平五 車4退1的價值變化, 即應該是約1.5+3.7分.
24. ...... 車3平4   25. 帥六平五
[attach]8740513[/attach]
老實說, 到現在黑落於劣勢, 所以說單純只有"著法價值"和一兩著的推演能力是頂不住"巫師業餘級"的這個棋力的...
除了之前看見的車4退1(~2.7)*, 現在可多看到[u]馬7退6[/u]的一著(2.75)...
* 車4退1後紅車七平三捉象, 不合算.
25. ...... 馬7退6   26. 馬六進五
粗略看車4退3是~3分(捉馬和守卒), 但紅可接馬三進四, 黑車和馬原來的動能和威懾能也差不多沒有了. 所以, 這著其實是約負-1.3分.
另外: [u]車4平9(-0.9)[/u], 馬6進5(-2)...
26. ...... 車4平9   27. 馬五進四
[attach]8740467[/attach]
這裡是"特別"的情況. 要思考得稍為"隱秘"一點.
這裡存在[u]車9進3[/u]一個手段. 這裡我們可引入"[b]潛在價值[/b]"的概念, 紅若"不走棋", 以後黑有炮8平3使局不平穩, 紅若仕五退四 炮3平6, 這之前的車9進3便是價值很大的一著了!
27. ...... 車9進3   28. 馬三進五
在這種局面, 已經到了被攻的狀態, 這情況"局面價值"的方法已不適用了, 只能依靠個人殺法的演算能力了. 所以只列出往後著法.
28. ─────  士5進4   29. 車七進二 將5進1   30. 車七退一 馬6進4   
31. 馬五退三 炮8平7   32. 馬三退五 炮7退3   33. 仕五退四 炮7平5
34. 相五退三 車9平8   35. 馬四退三 炮5平3   36. 相七進五 車8退4
37. 馬五進四 象7進5   38. 馬三退五 車8平6   39. 仕四進五 卒3進1
40. 車七平八 卒3進1   41. 相五進七 炮3平6   42. 馬五退四 車6進1
43. 馬四退五 車6平1   44. 馬五進七 將5退1   45. 車八平六 象5退7
46. 車六退一 車1進3   47. 車六退七 車1平4   48. 帥五平六
和.

[[i] 本帖最後由 rhwlam 於 2018-9-7 08:43 PM 編輯 [/i]]

rhwlam 2018-9-29 12:03 AM

從以上帖#10的一個局例, 可以看出"著法價值"的一些應用要點:

1. 比較好地考慮一個子的動能應該不是那個子能走多著法的總數, 而是一著子"有意義"的著法的總數.
(這樣的話, 我們應否可加大對應考慮"有效動能"的權重因子, 例如: 車由2改為4, 馬為2改為4, 炮由1改為2?)
[u]請看上帖註解:[/u] 第1和第2回合考慮的車1進1.

2. 在不平穩的局勢下(例如將軍或是被捉子), 著法價值的概念絶不適用.

3. 我們應用著法的"潛在價值", 即數個可預見的有限回合以後達至平穩局勢的價值變化(因為人的計算力有限, 有時我們不得不忽略一些變化). 很多時候當然局面走了一著棋後的"表面價值"是不可靠的.
[u]請看上帖註解:[/u] 第3回合考慮的馬8進7, 第7回合考慮的車1進1. 第24回合考慮的車3平4.

4. 棋子被牽制時的動能變化.
[u]請看上帖註解: [/u]第11回合考慮的象3進1.

有空的話, 小弟以後會繼續探討...

rhwlam 2018-11-27 07:40 PM

近來有點忙.
以後才貼上新帖. 現在先回覆一下, 以防此帖自動關閉.
謝謝理解.

rhwlam 2018-11-30 02:30 PM

[quote]原帖由 [i]rhwlam[/i] 於 2018-9-4 10:23 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486744564&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
帖#01所提出的局面價值計算法可以對於約80%的局面優劣作出正確的判斷. 另外, 這個計算方法在將軍和單純捉子的狀態不適用; 比較合適的局面應該是相對靜態的中局.
所以說這只可以當作一個參考數值. [/quote]
這裡, 我希望多描述一點.
這是基於+2.0分的優勢和-2.0分是劣勢, 這個"局面價值計算法"所估計的誤差的標準差(standard deviation)為~0.8. 所以"局面價值計算法"不是絶對準確的.

現在, 若我們考慮一個局面只有五個選擇(A, B, C, D和E), 若我們已知A是當前局面的最高價值的選擇, 那麼A為最佳著法的機率為:
A比B佳的機率 x A比C佳的機率 x A比D佳的機率 x A比E佳的機率
若果以上每一對若法的比較我們都有90%的把握, A為最佳著法的機率亦只有0.9^4 = 0.66%.
所以說, 單純以"局面價值計算法"作比較而不作著法推演的話, 仍是很難可以可靠找出最佳著法的.

rhwlam 2018-11-30 05:53 PM

接著上一帖的話題, 現在描述一下如何能夠透過推演一個選擇往後的變化而得出更有把握地選出"最佳著法".
我試過以統計學的角度考慮推演棋路的一些要點. 這裡, 抱歉我沒有將推論寫上來, 畢竟這裡不是數學板.
無論如何, 當中導出的一個思考次序如下:
1. 在當前的局面, 我們可能對當前局面/著法價值選出數個可能是最佳著法的選擇.
2. 若一著棋明顯比另一著棋優, 我們沒必要再深入考慮較差的一著, 因為這不會有效幫助縮減價值估計的"標準差"和"最佳著法"的估計把握(真確性的機率).
3. 首先應先推演"當前認為的"最佳著法, 接著再推演"當前認為的"第二皆著法, 如此類推.
4. 當推演一個著法的往後變化時, 應推演那些比較"有價值"的分枝, 而省去那些明顯的劣著. 推演後我們可考慮更新那一著棋的價值.
5. 當所有在最初選出的著法都考慮及更新後, 我們就選出當前局面"最佳"的一著.

xianrenb 2018-12-6 01:42 PM

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

這裡, 我希望多描述一點.
這是基於+2.0分的優勢和-2.0分是劣勢, 這個"局面價值計算法"所估計的誤差的標準差(standard deviation)為~0.8. 所以"局面價值計算法"不是絶對準確的.

現在, 若我們考慮一個局面只有五個選擇(A, B, C, D和E), 若我們已知A是當前局面的最高價值的選擇, 那麼A為最佳著法的機率為:
A比B佳的機率 x A比C佳的機率  ... [/quote]

13 樓提到的機會率說法看來有點問題。
例如說,假設有五個選擇(A ~ E),每個其實都是完全隨機的,沒有一個特別好棋的話。
最佳是 A 的機會率應是 1/5 。
但 A 比 B 佳的機會率是 1/2 。
A 比 C 佳的機會也是 1/2 。
如此類推。
但 1/5 <> 1/2 * 1/2 * 1/2 * 1/2 。
後者是 1/16 ,算出來的,大約是 1/5 的 1/3 ,小了很多。

所以我估計,如果每個比較有 90% 把握的話, A 是最佳的機會率應該遠高於 66% 。

rhwlam 2018-12-6 04:01 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-12-6 13:42 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=491585251&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
13 樓提到的機會率說法看來有點問題。
例如說,假設有五個選擇(A ~ E),每個其實都是完全隨機的,沒有一個特別好棋的話。
最佳是 A 的機會率應是 1/5 。
但 A 比 B 佳的機會率是 1/2 。
A 比 C 佳的機會也是 1/2 。
如此類推。
但 1/5 <> 1/2 * 1/2 * 1/2 * 1/2 。
後者是 1/16 ,算出來的,大約是 1/5 的 1/3 ... [/quote]
謝謝回覆.
是的, 之前我舉的例子已經是說A是價值最高的一著. 這只是一個隨便的舉例, 而且計算也粗糙且不精確. 希望理解.

現在看師兄舉的例子:
假設有五個選擇(A ~ E),每個其實都是完全隨機的,沒有一個特別好棋的話。
最佳是 A 的機會率應是 1/5 , 沒有問題。
A 比 B 佳的機會率是 1/2 , 也沒有問題。
但是, 已知比B大的A, 再比C大的機率會是2/3, 因為是三個可能中考慮兩個可能, 即底間的情況: [u]A比C大但C比B大[/u] 或 [u]B比C大[/u] 或 C比A大.
如此類推, 即是1/2*2/3*3/4*4/5 = 1/5. 會同樣得出"最佳是A的機會率應是1/5".

說回來, 師兄的說法有理, 如果粗糙的計算的話, 假設有五個選擇(A-E), 最佳是A的機會率不應是1/2*1/2*1/2*1/2. 這是錯誤的, 所以我之前說的計法是錯誤的. (但這種估算簡單得多.)
所以師兄說"如果每個比較有 90% 把握的話, A 是最佳的機會率應該遠高於 66% 。"是正確的.

無論如何, 其實我是想引導出#14的思考次序, 因為這才能幫助我們找出如何才能更有效思考出最佳著法. (其實真正的機率多少意思不大, 而是以何種方式令估算準碓的機率提高才有意義.)

謝謝指正, 也謝謝理解.

rhwlam 2018-12-6 07:20 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-12-6 13:42 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=491585251&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
13 樓提到的機會率說法看來有點問題。
例如說,假設有五個選擇(A ~ E),每個其實都是完全隨機的,沒有一個特別好棋的話。
最佳是 A 的機會率應是 1/5 。
但 A 比 B 佳的機會率是 1/2 。
A 比 C 佳的機會也是 1/2 。
如此類推。
但 1/5 <> 1/2 * 1/2 * 1/2 * 1/2 。
後者是 1/16 ,算出來的,大約是 1/5 的 1/3 ... [/quote]
對於#13的例子確切的機率, 可以計算如下:

現在, 若我們考慮一個局面只有五個選擇(A, B, C, D和E), 若我們已知A是當前局面的最高價值的選擇, 若果A比每一對其他著法的比較我們都有90%的把握, 即A比B佳的機率 = A比C佳的機率 = A比D佳的機率 = A比E佳的機率 = 90%

我們可考慮A有9個機率單位, 而B, C, D和E各有1個機率單位. 那麼A為最佳著法的機率為:
9 / (9 + 1 + 1 + 1 + 1) = 69 %

rhwlam 2019-1-8 05:55 PM

另外, 作為一個簡單的想法.
若我們都是以著法的價值去選出每一著的話, 那麼尤其是在開局的大概十著, 每走出的一著的價值差距不會很大.
在開局很難能下出一著是比兩著更要好的、更有價值的.
所以, 我們尤其在開局要注意有多少著"有效"/有價值著法.
以有限棋力的我們, 最好是令自己每一著都是"有效"的. 以這心態把握開局, 想法便會較為簡明.

rhwlam 2019-1-8 05:56 PM

---

[[i] 本帖最後由 rhwlam 於 2019-3-13 12:04 AM 編輯 [/i]]

簡單象棋 2019-1-12 11:29 PM

睇落好複雜:smile_42:

rhwlam 2019-3-13 12:05 AM

另外, 為了更實際的應用性, 著法價值的評估可更簡化為:

著法價值 = (若是吃子的話)所得的固有能 + 動能變化 + 控制勢能變化 + 威懾勢能變化

1. 吃子所得固有能:
兵、卒= 1 分,   仕/相、士/象 = 2 分,   馬、炮= 4 分,   車 = 8 分

2. 動能變化:
只考慮雙方的"有效動能"的變化
車 = 可走步數 x 0.2, 馬 = 可走步數 x 0.5, 炮 = 可走步數 x 0.1

3. 控制勢能變化:
我方棋子每點的控制 -- 對方九宮 = 0.5 分, 其他每個在對方三至七路的位置 = 0.1 分,
(多子對於同一點的控制只算作一點的分數)
註: 若要再加以比較的話, 中路(5線)要比肋道(4或6路)價值要高一點; 而肋道比3或7路的價值高一點.

4. 威懾勢能變化:
若是用作評價一著棋的價值, 局面的威懾勢能為:  
我方著法下了之後有關的威懾對方子力的總固有能變化 x 0.5 - 我方著法下出後所導致對方威懾我方棋子的總固有能變化 x 1

[[i] 本帖最後由 rhwlam 於 2019-4-3 02:27 PM 編輯 [/i]]

catjoke 2019-3-15 03:05 AM

[quote]原帖由 [i]rhwlam[/i] 於 2018/9/29 00:03 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=488079426&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
從以上帖#10的一個局例, 可以看出"著法價值"的一些應用要點:

1. 比較好地考慮一個子的動能應該不是那個子能走多著法的總數, 而是一著子"有意義"的著法的總數.
(這樣的話, 我們應否可加大對應考慮"有效動能"的權重因子, 例如: 車由2改為4, 馬為2改為4, 炮由1改為2?)
請看上帖註解: 第1和第2回合考慮的車1進1.

2. 在不平穩的局勢下(例如將軍或是被捉子), 著法價值的概念絶不適用.[/quote]

過往做法是有將軍會特殊加大分,令好多着法都不再考慮!!
例如食帥加 10000分之類
對方將軍,不是[b]應將[/b]的全部斬走!

但會衍生先前提過,怎樣避免無聊[b]低頭車[/b] 將幾將軍的變化
局面控制往往要[b]高頭車[/b]才可以有最高效能

不過,這帖很有意思,對局相對成熟得多。
有時間試試這類特殊玩野開局:
[url=https://www.youtube.com/watch?v=ahAjnD4htEM]https://www.youtube.com/watch?v=ahAjnD4htEM[/url]
敢死包,刻意河頭包後,再白送一包你食,食咗就中計!

xianrenb 2019-3-15 01:30 PM

[quote]原帖由 [i]catjoke[/i] 於 2019-3-15 03:05 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=496256728&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


過往做法是有將軍會特殊加大分,令好多着法都不再考慮!!
例如食帥加 10000分之類
對方將軍,不是應將的全部斬走!

但會衍生先前提過,怎樣避免無聊低頭車 將幾將軍的變化
局面控制往往要高頭車才可以有最高效能

不過,這帖很有意思,對局相對成熟得多。
有時間試試這類特殊玩野開局:
[url=https://www.youtube.com/watch?v=ahAjnD4htEM]https://www.youtube.com/watch?v=ahAjnD4htEM[/url]
... [/quote]

對方將軍,不是應將的全部斬走,表面上絕對正確。
但是,實作上可能不是這樣考慮的。

第一,如果是在局面是必然敗的情況下,就算往下走一定要輸,也要選擇可行的往下走法。
試走數着來比較,例如數當前局面至終局的步數,才知那種走法,可以盡量避免敗局。
而且如果直接斬走,反而會計算不到敗局的情況。
第二,正常的設計,每個局面都應該試走小數值的層數,知道分數後比較來排序。
層層如此。
然後才以正常層數深度來運算。
最好分數的先試走,一當分數不合理或知勝負就會跳離,返回前一層時的局面。
故此,其實不必把會敗的走法先排除,因為一試走相關一着來進入下一層,程式應當自動會以最快計算速度排除不合離的走法,然後退回前一層時的局面。

catjoke 2019-3-16 03:09 PM

[quote]原帖由 [i]rhwlam[/i] 於 2018/12/6 16:01 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=491591964&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
謝謝回覆.
是的, 之前我舉的例子已經是說A是價值最高的一著. 這只是一個隨便的舉例, 而且計算也粗糙且不精確. 希望理解.

現在看師兄舉的例子:
假設有五個選擇(A ~ E),每個其實都是完全隨機的,沒有一個特別好棋的話。
最佳是 A 的機會率應是 1/5 , 沒有問題。
A 比 B 佳的機會率是 1/2 , 也沒有問題。
但是, 已知比B大的A, 再比C大的機率會是2/3, 因為是三個可能中考慮兩個可能, 即底間的情況: [u]A比C大但C比B大[/u] 或 [u]B比C大[/u] 或 C比A大.
如此類推, 即是1/2*2/3*3/4*4/5 = 1/5. 會同樣得出"最佳是A的機會率應是1/5".

說回來, 師兄的說法有理, 如果粗糙的計算的話, 假設有五個選擇(A-E), 最佳是A的機會率不應是1/2*1/2*1/2*1/2. 這是錯誤的, 所以我之前說的計法是錯誤的. (但這種估算簡單得多.)
所以師兄說"如果每個比較有 90% 把握的話, A 是最佳的機會率應該遠高於 66% 。"是正確的.

無論如何, 其實我是想引導出#14的思考次序, 因為這才能幫助我們找出如何才能更有效思考出最佳著法. (其實真正的機率多少意思不大, 而是以何種方式令估算準碓的機率提高才有意義.)

謝謝指正, 也謝謝理解. [/quote]

其實現今最Hit的 Alpha XX,係用另一個概念:
玩資料庫,呢一個盤面,過去自己對局一百萬次、一千萬次,
邊一步勝率最高,然後才仔細研究最高勝率果兩三步棋。

如果純用計數的方法,總有機會遇到 (將族必勝法),或我先前介紹棄 兵傌得空頭炮 怪局
經驗的意思遠遠超過想像!
假如一個職業棋手一生人可以捉到一百萬局
對局一千萬次,相當於你十世的經驗
結果係無得比,無得追!

Alpha Go係棋理加資料庫,好似已經勁過人
但Alpha Zero索性棋理都唔要,純用資料庫,亦好短時間追上Alpha Go.
甚至推廣去國際象棋和日本將棋,搵最強的程式來斬

rhwlam 2019-3-17 10:55 AM

[quote]原帖由 [i]rhwlam[/i] 於 2018-11-30 14:30 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=491298340&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
這裡, 我希望多描述一點.
這是基於+2.0分的優勢和-2.0分是劣勢, 這個"局面價值計算法"所估計的誤差的標準差(standard deviation)為~0.8. 所以"局面價值計算法"不是絶對準確的.[/quote]
現在請大家一起想一個問題. 若我們也如這個計算法一樣有誤差, 對於一個盤面的優劣判斷始終有所偏差(即使是>90%的盤面可以判斷正確也好, 但始終不是100%), 那麼我們該怎樣思考出最好的一著呢?
另外一個問題, 這是否代表我們若對盤面的判斷不如對手的判斷準確, 是否意味著我們棋力定比對手差呢?

現考慮一個情況:
當前局面X(價值為5分)由我方走, 有三個選擇a, b和c. 這三種著法之後對方也只有唯一應著, 而分別導致局面A, B和C.
相對於局面X的價值(5分), 預測局面A的價值改變為4分, 局面B為1分, 局面C為1分.
當然, 我們會考慮走著法a.
那麼, 我們該認為局面O更實際的價值應該要修正嗎?
如不修正, 即不論我們如何推演局面, 也不會改善局面價值估計的準確性(或是standard deviation沒有減少).
但我們知道, 象棋思考是能透過推演而想出更好、更有把握的著法.
那麼, 我們可以利用數學大概描述出當中關係嗎?

[[i] 本帖最後由 rhwlam 於 2019-3-17 11:06 AM 編輯 [/i]]

rhwlam 2019-3-17 02:21 PM

[quote]原帖由 [i]rhwlam[/i] 於 2019-3-17 10:55 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=496360815&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

現在請大家一起想一個問題. 若我們也如這個計算法一樣有誤差, 對於一個盤面的優劣判斷始終有所偏差(即使是>90%的盤面可以判斷正確也好, 但始終不是100%), 那麼我們該怎樣思考出最好的一著呢?
另外一個問題, 這是否代表我們若對盤面的判斷不如對手的判斷準確, 是否意味著我們棋力定比對手差呢?[/quote]

在這裡, 我試提出一個沒有理論支持的想法.
若修正局面價值為原來的5分似不合理.
若選A局面的4分也不好, 因為這忽略了其他著法可以在演變下去有轉優的可能.
如果我們再想, a為最優著法的可能最高. 我們可否將之前反映為一個權重因子?
例如, a的權重為4/(4+1+1), b和c權重皆為1/(4+1+1).
那麼, 我們可否設修正局面價值為4/(6)*4 + 1/(6)*1+1/(6)*1 = 3分?
如此的話, 若局面價值估計的方差為0.8,修正價值的方差會是sqrt((4/6)^2*0.64+(1/6)^2*0.64+(1/6)^2*0.64) = 0.5657, 會比原來的0.8要小, 即估計更有把握.
這個修正也可反映透過演算而得出更有把握的局面估值.

[[i] 本帖最後由 rhwlam 於 2019-3-17 02:27 PM 編輯 [/i]]

xianrenb 2019-3-17 04:54 PM

[quote]原帖由 [i]rhwlam[/i] 於 2019-3-17 10:55 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=496360815&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

現在請大家一起想一個問題. 若我們也如這個計算法一樣有誤差, 對於一個盤面的優劣判斷始終有所偏差(即使是>90%的盤面可以判斷正確也好, 但始終不是100%), 那麼我們該怎樣思考出最好的一著呢?
另外一個問題, 這是否代表我們若對盤面的判斷不如對手的判斷準確, 是否意味著我們棋力定比對手差呢?

現考慮一個情況:
當前局面X(價值為5分)由我方走, 有三個選擇a, b和c. 這三種著 ... [/quote]

剛剛看了:
[url=https://en.wikipedia.org/wiki/Minimax]https://en.wikipedia.org/wiki/Minimax[/url]

[url=https://en.wikipedia.org/wiki/Minimax_estimator]https://en.wikipedia.org/wiki/Minimax_estimator[/url]

估計當中的一些資訊應是你想找的。

rhwlam 2019-3-17 10:41 PM

[quote]原帖由 [i]rhwlam[/i] 於 2019-3-17 14:21 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=496370194&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
若修正局面價值為原來的5分似不合理.
若選A局面的4分也不好, 因為這忽略了其他著法可以在演變下去有轉優的可能.
如果我們再想, a為最優著法的可能最高. 我們可否將之前反映為一個權重因子?
例如, a的權重為4/(4+1+1), b和c權重皆為1/(4+1+1).
那麼, 我們可否設修正局面價值為4/(6)*4 + 1/(6)*1+1 ... [/quote]
若繼續推演下去, A, B及C往後的一個(或多個)回合也可以用同一方法減少價值估計的誤差.
推演的著法愈多, 局面的價值愈準確.
再想清楚一點, 推演的著法的次序也是非常重要.
因此, 局面評價的準確性並不是決定棋力的唯一指標.

另外, 記得謝業梘大師透露過自己思考一個局面(的棋路樹)的推演著法有大概100著以上(即棋路樹為100個著法組成). 而許銀川特大在直播說過, 至少要推實四個回會才能將一些本變化看清. 可能這些就是棋手必備的基本計算力吧..

rhwlam 2019-3-17 10:45 PM

[quote]原帖由 [i]catjoke[/i] 於 2019-3-16 15:09 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=496324088&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
...
假如一個職業棋手一生人可以捉到一百萬局
對局一千萬次,相當於你十世的經驗
結果係無得比,無得追!
... [/quote]
謝謝回覆.
其實我只是希望自己棋力可以提升, 而能夠比誰棋力高, 其實我不是看得太重...

rhwlam 2019-3-17 10:51 PM

[quote]原帖由 [i]xianrenb[/i] 於 2019-3-17 16:54 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=496377560&ptid=27689944][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
剛剛看了:
[url=https://en.wikipedia.org/wiki/Minimax]https://en.wikipedia.org/wiki/Minimax[/url]

[url=https://en.wikipedia.org/wiki/Minimax_estimator]https://en.wikipedia.org/wiki/Minimax_estimator[/url]
估計當中的一些資訊應是你想找的。 [/quote]
如果是談minmax algorithm的話, 可能alpha-beta pruning已經很足夠了.
但這是建基於一個"肯定準確"的價值評估, 而且思考方式也難以為人腦所實現.

---
以後有空, 希望試試以這帖說的思考模式再跟象棋巫師(大師級)下上幾盤, 再看結果如何...
頁: [1] 2 3 4
查看完整版本: [雜談] 再說局面價值計算法