0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# Seq2seq Module 简介

这篇文章是我的笔记分享,内容主要来自吴恩达老师的深度学习课程。^[AI中国官网-全球领先的线上AI教育、实践平台 (deeplearningai.net)]

之前我们讲到的都是这种类型的序列模型。从一个输入开始进行生成。但是在机器翻译中这个模型是不合适的。因为及其翻译是输入一句话得到另一句话,并且两句话的长度通常情况下是不一样的。
image.png
所以在机器翻译中我们的模型长这样:
image.png

换一个说法就是前一部分是encoder将内容编码,后一部分decoder进行解码,这就是序列到序列的模型。

之前我们语言模型计算时使用:
$$
P\left(y^{(1)}, \ldots, y^{\langle T y\rangle)}\right)
$$
现在我们使用:
$$
P\left(y^{(1)}, \ldots, y^{\left(T{y}\right\rangle} \mid x^{\langle 1\rangle}, \ldots, x^{\left\langle T{x}\right\rangle}\right)
$$
因为输出是要建立在输入的条件基础之上的,因此这种模型又可以称之为“conditional language model”。

简写为
$$
P\left(y^{<1>}, \ldots, y^{<T}>\mid x\right)
$$

  • 其中x为输入的句子

现在我们还应该意识到一个问题,咱就是说模型出来的不可能只有一个输出。他要从众多候选中选取一个句子。

比如现在举个机器翻译的例子。

一句法语Jane visite l’Afrique en septembre.将其翻译之后,假设最好的结果为Jane is visiting Africa in September.

image.png

但现在情况是这样的:

Jane visite l’Afrique en septembre.

Jane is visiting Africa in September.

Jane is going to be visiting Africa in September.

In September, Jane will visit Africa.

Her African friend welcomed Jane in September

可以使用束搜索之类的算法。这里就不详细说明束搜索了。

那为什么不可以使用贪心算法呢?

因为我们在机器翻译中要做的是$\underset{y^{<1>}, \ldots, y^{<T{y}>}}{\arg \max } P\left(y^{<1>}, \ldots, y^{<T{y}>} \mid x\right)$,找到概率最大的结果进行输出。

使用贪心算法相当于从头开始逐个单词寻找最大概率。

假设依旧是一万长度的单词表。

第一个输出要从一万个中找到最大概率的Jane

第二步要在前边是Jane的基础上继续从10000长度的单词表中找到is

第三步,在英语中,is going明显比is visiting更常见,因此贪心算法会认为is going置信度更高。

以此类推,总找目前最好的选择并不一定是全局最好的选择。毕竟最后的结果 Jane is going to be visiting Africa in September.就是不如Jane is visiting Africa in September.来得好。

因此不能使用贪心算法。 在这里更常用的是使用近似搜索算法。

举报

相关推荐

0 条评论