前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[L1]Seq2Seq中Beam Seach的应用场景

[L1]Seq2Seq中Beam Seach的应用场景

作者头像
触摸壹缕阳光
发布2020-04-08 18:01:13
6530
发布2020-04-08 18:01:13
举报
前言

由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这系列将介绍Seq2Seq模型中的Beam Search算法。

a

Beam Search的应用场景

单隐层的神经网络被认为能够拟合所有的函数,所以在理论上我们的模型可以使得在训练样本上的损失为0,但这往往不是我们想要的,我们希望我们训练好的模型能够更好的预测未知的数据,而不是尽可能的拟合包含大量噪声的训练样本。所以设置了一个测试阶段来评估模型的好坏,当然根据我们的任务的不同评估模型标准也是不一样的。

比如我们比较熟悉的使用神经网络训练语言模型的任务中,语言模型中测试的标准就是给定目标句子上的perplexity(复杂度)值,perplexity值越小说明我们训练的语言模型越好,在机器翻译的应用中,真实应用的测试步骤和语言模型的测试步骤有所不同,机器翻译的测试方法是,让解码器在没有"正确答案"的情况下自主生成一个翻译句子,然后采用人工或者自动的方法对翻译句子的质量进行评测。自动生成翻译句子的步骤就是在解码的过程中,每一步预测的单词中概率最大的单词被选为这一步的输出,并复制到下一步的输入中,最终的输出序列就是我们最终的翻译结果。

▲机器翻译测试阶段的示意图

比如输入待翻译的句子"I love you",能够通过我训练好的seq2seq模型自动生成"我爱你"。

seq2seq Model的核心是:

其中

就是编码器的输入序列,也就是source sequence,

是解码器的输出序列,也就是target sequence。

那对应我们上面那个"I love you"翻译成"我爱你"的例子中,我们在测试阶段求的就是在source sequence是"I love you"的条件下,输出使

最大的target sequence也就是

序列,其中

属于target sequence词汇表

中的任意词项。然后人工方式对输出的

序列翻译的质量进行评估。

但是这里需要注意,因为我们是以单词为基元的,所以不可能直接输出是概率最大的序列,只能一个单词一个单词的输出,从seq2seq Model的核心式子中我们也可以看出输出

不仅与

有关,而且和前

的单词序列有关,也就是

有关。

如果在测试阶段,对于上面的"I love you"翻译成"我爱你"的例子中,我输入"I love you"(

)的时候,会输出一个词汇表词项的概率分布,比如"我"对应的词汇表词项概率值最大,我们就选择"我"为第一个位置的输出,也就是

,然后把"我"作为下一次的输入,又会输出一个词汇表的词项的概率分布,那比如"爱"对应的词汇表概率值最大,选择"爱"作为第二个位置的输出,也就是

,同理输出最后一个单词"你"。这也体现了对于输出

不仅与

有关,而且和前

的单词序列有关,也就是

有关,在解码器的输出可以写成

如果target sequence的词汇表的大小是

的话,那么对于解码器输出

来说,每输出概率最大的单词的搜索空间是

,对于

来说就是

,对于一般的输出

个序列的话,搜索空间就会是

,通常来说词汇表会很大,那可以看出如果

越长的话,没有任何的算法,直接去遍历的话,那这个效率会很低。

参考: 1.《tensorflow实战Google学习框架》 2.小象学院

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档