2016.11.12 Sat |
機械学習を行うためのパッケージ(chainer)
こんにちは!
前回は機械学習を行うためのプログラミング言語について紹介しました!今回は機械学習を行うためのパッケージについて紹介したいと思います!

パッケージを使うのは、「機械学習での数学的な処理を簡単に行ってくれるから」です。しかし、「数学的な処理を知らずに機械学習を行ってもよい」というのは間違いです。機械学習=数学 なので、数学を勉強することで、機械学習を知ることができます。そして、どのようなプログラムにもミスはつきものです。間違ったときに、数学の知識がなければ、自分で手直しすることもできません。

しかし、自分で一からMeanSquaredError(平均二乗誤差)やSoftmaxCrossEntropy(ソフトマックスクロスエントロピー)、はたまたそれのBackPropagationを実装するのは大変です。なので、そういった計算はパッケージに任せる必要があります。
なお以下は前回紹介したプログラミング言語のpythonでのパッケージです。
1. chainerとは
slideshareに以下のような紹介ページがありましたので、それを紹介します。
http://www.slideshare.net/beam2d/introduction-to-chainer-a-flexible-framework-for-deep-learning

chainerは機械学習(主にNeural Network系)を実装するのに非常に便利です。
機械学習系のチュートリアルで非常に有名なmnistの手書き数字分類(手書きで書かれた文字が0から9のうちのどれであるかをコンピュータに識別させる)についてのコードを紹介します。
・層の定義
以下のようにすることで層の設計をすることができます。なお、「__call__」とはこのクラスが呼ばれたときに行われる操作になっています。

・セットアップ
モデルをGPUに乗せたり、また反復回数の定義などを行っています。

・実行
以下のようにすることで学習が開始されます。

手書きの数字分類など、いかにも大変そうなことを数行で行ってくれるのはすごいですね。
本家のgithubには全てのコードが掲載されています。
https://github.com/pfnet/chainer/blob/master/examples/mnist/train_mnist.py
今回はchainerについての紹介でした。次回は同じpythonのパッケージであるtensorflowについて紹介したいと思います。

東京大学工学部4年
H.M