HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

chainer記事のメモ

 

 

follow us in feedly

はじめに

この記事は、個人的に有用だと思った記事をまとめて掲載しておくために作ったものです。

自分の中でのブックマーク代わりと言った感じです。

 

似た問題を抱えている人にとっては、解決に糸口になるかもしれませんので、参考リンクを是非ご覧になってみてください。

 

記事のまとめ

chainer導入

chainerを導入するまでに参考にしてきた記事です。

 

Pythonの導入

qiita.com

 

PythonをAnaconda(ディストリビューションの一種)で導入します。LinuxにもSentOSやUbuntuなどがあるように、Pythonにも様々なディストリビューションがあります。

Anacondaは科学技術計算に必要なライブラリをまとめてくれているディストリビューションで、機械学習には持ってこいだと感じました。

上記の記事はAnacondaを使ってPython環境構築を、各OS毎に解説してあります。Windows、MacOS、Linux、自分が使っているOSに合わせて操作を行えばインストールが完了します。

 

chainer導入

基本的に(私はUbuntuを使っています)以下のコマンド

 

pip install chainer

 

のみでchainerをインストールできます。

 

もしもGPUを使いたい場合は先にCUDAを入れなければなりません。

既にchainerをインストールしてある状態で、GPUを後から導入したい場合は、そのときにchainerを一度アンインストールしてから、CUDA、chainerの順番でインストールすることになります。

 

難しい話無しで、手軽に行けそうなのが以下の記事です。

 

foolean.net

 

chainer入門

chainerを使える環境にある場合に、chainerの使い方を学べる記事です。

 

chainer公式ドキュメントのIntroduction

Introduction to Chainer — Chainer 1.19.0 documentation

 

英語を読むことができるのならば当然ここから始めるのが一番いいでしょう。

ここのプログラムを眺めるだけでなく、しっかり写経していけば雰囲気を掴むことはできます。

 

英語ができない場合のintroduction

www.iandprogram.net

 

いろいろ記事はありますが、この記事はTrainerという新機能追加後にも対応した日本語訳を載せてくれています。基本的に公式ドキュメントと内容は一緒なので、英語が読めない方はどうぞ。

 

chainerの理解を深める

ailaby.com

 

chainerのサンプルコードを動かせるようになった人が、chainerの中身を詳しく理解するために有用な記事です。もっとブックマークついても良いと思います。

ただしこの記事の内容をしっかり理解するためには、ニューラルネットの中身を予め把握しておく必要があると思われます。

例えば、以下の本などを使って、ニューラルネットの中身をしっかり把握していれば、その内容を踏まえてchainerそのものの様々なクラスやメソッドの理解を深められます。

 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

 

まずはchainerの中身はブラックボックスということでも構いません。正しくデータを渡して、処理を行えるのであれば問題ないでしょう。しかし、少し複雑なものをchainerの記述しようとした時、準備されたクラスやメソッドに対する理解が無ければ、やろうとしているコードを実現できません。

 

最初に読む記事ではないですが、いつか読むといいです。

 

 

chainer応用

正則化やドロップアウト

chainerの基本的なことがある程度できるようになれば、ドロップアウトや正則化などを使いたくなるでしょう。chainerでの実装の仕方は、本ブログの以下の記事、「chainerでの実装」の項目にコードがあります。非常に簡単にできるので、コードを見れば使い方はすぐに分かるかと思います(ちなみに、以下の記事でのchainerによる実装では全結合層が分岐して、出力で合流していることが__call__から分かるでしょうか。きっとchainerの入門を終えているのであれば、分かるはずです。)

 

s0sem0y.hatenablog.com

 

また、様々なchainerの機能は、公式ドキュメントのリファレンスマニュアルにたくさん載っています。必要だなと思うもの、面白そうだなと思うものを是非使ってみてください。

 

http://docs.chainer.org/en/stable/reference/index.htm

 

独自データを用いる

chainerや深層学習の各パラメーターの効果を検証する分には、サンプルプログラムをいじっていれば大丈夫でしょう。しかし、応用したいという場合には、やはり自前のデータを使いたいというのが実際のところです。

独自データを用いてchainerを使っている記事をまとめますので参考にしてください。

 

画像データ

qiita.com

qiita.co

 

テキストデータ

qiita.com

www.monthly-hack.com

 

 

LSTM

上記のニコニコ動画の文字列予測のような自然言語処理は基本的にLSTMですが、時系列解析にも構造上強いとされています。個人的に興味が強いためまとめておきます。

 

qiita.co

 

 

以下はLSTMの解説pdf

http://isw3.naist.jp/~neubig/student/2015/seitaro-s/161025neuralnet_study_LSTM.pdf

 

 

 

以下はconvLSTMのchainerでの実装。

LSTMはLinkファンクションにありますが、こちらは通常のLinkを使ってLSTMを実装した後にこれを畳み込み演算に変更することでconvLSTMを実装しています。

qiita.com

 

 

chainer公式ドキュメントの日本語版

非公式のchainer日本語ドキュメントです。

 

Chainer - ニューラルネットワークの柔軟なフレームワーク — Chainer 1.18.0 ドキュメント

 

機械翻訳に入れてあるのでしょうか。

 

あずみ.net | 普通のPHPerです。お仕事のご相談はお問い合わせからお願いします。

 

さんが翻訳しています。