はじめに
RNN(SimpleRNN, LSTM)は通常のニューラルネットワーク(feedforward neural network)と異なり,時系列データなどの系列データを学習することができます(以下の説明では,時系列データを解析対象とします).RNNはセルとよばれる構造をもっており,セルの内部で入力値から出力値を計算しています.1個のセルに複数の値を入力することができますが,ここではセルの内部ではどのような計算が行われているか解説します.
SimpleRNN
SimpleRNNセルの式は以下で表されます.
\boldsymbol{y}_t = \boldsymbol{h}_t = \text{tanh}(\boldsymbol{W}_{xh}\boldsymbol{x}_t + \boldsymbol{W}_{hh}\boldsymbol{h}_{t-1} + \boldsymbol{b}_h)
ただし,$\boldsymbol{x}_t$は入力ベクトル,$\boldsymbol{y}_t$は時刻$t$の出力ベクトル,$\boldsymbol{h}_t$は時刻$t$の隠れ層ベクトル,$\boldsymbol{W}_{xh}$は入力層から隠れ層への重み行列$\boldsymbol{W}_{hh}$は隠れ層から隠れ層への重み行列,$\boldsymbol{b}_h$はバイアスのベクトルです.したがって,SimpleRNNでは,(入力値と1時刻前の出力値の全結合)+(バイアス項)を活性化関数$\text{tanh}$に通して,出力値とすることが分かります.
LSTM
編集中