漆黒な技術メモ

管理人が必要に応じて自分のメモを好き勝手に投下するたまり場的ブログ

【ちょっと技術的なことAdventCalender】 Chainer Playgroundを少しだけ触ってみた

この記事はちょっと技術的なことAdventCalenderの7日目です。
7日目といいつつ書くのが遅くなってしまい日付を跨いじゃってますが、そこは大目に見てください…

さて、最近IT業界ではディープラーニングだのAIだの、機械学習系の話題がものすごく流行っていると思います。
筆者の所属する大学の研究室でも、機械学習を積極的にやっており、その分野で論文を書いている人もいます。(自分は機械学習とは異なる分野で研究しているのですが…)
で、そんな流行りものである機械学習ではそれを行うためのフレームワークなども出てきております。
そのような流れの中で、ひとつ気になるニュースがあったので今日はそれをピックアップしようと思います。
深層学習をウェブブラウザ上で学習できる「Chainer Playground」の無償公開について

そもそもChainerとは

先ほどお話しした、機械学習フレームワークの一つです。このフレームワークは日本の会社であるPreferred Networks(通称 PFN)が作成したフレームワークです。
Chainerの特徴はこんな感じらしいです。

In contrast, Chainer adopts a “Define-by-Run” scheme, i.e., the network is defined on-the-fly via the actual forward computation. More precisely, Chainer stores the history of computation instead of programming logic. This strategy enables to fully leverage the power of programming logic in Python. For example, Chainer does not need any magic to introduce conditionals and loops into the network definitions. The Define-by-Run scheme is the core concept of Chainer. We will show in this tutorial how to define networks dynamically.

http://docs.chainer.org/en/stable/tutorial/basic.htmlより引用

まあ英語で専門的なこと言われても何言っているかわかりませんね(読める人は読んでください)。
PFNの中の人のブログやSlideShareを見ると、要するにほかのフレームワークは"Define-and-Run"形式で、「ディープラーニングで使うネットワーク構造の構築」と「実際に構築した構造にデータを流して処理する」部分が別々の実装として書かなければならないのに対し、Chainerは"Define-by-Run"形式で構築と処理を一度に書けてしまうため、比較的簡単にニューラルネットワークの構造をかける点が特徴だそうです。(間違っていたらすいません)
ちなみに他に有名なライブラリとしてはGoogleのTensorFlowやカリフォルニア大学バークレー校の研究チームが開発したCaffeなどがあるようです。

Chainer Playgroundとは

Chainer Playgroundでは深層学習とChainerの基礎を実際のプログラミングを通しながら学べます。Chainer Playgroundを利用するにあたって必要なのはウェブブラウザのみで、PythonやChainerのインストールも必要ありません。ブラウザでChainer Playgroundに接続するだけですぐに学習を始められます。

深層学習をウェブブラウザ上で学習できる「Chainer Playground」の無償公開についてより引用

次は日本語でよかったです。まあ上に書いてある説明でだいたいは終わっていて、Chainerを使った機械学習の基礎をwebブラウザ上で簡単に学べるサイトになっています。Ubuntuを用意して環境構築してやっと…とかしいなくても機械学習を体感的に学ぶことができるみたいです。
ただしまだベータ版なので内容は完全版ではないみたいです。

少しだけ触ってみた

画面はこんな感じみたいです。 f:id:igbt3116redtrain:20161208030919p:plain
左側に説明、右側にエディタと実行結果が表示され、テキストを読みながら実行することができます。

早速管理人もやってみました。
最初は機械学習でいう「学習対象のモデル」とは何ぞやというところから入るわけですが…まあ数学チックな話がガンガン出てきます…結構本気で読む必要があり、理解するのにもなかなかの時間がかかります。そりゃあこんだけ難しいことをこなすデータサイエンティストは引く手あまたなわけだ…
ちなみに僕のような数学よくわかってない、プログラムガッツリやっていましたという人はおそらく「次元」って言葉で一気に混乱すると思います(実際しました)。100次元とかそういう字句がたくさん出てきますが、これは100次元「配列」のことではなく、100次元「ベクトル」のことですね。数学的なベクトルです。(x,y,z)みたいなアレです。そこを間違えるとコードを見ても???ってなるので気をつけてください。
そのあとは目的関数を定義して最適化することで、機械学習の基礎を学ぶみたいですが、この先は管理人も勉強中です…

機械学習にちょっと興味があるよって方、ぜひ試してみてはいかがでしょうか…!!