C90 のコミケに参加した。
SIGNICO というサークル名で、主に機械学習を主とした技術書の頒布が主な活動であり、 それに参加した。
参加自体は前回の C89 からしており、今回で2回目であった。 前回参加後に、簡単に体験記と称して記事を書こうとしたけれど、年末だったこともありそのまま 正月モードに入ってしまい書くことは無かった。
今回はコミケのことを失念していて、当日に既に大学の友人達と旅行をする予定を入れてしまっており、 当日の売り子として参加することは出来なかったが、まだ日が立っていないこともあるので、 原稿提出までの雑感、所感をまとめておく。
今回は、プログラミングの作業日数としては4日くらいを費やしたが、実際にコーディングしていたのはその半分も無いかもしれない。 うまく動くか眺める時間が長かった。
今回はリバーシのAI作成をテーマに取り組んだ。 予め、AIのベースとなるプログラムとAI同士の対戦ビューアは C++ で実装済みだった。
原稿では、ニューラルネットワークを組み込むことを目論んでおり、その作成が必要となった。 学習すべきネットワークは全部で3つあった。そのうち、1つは単純な教師あり学習で、2つは強化学習を要するものだった。
実装は keras を用いて行った。 教師あり学習を行うネットワークは GPU 計算による恩恵を受けられ、AWS の EC2 g2.2xlarge を用いて学習させた。 環境構築などの時間を含めて費用は全部で 6.83 ドルだった。
強化学習を行うネットワークの学習では CPU で対戦を行わせたためか、あまり GPU の恩恵を受けられず、g2.2xlarge では高速に動作しなかったので手元の MBP で学習させた。これはかなりの時間を要した。2,3 日程掛かった。
最終的には C++ で作成した AI と ニューラルネットワークの学習結果を組み合わせる必要があり、 Flask を用いて WebAPI の形式で学習結果にアクセス出来る構成とした。
原稿は reST (reStructuredText) で記述した。markdown のように記述できる。
原稿の作成は概ね、2, 3日くらいだと思う。
実装作業中では、少しでも使えるかもと思った画像をスクショしておくと原稿執筆開始後にスクショを取る手間が省けた。
今回は2回目であったが、不思議な緊張感を持って参加出来る行事だった。緊張感がある分、原稿が完成すると達成感もあった。
機械学習というテーマ自体は、学生のころに触っていたが社会人になってからは仕事などでメインで触ることは無くなったので、 このサークル活動を通してそこら辺の領域を養えている様な気がしている。
ついでに底上げとして coursera-ml を修めつつやってたので、 時間的に少し大変だった。今は SVM (week 7 / 11) を終わらせたところ。あと 4 week。