前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络(五) ——Bean搜索、bleu评分与注意力模型

循环神经网络(五) ——Bean搜索、bleu评分与注意力模型

作者头像
用户1327360
发布2018-06-07 11:34:51
7940
发布2018-06-07 11:34:51
举报

循环神经网络(五)

——Bean搜索、bleu评分与注意力模型

(原创内容,转载请注明来源,谢谢)

一、概述

本文主要讲解机器翻译过程中涉及的算法,主要包括bean搜索算法及其改进与误差分析、bleu计算多种翻译得分、注意力模型及其实际应用等。

二、Bean搜索算法

1、概述

翻译,涉及到编码器与解码器,这个是之前RNN网络解决的问题。但是,存在多种翻译的情况,需要选择一种好的翻译结果。

另外,在图像识别翻译中,通过一张图片返回一句话,如下图,需要CNN网络的输出接入到RNN网络的输入。同样,RNN网络的输出还是有多种表达方式。

另外,语言模型和机器翻译,区别在于语言模型是一个没有输入,仅有网络内部自己的处理。而机器翻译,则带有输入和输出。语言模型有点类似机器翻译的编码器部分。

当一句话翻译成多个结果,需要选择较好的结果。这里不使用最优结果,即贪心搜索算法,主要有两点原因:

1)贪心算法需要每个词的下一个词都是最常用的词,但是这样整句话组起来未必是最通顺的句子,如下面的例子。

2)贪心算法的速度较慢。

2、Bean搜索

不同于贪心算法,bean的核心思想是:每次选择若干个相关性较大的单词作为候选项,依次进行计算概率。再这些概率最高的前几个选择中,再往后选择若干相关性最高的下一个单词。

因此,bean是一个求尽量好结果的算法,而不是求最严格好结果的算法。

算法步骤如下:

1)根据编码器的输入,计算第一个单词输出的概率

这里首先引入一个参数B,这个参数称为bean宽度,下面的例子B=3,即每次都选择相关性最大的前3个单词(而不是贪心算法的1个单词,也可以说B=1时bean算法就变成了贪心算法)。

这里选择出了三个单词,假设为in、jane、September。

2)针对第一步选出来的三个单词,逐个单词去选出可能性最大的3个接下来的单词。

这样一共会选择出9个单词,配对成词组后,由于B=3,因此再筛掉6个,留下三个词组,例如留下的是in September、jane is、jane visits。

这里可以看成,每一步都拷贝3个(B个)神经网络,用于找出B个最可能的结果。

重复上面的步骤,直到句尾,得出目标句。

3、bean优化一——长度归一化

由于计算单词的概率,每多一个单词,需要进行一次乘法。当句子太长,会乘出一个特别小的数字,造成数值下溢。

1)log代替乘法

用log代替乘法,可以解决数值下溢的问题。因为这里每个概率都小于1,而且都比较小,因此log的值都是负的一个比较大的数字。相乘后可以避免数值下溢。

2)均值计算代替最大化

无论是乘法计算最值还是log乘法计算最大值,都存在问题。

乘法时,由于概率都是小于1的,因此乘的越多值越小,因此结果会是一个趋向于短句的翻译;而log乘法时,则乘的越多值越大(绝对值),因此结果是一个趋向于长句的翻译。

因此,这里用乘法求和,并且除以计算的总数量,求得均值。通过比较均值可以得到一个较好的结果。

另外,均值未必是直接除以数量,而是带上一个参数α,如下图公式所示,这样可以控制均值归一化的力度。

4、bean优化二——B的选择

上面的例子是B=3,但实际上B要选多少合适?

当B越大,则每次考虑的较优结果越多,则会得到一个更好的结果;但是其问题是占用的存储更多,而且计算速度更慢。

B较小则有相反的问题,速度快内存少,但是结果不太好。

通常,趋向于10~100即可。

另外,bean搜索和广度优先搜索(BFS)、深度优先搜索(DFS)不同,不是求最优的结果,而是一个相对而言较好的结果。

5、bean误差分析

由于这里网络是用RNN的输出接入Bean,因此当模型不好的时候,需要判断是要调整RNN还是调整bean。

这里假设人的翻译是比较好的,结果是y*。机器翻译不那么好,结果是y^。

分别用现有的RNN网络计算A = p(y*|x) 以及 B = p(y^|x),比较A和B。A>B则是Bean的问题,A<B则是RNN的问题,解释如下:

当A>=B,表示RNN计算人工翻译的结果好于机器翻译的结果,这个比较符合常理,则RNN网络本身没问题,但由于系统有问题,则表明是Bean的问题。反之A<B,说明用现有的RNN网络计算,人工翻译的结果还不如机器翻译的结果(这里假设人工翻译比较好),则不符合常理,说明是RNN的问题。

有多个句子时,可以逐个句子列表,看哪个问题比较大。

三、Bleu评分

1、概述

翻译的结果,可能存在多种,且都是正确的翻译,此时可以引入一个单一评价机制,来选择最优的翻译结果,因此引入了Bleu评分。

2、精度法及其改进

不太好的方法,是精度法,即比较正确的翻译结果,与及其翻译的结果,出现的共同单词的数量,与机器翻译本身单词的数量的比。

这个没考虑到词序,且单词出现一次也是相同的,极端情况下如下图所示,精度达到100%,但是是一个无效的翻译。因此这个方法不好。

可以进行改进,限定同样单词出现的次数,例如the在正确的句子中出现2次,则限定这里最多用2,得到一个结果。

由于这两个比较方式都没有考虑到词序,因此并不是好的评价机制。

3、Bigrams

Bigrams即两个相邻的单词同时和正确结果匹配的次数,比上翻译结果整句话中两两词组的个数。

由于需要两个词完全相等,则考虑到了词序的因素。下面的例子是计算的结果。

具体公式,是推广到所有的单词同时出现的次数。都可以计算概率。

要计算这些概率的总和,可以使用下面combined bleu score的公式。这里引入了一个参数BP,称为简短惩罚,是为了进行纠正机器翻译的结果太短的问题。

当翻译的结果比正确结果长,则BP=1;反之,则为下面的公式。这样可以避免翻译结果太短。

Bleu主要是提供了单一评估指标,以评判多个翻译的结果。有许多开源的库可以使用。

四、注意力模型

1、现有问题

当一个非常长的句子出现,则翻译的时候,机器一次性输入了一大段的文字,再一次性处理结果。这样的话处理结果不好,前面的词语的内容被弱化了。

研究表明,太长的句子,如果不用注意力模型,则随着词语的增多,bleu的评分结果会逐渐降低。而使用注意力模型,则可以保持在一个较高的值。

思想:考虑到人工翻译,如果特别长的句子,也是一小部分一小部分的翻译,而不会一次性读完整句话去翻译。注意力模型就是模拟人工翻译长句的过程。

2、模型

注意力模型,实质上是双向RNN,再加上一个单向的RNN网络。双向RNN每个x对应的输出a,经过一个处理因子c,其再反馈到上层的单向RNN网络,进行翻译处理。

处理因子c,起到的作用,即控制当前字符的翻译,需要考虑到前后字符的数量。

C的计算公式如下,表示注意力集中在前后若干个单词之间。每一个α取决于上一个S以及本层的a。

这里为了便于表达,把双向RNN的两个方向的a,整合成一个a来表示。

本层的a,加上上一层的s,共同作为输入,经过一个神经网络,得到结果成为e,这里就是利用这个e进行RNN传输计算。

3、注意力模型应用一——语音辨识

语音辨识,即通过一段话,来得到说话的内容。这里可以用注意力模型,得到说话发音的每个字母,再进行组合。

也可以通过一种叫做CTC的方式,即通过频率,每秒n次的输出。则这种输出可能会存在重复输出的情况,根据这个输出再进行进一步的处理,如下图所示:

4、注意力模型应用二——触发字控制系统

类似苹果的hi siri,通过一些关键词,得到结果,并且进行后续的处理。

五、总结

经过2个月的学习,终于学完这一轮网易微专业的深度学习,其中各种原因导致学习进度比预计慢了1个月。但是这里还是学完了,感觉对深度学习有了一个总体的了解,以及对各种各样的神经网络的处理优势有了大体的了解。

接下来准备先把tf框架学会,然后看看找一些实战的内容做一下,然后可能会再找一些视频课程学习。大家有好的内容也欢迎推荐~

——written by linhxx 2018.03.30

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

本文分享自 爱思考的coder 微信公众号,前往查看

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

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

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