ENTRY

2016.11.12 Sat |

機械学習を行うためのパッケージ(chainer)

こんにちは!

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

shutterstock_417294322

 

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

 

shutterstock_318255209

 

 

 

しかし、自分で一からMeanSquaredError(平均二乗誤差)やSoftmaxCrossEntropy(ソフトマックスクロスエントロピー)、はたまたそれのBackPropagationを実装するのは大変です。なので、そういった計算はパッケージに任せる必要があります。

 

なお以下は前回紹介したプログラミング言語のpythonでのパッケージです。


1. chainerとは

slideshareに以下のような紹介ページがありましたので、それを紹介します。

http://www.slideshare.net/beam2d/introduction-to-chainer-a-flexible-framework-for-deep-learning

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-07-0-16-08

 

chainerは機械学習(主にNeural Network系)を実装するのに非常に便利です。

機械学習系のチュートリアルで非常に有名なmnistの手書き数字分類(手書きで書かれた文字が0から9のうちのどれであるかをコンピュータに識別させる)についてのコードを紹介します。

 

・層の定義

以下のようにすることで層の設計をすることができます。なお、「__call__」とはこのクラスが呼ばれたときに行われる操作になっています。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-07-0-26-17

 

・セットアップ

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

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-07-0-29-29

・実行

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

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-07-0-29-45

手書きの数字分類など、いかにも大変そうなことを数行で行ってくれるのはすごいですね。

本家のgithubには全てのコードが掲載されています。

https://github.com/pfnet/chainer/blob/master/examples/mnist/train_mnist.py


 

今回はchainerについての紹介でした。次回は同じpythonのパッケージであるtensorflowについて紹介したいと思います。

shutterstock_267986810

 

東京大学工学部4年

H.M

 

 

 

社員
1000名
突破!

インサイドセールス・カスタマーサクセス人材募集!  詳しく