NLP-Seq2Seq

目录

一、Seq2Seq概述

1.Multimodal Learning

2.Intuition

二、Seq2Seq训练

1.训练数据

2.模型评估

3.Beam Search

①为什么要用Beam Search

②Beam Search原理


一、Seq2Seq概述

1.Multimodal Learning

多模态学习,指的是使用不同的模型,将其拼接起来,达到不同的训练效果。比如RNN→LSTM, CNN→RNN等

2.Intuition

Seq2Seq的一个典型应用是机器翻译。对模型进行拼接之后,我们会在中间添加一个“桥梁”,当然也是一个向量,中文和英文都可以转换成一个向量,而这个向量就是要表达的意思。

那么这两个语言就可以映射到同一个向量,可以称之为meaning vector。那么不管什么语种,不管是不是文本,也包括图片,语音等,只要是表达的同样的意思,那么都可以映射到同一个向量上,那么就会得到不同的模型,看图说话,语音识别等。

例句:今天  天气  很  好

Encoder部分:输入一句话进入模型,一步一步进行传递,最后整句话的意思,都包含在了“好”所输入的模块中,这个模块会输出信息到meaning space,也就是桥梁向量。

桥梁向量会作为后面所有流程的条件输入给模块。

Decoder部分:把桥梁向量C,以及句子开始的标志,传入模型,得到输出Today's;然后把Today's,C,上一个模块存储信息作为输入传入下一个模块,得到输出weather,这样重复下去,直到得到结束符号。

以上流程是模型训练好之后,进行预测的流程。训练的时候,后面的英文句子已经提供好。训练的过程中,每一个输出都会有一个loss,从而可以使我们通过BP算法进行训练。

二、Seq2Seq训练

1.训练数据

训练数据通常以以下的形式出现:

<中文1,英文1>,<中文2,英文2>,......,<中文n,英文n>

在每一个mini batch上面,长度一样才可以进行矩阵操作。如果长度不一样,选择最长的一句话作为向量长度,剩下的不够长的,用0填充。

2.模型评估

可以使用n-gram来判断,数一下有多少一致的词以及短语。比如unigram, bigram, trigram全用上,把得到的结果整合在一起进行评估。 

3.Beam Search

①为什么要用Beam Search

在生成翻译的过程中,假如每次输出都选择概率最大的词输出,是一种贪心算法,也是维特比算法,得到的是一种局部最优解。但是一句话并不一定只有一种表达方式,可能有多种,因此虽然输出的词概率最大,但并不一定就是最好的答案。

如果通过穷举法来看看所有的输出,选择最好的,但时间复杂度是O(|v|^T),显然过大。

于是我们可以通过优化过的穷举法来进行输出,比如每一步只考虑最好的前五个或前十个等,叫做Beam Search,也是局部最优,但时间复杂度小很多,并且可以得到多个较好的结果。

②Beam Search原理

首先定义Beam size,比如k=3,也就是我们要选择前三个概率最大的值保留。

Encoding之后,输入<start>,得到了输出之后,保留前k个,这里就是前3个,比如保留了The, Weather, Today's,这三个都是有各自的概率的,我们取概率的对数,以便于计算。

对于每一个词,都进行计算下一个输出的分布,同样保留前3个,此时有9个输出,假如我们持续按照这样的方式,对每一个都找后面的前三名输出,那么时间复杂度是指数级增长,因此,这9个输出中,我们只要最好的3个。

选择方式:

对于The, Weather, Today's所生成的9个结果,全部计算他们的对数概率,然后把第一个输出和第二个输出的结果相加和,选择三个最大的即可。

接下来,基于选择的这三个,继续生成每一个的前3名,再进行选择。

过程中,<end>符号可能出现的过早,那么这句比较短的话,总的值肯定是最大的,因为后面没词了。通常这种情况下,把所有的词进行一个平均即可。

时间复杂度O(k^2*T)≈O(T),因为通常k取的值很小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值