SlideShare a Scribd company logo
1 of 39
Download to read offline
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
RNN + LSTMを理解する
自己紹介
● 本田 新(ほんだ あらた)
Qiita: arata-honda
● 新卒3年目
● 機械学習とかやってます
● Python, Go, PHPとか主に書いてます
● 映画、山登り、筋トレが趣味です
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
この講義での目的

3
RNN, LSTMの概観的理解



– RNNの理解



– RNNの改良ネットワークであるLSTMの理解

→このインターンを通してLSTMをKerasで実装できるればOK

Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
ニューラルネットワークの種類

4
データの種類 使用用途
CNN
画像、文章など 画像分類、認識、物体検知
文書分類
RNN
時系列のデータ 機械翻訳、文書生成、音声認識
文章から画像生成
オートエンコーダー
画像、文章 画像復元、文章要約、次元削減
ボルツマンマシン
特になし 画像生成、文章生成、 fine-tuning、
連想記憶、グラフマイニング
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
時系列データ:時間的順序を追って観測されたデータ

5
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
RNNを理解する
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
Recurrent Neural Network

7
中間層に戻り値(過去の結果)を設けることで時系列表現

入力層 中間層
・・・ ・・・
出力層
t=2の時
t=1の計算結果
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
種類はたくさんある

8
https://www.slideshare.net/Brains_Consulting/deep-learning-56477848
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
Elman Networkを定式化してみる

9
point : 重みはtに依存しない
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
BPTTに行く前にBPのおさらい
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
BPの計算(3層の例)

11
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
BPの計算(3層の例)

12
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
BPの計算(3層の例)

13
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
BPの計算(3層の例)

14
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
Elman Networkを定式化してみる

15
point : 重みはtに依存しない
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
BPTT
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
ネットワークを時間方向に展開してみる

17
t=1 t=2 t=3 t=t
・・・
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
学習①:誤差関数から誤差計算

18
t=1 t=2 t=3 t=t
・・・
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
学習②:誤差関数Eのデルタの計算

19
t=t-1 t=t t=t+1
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
学習③:t+1のデルタは計算されているはず

20
t=t-1 t=t t=t+1
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
学習④:tに2つのデルタについて詳細計算

21
t=t-1 t=t t=t+1
時刻の出力も加味
する点がBPとの違
い
BPのデルタ
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
余談

22
● 勾配が小さくなるので、限界は10時刻サンプル程度
● 初期値(t=0)を0にしたが適切な初期値を与えてやる場合もある
● いじるパラメータ
○ 重み係数(隠れ層含む)
○ BPTTの際の勾配法(Adam, SGD, etc), 学習係数
○ 活性化関数, 出力関数(ReLU, Softmax, etc)
○ 学習時の時刻tの範囲(タイムステップ)
○ 学習回数、バッチサイズ(一度に与えるサンプル数)
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
まとめ

23
● RNNは時系列データを考慮して組まれたNeural Network
● ElmanNetで中間層→中間層の再帰的な計算を概観した
● 学習はBPは時系列展開されたBPTTで学習
● BP同様、活性化関数の微分が層が深くなるにつれ、小さくなる
(勾配消失)ので、LSTMで解消
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
LSTMを理解する
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
LSTM : 長期記憶と短期記憶

25
● BP同様、活性化関数の微分が層が深くなるにつれ、小さくなる
(勾配消失)のを防ぐために提唱(1997)
● 長期記憶・短期記憶を実現
○ 長期記憶:ずっと覚えている記憶(ex:家の電話番号)
○ 短期記憶:瞬間的な記憶(ex:一夜漬けの勉強内容)
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
勾配を減らさず、そのままの入力を受け取る

26
● 勾配消失は勾配が減るから起きる
減らさない方法:逆伝播時にそのまま自分の出力を受け取る
● 中間層がそのまま自分の出力を受け取る(記憶)ためには?
○ ニューロンの活性化関数が線形(ヒント:微分)
○ 他の入力がないとき活性は一定
● Constant Error Carrousel(CEC)を導入
○ Carrousel : (和訳)ベルトコンベアー : 循環を意味
○ 活性化関数は線形 : f(x) = x
○ リカレント結合の重みは1.0 (一定)
○ 真ん中の素子は”メモリセル”と呼ばれる
https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
“記憶”のための重みに関するコンフリクト

27
● ある情報を必要になるまで覚えておきたい
○ 目的の情報が来たときにWeightを大きくしたい(未来のユニットを伝えたい)
○ それ以外が来たときはWeightは小さくしたい(〃に伝えたくない)
○ 覚えておいた値を使う(ユニットの出力を伝える)
○ 必要になるまで使わない(ユニットの出力が消えないように保持)
→Wというスカラ値で記憶させる/させないの表現は難しい
“記憶”に対する読み書きオペレーションを
入出力で制御する必要がある
https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
元祖LSTM:長期記憶を担当

28
記憶を担当するCECの前後に入出力を制御するゲート素子を配置
https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
①入力ゲートが開いているときに記憶させたい入力を投下

29
記憶を担当するCECの前後に入出力を制御するゲート素子を配置
https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
②重み1のRNNで過去すべての入力と今回の入力を記憶

30
記憶を担当するCECの前後に入出力を制御するゲート素子を配置
https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
③出力ゲートが開いているときにデータを出力

31
記憶を担当するCECの前後に入出力を制御するゲート素子を配置
https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
問題点:短期的に大きく記憶を更新したい

32
CECを上書きするには大きな入力を与えないといけない
https://www.slideshare.net/KenjiUrai/kenji-urailstm
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
忘却ユニットの追加 : 短期記憶を実現

33
https://pdfs.semanticscholar.org/e10f/98b86797ebf6c8caea6f54cacbc5a50e8b34.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
忘却ユニットの追加 : 短期記憶を実現

34
Forgate gateが0
に近い値をとると
CECは直前の状態
を忘れて、新しい入
力に上書き
https://pdfs.semanticscholar.org/e10f/98b86797ebf6c8caea6f54cacbc5a50e8b34.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
各ユニットのゲートへの制御にメモリセルを使ってない

35
中間層の出力がメ
モリセルの情報を
含んでいるように
見えるが、出力
ゲートで隠蔽して
いるからわからな
い
https://pdfs.semanticscholar.org/e10f/98b86797ebf6c8caea6f54cacbc5a50e8b34.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
Peephole Connectionsの追加

36
https://qiita.com/t_Signull/items/21b82be280b46f467d1b
http://www.jmlr.org/papers/volume3/gers02a/gers02a.pdf
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
まとめ

37
● BPTTは当然入力+忘却+出力ゲートを加味したものになるが、
Kerasで実装するときはほとんど意識しないので今回省略
● Peepholeはついてない場合とつけてる場合がある
● いじるパラメータ
○ 隠れ層のLSTM Blockの数
○ BPTTの際の勾配法(Adam, SGD, etc), 学習係数
○ 活性化関数, 出力関数(ReLU, Softmax, etc)
○ 学習時の時刻tの範囲(タイムステップ)
○ 学習回数、バッチサイズ(一度に与えるサンプル数)
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
ネットワーク全体図

38
Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved.
お疲れ様でした

More Related Content

What's hot

Icml読み会 deep speech2
Icml読み会 deep speech2Icml読み会 deep speech2
Icml読み会 deep speech2Jiro Nishitoba
 
End-to-End音声認識ためのMulti-Head Decoderネットワーク
End-to-End音声認識ためのMulti-Head DecoderネットワークEnd-to-End音声認識ためのMulti-Head Decoderネットワーク
End-to-End音声認識ためのMulti-Head DecoderネットワークNU_I_TODALAB
 
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...Yuta Kikuchi
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Seiya Tokui
 
自然言語処理のためのDeep Learning
自然言語処理のためのDeep Learning自然言語処理のためのDeep Learning
自然言語処理のためのDeep LearningYuta Kikuchi
 
Recurrent Neural Networks
Recurrent Neural NetworksRecurrent Neural Networks
Recurrent Neural NetworksSeiya Tokui
 
Numpy scipy matplotlibの紹介
Numpy scipy matplotlibの紹介Numpy scipy matplotlibの紹介
Numpy scipy matplotlibの紹介Tatsuro Yasukawa
 
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」Naonori Nagano
 
Deep learning勉強会20121214ochi
Deep learning勉強会20121214ochiDeep learning勉強会20121214ochi
Deep learning勉強会20121214ochiOhsawa Goodfellow
 
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Ohsawa Goodfellow
 
Tcl/Tkクイック入門
Tcl/Tkクイック入門Tcl/Tkクイック入門
Tcl/Tkクイック入門nyaocat
 
形態素解析も辞書も言語モデルもいらないend-to-end音声認識
形態素解析も辞書も言語モデルもいらないend-to-end音声認識形態素解析も辞書も言語モデルもいらないend-to-end音声認識
形態素解析も辞書も言語モデルもいらないend-to-end音声認識Tomoki Hayashi
 
MCC CTF講習会 pwn編2
MCC CTF講習会 pwn編2MCC CTF講習会 pwn編2
MCC CTF講習会 pwn編2hama7230
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出Tomoki Hayashi
 
ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@Yusuke Oda
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてYuya Unno
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編hama7230
 

What's hot (20)

Icml読み会 deep speech2
Icml読み会 deep speech2Icml読み会 deep speech2
Icml読み会 deep speech2
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 
End-to-End音声認識ためのMulti-Head Decoderネットワーク
End-to-End音声認識ためのMulti-Head DecoderネットワークEnd-to-End音声認識ためのMulti-Head Decoderネットワーク
End-to-End音声認識ためのMulti-Head Decoderネットワーク
 
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
 
音声認識と深層学習
音声認識と深層学習音声認識と深層学習
音声認識と深層学習
 
自然言語処理のためのDeep Learning
自然言語処理のためのDeep Learning自然言語処理のためのDeep Learning
自然言語処理のためのDeep Learning
 
Recurrent Neural Networks
Recurrent Neural NetworksRecurrent Neural Networks
Recurrent Neural Networks
 
Numpy scipy matplotlibの紹介
Numpy scipy matplotlibの紹介Numpy scipy matplotlibの紹介
Numpy scipy matplotlibの紹介
 
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
 
Deep learning勉強会20121214ochi
Deep learning勉強会20121214ochiDeep learning勉強会20121214ochi
Deep learning勉強会20121214ochi
 
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
 
Tcl/Tkクイック入門
Tcl/Tkクイック入門Tcl/Tkクイック入門
Tcl/Tkクイック入門
 
形態素解析も辞書も言語モデルもいらないend-to-end音声認識
形態素解析も辞書も言語モデルもいらないend-to-end音声認識形態素解析も辞書も言語モデルもいらないend-to-end音声認識
形態素解析も辞書も言語モデルもいらないend-to-end音声認識
 
MCC CTF講習会 pwn編2
MCC CTF講習会 pwn編2MCC CTF講習会 pwn編2
MCC CTF講習会 pwn編2
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
 
ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
 

Similar to Rnn+lstmを理解する

Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスPydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスShoichi Taguchi
 
Batch Reinforcement Learning
Batch Reinforcement LearningBatch Reinforcement Learning
Batch Reinforcement LearningTakuma Oda
 
画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...
画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...
画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...Takahiro Kubo
 
Deep Learningについて(改訂版)
Deep Learningについて(改訂版)Deep Learningについて(改訂版)
Deep Learningについて(改訂版)Brains Consulting, Inc.
 
ICASSP2019音声&音響論文読み会 論文紹介(認識系)
ICASSP2019音声&音響論文読み会 論文紹介(認識系)ICASSP2019音声&音響論文読み会 論文紹介(認識系)
ICASSP2019音声&音響論文読み会 論文紹介(認識系)貴史 益子
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア鉄次 尾形
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴Yuya Unno
 
Pycon reject banditアルゴリズムを用いた自動abテスト
Pycon reject banditアルゴリズムを用いた自動abテストPycon reject banditアルゴリズムを用いた自動abテスト
Pycon reject banditアルゴリズムを用いた自動abテストShoichi Taguchi
 

Similar to Rnn+lstmを理解する (10)

Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスPydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
 
Batch Reinforcement Learning
Batch Reinforcement LearningBatch Reinforcement Learning
Batch Reinforcement Learning
 
画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...
画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...
画像認識モデルを自動的に作る。1日以内に。~Simple And Efficient Architecture Search for Convolutio...
 
Deep Learningについて(改訂版)
Deep Learningについて(改訂版)Deep Learningについて(改訂版)
Deep Learningについて(改訂版)
 
ICASSP2019音声&音響論文読み会 論文紹介(認識系)
ICASSP2019音声&音響論文読み会 論文紹介(認識系)ICASSP2019音声&音響論文読み会 論文紹介(認識系)
ICASSP2019音声&音響論文読み会 論文紹介(認識系)
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴
 
Pycon reject banditアルゴリズムを用いた自動abテスト
Pycon reject banditアルゴリズムを用いた自動abテストPycon reject banditアルゴリズムを用いた自動abテスト
Pycon reject banditアルゴリズムを用いた自動abテスト
 
OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
 
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
 

More from Arata Honda

2つのサービスをAWSに移行した話
2つのサービスをAWSに移行した話2つのサービスをAWSに移行した話
2つのサービスをAWSに移行した話Arata Honda
 
Config mapについて
Config mapについてConfig mapについて
Config mapについてArata Honda
 
Excite beer bash06
Excite beer bash06Excite beer bash06
Excite beer bash06Arata Honda
 
はじめてのパターン認識第八章
はじめてのパターン認識第八章はじめてのパターン認識第八章
はじめてのパターン認識第八章Arata Honda
 
はじめてのパターン認識第三章
はじめてのパターン認識第三章はじめてのパターン認識第三章
はじめてのパターン認識第三章Arata Honda
 
ノイズあり教師のパーセプトロン学習の統計力学的解析
ノイズあり教師のパーセプトロン学習の統計力学的解析ノイズあり教師のパーセプトロン学習の統計力学的解析
ノイズあり教師のパーセプトロン学習の統計力学的解析Arata Honda
 
正則化項について
正則化項について正則化項について
正則化項についてArata Honda
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うArata Honda
 

More from Arata Honda (10)

2つのサービスをAWSに移行した話
2つのサービスをAWSに移行した話2つのサービスをAWSに移行した話
2つのサービスをAWSに移行した話
 
Config mapについて
Config mapについてConfig mapについて
Config mapについて
 
Excite beer bash06
Excite beer bash06Excite beer bash06
Excite beer bash06
 
はじめてのパターン認識第八章
はじめてのパターン認識第八章はじめてのパターン認識第八章
はじめてのパターン認識第八章
 
はじめてのパターン認識第三章
はじめてのパターン認識第三章はじめてのパターン認識第三章
はじめてのパターン認識第三章
 
Prml 3 3.3
Prml 3 3.3Prml 3 3.3
Prml 3 3.3
 
ノイズあり教師のパーセプトロン学習の統計力学的解析
ノイズあり教師のパーセプトロン学習の統計力学的解析ノイズあり教師のパーセプトロン学習の統計力学的解析
ノイズあり教師のパーセプトロン学習の統計力学的解析
 
正則化項について
正則化項について正則化項について
正則化項について
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行う
 
Prml6
Prml6Prml6
Prml6
 

Rnn+lstmを理解する

  • 1. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. RNN + LSTMを理解する
  • 2. 自己紹介 ● 本田 新(ほんだ あらた) Qiita: arata-honda ● 新卒3年目 ● 機械学習とかやってます ● Python, Go, PHPとか主に書いてます ● 映画、山登り、筋トレが趣味です
  • 3. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. この講義での目的
 3 RNN, LSTMの概観的理解
 
 – RNNの理解
 
 – RNNの改良ネットワークであるLSTMの理解
 →このインターンを通してLSTMをKerasで実装できるればOK

  • 4. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. ニューラルネットワークの種類
 4 データの種類 使用用途 CNN 画像、文章など 画像分類、認識、物体検知 文書分類 RNN 時系列のデータ 機械翻訳、文書生成、音声認識 文章から画像生成 オートエンコーダー 画像、文章 画像復元、文章要約、次元削減 ボルツマンマシン 特になし 画像生成、文章生成、 fine-tuning、 連想記憶、グラフマイニング
  • 5. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 時系列データ:時間的順序を追って観測されたデータ
 5
  • 6. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. RNNを理解する
  • 7. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. Recurrent Neural Network
 7 中間層に戻り値(過去の結果)を設けることで時系列表現
 入力層 中間層 ・・・ ・・・ 出力層 t=2の時 t=1の計算結果
  • 8. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 種類はたくさんある
 8 https://www.slideshare.net/Brains_Consulting/deep-learning-56477848
  • 9. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. Elman Networkを定式化してみる
 9 point : 重みはtに依存しない
  • 10. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. BPTTに行く前にBPのおさらい
  • 11. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. BPの計算(3層の例)
 11
  • 12. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. BPの計算(3層の例)
 12
  • 13. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. BPの計算(3層の例)
 13
  • 14. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. BPの計算(3層の例)
 14
  • 15. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. Elman Networkを定式化してみる
 15 point : 重みはtに依存しない
  • 16. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. BPTT
  • 17. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. ネットワークを時間方向に展開してみる
 17 t=1 t=2 t=3 t=t ・・・
  • 18. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 学習①:誤差関数から誤差計算
 18 t=1 t=2 t=3 t=t ・・・
  • 19. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 学習②:誤差関数Eのデルタの計算
 19 t=t-1 t=t t=t+1
  • 20. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 学習③:t+1のデルタは計算されているはず
 20 t=t-1 t=t t=t+1
  • 21. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 学習④:tに2つのデルタについて詳細計算
 21 t=t-1 t=t t=t+1 時刻の出力も加味 する点がBPとの違 い BPのデルタ
  • 22. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 余談
 22 ● 勾配が小さくなるので、限界は10時刻サンプル程度 ● 初期値(t=0)を0にしたが適切な初期値を与えてやる場合もある ● いじるパラメータ ○ 重み係数(隠れ層含む) ○ BPTTの際の勾配法(Adam, SGD, etc), 学習係数 ○ 活性化関数, 出力関数(ReLU, Softmax, etc) ○ 学習時の時刻tの範囲(タイムステップ) ○ 学習回数、バッチサイズ(一度に与えるサンプル数)
  • 23. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. まとめ
 23 ● RNNは時系列データを考慮して組まれたNeural Network ● ElmanNetで中間層→中間層の再帰的な計算を概観した ● 学習はBPは時系列展開されたBPTTで学習 ● BP同様、活性化関数の微分が層が深くなるにつれ、小さくなる (勾配消失)ので、LSTMで解消
  • 24. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. LSTMを理解する
  • 25. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. LSTM : 長期記憶と短期記憶
 25 ● BP同様、活性化関数の微分が層が深くなるにつれ、小さくなる (勾配消失)のを防ぐために提唱(1997) ● 長期記憶・短期記憶を実現 ○ 長期記憶:ずっと覚えている記憶(ex:家の電話番号) ○ 短期記憶:瞬間的な記憶(ex:一夜漬けの勉強内容)
  • 26. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 勾配を減らさず、そのままの入力を受け取る
 26 ● 勾配消失は勾配が減るから起きる 減らさない方法:逆伝播時にそのまま自分の出力を受け取る ● 中間層がそのまま自分の出力を受け取る(記憶)ためには? ○ ニューロンの活性化関数が線形(ヒント:微分) ○ 他の入力がないとき活性は一定 ● Constant Error Carrousel(CEC)を導入 ○ Carrousel : (和訳)ベルトコンベアー : 循環を意味 ○ 活性化関数は線形 : f(x) = x ○ リカレント結合の重みは1.0 (一定) ○ 真ん中の素子は”メモリセル”と呼ばれる https://www.bioinf.jku.at/publications/older/2604.pdf
  • 27. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. “記憶”のための重みに関するコンフリクト
 27 ● ある情報を必要になるまで覚えておきたい ○ 目的の情報が来たときにWeightを大きくしたい(未来のユニットを伝えたい) ○ それ以外が来たときはWeightは小さくしたい(〃に伝えたくない) ○ 覚えておいた値を使う(ユニットの出力を伝える) ○ 必要になるまで使わない(ユニットの出力が消えないように保持) →Wというスカラ値で記憶させる/させないの表現は難しい “記憶”に対する読み書きオペレーションを 入出力で制御する必要がある https://www.bioinf.jku.at/publications/older/2604.pdf
  • 28. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 元祖LSTM:長期記憶を担当
 28 記憶を担当するCECの前後に入出力を制御するゲート素子を配置 https://www.bioinf.jku.at/publications/older/2604.pdf
  • 29. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. ①入力ゲートが開いているときに記憶させたい入力を投下
 29 記憶を担当するCECの前後に入出力を制御するゲート素子を配置 https://www.bioinf.jku.at/publications/older/2604.pdf
  • 30. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. ②重み1のRNNで過去すべての入力と今回の入力を記憶
 30 記憶を担当するCECの前後に入出力を制御するゲート素子を配置 https://www.bioinf.jku.at/publications/older/2604.pdf
  • 31. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. ③出力ゲートが開いているときにデータを出力
 31 記憶を担当するCECの前後に入出力を制御するゲート素子を配置 https://www.bioinf.jku.at/publications/older/2604.pdf
  • 32. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 問題点:短期的に大きく記憶を更新したい
 32 CECを上書きするには大きな入力を与えないといけない https://www.slideshare.net/KenjiUrai/kenji-urailstm
  • 33. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 忘却ユニットの追加 : 短期記憶を実現
 33 https://pdfs.semanticscholar.org/e10f/98b86797ebf6c8caea6f54cacbc5a50e8b34.pdf
  • 34. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 忘却ユニットの追加 : 短期記憶を実現
 34 Forgate gateが0 に近い値をとると CECは直前の状態 を忘れて、新しい入 力に上書き https://pdfs.semanticscholar.org/e10f/98b86797ebf6c8caea6f54cacbc5a50e8b34.pdf
  • 35. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. 各ユニットのゲートへの制御にメモリセルを使ってない
 35 中間層の出力がメ モリセルの情報を 含んでいるように 見えるが、出力 ゲートで隠蔽して いるからわからな い https://pdfs.semanticscholar.org/e10f/98b86797ebf6c8caea6f54cacbc5a50e8b34.pdf
  • 36. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. Peephole Connectionsの追加
 36 https://qiita.com/t_Signull/items/21b82be280b46f467d1b http://www.jmlr.org/papers/volume3/gers02a/gers02a.pdf
  • 37. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. まとめ
 37 ● BPTTは当然入力+忘却+出力ゲートを加味したものになるが、 Kerasで実装するときはほとんど意識しないので今回省略 ● Peepholeはついてない場合とつけてる場合がある ● いじるパラメータ ○ 隠れ層のLSTM Blockの数 ○ BPTTの際の勾配法(Adam, SGD, etc), 学習係数 ○ 活性化関数, 出力関数(ReLU, Softmax, etc) ○ 学習時の時刻tの範囲(タイムステップ) ○ 学習回数、バッチサイズ(一度に与えるサンプル数)
  • 38. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. ネットワーク全体図
 38
  • 39. Copyright © 1997-2019 Excite Japan Co. ,Ltd. All Rights Reserved. お疲れ様でした