《Effective Approaches to Attention-based Neural Machine Translation》论文笔记

本文解析2015年神作,提出全局与局部注意力机制,革新神经机器翻译,局部机制尤其提升5个BLEU点,刷新英德翻译纪录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要用于记录发表于2015年的一篇神作(引用量上千)。该论文将注意力机制在机器翻译的领域进行了升级,而本笔记意在方便初学者快速入门,以及自我回顾。

论文链接:http://aclweb.org/anthology/D15-1166

基本目录如下:

  1. 摘要
  2. 核心思想
  3. 总结

------------------第一菇 - 摘要------------------

1.1 论文摘要

近年来注意力机制被运用于神经机器翻译模型已是常态,但却很少有论文专注于对注意力架构的改进。本论文就提出了两种简单但却有效的注意力机制,全局注意力(global)和局部注意力(local)。其中,局部注意力机制的运用使得神经机器翻译模型远胜于非注意力机制模型(5个BLEU点)。在融合了各个注意力机制模型之后,更是刷新了一波英文翻德文的记录。

------------------第二菇 - 核心思想------------------

2.1 注意力机制介绍

本文提出的两种注意力机制(global & local)其本质区别在于,全局注意力会参考所有输入词,而局部注意力只会考虑部分输入词。而全局注意力,其实可以简单理解为soft_attention的简化版(可参考本菇另一篇论文笔记] ,而局部注意力,可以简单理解介于hard_attention和sorf_attention之间,但是耗费更短的时间来训练。流程上来理解,全局和局部注意力机制唯一的不同就是生成c_t(语境向量)的方法,而一旦有了c_t之后,接下来的步骤都是一样的,我们新的隐状态即为,

\widetilde{h_t}= tanh(Wc[c_t;h_t])

然后这个注意力向量就会被传入一个softmax层,来预测当前词,

p(y_t|y_{<t}, x) = softmax(W_s\widetilde{h_t})

接下来,我们就来仔细聊一下这两种注意力机制。

2.2 全局注意力机制介绍

该注意力机制重点在于考虑所有输入的隐状态来生成语境向量。与soft_attention类似,该注意力机制也是有对齐向量(a_t)的概念,不同的是,该对齐向量的计算更简单,直接由当前隐状态(h_t)和每一个输入隐状态(\widetilde{h_t})计算得出权重,其计算公式如下,

score function.png

其中作者设计了三种打分函数(剧透一下,最后general的效果最好)。有了对齐向量以后,语境向量就很好生成了,这里再贴一张原论文的图,方便大家理解,

global.png

看了图应该就一目了然了,所以说,这种全局注意力的计算及实现方法是真的很简单,而且也没用高深的计算公式,也没用复杂的神经网络。这里论文作者多谈了几句和soft_attention的区别,重点就是本论文的计算路径简单了很多(虽然本菇还是有一点疑惑,这一点区别的理解,因为从本质上来看,本菇觉得计算开销都很大,可能还需仔细阅读源码,先mark,后期来补,欢迎大神解惑)。

2.3 局部注意力机制介绍

局部注意力机制其实就是为了解决全局注意力机制计算开销过大的问题,比如篇章级或者长句的翻译,遍历所有的隐状态来求对齐向量显然比较困难,因此,局部注意力,如其名,只会关注部分隐状态。因此,该机制的重点就在于如何找寻与预测词对应的隐状态。而论文中也给出了2种找寻的办法,

1)单一映射。即同一时刻的预测词与输入词应该具有强关联关系。确定了目标隐状态之后,再划定一个窗口D,则可以扩大视野,然后再用上面global的计算语境向量的方法即可。

2)显然单一映射,太过暴力了,更多的还是采用一种预测的办法。一种求解对应隐状态区间的计算公式为,

function.png

其中S为句子长度,W,v_p都是模型的参数。另外为了更好的计算对齐向量,还引入了高斯分布,如公式(11)。这里,再贴一张原论文的图,加深大家对局部注意力机制的理解,

local .png

2.3 论文实验结果分析

论文作者把自己提出的框架都挨个试了一遍,这里就不具体展现了。有兴趣的读者可以自行研读。总体看下来的感觉就是全局和局部的注意力机制也都各有优劣,大家还是要结合具体的业务,尝试过后,再做具体的选择。

------------------第三菇 - 总结------------------

3.1 总结

到这里,整篇论文的核心思想及其创新点已经说清楚了。本论文主要集中在于对注意力机制的改进,提出的全局和局部注意力机制,都足够新奇,但也都在情理之中。主要还是拓宽了我们设计注意力机制的思路。

简单总结一下本文就是先罗列了一下该论文的摘要,再具体介绍了一下注意力机制,尤其是全局和局部注意力机制那一块的理论。希望大家读完本文后能进一步加深对该论文的理解。有说的不对的地方也请大家指出,多多交流,大家一起进步~?



作者:蘑菇轰炸机
链接:https://www.jianshu.com/p/1c24eba3ba9c
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

### 关于序列到序列学习的研究 序列到序列学习(Sequence-to-Sequence Learning)是一种基于神经网络的方法,用于将输入序列映射到输出序列。这种技术广泛应用于机器翻译、语音识别等领域。Sutskever等人首次提出了使用循环神经网络(RNNs)实现端到端的序列到序列建模[^4]。 ```python import torch.nn as nn class Seq2Seq(nn.Module): def __init__(self, encoder, decoder): super(Seq2Seq, self).__init__() self.encoder = encoder self.decoder = decoder def forward(self, src, trg): # Encoder processes input sequences. hidden_state = self.encoder(src) # Decoder generates output based on encoded information. outputs = self.decoder(trg, hidden_state) return outputs ``` ### 注意力机制在语音识别中的应用 注意力模型通过允许模型聚焦于输入的不同部分来提高性能,在语音识别领域尤为重要。Bahdanau等人引入了一种软对齐方法,该方法能够动态调整源句和目标句之间的对应关系[^5]。这种方法显著提高了自动语音识别系统的准确性。 对于特征提取而言,由于语音信号具有波动性,即使人们努力说出相同的两个句子,其信号也总是存在差异,这使得计算机科学家难以进行有效的特征提取[^1]。 ### 基于注意力的神经机器翻译的有效方法 Vaswani等人提出的Transformer架构完全摒弃了传统的RNN结构,转而采用自注意力机制(Self-Attention Mechanism),极大地提升了训练效率并降低了计算复杂度[^6]。这一突破性的进展表明,“注意力就是一切”,即仅依靠注意力机制即可完成高质量的语言翻译任务。 ```python def scaled_dot_product_attention(q, k, v, mask=None): matmul_qk = torch.matmul(q, k.transpose(-2, -1)) dk = q.size()[-1] scores = matmul_qk / math.sqrt(dk) if mask is not None: scores += (mask * -1e9) attention_weights = nn.Softmax(dim=-1)(scores) output = torch.matmul(attention_weights, v) return output, attention_weights ``` ### 结论 综上所述,无论是从理论层面还是实际应用场景来看,序列到序列学习配合注意力机制都展现出了强大的潜力与价值。未来随着硬件条件的进步和技术的发展,这些算法有望进一步优化并在更大规模的数据集上取得更好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值