[论文解读]Neural machine translation by jointly learning to align and translate

本文详细介绍了Attention机制的起源和发展,解释了为什么传统的encoder-decoder模型在处理长句时存在局限性,并探讨了Attention如何通过引入权重分配解决这一问题,提高翻译质量。

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

在这里插入图片描述

这篇文章应该是最早提出attention思想的。

  • attention模型基本框图

attention model

attention model如何得到上下文
上面的两幅图已经把attention model表示出来了,下面我再以文字加以描述。

  • 为什么需要attention
    传统的encoder-decoder模型大致如下图所示:
    这里写图片描述
    1. 可以看出传统模型把句子的所有语义信息浓缩为一个中间语义C,每一个输出的y都是利用了同一个C,所以输出的每个y都利用了相同的语义信息C,输入的每个单词对于不同的输出y都有相同的权重,并没有引入注意力权重。而我们在翻译时,当前单词的翻译结果应该和它临近的单词关系较大,所以应该有侧重点,不然和它不相关的单词可能会对它的翻译造成不利影响。和LSTM的忘记门和更新门功能类似,我们翻译时可能会需要“忘记”一些离当前单词很远的信息,从而突出临近的信息。而这种功能是传统的encoder-decoder网络结构无法学习的,即使它用了很多层。有相关实验发现,把源句子倒置后再输入encoder-decoder网络,取得了更好的效果,原因就是因为有些语言源句子中的字与翻译出的字的位置相差很大。
    2. 把语义信息浓缩为一个中间语义后,推断可能这种模型难于处理长的句子,NEURAL MACHINE TRANSLATION
    BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
    这篇论文通过实验也证实了这点。实验中越长的句子翻译表现越差,这也说明了传统的encoder-decoder翻译缺乏鲁棒性。

解决思路: 给定一个句子,语义信息就确定了,那么一个很自然的想法就是让不同输出单词侧重(有选择地抽取)学习语义信息的不同部分。那么就需要给每个输出单词一套参数w,让不同单词学习不同的参数w,从而达到有选择的抽取学习语义信息的功能。举个例子:翻译
这里写图片描述
为:
这里写图片描述
其中area应翻译成zone,那么输出结果zone时,它利用的句子信息,可能更偏重于area的上下文,即相应的权重比较大。这也就是ALIGNMENT MODEL(对齐模型)的由来,即翻译中某个输出应该和原句子中相应的词对齐。
网络结构如下图所示:
这里写图片描述
可以看出虽然还是使用了相同的语义信息,但是每个输出单词都可以有不同的对于语义信息的“理解”。
按照上述思想,每个输出单词给它单独一套参数w,即可以实现以上功能。为何实际上的attention机制需要再利用一个小型网络来训练相应的权值呢,即:
这里写图片描述
这里训练权值的函数利用了si-1和hj
我的理解有两点。
(1)翻译模型和其他模型有一点不同,因为翻译过程是一步步进行的,后面的翻译结果会用到前面翻译结果的信息,所以权重的计算需要考虑已经decoder出的信息即si-1,然后再利用encoder的当前位置的信息hj求出相应的权重,而不是只利用encoder的信息hj。
(2)即使是除了翻译模型,其他用不到si-1的模型也不可能每一个输出单独给它一套参数w,首先神经网络是共享参数的,循环神经网路即使每一步输出一次,每一步的输出再接一层全连接,全连接的参数也是共享的;其次每一个输出单独给它一套参数也是不合理的,因为这样就在每个位置的参数共享,很显然网络的输出和位置并不是很相关。
那么如果不用attention,例如得到bilstm+crf中bilstm的输出h后,给每个位置相同的参数w得到crf的输入hw+b。这样有一个明显的缺点,就是没有考虑各个位置信息对当前输出的重要程度。因为由于共享参数,各个位置的信息对当前输出结果的影响是相同的。所以只有设想有一套可以综合考虑各个位置对当前输出结果影响大小的共享参数。于是想到了softmax综合所有位置的权重输出,那么同样也是只有一套参数(attention的参数也是共享的),但是却考虑了各个位置的信息对当前结果的“影响力”,点睛之笔就是softmax,使模型训练出来的一套参数可以考虑所有位置的权重。

参考资料:

  1. http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/
  2. https://blog.youkuaiyun.com/qq_21190081/article/details/53083516
  3. NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
### 中国国标 GB/T 7714 参考文献格式规范 中国国家标准 GB/T 7714-2015 是针对参考文献著录的权威规范,适用于各类学术出版物。此标准规定了参考文献的编排方式、标注方法以及具体格式要求[^1]。 #### 基本格式要求 按照 GB/T 7714 的规定,参考文献应按文中引用次序排列,并采用阿拉伯数字加方括号的形式表示。以下是不同类型文献的具体格式: 1. **期刊文章** ``` [序号]作者. 题名[J]. 刊名, 年份, 卷(期): 起止页码. ``` 示例: ```plaintext [1]李四. 数据挖掘技术及其应用研究[J]. 计算机科学, 2020, 47(8): 123-129. ``` 2. **书籍** ``` [序号]作者. 书名[M]. 版本(第1版不标注). 出版地: 出版社, 出版年: 起止页码. ``` 示例: ```plaintext [2]王五. Python编程基础[M]. 北京: 清华大学出版社, 2019: 56-67. ``` 3. **学位论文** ``` [序号]作者. 题目[D]. 学校所在地: 授予单位, 年份. ``` 示例: ```plaintext [3]张三. 大数据环境下隐私保护机制的研究[D]. 上海: 复旦大学, 2021. ``` 4. **会议论文** ``` [序号]作者. 题名[C]//会议名称. 出版地: 出版者, 出版年: 起止页码. ``` 示例: ```plaintext [4]刘六. 新一代人工智能发展趋势[C]//国际人工智能大会. 杭州: 浙江科学技术出版社, 2022: 89-95. ``` 5. **电子资源** ``` [序号]主要责任者. 题名[EB/OL]. (发表日期)[引用日期]. 获取路径或URL地址. ``` 示例: ```plaintext [5]赵七. 开源软件的发展现状与未来趋势[EB/OL]. (2023-01-15)[2023-03-01]. https://www.example.com/article.html. ``` #### 使用工具实现自动排版 为了更高效地完成参考文献的格式化工作,可以利用专业的文献管理工具,例如 EndNote 或 Zotero。这些工具有助于快速生成符合 GB/T 7714 标准的参考文献列表[^2][^3]。 以下是一个简单的示例代码片段,展示如何通过脚本处理参考文献并将其转换为指定格式(假设输入为 JSON 格式的原始数据): ```python import json def format_reference(item): """根据 GB/T 7714 格式化单条参考文献""" if item["type"] == "journal": return f"[{item['id']}] {item['author']}. {item['title']}[J]. {item['journal']}, {item['year']}, {item['volume']}({item['issue']}): {item['pages']}." elif item["type"] == "book": edition = "" if not item.get("edition") or int(item["edition"]) == 1 else f"{item['edition']}版." return f"[{item['id']}] {item['author']}. {item['title']}[M]. {edition} {item['publisher_location']}: {item['publisher']}, {item['year']}: {item['pages']}." # 添加更多类型的格式化逻辑... # 输入示例 data = [ {"id": 1, "type": "journal", "author": "李四", "title": "数据挖掘技术及其应用研究", "journal": "计算机科学", "year": 2020, "volume": 47, "issue": 8, "pages": "123-129"}, {"id": 2, "type": "book", "author": "王五", "title": "Python编程基础", "publisher_location": "北京", "publisher": "清华大学出版社", "year": 2019, "pages": "56-67"} ] formatted_references = "\n".join(format_reference(i) for i in data) print(formatted_references) ``` 运行以上代码后,输出如下: ```plaintext [1] 李四. 数据挖掘技术及其应用研究[J]. 计算机科学, 2020, 47(8): 123-129. [2] 王五. Python编程基础[M]. 北京: 清华大学出版社, 2019: 56-67. ``` #### 注意事项 在实际操作中需要注意以下几点: - 如果存在多位作者,则需遵循“姓前名后”的原则,并用逗号分隔。 - 当作者超过三位时,可用“等”代替后续作者名单[^3]。 - 对于外文文献,“et al.”用于替代多余作者的名字。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值