深度学习之序列数据处理单元(一)
等待实习的第十天,闲着无趣。看看文章博文打发一下时间。最近CV Transformer的研究如火如荼,Transformer最初在NLP领域中被提出来的,被证明在NLP几大任务上取得了显著的优势,在NLP任务中用于对序列型数据进行建模,里面用了一大堆注意力机制。理解Transformer关键在于理解它里面处理单元的工作原理。本文主要介绍简单的序列处理单元RNN,LSTM及其变种,之后会写几篇文章对
等待实习的第十天,闲着无趣。看看文章博文打发一下时间。
最近CV Transformer的研究如火如荼,Transformer最初在NLP领域中被提出来的,被证明在NLP几大任务上取得了显著的优势,在NLP任务中用于对序列型数据进行建模,里面用了一大堆注意力机制。理解Transformer关键在于理解它里面处理单元的工作原理。本文主要介绍简单的序列处理单元RNN,LSTM及其变种,之后会写几篇文章对Transformer,bert,seq2seq等算命进行详细介绍。
RNN
RNN结构
把上图中有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络。上图中符号介绍:
x是一个向量,它表示输入层的值, 这里面没有画出来表示神经元节点的圆圈。
s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同)。
o也是一个向量,它表示输出层的值。
U是输入层到隐藏层的权重矩阵。
V是隐藏层到输出层的权重矩阵。
循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。则
W就是隐藏层上一次的值作为这一次的输入的权重。
上面RNN展开图:
网络在t时刻接收到输入xt之后, 隐藏层的值是st,输出值是ot.关键一点st不仅取决于xt,还取决于st-1, 可以用下面的公式来表示循环神经网络的计算方法:
LSTM
长短记忆神经网络——通常称作LSTM,是一种特殊的RNN,能够学习长的依赖关系。 他们由Hochreiter&Schmidhuber引入,并被许多人进行了改进和普及。他们在各种各样的问题上工作的非常好,现在被广泛使用。
所有循环神经网络都具有神经网络的重复模块链的形式。 在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。
LSTM也拥有这种链状结构,但是重复模块则拥有不同的结构。与神经网络的简单的一层相比,LSTM拥有四层,这四层以特殊的方式进行交互。
先熟悉一下LSTM中每层中要使用的符号:
上图中每一行都带有一个向量,该向量从一个节点输出到其他节点的输入。粉红色圆圈表示点向运算,如向量加法、点乘,而黄色框是学习神经网络层。 线的合并表示连接,而线的交叉表示其内容正在复制,副本将转到不同的位置。
LSTM核心思想
LSTM的关键是细胞状态,表示细胞状态的这条线水平的穿过图的顶部。细胞的状态类似于输送带,细胞的状态在整个链上运行,只有一些小的线性操作作用其上,信息很容易保持不变的流过整个链。
LSTM确实具有删除或添加信息到细胞状态的能力,这个能力是由被称为门(Gate)的结构所赋予的。门(Gate)是一种可选地让信息通过的方式。它由一个Sigmoid神经网络层和一个点乘法运算组成。具体如下图:
Sigmoid神经网络层输出0和1之间的数字,这个数字描述每个组件有多少信息可以通过, 0表示不通过任何信息,1表示全部通过。
LSTM有三个门,用于保护和控制细胞的状态。
分步理解LSTM
LSTM的第一步是决定从细胞状态中丢弃什么信息。 该决定由被称为“忘记门”的Sigmoid层实现。它查看ht-1(前一个输出)和xt(当前输入),并为单元格状态Ct-1(上一个状态)中的每个数字输出0和1之间的数字。1代表完全保留,而0代表彻底删除。
下一步是决定要在细胞状态中存储什么信息。 这部分分为两步。 首先,称为“输入门层”的Sigmoid层决定了将更新哪些值。 接下来一个tanh层创建候选向量Ct,该向量将会被加到细胞的状态中。 在下一步中,将结合这两个向量来创建更新值。
现在是时候去更新上一个状态值Ct−1了,将其更新为Ct。将上一个状态值乘以ft,以此表达期待忘记的部分。之后将得到的值加上 it∗C̃ t。这个得到的是新的候选值, 按照决定更新每个状态值的多少来衡量.
最后,需要决定输出什么。 此输出将基于细胞状态,但将是一个过滤版本。 首先,运行一个sigmoid层,它决定了要输出的细胞状态的哪些部分。 然后,将单元格状态通过tanh(将值规范化到-1和1之间),并将其乘以Sigmoid门的输出,至此只输出了决定的那些部分。
LSTM的变种
到目前为止,所描述的是一个很正常的LSTM。 但并不是所有的LSTM都与上述相同。 事实上,似乎几乎每一篇涉及LSTM的论文都使用了一个略有不同的版本,差异很小,但有一些值得一看。
变种一:
一个比较流行的LSTM变种是由Gers & Schmidhuber (2000)提出的,添加“peephole connections”。这意味着,允许gate层去看细胞的状态。
上面的图中所有的Sigmoid层都增加了窥视,但许多论文实现不是针对所有都增加窥探,而是有针对性的增加。
变种二:
另一种变化是使用耦合的忘记和输入门,而不是单独决定要忘记什么、添加什么,这个决定需要一起做。 只有当需要输入某些信息的时候,才会忘记这个位置的历史信息。只有当我们忘记一些历史信息的时候,才在状态中添加新的信息。
变化三:
LSTM的一个稍微更显着的变化是由Cho介绍的门控循环单元(或GRU)。 它将忘记和输入门组合成一个单一的“更新门”。它还将单元格状态和隐藏状态合并,并进行了一些其他更改。 所得到的模型比标准LSTM模型更简单,并且越来越受欢迎。
至此介绍完了基本序列单元原理,下一章介绍Transformer原理。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)