囲碁の思考ルーチン作成に挑戦

今から半年位かけて、囲碁の思考ルーチンを書くことにしました。
1回目は1年半ほど前に、盤面認識プログラムと簡単な探索を実装しただけで投げちゃったんですよね...これは2回目の挑戦です。

以前よりもコードも書けるようになったこと、英語のドキュメントや論文を読むのにためらいがなくなったこと、機械学習を研究室で専攻したことなどが重なって、なんか書けそうな気がしたので、学生のうちに頑張ってみますよ。

とりあえず、今後1ヶ月はじっくり思考ルーチンのインターフェースや、簡単な実装方法について考えてみようと思います。GNUGOのソースも今読んでるんですが、なんかしっくりこないんですよね。ソースだけを見たら、どうも人間と同じ思考の過程を経ることは難しいのかなと感じます。

目標としては、以下の3つ

    1. 棋譜のデータを使って機械学習を取り入れること
    2. モンテカルロ木探索を実装すること
    3. 陣地の多さよりも、形の良さを優先するような方法を考えること

実装するだけなら、最初の2つはいける気がするんですよね。最後の条件は、いつだかプロ棋士の武宮九段が言っていた記憶があるのと、強いよりも個性のあるプログラムが作りたいなという希望です(実現するかは謎)。あくまで優先であって、無視ではないです。

言語はC++です。Cでも良かったのですが、ライブラリの恩恵を受けられるかなぁと。GUI周りはpythonがいいかなと思うので、pythonで書きます。ついでに飽きたら使いやすい棋譜ビューアも作ろうかなと思います。前から全部キーボード操作(emacs風)できるものが欲しいと思っていたので。