まず、ラグランジュ項、ペナルティは無視する。
T[ f(others) - f(best) ]
こういう形をしている。
初手では30手候補がある。best は 76歩、 others はそれ以外とする。
最小化関数は
T[ f(96歩) - f(76歩) ] +
T[ f(86歩) - f(76歩) ] +
T[ f(66歩) - f(76歩) ] +
...
T[ f(18香) - f(76歩) ]
という形になる。
f() はある位置に駒がいるときの総和、とする。歩だけを考えると。
つまり
f(76歩) = [12歩] + [13歩] + [14歩] + ... [19歩] + [22歩] + [23歩] ... [99歩]
実際に存在する駒だけに適用されるので
f(76歩) = [17歩] + [27歩] + ... [76歩] + [87歩] + [97歩] + [19香] + [28飛] + ... [99香] - ([13歩] + [23歩]...[91香])
f(96歩) = [17歩] + [27歩] + ... [77歩] + [87歩] + [96歩] + [19香] + [28飛] + ... [99香] - ([13歩] + [23歩]...[91香])
よって
T[ f(96歩) - f(76歩) ]
この差分で残るのは
T[ [96歩] + [77歩] - ( [76歩] + [97歩] ) ]
この4つの変数のみ。(後手の駒は変化なし)
つまり
T[ [96歩] + [77歩] - ( [76歩] + [97歩] ) ] +
T[ [86歩] + [77歩] - ( [76歩] + [87歩] ) ] +
T[ [66歩] + [77歩] - ( [76歩] + [67歩] ) ] +
...
T[ [18香] + [77歩] - ( [76歩] + [19香] ) ]
この関数の値が最小になるように、個々の変数 [76歩] などを更新したい。
この式全体を [76歩] という変数で偏微分すれば、[76歩] の傾きが出てくる。
T[f(x)] はsigmoid関数。しかしここでは一般関数とすると
合成関数の微分は
y = f(g(x)) の場合
y' = f'(g(x)) * g'(x)
よって
T'[f(x)] * f'(x)
ここで [76歩] というのは単純な一次関数、例えば x という単純な変数なので、[76歩]' は 1 になる。
よって [76歩]での偏微分は
T'[ [96歩] + [77歩] - ( [76歩] + [97歩] ) ] * (-1) +
T'[ [86歩] + [77歩] - ( [76歩] + [87歩] ) ] * (-1) +
T'[ [66歩] + [77歩] - ( [76歩] + [67歩] ) ] * (-1) +
...
T'[ [18香] + [77歩] - ( [76歩] + [19香] ) ] * (-1)
[96歩]での偏微分は
T'[ [96歩] + [77歩] - ( [76歩] + [97歩] ) ] * (+1) + ---> ほとんど0になって、ここだけ残る
T'[ [86歩] + [77歩] - ( [76歩] + [87歩] ) ] * ( 0) +
T'[ [66歩] + [77歩] - ( [76歩] + [67歩] ) ] * ( 0) +
...
T'[ [18香] + [77歩] - ( [76歩] + [19香] ) ] * ( 0)
T[x] はsigmoid関数で、その微分、T'[x] は T[0] で傾きを持つ。0.0075
---> つまり、変数の初期値が全部0でも
[76歩] の傾きは
T'[0] * (-1) +
T'[0] * (-1) +
T'[0] * (-1) +
...
T'[0] * (-1) = -29 * T'[0]
[96歩] の傾きは
T'[0] * (+1) = +1 * T'[0]
最小値を求めたいので、傾きの反対側に移動すればよい。
このままだと特定の変数が大きくなりすぎてしまう、といった現象が発生する。例えば [76歩] = +3000, [96歩] = +15 など。
よって、大きくなり過ぎないようにペナルティを目的関数に与える。
T'[ [96歩] + [77歩] - ( [76歩] + [97歩] ) ] * (-1) +
T'[ [86歩] + [77歩] - ( [76歩] + [87歩] ) ] * (-1) +
T'[ [66歩] + [77歩] - ( [76歩] + [67歩] ) ] * (-1) +
...
T'[ [18香] + [77歩] - ( [76歩] + [19香] ) ] * (-1) + 2*w*[76歩] * ( | -29 * T'[0] | )
最終的な[76歩]の傾きは
-29 * T'[0] + 2*w*[76歩] * ( | -29 * T'[0] | )
局面評価の学習を目指した探索結果の最適制御 Bonanza Methodの原論文。GPW2006
GPW2006での保木さんの発表資料
Bonanza Methodに関して aki. さんによる解説