文章目录

  • 前馈神经网络与循环神经网络
  • 前馈神经网络
  • 如何用向量表示词汇?
  • 循环神经网络——三种简单的RNN
  • Elman RNN
  • 命名实体识别
  • 循环神经网络近似定理
  • Jordan RNN
  • Bidirectional RNN
  • 不同结构的RNN
  • One to many
  • Many to one
  • Many to many
  • 循环神经网络训练
  • BPTT(Backpropagation through tIme)
  • 长程依赖问题



卷积神经网络专门用于处理网格化的数据,而循环神经网络是专门用于处理序列化的的数据。

处理序列数据:

语言识别、音乐生成、情感分类、机器翻译、视频行为识别、命名实体识别。

前馈神经网络与循环神经网络

前馈神经网络

  1. 不考虑上下文信息,输入固定则输出固定;
  2. 不同的训练样本,输入、输出序列的长度不同,前馈神经网络不能很好地解决这个问题;
  3. 在文本序列不同位置学习到的特征不共享,这指的是比如当人名出现在不同位置,前馈神经网络无法做到一视同仁;

以词汇序列为例,我们想要提取目的地与时间。

  1. 将语句转化为向量;
  2. 输入Feedforward Network。
  3. 输出该词汇属于目的地或时间的概率。

lstm循环神经网络 循环神经网络基础_神经网络

如何用向量表示词汇?

1-of-N encoding:

  1. 准备一张词汇表;
  2. 对应词汇的位置记录为1;

Beyond 1 of N encoding:
有时会出现词汇表中不出现的词汇,此时为词汇表增添一个other选项,用以表示该类词汇。

循环神经网络——三种简单的RNN

以词汇序列为例,leave for Dalian 和 leave Dalian的意思截然相反,但是Feedforward Netwok无法识别出,因为其不含"记忆"。

神经网络需要记忆功能,捕获历史时刻的信息。

lstm循环神经网络 循环神经网络基础_循环神经网络_02


该网络将每一个神经元的输出存到“记忆”中去,当下次再有输入时,一同传导进神经元。起始时,一般将记忆置零。

回顾:

  1. 使用自带反馈的神经元,能够处理任意长度的时序数据;
  2. 比前馈神经网络更加符合生物神经网络的结构;
  3. 网络具有自适应记忆能力。
Elman RNN

我们对于词汇序列的模型测试过程可视化为:

lstm循环神经网络 循环神经网络基础_Network_03


同一个模型执行三次,不是这个模型包含三个层。以上被称为Elman Network,仅对每一个神经元进行操作;Elman Network 又被称为SRN(Simple Recurrent Network),是在Jordan Network的基础上发展的,其结构具体如下图:

lstm循环神经网络 循环神经网络基础_Network_04

激活函数1为tanh,激活函数2位Softmax。

命名实体识别

识别文本中具有特定意义的实体,比如人名、地名、机构名等。

设定符号

lstm循环神经网络 循环神经网络基础_Network_05


设定词向量

lstm循环神经网络 循环神经网络基础_循环神经网络_06


训练与测试

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_07


在这样一个问题中,模型从左到右扫描序列数据,每一个时间步都共享参数。

需要注意的是:

隐藏层输出到模型输出,需要进行两次激活函数,且激活函数不一致。其中,损失函数为BCELoss:

lstm循环神经网络 循环神经网络基础_神经网络_08

lstm循环神经网络 循环神经网络基础_神经网络_09

循环神经网络近似定理

lstm循环神经网络 循环神经网络基础_神经网络_10

Jordan RNN

还有Jordan Network 存储的是模型的输出,对模型整体进行操作。

lstm循环神经网络 循环神经网络基础_神经网络_11


其中,Jordan RNN效果更好。

Bidirectional RNN

双向循环神经网络。

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_12


每一个输出,联系了上下文,观测的东西更多。

获取历史数据的信息 + 获取未来数据的信息。

缺点:需要获取完整的序列才能预测,不能实时处理。

不同结构的RNN

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_13


蓝色表示输出,绿色表示隐藏层,红色表示输入。

One to many

lstm循环神经网络 循环神经网络基础_Network_14


lstm循环神经网络 循环神经网络基础_Network_15

Many to one

lstm循环神经网络 循环神经网络基础_Network_16


lstm循环神经网络 循环神经网络基础_lstm循环神经网络_17

Many to many

lstm循环神经网络 循环神经网络基础_Network_18


输入输出长度一致。

lstm循环神经网络 循环神经网络基础_神经网络_19


输入输出长度不一致。

lstm循环神经网络 循环神经网络基础_循环神经网络_20

循环神经网络训练

训练很困难;

lstm循环神经网络 循环神经网络基础_Network_21


这是因为它的优化平面是很崎岖的,

lstm循环神经网络 循环神经网络基础_循环神经网络_22


可以采用Clipping解决在崎岖表面学习的问题。

BPTT(Backpropagation through tIme)

lstm循环神经网络 循环神经网络基础_Network_23

我们以Elman RNN为例
中心思想和BP算法相同,本质是梯度下降法。需要寻优的参数有三个,lstm循环神经网络 循环神经网络基础_lstm循环神经网络_24。与BP算法不同的是lstm循环神经网络 循环神经网络基础_循环神经网络_25在寻优的过程中,需要追溯之前的历史数据,因此RNN有记忆功能。

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_26


lstm循环神经网络 循环神经网络基础_神经网络_27

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_28


以上两个求导公式是一致的。

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_29


h之间的比值就是一个激活函数的导数。

长程依赖问题

  1. 梯度爆炸——可以采用梯度削减来缓解
  2. 梯度消失——可以选取更好的激活函数或者改变传播结构
  3. 记忆容量问题:信息单元输入东西,是一个累加的过程,随着长度增加,值越来越大,造成lstm循环神经网络 循环神经网络基础_lstm循环神经网络_30达到饱和。这样的感觉就是容器存储满了,之后的信息产生的影响不大,相当于被舍弃。
    2、3亮点互为表里,是等价的。

lstm循环神经网络 循环神经网络基础_lstm循环神经网络_31时,出现梯度爆炸,反之梯度消失。