蟹者

@kanimono

わからないLSTM 〜最近の機械学習はホントどうかしてる

仕事で時系列データから何か答えを出せたらいいよね的な話題があって、欲をぶっかいて深層学習を使ってやろう、そしてTensorFlowにてLSTM*1を使おうと企んでる訳です。

タイトルは特に意味はなく、わかるLSTM ~ 最近の動向と共に - Qiitaに対する勝手なアンサーソングです。

ネットで集められる情報を集めたというだけの自分用メモで、おそらくあなたにとって有用な情報は書いていません。また、随時メモを追記する予定です。



LSTMとは? に関する記事

わかるLSTM ~ 最近の動向と共に - Qiita

・LSTMの歴史的経緯から言及し、日本語で書かれた記事の中でおそらく最も詳細に仕組みを解説。数式で書き下しもしている。

・LSTMには4つのバージョンが存在している。そしてchainerがどのバージョンなのかについて言及。

誤差逆伝播時の図解もあるのは、珍しい。

テンソルの書き方や英字にアレルギーのある人*2、そもそもLSTMって何?って人向けではない。

・汎用コンピュータとしても研究されている話、面白い( ͡° ͜ʖ ͡°)

今更聞けないLSTMの基本 - HELLO CYBERNETICS

・仕組みについてわかりやすく解説。図多し。

LSTMネットワークの概要 - Qiita

・Christopher Olahという人の個人ブログ記事の翻訳。仕組みについて解説。

・基礎的な話が頭に入っており、翻訳文体にアレルギーがなければ、おそらく一番わかりやすくて正確。

・分量がちょうどよく図も多い。


疑問など
  • LSTM層(LSTMブロック)、複数あっていいらしいけど、どう積み上がるかよくわからない。
  • 確かにいくつかバージョンがある。自分がパッケージを使うときはそれがどれなのか把握しなければおそらく学習に再現性を持たせられない(そして、中身がわからないと、どれなのか把握できない)。

LSTMの図解、めっちゃある問題

集めてみた。

①より
https://qiita-image-store.s3.amazonaws.com/0/60969/485f634d-9bd2-2ee3-99b2-09694e831f55.png


TensorFlowのRNNを基本的なモデルで試す - Qiitaより
https://qiita-image-store.s3.amazonaws.com/0/59864/64a92d49-fdef-609f-d95b-c522e72372f4.png

②より
https://cdn-ak.f.st-hatena.com/images/fotolife/s/s0sem0y/20170506/20170506164912.png

https://cdn-ak.f.st-hatena.com/images/fotolife/s/s0sem0y/20170506/20170506172239.png

③より
http://colah.github.io/posts/2015-08-Understanding-LSTMs/img/LSTM3-chain.png
http://colah.github.io/posts/2015-08-Understanding-LSTMs/img/LSTM2-notation.png


めっちゃある(そして微妙に違うよね?困る)。






TensorFlow等でLSTMネットワークを作るコードが載ってる記事

TensorFlowチュートリアル - リカレント・ニューラルネットワーク(翻訳) - Qiita

・TensorFlow のチュートリアル(Recurrent Neural Networks)の翻訳。コードの意味についても詳しく書いてある。

・データが言語のデータセットだからよくわからん部分も多い。入力はもちろん実数になってるっぽいけど。

TensorFlow-Book/Concept02_rnn.ipynb at master · BinRoot/TensorFlow-Book · GitHub


これが今見つけた中で、実数のデータを入れて回帰するLSTMの書き方の中で最も簡単か?と思うので写経しながら学ぼうと思う

Machine Learning with TensorFlowという本の第10章に記載されているものらしい。挿絵がクール。

その他

Keras やTFlearn にて、TensorFlow をラッパーから使ってLSTMを使う記事が多い(そして簡単)。

だが、LSTMのバージョンいくつかあるし、よくわからんまま使って上手くいかないとどうしようもないので、最初ぐらいの素のTensorFlowを触ろう。


理解につまづいたらこれを読む予定

神ブログHELLO CYBERNETICSの本当の初心者用の記事3選。おそらくこの続きは今度も公開される。

【本当の初心者向け】ニューラルネットとTensorFlow入門のためのオリジナルチュートリアル1 - HELLO CYBERNETICS

テンソル表記のおさらい、TensorFlowの基本的な書き方の解説

・アフィン層、活性化関数をPythonで書いて順伝播するところまで。

*1:Long Short Term Memory ネットワーク。リカレントニューラルネットワークの派生にして代表。現況、畳み込みニューラルネットワークに並び深層学習ブームの双璧をなす(適当)。

*2:そもそもそんな俺みたいな人は読まない説 is 悲しい