当前位置:   article > 正文

深度学习三:SeqtoSeq

seqtoseq

根据输出和输入序列不同数量rnn可以有多种不同的结构,不同结构自然就有不同的引用场合。如下图,

  1. one to one 结构,仅仅只是简单的给一个输入得到一个输出,此处并未体现序列的特征,例如图像分类场景。
  2. one to many 结构,给一个输入得到一系列输出,这种结构可用于生产图片描述的场景。
  3. many to one 结构,给一系列输入得到一个输出,这种结构可用于文本情感分析,对一些列的文本输入进行分类,看是消极还是积极情感。
  4. many to many 结构,给一些列输入得到一系列输出,这种结构可用于翻译或聊天对话场景,对输入的文本转换成另外一些列文本。
  5. 同步 many to many 结构,它是经典的rnn结构,前一输入的状态会带到下一个状态中,而且每个输入都会对应一个输出,我们最熟悉的就是用于字符预测了,同样也可以用于视频分类,对视频的帧打标签。

传统的RNN模型要求输入输出序列是等长的,而第四中输入输出序列不等长,因此第四的模型即为Sequence to Sequence,它实现了一个序列到另一个序列的转换。

资料来源:https://blog.csdn.net/starzhou/article/details/78171936

  1. SeqtoSeq :RNN-RNN其框架结构如图:

  • 相对于Encoder:         
  • 1.将整个source序列编码成一个固定维度的向量C;
  • 2.Encoder 将输入序列输入到隐藏层,利用生成隐藏层状态,其中f是一种非线性激活函数 
  • 3.对所有状态h(t)求和,生成输入序列编码C;
  • 相对于Decoder:通过t时刻的隐藏层的状态,预测其输出;
  • 1.根据序列编码C、上一时刻隐藏层状态、上一时刻输出,计算其隐藏层的状态,计算公式; 
  • 2.根据条件概率分布,计算输出结果为yt的概率分布,计算公式为 ;
  • 3.利用最大化条件对数似然参数估计计算模型参数w;(w为输入序列与输出序列的参数)
  • 4.最终模型可1.生成目标序列;2.生成输入序列与输出序列的概率;

Seq-to-Seq模型来自“Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation”这篇论文

注:模型可使用LSTM替换RNN,以解决RNN的长期依赖问题;

  • 注意力机制:通过target中的query和key,与source中的所有value求得的,学习的是target中的每个元素和source中的所有元素的相关度;
  • 自注意力机制:学习source本身的每个单词和其他单词的相似度,Self Attention可以捕获同一个句子中单词之间的一些句法特征或语义特征;
  • 多头注意力机制:计算句子中所有单词的注意力,然后将其值连接起来。
  • 注:本质上注意力机制是计算权重的过程;

  1. 注意力机制

 以下计算过程以点乘为例;

2.多头部注意力机制:

以上内容来自于:

https://www.bilibili.com/video/BV1v3411r78R?p=2&spm_id_from=pageDriver

  1. Transformer:一种SeqtoSeq模型结构,由encoder和decoder组成;

  1. Encoder:

在tansformer中包括多个block,不同的block包括不同的组件,encoder 的block包括自注意力机制和全连接层如下图;

 Encoder过程:

在Encoder中,①自注意力机制生成向量后,对其进行残差连接,(所谓残差连接即f(x)+x,就是生成的向量与未处理的向量进行拼接);②然后进行layer正则化,将正则化后的向量输入全连接层;③对输出向量进行残差连接后进行layer正则化,输出本模块Encoder结果;

  1. Encoder&Decoder
  1. 在encoder&decoder中,①利用encoder生成的向量,计算出其k,v值;②然后利用Encoder中产生的k值与decoder产生的q值进行点乘计算生成a,同时a与encoder中生成的v值进行乘积后求和生成v’;③然后进行残差连接并正则化,同时将其输出到全连接层(Feed Forward).

  1. Decoder
  1. 在decoder中,相比encoder多添加了第一层的Masked multi-head Attention;其他的不同在于多头部注意力机制的输入包括encoder的输出和Masked multi-head Attention的输出;如图所示,其他层的计算不变。
  2. Masked multi-head Attention计算过程中由于其序列输出是串行的,这一时刻的输出会作为下一时刻的输入。因此,其计算相关程度a的过程中仅计算左边已经生成时刻的k值,在最终生成向量b也只使用左边的v值,点乘后求和得b值。

4.model--train

以上内容来自于:https://www.bilibili.com/video/BV1v3411r78R?p=4

  1. Bert(Bidirectional Encoder Representations from Transformers):
  1. Bert 利用了transformer的编码器,其输入为输入数据,例如词。其输出是一个embedding向量。

  1. Bert 训练:词预测(Masked LM)、上下文预测;
  2. 1)Bert 训练1:Masked LM---->通过mask学习词嵌入;

2)Bert 训练2:Next Sentence Prediction

  1. ELMO(Embedding from Language Model ):在多层RNN的嵌入向量中,一般使用最后一层生成的嵌入向量进行输入全连接层或输出,而在ELMO中,其采用每一层生成的嵌入向量,并加以权重系数a进行求和,运算后生成最终的嵌入向量进行任务学习。

  • 应用:词性标注、语义分析、文本分类等
  1. GPT(Generative Pre-Training):transformer模型中的Decoder。通过计算上一时刻的Masked Multi-head attention计算预测下一时刻的结果。

  • 应用:阅读理解、摘要抽取、翻译;

以上内容来自于:

https://www.bilibili.com/video/BV1JA411t7m6?from=search&seid=8958036506133967786

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/688949
推荐阅读
相关标签
  

闽ICP备14008679号