囲碁の思考エンジンを作ってみる

このブログ記事は、以前書いた記事の続きです。できれば、まずはそちらをお読みください。

Keras/TensorFlowでDNNな囲碁の評価関数を作ってみる
http://www.perfectsky.net/blog/?p=350

Keras/TensorFlowでDNNな囲碁の評価関数を作ってみる その2
http://www.perfectsky.net/blog/?p=380

時間ができたので、以前から作っていたDNNな囲碁の評価関数を使って、囲碁の思考エンジンを作ってみました。「パスも含めて全幅で深さ1だけ読む」という単純なプログラムです。9路盤しか打てません。一応、名前も必要かと思ったので、コードネームだったのをそのまま使って、white shadeと名づけました。由来は、Procol Harumの例の曲です。特にそれ以上の深い意味はありません。ちなみにこの映像は、ちょうど今から50年前のものみたいですが、ポピュラー音楽って本当に進歩がないですね。コンピュータ囲碁は、この5年だけでもめっちゃくちゃ強くなったのに…(笑)

ということで、早速、GNU Goとの対戦を行ってみました。使用した評価関数は、BottleneckアーキテクチャになっているRes-Blockのネックの部分が、32Filterなのと48Filterなのとの2種類。共に10 Res-Block(ちなみに、32Filterはパラメータ数が210,769で、48Filterは368,529。できれば、このあたりのサイズで何とかしたい…)。それぞれ、8対称形の平均をとったのと、とらないのとの、計4種類です。対局数は、先後を換えて150局ずつ計300局。同じような対局ばかりになりがちなので、twogtpに付属していたオープニングブックを使用しています。結果は、

32Filter 106勝194敗 (勝率 35.33%)
32Filter/8対称形の平均 144勝156敗 (勝率 48.00%)
48Filter 128勝172敗 (勝率 42.67%)
48Filter/8対称形の平均 176勝124敗 (勝率 58.67%)

うーん、よくわからんけどまあこんなものかな? とりあえず、ここがスタートですね。棋譜を見ていると、序盤はかなり上手なんですが、この子どうやらアタリがよく分かってないみたいで(笑)、後半すさまじいファンタを見せてくれます。一番強い48Filterの8対称形平均版から適当に3局選んでみたので、ご覧ください。


Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

こんなのに半分以上負けるGNU Goもどうなのよって感じですが(笑)、まあ強い時は強いからしかたないか… でもって、何でこんなにアタリがわからないのかっていうと、いろいろ理由はあるんでしょうが、おそらく一番大きいのは、学習データにこういう局面があまり含まれていないからだと思います。もちろん、大石がアタリになっている局面はそれなりの数あるのですが、そのほとんどが、アタリにされている方の手番になっていて、つぐなり逃げるなりすれば大事にならないので、それで深刻なことだと学習できていない気がします。NNの入力にダメの数を入れるとか、深さ2読むとかしたら、ここまでひどいことにはたぶんならないと思いますが、そんなことしなくても評価関数だけでこれぐらいは分かってほしいですし、こんなことも分からなくて、もっと高度なことが分かるはずもないような気がするので、なんとかしたいのですが、どうするのがいいかな? 「いっぱい対局させて、それをRayに添削してもらって、酷そうな手の前後を学習データに追加していく」みたいな感じでだめかな? また少し試してみます。

9路盤での最終的な目標は、GNU Goに対して1局平均10目勝ちです(今はだいたいイーブンぐらい)。勝率はあまり気にせず、そこを目指していきたいと思っています。そこまでいけたら、ブラウザで打てるようにしたいですね。

いろいろやっている間に、Rayが出してくれる形勢判断が常に1目ずれていること(黒番の時と白番の時で向きが逆、平均すれば0。簡易的な日本ルール対策?)に気づいて、その分を修正しようとしたのですが、今度は別のところで矛盾が生じてきて絶賛混乱中です。もう一目ぐらいどうでもいいか… あと、現在、Policy Networkも作っています。Value Networkもそうですが、よくこんなのでちゃんとしたアウトプットが出てきますね… なんだか、狐につままれた気分です。

あとあと、CapsNetで囲碁やった人とかいないんでしょうか?

[追記 2018/5/6]
最近、Policy Networkを作っているのですが、学習データを普通の棋譜からランダムに切り出して使ったりすると、結構ラベルに偏りが出てくるのが気になります。ということで、囲碁で一局を通して、座標ごとにどれぐらいの回数打たれるのかっていうのを調べてみました。例えば、COSUMIの9路盤のレベル1の作り碁ならこんな感じ。一番打たれる回数の多い場所を100として、それとの割合です。

 14  29  40  52  59  52  40  29  14
 30  44  56  68  71  67  55  44  30
 40  56  76  86  88  86  75  56  41
 53  68  87  96  95  96  86  68  54
 60  73  89  95 100  95  88  73  60
 54  68  87  97  94  95  86  68  53
 41  57  76  86  87  85  75  56  41
 30  45  56  68  71  67  56  44  30
 15  31  41  53  59  52  40  30  14

そして、レベル5ではこんな感じです。

 24  48  56  67  71  67  57  48  24
 48  64  74  82  85  82  74  64  48
 57  74  89  95  97  95  89  75  57
 67  83  96  99  98  99  95  83  67
 71  86  97  99  99  98  97  86  72
 67  83  95 100  98  99  95  83  68
 57  74  89  95  96  94  88  74  56
 48  65  74  83  86  83  74  64  47
 25  48  57  67  71  67  57  48  25

どうでしょう、ちょっと不安になってきませんか?

今現在、学習に使っているデータは、COSUMIの棋譜から取って、いくつかの条件でふるいをかけたものですが、それの検証用データのラベルの合計がこちら。これを[1]とします。

 1628 2786 3627 4372 4508 4372 3627 2786 1628
 2786 4038 4507 5506 6126 5506 4507 4038 2786
 3627 4507 5296 6662 6550 6662 5296 4507 3627
 4372 5506 6662 8024 6928 8024 6662 5506 4372
 4508 6126 6550 6928 7928 6928 6550 6126 4508
 4372 5506 6662 8024 6928 8024 6662 5506 4372
 3627 4507 5296 6662 6550 6662 5296 4507 3627
 2786 4038 4507 5506 6126 5506 4507 4038 2786
 1628 2786 3627 4372 4508 4372 3627 2786 1628

そして、そのデータと同じ作り方をしている学習用データで学習したNNで、先ほどの検証用データを予測させた時の最後のsoftmaxの出力をそのまま合計したのがこちら(この数字をここで使うことが正しいのかがちょっと確信持てませんが…)。これを[2]とします。

 1584 2745 3695 4300 4598 4301 3668 2754 1594
 2735 3890 4561 5532 6039 5525 4578 3922 2746
 3678 4605 5399 6763 6706 6754 5334 4583 3663
 4272 5503 6705 7787 7231 7720 6611 5479 4303
 4623 5987 6656 7232 7764 7128 6517 5946 4598
 4308 5513 6673 7657 7236 7645 6586 5511 4306
 3756 4626 5447 6669 6662 6638 5312 4612 3694
 2820 3924 4578 5491 5972 5544 4613 3944 2766
 1609 2763 3694 4276 4583 4272 3667 2726 1592

それぞれの座標で、[2]/[1]*100したのがこちら。

  97  99 102  98 102  98 101  99  98
  98  96 101 100  99 100 102  97  99
 101 102 102 102 102 101 101 102 101
  98 100 101  97 104  96  99 100  98
 103  98 102 104  98 103 100  97 102
  99 100 100  95 104  95  99 100  98
 104 103 103 100 102 100 100 102 102
 101  97 102 100  97 101 102  98  99
  99  99 102  98 102  98 101  98  98

ほんの少しだけ、それっぽい傾向が見受けられるような気もしますが、まあこれぐらいならぜんぜんOKでしょうかね? とりあえずは気にしないことにします。

[追記 2018/5/25]
「white shadeの棋譜をRayに添削してもらって、悪手っぽいところの前後を学習データに追加して、それをもう一度学習する」ってやり方で、いきなりGNU Goに1局平均10目ぐらい勝てるようになったのですが、それってそれなりの棋力がないとできないはずだと思って実際に棋譜を眺めてみても、そこまで強そうには見えません。どうも、最後にねちねちやられてGNU Goが自爆していることが、ちょくちょくあるからみたいです。手法自体はかなり有効そうなので、目標を「1局平均20目」に変更して、現在、二周目やってます。

[追記 2018/8/29]
ブラウザで対局できるようにしてみました。続きの記事をどうぞ。

クライアントサイド版COSUMIを作ってみました
http://www.perfectsky.net/blog/?p=402

NATIVE INSTRUMENTSのKOMPLETE AUDIO 6を買ったのでRMAAしてみた

2011.12.11  |  ハードウェア, 音楽  |  Comments (0)

キャンペーンかなんかでちょうど安くなっていたので、NATIVE INSTRUMENTSのKOMPLETE AUDIO 6というUSBオーディオインターフェイスを買ってみました。

KOMPLETE AUDIO 6 | NATIVE INSTRUMENTS : PRODUCER
http://www.native-instruments.com/#/jp/products/producer/komplete-audio-6/

とりあえず、RMAA(RightMark Audio Analyzer)やってみました。設定は、OUTPUT 1/2からINPUT 1/2へのループバック、OUTPUTのボリューム最大、INPUTのゲイン12時、16bit/44.1kHzです。

http://www.perfectsky.net/misc/20111211.html

結構いろいろな設定で試してみたのですが、これより大幅に良い結果になることはありませんでした。まあ、概ね良好な数字だと思います。実際に聞いた感じも十分満足できる音質です。

入出力もたくさん付いてて、筐体の質感も良い感じ。今の値段なら十分お買い得だと思います。が、良いことばっかり書いてもあれなので、気になった点をいくつか箇条書きにしていくと、

  • 私が何か勘違いしているだけかもしれないけど、RMAAでサンプリングレートを44.1kHzから上げると、上の方の周波数帯から結果がおかしなことになる
  • ものすごく小さい音でだけど、一度だけ、入出力に合わせて筐体が鳴いていた
  • たぶんその時の設定が悪かっただけだと思うけど、一度だけ、プチプチノイズが出てた

NATIVE INSTRUMENTSのサイトには、動作環境としてWindowsではWindows 7しか書かれていませんが、説明書にはVistaとXPの記載があって、実際私はXPで使えています。

この手のデバイスはよく分からないことがたくさんあって難しいです。そして、GUITAR RIG楽しいです(笑)。

[追記 2011/12/16]
NATIVE INSTRUMENTSのこちらのページでは、ドライバとソフトウェア・アップデートは近日公開!!となってますが、別のページに新しいドライバとファームウェアがちゃんとあったりします。

NATIVE INSTRUMENTS : Support : Updates : Drivers & Other Files
http://co.native-instruments.com/?id=freeupdates

YAMAHAのモニタースピーカーMSP3の中を覗いてみた

2011.11.25  |  ハードウェア, 音楽  |  Comments (2)

今回はYAMAHAのモニタースピーカー、「MSP3」について書いてみたいと思います。このサイトはPCやインターネット関連の話題のみを扱うことにしているので、このアナログなスピーカーの話は微妙なところなんですが、私もそうですがPCのモニターの横に置くことも多いだろうということで(笑)、まあいいかな?

MSP3 | スピーカー | 製品情報 | ヤマハ プロオーディオ
http://proaudio.yamaha.co.jp/products/speakers/msp3/

このスピーカーを手に入れたのは10年近く前だと思うのですが、そもそも発売になったのが、ちょうど10年ぐらい前らしいので、比較的出てすぐに買ったことになります。他にもう少しまともな再生環境があったので、このスピーカーで本格的に音楽を聴くことはあまりなかったのですが、先にも書いたように、PCのモニター横のスピーカーとしてずいぶん活躍してくれました。私が買った時は、ペアで35,000円ぐらいはしたと思うのですが、今は25,000円を切るようです… コストパフォーマンスはかなり良いと思います。

で、そんなお気に入りのスピーカーなんですが、買い換えたいなと思いまして(笑)、ウェブでいろいろ見ていたんですね。そしたらこんなMSP7 STUDIOの内部写真を見つけたわけです。

http://www.midifan.com/modulearticle-detailview-1431.htm

そして、これを見てしまうと自分のMSP3も開けたくなるわけです(笑)。

ということで、ここから先はMSP3をちょっとだけ分解してみた話になりますが、めんどうなので内部の写真も回路図もありません。ごめんなさい。また、予め書いておきますが、私は電気回路についてもあまり詳しくありませんし、単純に見間違えてる場合もあると思います。そういうつもりで、以下は読んでください。

まず、背面のネジを外します。たくさんありますが、大きな7つのネジだけでOK。そのまま後ろに引っ張るようにして背面のパネルを取り出します。さらに、スピーカーユニットと接続されているケーブルのコネクタをメインの基板から外し、もう少し中が見えるように開きます。今回はそれ以上は分解はしていません。その状態から分かる範囲を見ていきます。

開けてまずさっきのサイトの写真との違いで気付くのは、吸音材がほとんど入っていないことです。一番上部に申し訳程度にあるだけ。と言うより入れるスペース自体がほとんどありません。中はなんだかごちゃごちゃと狭いです。

電源周りは、トランスがあって、整流されて、35V4700uF*2(ニッケミのSMG。これ以外の電解コンデンサもたぶん全部ニッケミ)で平滑された正負の電源がまずあって、それがパワーアンプと、正負15Vを作る2つの三端子レギュレータに供給されています。三端子レギュレータは78L15と79L15なので、最大でも100mAまでしか流せないやつですね。さっきのサイトの写真にあるような大きなのじゃなくて、ヒートシンクも付けられない小さいのです。

入力の辺りは、この状態ではちょっと見えにくくてよく分かりません。

パワーアンプはナショセミのLM1875っていうICが使われています(けっこう有名なICらしい)。これを見て初めて気づいたんですが、このスピーカーはバイアンプじゃないんですね。ここ最近、「MSP5がいいかな」とか「いっそのことMSP7かな」なんてことばかり考えていたので、このスピーカーもバイアンプな気になってました(笑)。LM1875の電源ピンのそば(というより先ほどの三端子レギュレータのそばか)には、パスコンとして0.1uFのコンデンサ(積セラみたいなやつなんですが、104のわりにはややサイズが大きいような気がします。ニッセイのMMTっていうフィルムでしょうか?)が、基板の裏側からなんだか危なっかしく取り付けられています。こういう実装しかだめなんでしょうか?

で、このICからの出力がリレーをひとつ通って、そのままツイーターとウーファーへ送られています。ということで、スピーカーネットワーク回路はまだこの先のようなので、奥のスピーカーユニットの方を覗いてみると、ツイーターには電解コンデンサが1つ付いていますが、ウーファーの方には何も付いてません。うーん、そんなもんかな? ちなみにMSP5 STUDIOは24dB/oct、MSP7 STUDIOは30dB/octでツイーターとウーファーがクロスオーバーするようです。別にスパッと切れてたら良いってものでもないし、そもそもあちらはスピーカーユニット直前のパッシブな回路ではないので、比較するのはちょっとなんですが、商品名に”STUDIO”の文字が付くか付かないかは、結局このあたりなんでしょうね。ウーファーのサイズとか、最大出力とかだけの話ではないなと思いました。そういうわけなので、MSP3を購入予定の人は、もう少しお金をためてMSP5を買いましょう(笑)。

ツイーターに付いている電解コンデンサは、表示がかなり見づらいんですが、たぶん4.7uFだと思います。フィルムに交換できなくはない容量ですが、交換するならツイーターを一度箱から外さないとだめだと思います。

個人的には、それなりに熱くなるであろうパワーアンプICのそばに置かれている、平滑用の電解コンデンサを交換してみたくなりました。このスピーカーの内部の熱のこもり具合がいまいちわからないんですが、そろそろへたってきててもおかしくないと思います。でも、見た目は特に問題無さそうでした。

[追記 2011/12/13]
適当なのが家に転がっていたので、三端子レギュレータの二次側に付いている平滑用の電解コンデンサ、100uF*2を交換してみました。まず30分ほどそこそこ大きな音量で音楽をかけて、その後できるだけすばやく開けて中の温度を調べてみたのですが、一番大きな電解コンデンサがややぬるくなっているだけで、それ以外はパワーアンプICやそのヒートシンクさえも、ほとんど全くといっていいほど熱を持っていませんでした(LM1875は効率がいいのかな?)。そういうわけなので、やる前から交換する意味はあんまりないだろなと思っていたんですが、実際外したコンデンサを家に転がっていた測定器(いろいろ転がっているな(笑))で測ってみても、全く容量抜けはおこしてませんでした。当然ながら、音を聞いても何の違いも分からず…

これで終ってはちょっとつまんないので、もうひとつ実験。サウンドハウスのMSP3のレビューに、ウーファーに付いているスピーカーグリルが簡単に外せると書いてあったので、それを試してみました。スピーカーグリルは、どこかに引っかかっているとかではなく、ただ単に刺さっているだけなので、手前に真っ直ぐに引っ張ってくれば外れます。肝心の音はというと、少しだけですが違いがありました。個人的には外した音の方が良く聞こえます。スピーカーグリルも含めてチューニングしてあるでしょうが、気分的にはこういう余分なものは取ってしまいたい。そして何より、溜まっていた埃を掃除できたのは大きい(笑)。これからはこの状態で使おうと思います。

英語学習に役立つソフト・ウェブサイト

2009.01.23  |  Firefox, 動画, 音楽  |  Comments (0)

個人的におすすめの、英語学習に役立つソフト・ウェブサイトをリストアップしてみます。

MouseoverDictionary
http://maru.bonyari.jp/mouseoverdictionary/

意味が分からない単語の上にマウスカーソルを乗せると、サイドバーにその単語の意味を表示してくれるFirefoxの拡張機能。これが無いと、もう生きていけません(笑)。ただ、サイドバーを開くのにショートカットキーを押したりするのはちょっと面倒なので、私はFireGesturesの適当なジェスチャに

toggleSidebar("viewMouseoverDictionary");

というスクリプトをマッピングしています。これでさらに使いやすくなります。

P-Study System
http://www.takke.jp/pss/

高機能なフリーの英単語学習ソフト。英単語の発音も確認できます。最初から問題が入っていますが、追加問題集もチェックしてみましょう。

Better at English – Learn English – EFL ESL podcast!
http://www.betteratenglish.com/

英語学習者向けのポッドキャスト。ここは超おすすめ! とにかく話が楽しくて、なんだか和む(笑)。難易度が少し高めですが、トランスクリプトもあるので中級者以下の人にも為になるとも思います。ここ最近は更新があまり頻繁に行われていませんが、姉妹サイトのUncensored Englishも含めて、ぜひがんばって欲しい…

Free English lessons | ESL podcasts
http://www.china232.com/

同じく英語学習者向けのポッドキャスト。上海在住カナダ人兄弟の自然な会話がGood!

English as a Second Language Podcast
http://www.eslpod.com/website/

同じく英語学習者向けのポッドキャスト。バラエティーに富んだ内容で、このサイトはたぶん結構有名だと思います。

Spotlight
http://www.spotlightradio.net/

同じく英語学習者向けのポッドキャスト。ここもかなりクオリティが高いです。ここまで4つのポッドキャストは、難易度順に並べてみました。このサイトが一番スピードもゆっくりで簡単です。

YouTube – Broadcast Yourself.
http://jp.youtube.com/

リスニングの勉強をする時も、絵がないと寂しいという人は、べたですがYoutubeが役に立ちます。使えそうな検索単語は、’english’・’ESL’・’EFL’・’learn’・’study’・’beginner’・’intermediate’・’advanced’あたりでしょうか? あくまで一例ですが、こんなのとかこんなのが簡単に見つかります。

yappr
http://jp.yappr.com/

Youtubeの動画を、ボランティアが用意してくれた英語のトランスクリプトや日本語訳といっしょに見ることができるサイト。どんな感じかは実際に見てもらった方が早いですが、よくできています。

こう見てみると、ほんと良い時代ですよねえ…

効果音を作成するのに便利なソフトシンセ Beam2002

今日は、COSUMI制作時にお世話になったソフトなどを3つ記事にします。1つ目は、Flashで使う効果音を作るのに使用した、Beam2002というソフトウェアシンセサイザーです。かなり簡単にいろんな音が作り出せるので、これはけっこうおすすめです。

Beam2002 / Cycle of 5th
http://www.cycleof5th.com/products/beam2002/

次の3つの効果音を、このソフトで作ってみました。

石音
ボタンにマウスカーソルを乗せた時の音
ボタンをクリックした時の音

どうですか? なかなかいい感じでしょ! バリバリとか、ガラガラとか、ドスドスとか、もっと過激な音も、もちろん作成可能です。うーん、こういうソフトは、いじりだすと止まりません…(笑)