专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
奇舞精选  ·  前端工程师的 AI DAY 来啦! ·  昨天  
奇舞精选  ·  前端工程师的 AI DAY 来啦! ·  昨天  
宝玉xp  ·  可以试试 AI 帮你做,推荐试试 ... ·  2 天前  
黄建同学  ·  从基础到高级的LLM ... ·  4 天前  
宝玉xp  ·  回复@Orenoid:会的,但是不可控,Cu ... ·  6 天前  
51好读  ›  专栏  ›  机器学习研究会

seq2seq中的beam search算法过程

机器学习研究会  · 公众号  · AI  · 2017-07-23 21:58

正文

首先说明在sequence2sequence模型中,beam search的方法只用在测试的情况,因为在训练过程中,每一个decoder的输出是有正确答案的,也就不需要beam search去加大输出的准确率。



假设现在我们用机器翻译作为例子来说明。



我们的任务是翻译中文“我是中国人”--->英文“I am Chinese”

假设我们的词表大小只有三个单词就是I am Chinese。


那么如果我们的beam size为2的话,我们现在来解释,


如下图所示,我们在decoder的过程中,有了beam search方法后,在第一次的输出,我们选取概率最大的"I"和"am"两个单词,而不是只挑选概率最大的单词。



然后接下来我们要做的就是,把“I”单词作为下一个decoder的输入算一遍得到y2的输出概率分布,把“am”单词作为下一个decoder的输入算一遍也得到y2的输出概率分布。

比如将“I”单词作为下一个decoder的输入算一遍得到y2的输出概率分布如下:



比如将“am”单词作为下一个decoder的输入算一遍得到y2的输出概率分布如下:



那么此时我们由于我们的beam size为2,也就是我们只能保留概率最大的两个序列,此时我们可以计算所有的序列概率:



“I I” = 0.4*0.3    "I am" = 0.3*0.6 

 "I Chinese" = 0.4*0.1  "am I" = 0.5*0.3 

"am am" = 0.5*0.3 "am Chinese" = 0.5*0.4



我们很容易得出俩个最大概率的序列为 “I am”和“am Chinese”,然后后面会不断重复这个过程,直到遇到结束符为止。

最终输出2个得分最高的序列。



这就是seq2seq中的beam search算法过程,但是可能有些同学有一个疑问,就是但i-1时刻选择的单词不同的时候,下一时刻的输出概率分布为什么会改变?



转自:机器学习算法与自然语言处理