循环体现在哪里?
体现在隐藏层之间的连接中。普通神经网络的隐藏层没有连接。RNN为了提取时序数据之间的关系,让 t t t 时刻的隐藏层状态受到上一时刻 h t − 1 h_{t-1} ht−1 的影响。
在时间上展开:
h t = f ( U h t − 1 + W x t + b ) h_t = f(Uh_{t-1}+Wx_{t}+b) ht=f(Uht−1+Wxt+b)
可以看出公式中蕴含的递归关系。 h 0 h_0 h0 需要初始化。
RNN的几种应用
RNN输出什么?
以 p y t o r c h pytorch pytorch 为例,输出两个值。
- t t t 个时刻的最后一层隐藏层状态。
- 最后一个时刻的各个循环层的状态。
用这些输出可以做什么?
序列到类别
每个 h t h_t ht 代表着该时刻的信息和历史信息。
可以认为 h T h_T hT 蕴藏着整个序列的信息。将它作为一个分类器的输入,可以输出标签。(也可以同时应用 h 1 h_1 h1~ h T h_T hT )
序列到序列
输入序列和输出序列长度相同,如文本标注。利用每个 h t h_t ht。
输入和输出长度不同,如翻译。利用 h T h_T hT。
编码:得到 h