ラビットチャレンジ【深層学習day3】~LSTM~

概要

Long short-term memory(以下、LSTM)はRNNの問題を解消したモデルである

ゲートといわれる機能を組み合わせている

この章では以下の項目を学んだ

・LSTMの基礎(確認テスト1つ含む)

・演習チャレンジ

CEC

・入力ゲートと出力ゲート

・忘却ゲート(確認テスト1つ含む)

・演習チャレンジ

・覗き穴結合

・ハンズオン

LSTMの基礎

RNNでは時間列を遡れば遡るほど勾配が消失してしまう問題がある

LSTMでは構造自体を変えて上記の問題を解決している

LSTMは以下のような構造をしている

f:id:Maruring:20210717100842p:plain

<<確認テスト>>

シグモイド関数微分した時、入力値が0の時に最大値をとる。その値を答えよ

0.25

演習チャレンジ

gradient*rate

CEC

今までの入力をひたすら記憶をする機能(学習の機能がない)

入力ゲート

CECに対して、どれを覚えるかを学習する

出力ゲート

CECに対して、どれを使用するかを学習する

上図の今回と前回の入力をどの割合で使用するかを決定する重みu,wを学習する

忘却ゲート

CECにはすべての入力を覚えているので予測に必要にならない入力を覚えている。ずっと覚えていると入力ゲートや出力ゲートに誤って学習されるリスクが残ってしまう

そこで過去の情報がいらなくなった場合、そのタイミングで情報を忘却する機能が必要である

上記の機能を得るために忘却ゲートがある

<<確認テスト>>

以下の文章をLSTMに入力し空欄に当てはまる単語を予測したいとする。文中の「とても」という言葉は空欄の予測においてなくなっても影響を及ぼさないと考えられる。このような場合、どのゲートが作用すると考えられるか。

「映画おもしろかったね。ところで、とてもお腹が空いたから何か____。」

忘却ゲート

演習チャレンジ

c = input_gate* a + forget_gate* c

覗き穴結合

CEC自身の値に、重み行列を介して伝播可能にした構造

<5>ハンズオン</5>

_3_3predict_sinの各変数を変更しながら結果を確認する

iters_numを100に変更

学習回数が減っているため、うまく予測ができていないのが確認できる

f:id:Maruring:20210717104053p:plain

maxlenを5, iters_numを500, 3000に変更する

maxlenを大きくすることでより正確に予測ができるようになり、iterを大きくすることでさらに正確に予測ができるようになる

しかし、学習に時間がかかるので実装するさいには改良する必要がある

f:id:Maruring:20210717104936p:plain