0から始める入門囲碁アプリ
囲碁アプリを開発中です!
fe8787e9d6882315df7a2304a5dd86db.pngページへ移動
Twitter
Calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< July 2018 >>
New Entries
Recent Comment
Category
Archives
囲碁アプリの開発日記(21) 亀の歩みで

3か月ぶりの開発日記更新です。ちょっと気を抜くとあっという間に日が過ぎてしまって焦ります。日記を書いていなかっただけでインプット作業は少し行っていたので今回はそれを紹介していきますね。

 

■DeepLearning関係の勉強

DeepLearinngを使うと人間らしい手を打つという囲碁関係者の話を聞いていたので、どうせ作るならスキルアップも兼ねて勉強することにしました。本当に一からの勉強なのでどこから手を付ければよいか分からず悪戦苦闘しています。何冊か買った入門本の中ではこれが一番参考になりました。

 

Google Cloud Platformではじめる機械学習と深層学習

 

DeepLearningのサンプルプログラムを動かすには様々なソフトウェアのインストール必要です。それだけで挫折してしまいます。この本ではGoogle Cloud Platformを使う事で面倒な作業を減らしています。また、理論的な部分も初歩から丁寧に書いてあり何となく分かった気分になりました楽しい

 

次は囲碁プログラムでどのようにDeepLearningを使っているかの勉強です。そのものずばりな本があります。

 

最強囲碁AI アルファ碁 解体新書

 

1年前にこの本を買ったときは、内容が頭に入らずお蔵入りにしていました。DeepLearningの概要を理解してから読む事でようやく内容を理解できました。何となく理解したぐらいのレベルですが・・。余談ですが、この本の著者である大槻和史さんはコンピュータ将棋選手権で準優勝された方です。凄いと思うと同時に知的レベルの差を感じて若干凹みますねくもり

 

…といった感じです。実際にDeepLeariningを使った囲碁AIを作るにはまだ勉強が足りないと思います。ですが、いい加減に飽きてきましたので、途中でストップした囲碁アプリのUIの開発とAI(DeepLearning使わない版)の移植作業を再開する予定です。新しいオフィスを借りたのでそこで黙々と開発しようかなと楽しいブラウザで遊べる最低限の囲碁アプリ公開を目標に頑張ってみます。

 

posted by: ken1-fund | 囲碁 | 17:33 | comments(0) | trackbacks(0) |-
囲碁アプリの開発日記(20) 調べたことまとめ

割り込み作業が終わって少し余裕が出てきました。囲碁開発にフルコミット!というわけには行きませんが、少しずつ進めていければと思います。

 

■前回までの成果

・Pixi.jsを使ってWebアプリで基本的なGUIが作れるようになった

・囲碁の盤面や説明GUIを作成した

・囲碁入門のコンテンツを一部作成した

・C#で作った囲碁AIをC++に途中まで移植した

 

■今後やる事

・囲碁AIの移植を終わらせる

・WebAssemblyを使ってWeb上でコンピュータと対局できるようにする

・開発者の囲碁棋力アップ

・囲碁入門のコンテンツを拡充する

ディープラーニングを勉強して囲碁AIに組み込む

・その他、便利な機能を組み込む

 

ディープラーニングは今まで勉強したことがなく一番時間がかかりそうです。一応補足しておくと、ディープラーニングを使わなくても囲碁アプリを作る事自体はできます。ですが使った方が人間らしい手を打てるという話を聞いており、ぜひチャンレンジしてみたいです。単純に性能が良くて強いAIができるというのもあります。強いAIがあるとヒント機能など便利な機能として生かす事ができます。

 

今は参考書を読んで基本を勉強しています。新しいPCを買ったらtensorflowをインストールしてサンプルプログラムを動かしてみます。囲碁プログラムについては、過去の記事でも紹介したとおり「AQ」開発者である山口さんが公開された「Pyaq」を読んで勉強します。

 

懸案としては、ディープラーニングで学習したモデルをどうやってWeb(将来的にはAndroid、iOS)で動かせばよいか?というのがあります。tensorflowはC++のAPIをサポートしていますが、そのAPIを使うためのセットアップが大変そうです。ライブラリが機能豊富すぎて容量が大きくなるのも心配です。今のところ、tiny-dnn(https://github.com/tiny-dnn/tiny-dnnというC++のヘッダだけで使えるフレームワークを使うことで解決できるのではないかと考えています。日本の個人の方が開発されているフレームワークだそうです!!ただし、tensorflowのモデルをインポートする機能がないので(caffeからのインポートはあるのですが)、そこを自分で何とかする必要があります。C++の文法も再勉強しないとダメですね。C++14とか全く分からないです悲しい英語の勉強も(以下略)。

 

 

 

posted by: ken1-fund | 囲碁 | 17:41 | comments(1) | trackbacks(0) |-
囲碁アプリの開発日記(19) 囲碁作ってる場合じゃないのに

追い込まれることで今までにない集中力を発揮して作業が進みました!本当は囲碁作ってる場合じゃないんですけどね(笑)

 

今回は5路盤で遊べるCPUまで作りました。5路盤ならモンテカルロ木探索を使わなくても、原始モンカルロ法で十分なようです。あとは、このコードを精査してWebAssemblyで動かしてJavaScript側とのインターフェースを繋げばWebアプリとして遊べるものになります。2〜3日あれば・・・って、囲碁作ってる場合ではないのです。マジで。

 

posted by: ken1-fund | 囲碁 | 17:49 | comments(0) | trackbacks(0) |-
囲碁アプリの開発日記(18) 一旦進捗ストップします

今週はC#で作ったコードをひたすらC++に移植する1週間でした。今はランダム(+α)の手を返すところまではできていて、あと1週間ぐらいあれば移植が大体終わりそうです。…と思いながら作業をしていたところ、将皇の方で緊急性の高い割り込み作業が入ってしまいました悲しい

 

一か月弱ぐらい囲碁の開発がストップしてしまうかもしれません。完全に止めると忘れてしまうので1日30分でも時間を確保して進めたいとは思っていますが、さてどうなることやら。

 

posted by: ken1-fund | 囲碁 | 19:05 | comments(0) | trackbacks(0) |-
囲碁アプリの開発日記(17) テスト用のGUI作成

というわけでWin32APIを叩いてテスト用GUIを作りました。いざ手を動かしてみると簡単にできてしまうものですね。何で作ろうか悩んでいた時間の方が長かったです。

 

どちらかというとGUIよりもC++の文法をかなり忘れてしまっており先行きが不安な感じです。ですが、スキルアップの機会を得たと前向きに考えて頑張るしかないですね。まずは過去にC#で作ったAIをC++に移植して、ゲームができるレベルまで仕上げていきたいと思います。集中して頑張れば1週間あればできそう(できるとはいっていない)。

 

 

 

 

posted by: ken1-fund | 囲碁 | 15:25 | comments(0) | trackbacks(0) |-