2017/01/07

ディープラーニング

昨日は1月5日。囲碁の日だそうです。年末年始にかけて話題になっていたネット上の棋士のうち、Master と呼ばれる無敗の棋士が、AlphaGo の改良版であることが DeepMind Technologies 社 によって明らかにされました。昨年 AlphaGo が登場して以降、囲碁AIの成長は目覚ましく、もはや人類は勝てそうにないという状況になりつつあります。とはいえ、今年はAI対人間の対局には目が離せないことになりそうで、昨年趙治勲名誉名人に1勝した Deep Zen Go がパワーアップし、井山六冠ほかと対戦するワールド碁チャンピオンシップも気になります。

私自身の C++ や Javascript による囲碁プログラムは一向に進んでいないのですが、ヒューリスティックなコードを組み合わせて作ること自体が疑問になってきているので、今年はまず、ディープラーニング(深層学習)について勉強する予定です。去年購入した『ゼロから作る Deep Learning』が教科書です。プログラミング言語としては Python が使われています。

この本を勉強しながら、ニューラルネットワークとは何かについて Small Basic のプログラムを作りながら解説できたらなと考えています。

| | コメント (0) | トラックバック (0)

2016/03/05

最近のコンピュータ囲碁

昨年からコンピュータ囲碁の状況が一変しています。

Google の開発した AlphaGo が 2015/10/5~9 に行われたヨーロッパチャンピオン樊麾(Fan Hui)二段との対戦で 5 戦 5 勝したためです。コンピュータ囲碁がプロ棋士に勝利したのはこれが最初です。

この試合の前までは、コンピュータ囲碁の強さはアマチュアのトップレベルと言われていましたが、Google AlphaGo は今月の9~15 にプロのトップ、イ・セドル九段に挑戦するとのこと。はたしてどうなるか目が離せません。

ただ今の状況ではイ・セドル九段のほうが強いように思います。AlphaGo はディープラーニングと呼ばれる機械学習で碁を学んでいますが、強い碁敵との経験が少ないように思えるからです。自身との対戦もしているそうですが、それでは強くならないのではないでしょうか。

ともあれ、AlphaGo の出現により日本でも「DEEP ZEN GOプロジェクト」チームを発足し、AlphaGo に対抗することとなりました。

個人で強い囲碁プログラムを作ることが難しくなってきたと言えるでしょう。

私の囲碁プログラム開発も(一向に進んではいないものの)モチベーションをどう維持するのか、考え直す時期になりました。今漠然と浮かぶのは、単に強さを求めるという方向ではなく、囲碁の本質に迫っていくような方向を目指したほうが世の中に貢献できるのではないか、というくらいでしょうか。

※下記はAlphaGo(白)対 Fan Hui(黒) 第5戦の終局図(白中押し勝ち)。棋譜は AlphaGo のサイトからダウンロードできます。

AlphaGo 対 Fan Fui 第5戦終局図

| | コメント (1) | トラックバック (0)

2015/10/28

JavaScript (38) 碁盤にもなる囲碁シミュレーター

Simulator 0.5 には、結局、棋譜関連で2つのバグがありました。1つは初手が記録されない件、もう1つは日付の月がずれる件です。どちらも Small Basic では 1オリジンで処理しており、JavaScript で 0オリジンに変えるべきところを直していなかったのが原因です。

バグだけを直すのももったいないので、シミュレーターに碁盤の機能を追加しました。[はじめから]ボタンを追加して碁盤上をクリックした結果も棋譜として記録できるようにしました。

プログラムを Simulator 0.6 として公開します。

JavaScript でプログラムするのは 1年7か月ぶりでしたが、プログラムそのものは比較的簡単に直せました。今回初めて Windows 10 + Edge + Aptana Studio 3 という環境で開発しましたが、特に問題はありませんでした。Microsoft Edge の F12 開発者ツールもまずまずの使い心地でした。

下図は Simulator 0.6 の rec03.js の修正した箇所(日付の月のずれ)にブレークポイントを設定し、そこで止めて、d.getMonth() をウォッチリストに追加し、9 (10月を示す値) になっていることを確認した画面です。

図33 Microsoft Edge F12 開発者ツール

【図33 Microsoft Edge F12 開発者ツール】

ただ、JsDoc Toolkit の使い方をすっかり忘れていました。以前の記事を見ると当時は Mac mini を使っていたようです。改めて Windows 10 のマシンにインストールし、記事を参考に実行しました。Windows 10 のコマンドプロンプトでは、指定するファイル名すべてにフルパスを指定したところうまく動きました。

これでバグも解消したので、C++ のほうに安心して移植できます。

| | コメント (0) | トラックバック (0)

2015/08/26

フリーソフト紹介:囲碁クエスト

スマホ向けのフリーソフト「囲碁クエスト」を紹介します。9路盤と13路盤でネットワーク対戦ができます。下図はボットと対戦したときのスクリーンショットです。

Igo_quest

級位・段位およびレーティングを算出してくれるので、自分の実力がどの位なのかを把握することができます。初心者にとってはコンピュータ囲碁は強すぎるので、同じ位の強さの相手をマッチングしてくれるこのソフトでの対戦のほうが、勉強になるような気がします。

下図は私の現在のレーティングです。最近ようやく黒でも勝ち越せるようになってきました。

Igo_quest_my_page

ルールは中国ルールでコミは7目です。時間制限があるので手軽にゲームを楽しめます。

| | コメント (0) | トラックバック (0)

2015/01/17

C++ (7) CgfGoBan のインストール

GNU Go のソースを見ていて気づいたことがあります。C++ ではなく C言語のみのソースでした。そこで、もう一本参照用のプログラムを追加することにしました。CgfGoBan です。

CgfGoGan のホームページ http://www32.ocn.ne.jp/~yss/cgfgoban_j.html に行きます。ダウンロードのため「英語のページ」へ行きます。

CgfGoBan ホームページ

「Download CgfGoBan 1.06 2011/11/16」をクリックしてダウンロードします。

英語のページ

[保存] を選びます。

Select_operation

[フォルダーを開く] を選びます。

Download_complete

Visual Studio (Community) 2013 を起動し、[FILE] [New] [Project] で [Win32 Project] を選び、名前に CgfGoBan を指定し、[OK] を押します。

新規プロジェクト

Win32 Application Wizard のウィンドウが開くので、[Next] を押します。

Win32 Application Wizard

Application type は[Windows application] のまま、Additional options で [Empty project] をクリックし、[Security Development Lifecycle (SDL) checks] のチェックは外し、[Finish] を押します。

Application settings

ここで Solution Explorer に CgfGoBan という空のプロジェクトができていますが、右ボタンで [Remove] を押して消してしまいます。

さきほどダウンロードした cgfgoban106.zip を開きます。

Download_folder

cgfgoban106 フォルダーの中に入ります。全てのファイルを選択し右クリックで [コピー] を選びます。

Copy_2

作成された Visual Studio 2013\Projects\CgfGoBan の中で [ペースト] します。

ここで改めて [FILE] [Add] [Exsisting Project] を選びます。

Add Existing Project

ペーストした cgfgoban というフォルダーの中の cgfgoban という VC++ 6 Project を選びます。

cgfgoban VC++ 6 Project

One-way upgrade のポップアップが表示されるので、[OK] を押します。

One-way upgrade

Security Warning が表示されるので [OK] を押します。

Security Warning

同様に、cgfthink も [FILE] [Add] [Exsisting Project] で追加します。

Solution Explorer の cgfgoban で右クリックし、[Properties] を選びます。

cgfgoban Properties

[Configuration Properties] [General] の [Output Directory] を ".\Debug\" から "..\Debug\" に変更します。

Output directory

同様に、以下の設定もディレクトリを変更します。

 cgfgoban, cgfthink とも [Configuration Properties]:

 [General] [Output Directory]
 [General] [Intermediate Directory]
 [Linker] [Output File]
 [Browse Information] [Output File]

これで Local Windows Debugger の緑の三角をクリックし、cgfgoban.exe と cgfthink.dll をビルドします。

CgfGoBan のウィンドウと

CgfGoBan

CgfgobanDLL Information Window というウィンドウが表示されます。

CgfgobanDLL Information Window

リリース版をビルドするときも、同様にディレクトリを変更してから行います。

で、ソースファイルの拡張子は .cpp なのですが、中身はC言語でした...。

| | コメント (2) | トラックバック (0)

2015/01/16

C++ (6) GoGui のインストール

GNU Go はテキスト画面だけなので、Go Gui という以前、Small Basic や Java のコーナーでも紹介している Java ベースで囲碁のグラフィックスを表示できるソフトを導入してみましょう。Java が導入されていることが前提です。まず、Go Gui のサイト http://gogui.sourceforge.net/ へ行き、[Windows Installer] と書かれたリンクをクリックします。

GoGui ホームページ

[実行] を押します。広告のダウンロードボタンを誤って押さないよう注意してください。

実行

インストーラーが起動するので、[Next] ボタンを押します。

インストーラー

使用許諾契約書が表示されるので確認し [I Agree] ボタンを押します。

使用許諾契約書

コンポーネントの選択画面が表示されます。[Next] ボタンを押します。

コンポーネントの選択

インストール先の設定画面が表示されます。[Install] ボタンを押します。

インストール先の設定

完了画面が表示されるので、[Finish] ボタンを押します。

完了

GoGui が起動します。メニューから [プログラム] [新規プログラム] を選択します。

新規プログラム

GNU Go のコマンドラインを「"C:\Program Files (x86)\GNUGo\bin\gnugo.exe" --mode gtp」と入力します。

コマンドライン

メニューラベルの編集画面が表示されるので、[OK] を押します。

メニューラベルの編集

メニューから [プログラム] [プログラムの起動] [GNU Go] を選びます。

プログラムの起動

[対局] [新規対局] を選びます。

新規対局

対局が開始したら、[対局] [対局情報] を入力します。

対局情報

私の棋力では GNU Go には勝てそうもないので、iPad 2 にインストールした「最強の囲碁HD」と対戦させてみました。GNU Go が221手で投了しました。

GNU Go 投了

こちらが「最強の囲碁HD」側の画面です。

最強の囲碁HD

GNU Go と GoGui は GTP (Go Text Protocol) という方式で通信を行っています。囲碁の大会に出場するには最低限この機能が必要になります。

| | コメント (0) | トラックバック (0)

2015/01/15

C++ (5) リリース版のインストール

GNU Go のリリース版を作るにはソリューション構成で Release を選び、ローカル Windows デバッガーの緑の三角をクリックします。

Release

さらにソリューション エクスプローラーで INSTALL を選んでマウス右ボタンを押し、ビルドを選択すると、リリース版が C:\Program Files (x86)\GNUGo\bin にコピーされるはずですが、以下のエラーが出ます。

error MSB3073: The command "setlocal
"C:\Program Files (x86)\CMake\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1.

これは C:\Program Files (x86)\GNUGo\bin に書き込む権限がないためです。タスクバーの Windows アイコンで右クリックし、[コマンド プロンプト (管理者)] を選び、gnugo-3.8 のフォルダで以下のコマンドを実行するとリリース版がコピーされます。

"C:\Program Files (x86)\CMake\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake

リリース版を実行するには、エクスプローラーでコピー先の gnugo.exe をクリックするか、コマンド プロンプトで

"C:\Program Files (x86)\GNUGo\bin\gnugo.exe"

と入力します。

gnugo

コンピューターが白番で人間が黒番です。"d16" などの交点を指定して Enter を押します。 "exit" で強制終了できます。テキスト画面だと結構面倒くさいですね。

| | コメント (0) | トラックバック (0)

2015/01/05

C++ (4) GNU Go のビルドと実行

ソリューションファイル GNUGo.sln をダブルクリックすると Visual Studio Community 2013 が起動します。緑の三角のある [Local Windows Debugger] をクリックしてビルド(コンパイル)を開始します。

Visual_studio

ビルドされていないプロジェクト(ソースファイル)の一覧が出るので [Yes] ボタンを押してビルドを続行します。

Out_of_date

なぜか以下のエラーが表示されます。気にしないでよさそうです。

Release_all_build_not_found

Solution Explorer (ソリューション エクスプローラー)の gnugo を選びマウスの右ボタンをクリックします。メニューの中から [Debug] [Start new instance] を選びます。

Debug_start_new_instance

GNU Go が起動します。

Started_gnugo

[Break All] ボタンを押すと実行中のソースプログラムが表示され、プログラムの動きを追跡できます。

Break_all


| | コメント (0) | トラックバック (0)

C++ (3) CMake の実行

GNU Go のサイトのドキュメントを見ると、Visual Studio でコンパイルする前に CMake を実行するように書いてあります。

Documents

CMake はKitware 社が提供するクロスプラットフォームでの開発環境を生成するフリーソフトウェアです。GNU Go は元々は Unix 系のプログラムですが、Windows の Visual Studio 向けにソリューションファイルを生成してくれます。
http://www.cmake.org に行ってみましょう。

Homepage_2

トップ画面の下方にある [Download CMake Version 3.1.0] をクリックします。

Download_2

プラットフォームとして Windows (Win32 Inataller) を選び、cmake-3.1.0-win32-x86.exe をクリックし [実行] します。

Run

セットアップウィザードが起動するので [次へ] ボタンを押します。

Setup_wizard

ライセンス契約書を確認し [同意する] ボタンを押します。

License

[次へ] ボタンを押します。

Install_options

[次へ] ボタンを押します。

Target_folder

[インストール] ボタンを押します。

Start_menu_folder

[完了] ボタンを押します。

Done

CMake がインストールされているので、実行しましょう。

App

CMake が起動します。[Browse Source] ボタンを押してソースのフォルダーを指定します。

Cmakegui

GNU Go を展開したフォルダー Visual Studio 2013\Projects\gnugo-3.8 を指定し [OK] を押します。

Browse_source

同様に [Browse Build] でも同じフォルダーを設定します。

Path_to_build

[Generate] ボタンを押すと以下の画面が出るので、[Visual Studio 12 2013] を選んで [Finish] ボタンを押します。

Generate

ワーニングが出ますがファイルの生成が完了します。

Genarating_done

エクスプローラーでソリューションファイルができていることを確認します。

Solution_generated

(つづく)

| | コメント (0) | トラックバック (0)

C++ (2) GNU Go をダウンロードしてみよう

Visual C++ で囲碁プログラムを作る手始めに、リファレンスとして GNU Go を Visual Studio 2013 でビルド(コンパイル)してみようと思います。GNU Go はフリーソフトウェア財団が開発しているフリーの囲碁プログラムです。多くの囲碁プログラマーが参照しています。

それから前提として Visual Studio (Community) 2013 のインストールが必要です。これについては英語ですが、こちら(Install Visual Studio Community 2013 の項のみ)を参照ください。その後の手順は次のような流れになります。


  1. GNU Go のダウンロードと展開

  2. CMake のダウンロード・インストール・実行

  3. GNU Go のビルド・実行

まず、GNU Go のサイト https://www.gnu.org/software/gnugo/ に行きます。

Homepage

Download のページに行きます。

Download

ミラーサイトがあるので Mirror のページに行きます。

Mirror

日本 (Japan) の JAIST (北陸先端科学技術大学院大学)のミラーを選びます。

Japan

JAIST の ftp の一覧 (Index) が表示されます。

Index

gnugo のフォルダを探してクリックします。

Gnugo_folder

gnugo-3.8.tar.gz をクリックし保存します。

Save_gz

このファイルは圧縮されているので、WinZip というツールで解凍します。WinZip は「ストア」で購入できます。

Winzip

WinZip の起動画面です。

Winzip_started

マウスの右ボタンをクリックすると app bar が表示されるので、[Open Zip] をクリックし [Open from My PC] を選びます。

Open_zip

先ほど gnugo-3.8.tar.gz を保存したダウンロードフォルダーを選びます。

Download_folder

gnugo-3.8.tar を選択し [Open] をクリックします。

Gnugo38tar

gnugo-3.8 をクリックして中を見てみます。

Gnugo38

右クリックで app bar を表示し [Unzip All] をクリックし [Unzip to My PC] を選びます。

Unzip_all

ドキュメントフォルダーの Visual Studio 2013\Projects を選んで [OK] を押します。

Ok

エクスプローラーで一連のファイルが展開されたか確認します。

Unzipped

(つづく)

| | コメント (0) | トラックバック (0)

より以前の記事一覧