囲碁プログラム
マイナビ出版から「囲碁ディープラーニングプログラミング」という本が出版されます。 私は翻訳者として関わらせてもらいました。 PythonとKerasを使って、AlphaGo、AlphaGo Zeroの仕組みを一つずつ実装しながらディープラーニングを学べる入門書になってい…
以前に学習したSL policy networkを囲碁プログラムに適用してみた。特徴を4つに絞って、学習を160万局面で行ったものなので、棋譜との一致度は30%くらいの状態だが、そこそこ効果はあるのではないかと思って試してみた。 学習している棋譜は19路盤なので、19…
以前にrollout/tree policyをAdaGradで学習させたが、学習データとは別のテストデータを使った評価を行っていなかったので、学習をやり直した。学習に使用させてもらっていた棋譜サイトが閉鎖してしまったので、今回からGoGoDという有料の棋譜を購入して使用…
SL policy networkをChainerを使って学習した結果を、囲碁プログラムに組み込む際、C++のプログラムからDCNNの実行のためにpythonプログラムを呼ぶとオーバーヘッドが大きい。 できれば、DCNNをC++から実行したい。 順伝播のみであれば、ディープラーニング…
前回の日記で、SGDでSL policy networkを学習し、学習が成功していることが確かめられた。学習アルゴリズムをSGDにしたのは、AlphaGoの論文で採用されていたからだ。収束に非常に時間がかかるので、別の方法だともっと収束が早くならないか試してみた。 また…
前回の日記でChainerで作成したAlphaGoのSL policy networkをプロの棋譜を使って学習させてみた。棋譜は、以前と同様、インターネットの棋譜サイトから入手したプロの棋譜を使用した。まずは、学習がうまくいくか様子をみるため、特徴はAlphaGoの論文のExten…
AlphaGoのSL policy networkをとりあえず定義だけ作ってみました。AlphaGoの論文から、SL policy networkは以下のようになると理解しています。 layer1は、5*5のフィルターk枚、ReLU関数 layer2~12は、3*3のフィルターk枚、ReLU関数 layer13は1*1のフィルタ…
※学習のやり直しを行った記事はこちらプロの棋譜からrollout/tree policyを学習してもGnuGoに対して勝率が30%程度であまり高くなっていない。学習に確率的勾配降下法(SGD)を固定の学習係数(0.001)とL1正則化係数(0.0000001)を使っていたので、 学習方法を変…
AlphaGoの論文にあるtree policyをプロの棋譜から学習を行った。rollout plicyから追加される特徴は以下の3つ。 Self-atari … 次に取られる手 Last move distance … 直前の2手からのマンハッタン距離 Non-response patter … 12point diamondパターン Last mo…
昨日はhttp://www.computer-shogi.org/wcsc26/を中継で観ていました。 コンピュータ将棋はまだまだ進化しているようで熱くなりますね。 チェスのStockfishの技術が将棋にも応用されているみたいです。さて、AlphaGoとイセドルの対局を観てから作り始めた囲碁…
インターネット上から入手した5万局くらいのプロの棋譜から、プレイアウトの特徴量を学習させてみた。 勝ったほうの手のみを学習することにしたので、勝敗データがない棋譜は除外した。特徴量は、AlphaGoの論文にあったrollout policyの特徴量とした。 ただ…
ここの記事に、_BitScanForward64を使う場合、ヒットしたビットを0にするのに、 n &= n - 1; とするとよいと書かれていたので試してみた。現在、ビットを0にするのに、 _bittestandreset64(&n, i); を使用している。記事では、下記のように1をシフトして演算…
前回のプログラムにシチョウの判定を入れてみた。シチョウを判定するには、アタリを助けた後の呼吸点が2の場合、数手先まで読んで呼吸点が1になるか、3以上になるか確認する必要がある。数手先まで読む際、ボードのコピーを行うと処理時間がかかるので、手を…
オープンソースで強豪の囲碁プログラムであるPachiをWindowsでビルドして動かすことができたので、備忘録を兼ねて手順を記します。 PachiはWindowsのバイナリが配布されていますが、プログラムを開発する上ではソースコードをステップ実行して調べたいので、…
前回の囲碁プログラムにノード選択とプレイアウト時にアタリから逃げる手が選ばれやすくなるように修正を行った。ランダムプレイアウトとの対戦とGnuGoとの対戦では勝率が上がったが、自分で対戦してみると簡単にシチョウにはまるので弱くなったと感じる。理…