HELLO CYBERNETICS

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

【8月中】個人的に勉強したいことまとめ

 

 

follow us in feedly

f:id:s0sem0y:20170612005216j:plain

 

ConvLSTM

LSTMにConvolutionを導入したモデルです。

 

普通のLSTM

普通のLSTMは入力データが1階テンソルというところがスタートです。1階テンソルが系列データになっている場合にLSTMはその系列情報を上手く学習してくれます。

時刻tの1階テンソルデータが{\bf x}(t)とすれば、

 

{\bf y}(t) = LSTM({\bf x}(t), {\bf y}(t-1), {\bf W})

 

\bf Wをパラメータとしてモデル化。実際にはメモリセルが内部にあるので、それを出力に出して、引数にも加えてやることもできますが、まあモデルの概要はこのような形です。 

 

 

ConvLSTM

時刻tの2階テンソルデータが{\bf x}(t)とすれば、

 

{\bf y}(t) = LSTM({\bf x}(t), {\bf y}(t-1), {\bf W})

 

\bf Wをパラメータとしてモデル化。って何も代わってないじゃないかと思うかも知れませんが、そう何も変わってないんです(そもそも2階テンソルを扱えるようなLSTMを考えたいわけで、モデルの形が変わってしまっては逆に困る)。

 

引数も返り値も2階のテンソルなので、パラメータも基本的には2階のテンソルです。この構造で、上手い演算がほしいのですが、2階テンソル同士の上手い演算は既に画像処理の畳み込み演算があるので、そのまま流用します。(基本的にはWはいわゆる空間フィルタで2階のテンソルなんだけども、チャンネルという次元を追加して、空間フィルタを多数準備することで、見かけ上3階のテンソルになる)

 

 

利用用途

例えば多次元の時系列データ(複数のセンサーのデータなど)を学習データに使うならば普通のLSTMが真っ先に思い浮かびます。自然言語における文章なども、One-Hotにすることで形式上多次元の系列データになるのでLSTMが有効です。

 

LSTMが2階テンソルを扱えるようになったことで、一番初めに想像がつくのは動画処理ですね。画像が系列データとして入力されていくので直感的に最も妥当な応用に見えます(というか、こういう問題を解かせたくて考えられたのだろう)。

 

 

参考

下記の論文では、天気予報がなんちゃらと書いてあったので、まあ雲の動きを動画で見てなんか予測しようとしたのでしょう。

 

[1506.04214] Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting

 

 

数式は上記の論文で不足なく書かれていますが、コードを見たほうが早いという人は下記のChainer実装のモデルの部分を見ればすぐに分かると思います(もちろん前提として、LSTMと畳み込み層を個々に知っていることが必要ですが)。

 

qiita.com

 

 

Time-Frequency LSTM

まだまだ勉強中ですが、下記の論文の存在を知った時、とんでもなく嬉しかったです。

 

Modeling Time-Frequency Patterns with LSTM vs. Convolutional Architectures for LVCSR Tasks

 

基本的なアイデア

時系列データの重要な特徴量として、周波数成分が挙げられます。周波数成分からは線形システム解析の歴史が語っているように、時間領域での解析では得られない詳細な情報が得られることが知られています。

 

通常は既存の時間周波数解析手法を用いて(例えばフーリエ変換やウェーブレット変換など)特徴量を取ってきてから、これらをニューラルネットで学習させるわけですが、系列データから直接時間の情報も周波数の情報もニューラルネットに取らせてしまおうというものです。

 

実際には数理的に「周波数」なる概念を取り出すわけではありません。時間周波数解析の基本的な姿勢と同様に、時間窓を滑らせて入力するという発想です。

 

通常のLSTMは上記の論文では「T-LSTM」と呼ばれており

 

時刻tの1階テンソルデータが{\bf x}(t)とすれば、

 

{\bf y}(t) = T-LSTM({\bf x}(t), {\bf y}(t-1), {\bf W})

 

というモデルを指しています。これに対して周波数方向の情報を取ってくるLSTMを「F-LSTM」と名づけており

 

時刻tの1階テンソルデータが{\bf x}(t) \in \mathcal R^{d} とすれば、t〜t+F-1の時刻のデータは2階のテンソルデータ\bf X \in \mathcal R^{d \times F}になっています。(単に時間方向にF個並べただけ)

 

このデータを時間方向でちょん切ってF次元の1階テンソルx'() \in \mathcal R^{F}を基本的な入力データとして扱います。(d次元データをF個並べてから、F次元データがd個あるという見方に替えるわけです)

 

時間窓をs(strideの略)を使って、t+s〜t+s+F-1と表記することで、時間窓の場所をsを移動させることができます。なんか1Dコンボリューション的な計算に見えますが、実際には、この形式で入力データを切り取りながらLSTMに入れるのですから、結果は全く異なるものになるでしょう。

 

 

 

モデルがモデルなので数理的な解析はされてませんが、パワースペクトルが、系列データの自己相関のフーリエ変換で得られること(ウィナー・ヒンチン定理)を考えれば、時間的なラグの情報と掛け算と、基底変換が上手く組み合わされば周波数領域の情報を取り出せそうなのかな…。

 

 

 

GridLSTM

 

まだよくわかってませんが、具体的に時間とか周波数とか具体的な物理量みたいなものを一切考えておらず、自己回帰結合を系列方向だけじゃなくて、多次元(ここで言う多次元は多次元配列の多次元、あるいは高階テンソルの高階という意味)に拡張してやるという純粋にLSTMの拡張として考案されたようです。

 

で、上のTF-LSTMの論文の結論に書かれているのですが、今のとこ、この手の多次元へ拡張されたLSTMではどうもGridLSTMが一番性能が良いらしい(しかも、ごく自然に添字を増やしていった感じなので、一般的な次元へ拡張も容易。ただしもちろん計算量的に100次元とか無理よ)。

 

[1507.01526] Grid Long Short-Term Memory

 

 

 

最後に

Attentionが猛威を振るっていますが、下記では最後の最後に「AttentionだけじゃなくてGridLSTMもあるよ」って書かれていました(2015年)。

 

Understanding LSTM Networks -- colah's blog

 

もしかして今も有望な何かが世の中に排出されているのかと思うと、それを見つけられないのが悔しい…。ということで戒めの記事。

 

 

 

 

 

 

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com