Sequence Modeling and Recurrent Networks
Sequence modeling tasks
在以往的模型中,各个输入之间是独立分布的 x ( i ) x^{(i)} x(i) 之间是相互独立的,同样输出 y ( i ) y^{(i)} y(i)之间也是相互独立的。
但是在序列模型中,输入输出是一个特定的序列,我们需要用到序列的相关信息。不能把各个输入看作是相互独立的存在。
autoregressive prediction
执行序列预测任务,输出依赖于之前的输入
Recurrent neural networks 循环神经网络
循环神经会维护一个 隐藏层,每个隐藏层都是通过前一层的隐藏层和当前的输入来计算的。
在整个模型中都只有一套 W t t , W h x , W y h , b h , b y W_{tt}, W_{hx}, W_{yh}, b_h, b_y Wtt,Whx,Wyh,bh,by,但是会对每一层都计算一个 h t h_t ht
train
RNN 堆叠
通过RNN堆叠可以将每一层做的很深,这里的深是指每一层的隐藏层更深。从x到y要经历更多的隐藏层。
激活值/梯度 爆炸 消失
和其他拥有很深的MLP 网络类似,RNN 也会面临激活值 、梯度值的爆炸或者消失。之前我们使用的normalization (batch-norm\layer-norm)
使用 sigmoid函数和tanh函数可以限制激活值和梯度的大小,但是并不能阻止梯度和激活值的消失。
LSTM
使用LSTM可以避免一些问题上的激活值消失
LSTM 的结构就扔在这里了,至于怎么工作的,不深究了。。。