ディープラーニングの将棋が優勝したということで

電竜戦の前にはブログで「機械学習は胡散臭い」と書いたのですが。

まあ、分からないものが胡散臭く見えていたので突っぱねたという話。

大会に出てみると自分のソフトだけが思考時間が長いと思いました。

ではどうやって計算を速くするか。スペックを上げる、機械語を使う。

しかしまあ、機械語でなくプログラム言語とコンパイラを使う以上は言語に文句を言うか人からの評判で速いとされている言語に乗り換えるかみたいな選択肢しか普段はないわけで。

そこに単純なベンチマークで計算を競うのでなく、様々の言語で書かれた将棋プログラムでルールに則った強さを測るという試みは非常に有意義なものだとも言えると思うんですね。

将棋ファンとして将棋の棋譜を楽しむのも勿論なのですが、技師としての評価にもなる。

さらに言うとCPUとか言語とソフトの計算方法などの総合評価で出た結果がB級44ソフト中40位というのは結構辛い現実でした。

そうして、どうなったら速く出来るかを考えると、始まってから計算を走らせる部分を事前に計算してメモリ上に持ち、そして実行時にそれを参照するだけにするというある種の単純化をどこまで煮詰められるかとなった時に、指してから局面を計算して評価値を計算するのを指し手から1発で評価値を参照できるようにテーブルを引ければ、それが実はディープラーニングつまり機械学習のはじめの一歩なのではないかと考え始めました。

それにはある種全局面の自動計算が必要になるし、メモリを結果ファイルに書き込んで参照するために色々と新しい仕掛けをプログラムに追加することになります。

そして今朝から少しプログラム改変に手を付けました。応援してくれる方の中には「優勝ぐらいするのかと思っていた」とか「ドベタになってからプログラムを強くして優勝するまで続ける」みたいなマンガみたいな話を期待されたのですが、知的な閃きは一瞬で起こってもプログラミングとデバッグには途方も無い時間がかかり、また諦めの気持ちも出始めています。

機械学習にも色々あるようで、ニューラルネットワークとか言われても何のことかサッパリですが計算機理論を分からない人を難しい言葉で騙す系の技術用語とか、用語でなく本当に核心を隠すための包み紙のような技術体系としてのソフトも実在するので、少なくともビジュアルベーシックで参加できたこと、それで1勝出来たことの意義は意外とあるのかも知れません。

いや自分で言ってりゃ世話ないんですけど。プログラミングよりブログ書くほうが楽なので。

f:id:karmen:20201123143512p:plain

テーブル引くならと将棋の全局面を初めて計算してみると4.64e+118ということでメモリに全部ぶっこむにはマシン1台くらいではスペック足らないかもだけど将来的には全網羅した1手が求まるのかも知れないですよね。

けど、開始局面からあり得る出現局面ってもっと少ないわけだから電竜戦でも銀交換の千日手とか小学校くらいでもたどり着く引き分けの手になるのがもしかしたら将棋の答えのうちのひとつではあるのかな。けどそう考えると奨励会とか名人とかがもっと謎な存在に思えてくる。

謎だ。まだ俺の生涯対局数が300試合行くかどうかくらいなので1000局くらい指すとまた考えも変わってくるのかもだが。コンピュータ将棋にも色々あるけど、アルファベータ探索と駒得のみの評価関数でアマ初段くらいまで簡単に強くなるというひとつの方法論が将棋を数学で解くみたいな幻想を生んで、それを追い求めて迷路に入ったけど数学と将棋は別個のものとでもいうか、将棋のルールをプログラムで書くというのは数式ではなく手続きなわけだから、それにそれ以上の深みはないのかもしれないとちょっと思った。


🄫1999-2023 id:karmen