前馈神经网络

image.png
假设历史信息只包含前面 FNN\CNN\RNN - 图2 个词。首先将这 FNN\CNN\RNN - 图3个词的词向量FNN\CNN\RNN - 图4 拼接为一个维度为 FNN\CNN\RNN - 图5 的向量 FNN\CNN\RNN - 图6
FNN\CNN\RNN - 图7
然后将 FNN\CNN\RNN - 图8 输入到由多层前馈神经网络构成的隐藏层,最后一层隐藏层的输出为 FNN\CNN\RNN - 图9。比如,只含一层隐藏层的模型为:
FNN\CNN\RNN - 图10
前馈神经网络也可以包含跳层连接(Skip-Layer Connections):
FNN\CNN\RNN - 图11

循环神经网络 RNN

RNN 是一类具有短期记忆能力的神经网络。当输入序列比较长时,会存在梯度爆炸和消失问题,也成为了长期依赖问题。如果 FNN\CNN\RNN - 图12 时刻的输出FNN\CNN\RNN - 图13依赖于 FNN\CNN\RNN - 图14 时刻的输入 FNN\CNN\RNN - 图15,当间隔 FNN\CNN\RNN - 图16 比较大时,简单神经网络很难建模这种长距离的依赖关系,称为长期依赖问题(Long-Term Dependencies Problem)。
与前馈神经网络不同,循环神经网络可以接受变长的输入序列,依次接受输入 FNN\CNN\RNN - 图17得到 FNN\CNN\RNN - 图18 时刻的隐藏状态 FNN\CNN\RNN - 图19
FNN\CNN\RNN - 图20
其中 FNN\CNN\RNN - 图21 = 0。FNN\CNN\RNN - 图22 不仅和当前时刻的输入 FNN\CNN\RNN - 图23 相关,也和上一时刻的隐藏状态 FNN\CNN\RNN - 图24 相关。FNN\CNN\RNN - 图25 为状态=权重矩阵,FNN\CNN\RNN - 图26 为状态-输入权重矩阵, FNN\CNN\RNN - 图27 为偏置。
前馈网络语言模型和循环网络语言模型的不同之处:循环神经网络利用隐藏状态来记录以前所有时刻的信息,而前馈神经网络只能接受前 n−1 个时刻的信息。

  • 输出层:

输出层大小为 FNN\CNN\RNN - 图28,输入为历史信息的向量表示 FNN\CNN\RNN - 图29,输出为每个词的后验概率。一般使用 softmax 分类器:
FNN\CNN\RNN - 图30
其中,输出向量 FNN\CNN\RNN - 图31 为一个概率分布,其第 FNN\CNN\RNN - 图32 维是词汇表中第 FNN\CNN\RNN - 图33 个词出现的后验概率;FNN\CNN\RNN - 图34是最后一层隐藏层到输出层直接的权重,也成为输出词嵌入矩阵,矩阵中每一行可以看作是一个词向量。

FNN\CNN\RNN - 图35FNN\CNN\RNN - 图36

LSTM

lstm.png

  1. ![](https://cdn.nlark.com/yuque/__latex/693cf956add1d88b8c7e97c08d22da72.svg#card=math&code=i_%7Bt%7D&height=16&id=Axu9q): 输入门 ![](https://cdn.nlark.com/yuque/__latex/93891b8532950353ca2314573419fcaa.svg#card=math&code=f_%7Bt%7D&height=16&id=y6Y6E): 遗忘门 ![](https://cdn.nlark.com/yuque/__latex/eb1f8a897a3ff5810dac71d58c5e4dbe.svg#card=math&code=o_%7Bt%7D&height=12&id=A01W5): 输出门<br />![](https://cdn.nlark.com/yuque/__latex/8ac66afa5dc4aefbf764ad6d9acc8d35.svg#card=math&code=x_%7Bt%7D&height=12&id=AbnNU):当前时刻的输入 ![](https://cdn.nlark.com/yuque/__latex/c9af8e1fcd4e3c3eccdbc3030aea6a40.svg#card=math&code=h_%7Bt-1%7D&height=16&id=NEWnt): 上一时刻的工作记忆 ![](https://cdn.nlark.com/yuque/__latex/23986d9b2a622a418cb84ad397a8df80.svg#card=math&code=h_%7Bt%7D&height=16&id=TdRgL): 当前时刻的工作记忆<br />![](https://cdn.nlark.com/yuque/__latex/59b3fb47672dc8c4d75a40bfe571be63.svg#card=math&code=%5Cwidetilde%7Bc_%7Bt%7D%7D&height=16&id=X3xxu): 当前时刻的候选记忆 ![](https://cdn.nlark.com/yuque/__latex/689b1ef372baac05d8d1b903e0bfbabb.svg#card=math&code=c_%7Bt-1%7D&height=12&id=oELTU): 上一时刻的长期记忆 ![](https://cdn.nlark.com/yuque/__latex/cd40b468a6890fe609be337d815300a3.svg#card=math&code=c_%7Bt%7D&height=12&id=IdpRg): 当前时刻的长期记忆

FNN\CNN\RNN - 图38

LSTM 有三个门, 三个门来控制信息的流动 ,有两个重要的记忆:长期记忆(cell state) 工作记忆(hidden state),两者的分工主要是:历史信息存储在 cell state 中,当下的决策如输出等在 hidden state 里面运行

LSTM 的工作过程主要有三个步骤:

  • 选择性遗忘部分长期记忆:将记忆中不重要的记忆移除,通过遗忘门来控制 FNN\CNN\RNN - 图39
  • 选择部分当前时刻的信息加入到长期记忆,通过输入门控制 FNN\CNN\RNN - 图40
  • 从长期记忆中提取出工作记忆,由输出门控制 FNN\CNN\RNN - 图41

由以上三个过程可知当前时刻长期记忆由两部分组成,分别是步骤一和步骤二的结果,可得到公式 5 FNN\CNN\RNN - 图42

GRU

在 LSTM 网络中,输入门和遗忘门是互补关系,用两个门比较冗余。GRU 将输入门与和遗忘门合并成一个门:更新门。同时,GRU 也不引入额外的记忆单元,直接在当前状态 FNN\CNN\RNN - 图43 和历史状态 FNN\CNN\RNN - 图44 之间引入线性依赖关系。
image.png

应用模式

序列到类别模式

序列到类别模式主要用于序列数据的分类问题:输入为序列,输出为类别。比如在文本分类中,输入数据为单词的序列,输出为该文本的类别。假设一个样本 FNN\CNN\RNN - 图46 为一个长度为 FNN\CNN\RNN - 图47 的序列,输出为一个类别 FNN\CNN\RNN - 图48
image.png

同步的序列到序列模式

同步的序列到序列模式主要用于序列标注(SequenceLabeling)任务,即每一时刻都有输入和输出,输入序列和输出序列的长度相同。比如词性标注(Part-of-SpeechTagging)中,每一个单词都需要标注其对应的词性标签。假设一个样本 FNN\CNN\RNN - 图50 为一个长度为 FNN\CNN\RNN - 图51 的序列,输出为一个序列 FNN\CNN\RNN - 图52
image.png

异步序列到序列模式

异步的序列到序列模式也称为编码器-解码器(Encoder-Decoder)模型,即输入序列和输出序列不需要有严格的对应关系,也不需要保持相同的长度。比如在机器翻译中,输入为源语言的单词序列,输出为目标语言的单词序列。
输入为一个长度为 FNN\CNN\RNN - 图54 的序列 FNN\CNN\RNN - 图55,输出长度为 FNN\CNN\RNN - 图56 为一个序列 FNN\CNN\RNN - 图57
通过先编码后解码的方式来实现。先将样本x按不同时刻输入到一个循环神经网络(编码器)中,并得到其编码FNN\CNN\RNN - 图58。然后使用另一个循环神经网络(解码器)中,得到输出序列 FNN\CNN\RNN - 图59
image.png

卷积神经网络 CNN

全连接前馈网络的缺点:
1)参数太多:随着隐藏神经元数量的增多,参数的规模也会急剧增加。会导致整个神经网络的训练效率会非常低,也很容易出现过拟合。
2)局部不变性特征:在尺度缩放、平移、旋转等操作不影响其语义信息。全连接前馈神经网络很难提取这些局部不变特征,一般需要数据增强来提高性能。
卷积神经网络有 3 个结构上的特性:局部连接、权重共享以及汇聚。和前馈神经网络相比,参数更少。
FNN\CNN\RNN - 图61 称为滤波器(Filter)或卷积核(ConvolutionKernel)。假设滤波器长度为m,它和一个信号序列 FNN\CNN\RNN - 图62 的卷积为
FNN\CNN\RNN - 图63
信号序列 FNN\CNN\RNN - 图64 和滤波器 FNN\CNN\RNN - 图65 的卷积定义为
FNN\CNN\RNN - 图66
其中,FNN\CNN\RNN - 图67 表示卷积运算。

一维卷积

image.png

二维卷积

给定一个图像 FNN\CNN\RNN - 图69, 和滤波器 FNN\CNN\RNN - 图70,一般 FNN\CNN\RNN - 图71,其卷积为
FNN\CNN\RNN - 图72
image.png
互相关
互相关是一种衡量两个序列相关性的函数,通常用户滑动窗口的点积计算来实现。给定一个图像 FNN\CNN\RNN - 图74, 和滤波器 FNN\CNN\RNN - 图75,其互相关为
FNN\CNN\RNN - 图76
互相关和卷积的区别在于卷积核是否进行翻转。互相关也被成为不翻转卷积。

假设卷积层的输入神经元个数为 FNN\CNN\RNN - 图77,卷积大小为 FNN\CNN\RNN - 图78,步长为 FNN\CNN\RNN - 图79,输入神经元两端各填补 FNN\CNN\RNN - 图80个零(zero pading),那么卷积层的神经元数量为
FNN\CNN\RNN - 图81

CNN

卷积神经网络一般由卷积层、汇聚层和全连接层构成。

  • 卷积层(Filter Layer):性质:局部连接和权重共享。作用:提取局部区域的特征
  • 汇聚层(Pooling Layer):进行特征选择,降低特征数量,从而减少参数数量。

汇聚(Pooling) :指对每个区域进行下采样(Down Sampling) 得到一个值,作为这个区域的概率
常用的汇聚函数:

  1. 最大汇聚(Maxinum Pooling):取一个区域内所有神经元的最大值。

FNN\CNN\RNN - 图82
其中 FNN\CNN\RNN - 图83 为区域 FNN\CNN\RNN - 图84 内每个神经元的激活值。

  1. 平均汇聚(Mean Pooling):取区域内所有神经元的平均值:

FNN\CNN\RNN - 图85
image.png

  • 全连接层:

image.png

残差网络 ResNet

残差网络是通过给非线性的卷积层增加直连边的方式来提高信息的传播效率。假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)FNN\CNN\RNN - 图88 去逼近一个目标函数为 FNN\CNN\RNN - 图89
如果将目标函数拆分成两部分:恒等函数(IdentityFunction)FNN\CNN\RNN - 图90 和残差函数(ResidueFunction)FNN\CNN\RNN - 图91
FNN\CNN\RNN - 图92
根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习[Heetal.,2016]。因此,原来的优化问题可以转换为:让非线性单元 FNN\CNN\RNN - 图93 去近似残差函数 FNN\CNN\RNN - 图94,并用 FNN\CNN\RNN - 图95去逼近 FNN\CNN\RNN - 图96
残差网络就是将很多个残差单元串联起来构成的一个非常深的网络。
image.png

图网络