实验内容
将循环任务(RNN)应用在图像分割任务上,我们需要对网络结构进行设计。
本实验使用LSTM的网络结构,TensorFlow Keras框架对imdb数据集进行文本情感分类(正向、负向)。
实验原理
RNN(循环神经网络)
RNN是一种特殊的神经网络结构, 它是根据"人的认知是基于过往的经验和记忆"这一观点提出的. 它与DNN,CNN不同的是: 它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种’记忆’功能.
RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
LSTM Network
LSTM是一种特殊的RNN,能够学习长期依赖性。它们由Hochreiter&Schmidhuber(1997)介绍,并在以下工作中被许多人提炼和推广。它们在各种各样的问题上运作得非常好,现在被广泛使用。
LSTM明确旨在避免长期依赖性问题。长时间记住信息实际上是他们的默认行为,而不是他们难以学习的东西。
LSTM与RNN的区别
标准RNN中的重复模块包含单个层,例如单个tanh层。
LSTM中的重复模块包含四个交互层。
LSTM网络t时刻的结构
- 输入:t时刻输入向量Xt,隐层状态ht-1,细胞状态Ct-1;
- 输出:隐层状态ht,细胞状态Ct,其中ht作为t时刻的输出;
- 神经元:
ω \omega ωTx+b的操作。
σ \sigma σ表示使用sigmoid函数作为激活函数,tanh表示使用双曲正切函数作为激活函数. - 向量的按元素操作:
x表示两个相同维度对应元素相乘组成新的向量,+表示两个相同维度对应元素相加组成新的向量。
LSTM的门结构
遗忘门层
遗忘门层决定我们会从细胞状态中丢弃什么信息。该门会读取ht−1 和xt ,输出一个在 0到 1之间的数值给每个在细胞状态 Ct−1 中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
[ht−1,xt]代表把两个向量连接起来(操作与numpy.concatenate相同)。
更新门层
C t ~ \tilde{C~t~}