RNN原理

  • Recurrent Neural Network,循环神经网络

SimpleRNN

  • SimpleRNN其结构如下图所示:
    • 输入为一个向量序列\(\{x_0,x_1,x_2...x_n\}\)
    • 在时间步 \(t\),序列的元素 \(x_t\) 和上一时间步的输出 $h_{t-1} $一起,经过RNN单元处理,产生输出 \(h_t\); \[h_t=ϕ(Wx_t+Uh_{t−1})\] \[y_t=Vh_t\]
    • \(h_t\) 为隐藏层状态,携带了序列截止时间步 \(t\) 的信息;\(y_t\) 为时间步 \(t\) 的输出;\(h_t\) 继续作为下一时间步的输入
    • 整个序列被处理完,最终的输出 \(y_n\) 即为RNN的输出;根据情况,也可返回所有的输出序列 \(\{y_0,y_1,y_2...y_n\}\)
    • 序列的每个元素是经过同一个RNN处理,因此待学习的参数只有一组:\(W,U,V\)

循环神经网络详解

概述

CNN等传统神经网络的局限在于:将固定大小的向量作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率)。不仅如此,CNN还按照固定的计算步骤(比如模型中层的数量)来实现这样的输入输出。这样的神经网络没有持久性:假设你希望对电影中每一帧的事件类型进行分类,传统的神经网络就没有办法使用电影中先前的事件推断后续的事件。