konchangakita

KPSを一番楽しんでいたブログ 会社の看板を背負いません 転載はご自由にどうぞ

【DeepLearning特訓】RNN 入門

E資格向けの自習アウトプット
自分用メモ

RNN(Recurrent Neural Network)回帰結合型ニューラルネットワークは、時系列データを処理するためのニューラルネットワークCNNが格子状のデータを処理するのに特化RNNは系列上の値 𝑥^*1,𝑥^*2,,,,,𝑥^*3 を処理するのに特化、可変長な系列データにも対応

応用例

機械翻訳Google翻訳など
音声認識スマホとかスマートスピーカー
CNNと組み合わせて画像からキャプションを生成

RNN モデル概要

前の時刻の中間層の出力を次の中間層へ渡す
時刻𝑡 の入力データ 𝑥^*4 とすると
(RNNでは縦に描いて横に並べていくことが多くなる)
f:id:konchangakita:20210125215003p:plain

RNN の中間層の構造

中間層での計算を表すと
f:id:konchangakita:20210125215216p:plain
計算グラフでそれぞれの要素を書き下してみる
f:id:konchangakita:20210125215240p:plain

RNN の順伝播

各時刻ごとにAffine変換と損失関数の計算を行って完成
一つ前の時刻の中間層の出力と、この時刻の入力を合わせて計算し
中間層での出力を次の時刻の中間層へ渡す
f:id:konchangakita:20210125215519p:plain
f:id:konchangakita:20210129004055p:plain

RNN の逆伝播

勾配の計算には一つ先の時刻の勾配を受け取って含めて計算し、
一つ前の時刻へ勾配計算結果を渡す
f:id:konchangakita:20210125215731p:plain
f:id:konchangakita:20210125215822p:plain

Python コードで理解してみた方が分かりやすいかも
f:id:konchangakita:20210125220249p:plain

さいごに

RNN(回帰結合型ネットワーク)からどんどんややこしくなってきました
ディープラーニングにおける時系列の考え方は自然言語処理にはかかせない要素
もう少し、RNNの基礎をつづく

*1:0

*2:1

*3:𝑡

*4:𝑡