3、Seq2Seq语言生成模型

1.前言:

机器怎么理解句子一直是一个难题,以前有人尝试将用句子中出现的词语频率来表达这个句子的含义(TF-IDF)。 也有人想把句子中的词语先向量化,然后再叠加句子中所有向量化的词语来表达一句话。 这些在的确都是一种计算机表达句子含义的方式,但是不一定会非常准确。因为他们都只是一种对词语理解的简单加工方式,有的忽略了词语的表达顺序, 有的忽略了词语的组合模式。这往往导致计算机不能非常准确的理解句子。

2.什么是Encoder和Decoder

在深度学习中,万物都可向量化,其中有两个问题:

1、怎么样从原始的数据变成向量数据
2、怎么样加工向量化的数据,将其变成各种其他的表达形式

在这里插入图片描述
上面这张图就诠释了这样的一个过程:

1、我们用Encoder将原始的我爱莫烦Python转变成标准的向量表达;
2、在用各种Decoder将向量化表达转变成其他的表达形式,其中就可以是翻译,图片,情感和对话。

所以从上面例子可以看出,Encoder是一种压缩器,去繁从简,将最有用的特征给识别出来,用最简练的信息表达他们。 这一点在AutoEncoder中也有很好的体现。 而Decoder是解压器,但是它并不是将压缩好的信息还原,而是解压成另外一种形式,换一种表达方式
*注:以上取自莫烦python。*

一、Seq2Seq是什么?

seq2seq 是一个Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列。Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。 Seq2Seq模型是输出的长度不确定时采用的模型,这种情况一般是在机器翻译的任务中出现,将一句中文翻译成英文,那么这句英文的长度有可能会比中文短,也有可能会比中文长,所以输出的长度就不确定了。

很多自然语言处理任务,比如聊天机器人,机器翻译,自动文摘,智能问答等,传统的解决方案都是检索式(从候选集中选出答案),这对素材的完善程度要求很高。seq2seq模型突破了传统的固定大小输入问题框架。采用序列到序列的模型,在NLP中是文本到文本的映射。其在各主流语言之间的相互翻译以及语音助手中人机短问快答的应用中有着非常好的表现。如下:
在这里插入图片描述

二、Seq2Seq模型简介

1、编码解码器结构

(1)编码器处理输入序列中的每个元素(在这里可能是1个词),将捕获的信息编译成向量(称为上下文内容向量)。在处理整个输入序列之后,编码器将上下文发送到解码器,解码器逐项开始产生输出序列。如,机器翻译任务
在这里插入图片描述
(2)上下文向量

  • 输入的数据(文本序列)中的每个元素(词)通常会被编码成一个稠密的向量,这个过程叫做word embedding
  • 经过循环神经网络(RNN),将最后一层的隐层输出作为上下文向量
  • encoder(encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义)和decoder(decoder则负责根据语义向量生成指定的序列)都会借助于循环神经网络(RNN)这类特殊的神经网络完成,循环神经网络会接受每个位置(时间点)上的输入,同时经过处理进行信息融合,并可能会在某些位置(时间点)上输出。

动态地展示整个编码器和解码器,分拆的步骤过程:

基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。
在这里插入图片描述
以上取自https://blog.csdn.net/weixin_44388679/article/details/102575223

三、加入attention注意力机制的Seq2Seq

1、何为注意力机制

视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。
深度学习的注意力,和我们人类的注意力生理机制有异曲同工之处。深度学习的注意力的理解真的就是先获取到整体信息, 然后再用注意力获取的局部信息。

2、attention机制结构

所谓的注意力机制,可以粗略地理解为是一种对于输入的信息,根据重要程度进行不同权重的加权处理(通常加权的权重来源于softmax后的结果)的机制,如下图所示,是一个在解码阶段,简单地对编码器中的hidden states进行不同权重的加权处理的过程。

例:输入“早上好”,然后翻译输出“Good morning”
在这里插入图片描述
考虑这样一个问题:由于Encoder的隐藏层状态 ht 代表对不同时刻输入 xt的编码结果:
即Encoder状态h1,h2,h3 对应编码器对“早”,“上”,“好”三个中文字符的编码结果。
那么在Decoder时刻t=1通过3个权重 w11 , w12 ,w13计算出一个向量 c1
在这里插入图片描述
然后将这个向量与前一个状态拼接在一起形成一个新的向量输入到隐藏层计算结果:
Decoder时刻t=1:
在这里插入图片描述
Decoder时刻t=2和 t=3 同理,就可以解决Context长度限制问题。由于w11 , w12 ,w13不同,就形成了一种对编码器不同输入 xt 对应 ht 的“注意力”机制(权重越大注意力越强)。
来自于 https://zhuanlan.zhihu.com/p/51383402

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值