最佳翻译

朋友们,如需转载请标明出处:http://blog.csdn.net/jiangjunshow

教程的上一篇文章我们说过可以用seq2seq模型来进行机器翻译。如上图所示。绿色的部分属于编码网络,紫色的属于解码网络。紫色的部分其实就是一个语言模型,只不过纯粹的语言模型的输入是0向量,而这个解码网络的输入是编码网络产生的编码向量,所以我们将它称为条件语言模型,即这个语言模型是基于特定的输入条件的。

 

解码网络会根据编码网络生成的x来一个时间步一个时间步的生成每个单词。如果词表有10000个单词,那么每一个时间步都会生成10000个单词对应的概率。之前我们说过可以从这10000个概率中随机选出一个来作为这个时间步对应的输出单词。因为是随机选取的,所以会导致翻译结果每次都不一样,而且有时候好,有时候坏。例如对于下面这句法语的翻译,第1句翻译是最恰当的,最后一句是最坏的翻译。

 

所以我们不能这么草率的随机选取一个。我们需要选择最佳的那个翻译结果。那有同学可能就会想到,在每个时间步都选择概率最大那个单词不就得了吗?这种选择方法在计算机领域我们称之为贪心搜索(Greedy search),比如在第1个时间步选择概率最大那个单词,然后这个单词作为第2个时间步的输入,同样也为第2个时间步选择概率最大那个单词作为输出……猛一听,似乎挺有道理的,但其实是行不通的。例如贪心搜索会将第二句作为最佳翻译。因为在单词going比起单词visiting来说,出现在is后面的概率要大得多。所以当将is这个单词作为第3个时间步的输入时,going的概率要远远大于visiting,所以贪心搜索会将going作为最佳翻译结果。

 

有同学可能又会想到,不一个一个单词的选择,而是将翻译得到的句子中所有单词的概率累加起来求平均值,然后选出一个平均值最大的句子作为最佳翻译结果。这个貌似是可行的。但是问题是计算量太大了。假设我们规定翻译结果句子的长度是10个单词,那么对于一个10000个单词的词表来说。翻译结果就有1000010个可能的句子。所以也是不现实的。

 

下一篇文章我会为大家介绍一个算法来选择最佳的翻译结果。

猜你喜欢

转载自blog.csdn.net/jiangjunshow/article/details/103390443
今日推荐