将棋ベーシック改の新バージョンコミットしました

 ベクターでのリリースは未定ですが、評価関数に従来の駒得と駒利きに駒位置を加えた最新ソースコード及びバイナリをGitHubにコミットしました。

 駒位置の評価は2000以上のパラメータをゼロ初期化して、玉は穴熊に金銀は矢倉を目指して動くよう調整しました。実験の結果は綺麗な矢倉にも穴熊にもならず、端を目指しながら何か怪しい囲いのまま戦ってくれているようです。

 なにせ3手読みなもので、香を上げて穴熊に玉が入って銀で蓋をするという長手数の囲いはやや無理があるようです。

 先にも書きましたが駒位置の評価はまだ大半がゼロクリアで初期化されており、そこにマトモな値を入れていくのは2000ステップの手作業もしくは機械学習の二択です。そして実際問題として機械学習Pythonで数百行だから2000ステップ手作業よりはコードが残って有意義だとは思うものの、自分のやる気と相談して今日はここまでとしました。

 普段使いはMacBookProですが将棋ベーシック改の開発マシンは富士通のWindows10で久しぶりに立ち上げるとずっとブラックスクリーンに矢印アイコンで将棋とは別の意味で詰んだかと思いましたがバッテリーの充電不足か何かが原因だろうということで「しばおま」の後に無事起動しました。

https://github.com/zenmai36rai/VisualBasicGames/tree/master/ShogiBasicKai

唯々諾々

 恋人の誕生日を忘れないようにスケジュール帳に記帳したのは一昨年のこと。カレンダーに書いておけば流石に大丈夫だろうと思っていた。だがしかし!去年のスケジュール帳を読み返すと一昨年の10月から今年の1月まで続くカレンダーの内でお誕生日は最初のページ10月にあった。過ぎてるやん!超ごめんなさいm(_ _)m

 一昨年というとコンピュータ将棋の電竜戦に出て、去年は出なかった。仕事を辞めたので研究に没頭できるかと思いきや、テレビ見てる方が楽しくて漫画読んだりギター弾いたり楽しいことが増えるとどうしてコンピュータ将棋なんて作ろうと思ったか動機すら忘れるほど。

 このままではマズいと思ってやねうら王の最新版を研究しようと思ってから、マシンスペックが合わなくて諦めかけていたものを三日ほど頑張ってNO_SSEのNNUE型でコンパイル成功まで漕ぎ着けてエンジン起動のエラーログも出なくなったけどまだ動作しない。

 そもそも駒得の評価関数に駒効きを追加するという自分の6年前の試みはそれはそれで出場資格を認められたことではあるので、有意義ではあった。そこから6年放ったらかしたのは真面目にやっても競争が激しいから、放っておいて画期的な変化があってからそれを学んだ方が楽だろうみたいなダメな動機だけど、闇雲に足掻くよりは賢いやり方に一歩近づいたと思う。

 それでNNUEとは何ぞやというのをブログなどで丁寧に解説されているのを読んで、バイアスを通した二層型のバイアスの役割がよくわからないまま、歩を100点とすると1点から99点の範囲で形勢を評価したら、良型判断に駒得が勝るのでバイアスをかけなくても得点制でひとつの評価値に関数をまとめられるという考えになった。

 以前からやりたかった「飛車先の歩を指示や学習ではなく真に良型であるのか数学で解きたい」みたいな事も、良型が経過で解が詰みや入玉である以上は完全解析しないと証明にならないわけで、255手に及ぶ勝負で探索部が31手くらいまでしか読めない現状、勝ち棋譜がそうであるという以上のエビデンスは手に入らないのも分かるようになった。

 同じように自分で評価関数を手調整するにしてもそれはプログラマの主観で決めた良型に対する誘導的なプログラミングでしかなく、実際の対局の棋譜から学習させる方が合理的だというところまで話が追いついた。そうなるとウチもどうにか機械学習まで漕ぎ着けないと待って出た成果を追うことにはならない。

 とりあえず、困ったときに読む数学の参考書で微分方程式のページを眺めてみる。NNUE型の評価関数というのはプログラムがNNである以上に評価関数部分だけでNNが形成されているということで、それを機械学習するということは学習部で関数を求めているということ。正確には関数に与える値を求めているのかもしれないが、関数で関数を求めるなら微分方程式くらい解けないと機械のいいなりでしかなく、それを操って研究することなど出来ないと踏んだ。

 学習はどこか誘導と似ている。ユング心理学を日本の民話に例えると、吉備団子を与えて家来を集めて鬼を倒す桃太郎が物語として描かれたのと古代の武家がご恩を与えて奉公を促せたのと前後関係はあるのか。そしてその民話が給料制で働く資本家と労働者の社会モデルにも根深く影響を与えているように思える。餌がもらえるから言う事を聞く、お給料がもらえるから働く。そんなだった俺が会社を辞めてしまったら。

 気づいたら、お金がちょっとでも手に入る内職のような仕事が趣味の代わりになっていた。一昨年の将棋大会は何かの賞や大会参加の知名度でソフトの売り上げが出ることなど、打算に満ちていた。そしてダメだったので去年は参加料が勿体無い気がした。

 当面飯は食えるとして、将棋の研究が趣味的に面白いという動機もあるが、考えるのは楽しくても仕事になると面倒なこともある。

 ただ、そうなってくると俺の人生の詰将棋に大会優勝という自己アピールの手が欲しいというのは本職の研究者の人に甚だ迷惑な話になっているようで良型とも言い難い。

 そんなことより、誕生日忘れてる方がダメよね。それはマジでごめんなさい。

 思えば、子供の時に読んだ将棋入門の「将棋は歩から」が将棋ベーシックの駒のIDが王将からではなく歩から始まっている原因で、MTGをしていた時にドラフトでケルドランスカイキャプテンをピックしたのも藤田師匠に「飛行は絶対取るべし」と言われた事、困った時に本を読んだりするのも子供の時に親から言われた「勉強しろ!」をどこか守れていなかった事が全ての原因である気がする事などなど。

 機械学習まで進んだ将棋のコンピュータは数学の中でも方程式から解がひとつ出る美しい形と違って未知変数をひとつ消すために微分をひとつ増やすように難解で、その様は数学的ではあるけれど人間的な間違いをAIも犯してしまうようにダメな擬人化も進んでいると思う。

 頭の良い人の論理的な考え方と言っても物事の全てが筋で解決するわけでもなく、勉強して良型に近づくように模倣を繰り返す。健気なコンピュータのやり方から人間もどこか学ぶわけで。

 コンピュータ将棋に参戦しだしたすぐは友達に自慢すると「俺にもどんなプログラムか教えてくれ、コンピュータがどう考えているか分かったらそのプログラム通りに考えたら強いはずや」という風に返事が返ってきたもの。

 ただ、やっていることは最初は計算機科学で駒得や詰みを定義できたら、自動計算で楽チンだったけど、だんだんと機械は教えた方へ行くので教え方で方向を操ろうとして乗りこなすのが難しく、機械を操るためには操縦者が将棋や数学に長けて舵きりを上手くならねばならない、その様を見て操り方を学ぶ人もいれば、操られたコンピュータの答えである指し手さえ学べば同じように将棋は指せる。指し手を学ぶ方が安直だと思っていたけど、操り方を学ぶ道は思いの外険しく、俺は研究をサボって誰かが先の方へ行くまで待ったわけだ。

VF5ジャッキー天帝に昇格

 もう十分だろうと思っていたバーチャファイター5をまた進めています。ジャッキーで天帝に昇格しました。あとは「神」クラスに昇るのみ。反対に落とされる可能性も無いわけではないけど。そして神も色々いるみたいですけどね。

 VF4の時の称号分岐って勝率90%台で足切りなので、ジャッキーで今82%台なんで「もうダメぽ」と思いながらやっていたんですけど、どうやらVF5で武聖から天帝は最上位のようです。

f:id:karmen:20220106140611j:plain

 原理的にトーナメントで勝ち抜き数が半々になっていくように、リーグだろうとランダムだろうと数やって勝率が高い方を残していくと上の方で五分五分でぶつかる日が来るだろうから、もう十段から皆伝くらいになった時に「やめよう」と一度思ったんですよね。

 みんな大好きストリートファイター界のウメハラ氏はゲーム辞めて介護の仕事やパスタの料理という普通の仕事をしてみてから、ゲーム仲間に「帰ってきて」と頼まれて戻ってみたらメチャメチャ勝てて自分自身が思っていたより特別だって実感したそうです。

 どうかな。俺は俺でギター始めてゲーム以外に特技がないみたいなコンプレックスを克服してから、ギターの練習といっても我を忘れて没頭するってことはなくて、ゲームしてる時の自分が特に生き生きしてるって思ってまた遊ぶんですけど、まあ普通セーブあったらリセットしてやり直せるゲームを負けても記録して勝率を統計して色々測って考えて、そんな時に坂本龍一さんが音楽で成功する秘訣を尋ねられた時に「色々あるとは思うけど、しつこいって事でしょうね」と語っていたのをふと思いました。

 あと「ゲーム以外に特技ない」てのは合コンとかに行った時に「趣味はゲーム」と切り出してその時に周りから貼られたレッテルであって、俺には特技は色々あると教えてくれる人もいる。ただ、俺が引きこもり属性高いというか子供の頃から親に監禁されるみたいに部屋で過ごしていた。受験のため勉強部屋に居ることを見張られるって意味で。だから特技といっても人に滅多に披露せず、ネットに何かアップロードして拡散させるのが趣味になって、それらは俺にカウンタアップ程度のレスポンスしか感じられず、どこかの誰かが作ったものとして俺としては売れていない自意識だから。

 さらに、段位の昇段条件が同段戦基準なので弱い人とするより近い人を探す方が昇段の早道だと思っていたのですが、運ではなく強い弱いがあるなら弱い人をたくさん狩って勝率を稼ぐことにも称号をランクアップさせるために意味があるし、経済効果とか知名度アップにも繋がるんだろうなと思う。俺はVF5ジャッキーで360試合程度、ラウで100試合程度だけど、VF4の「ラウで三段で勝率3割だけど強い人にずっと突っかかる人」という自意識はまだあって。

 VF5になったらカード作り直して初段で隣町のゲーセンで相手してくれる人いなくなったからね。それで団体さんで遠征来て十段以上の人と初段で普通に渡り合って、相手のグループで一番段位の低い人が五段のウルフで倒したら悔しそうにしてまた全員帰って行った。

 それでも、今のゲーム上手い人って多分モンハンのタイムアタックからゼルダとかスプラトゥーンという人の多いタイトルで競争してると考えてて、バーチャ選んでる時点でマイナだから「そこは勝て」というのが他の趣味仲間から応援来てるとこよね。励みになりました。

Vector | |