基于Attention的机器翻译模型,论文笔记

论文题目:Neural Machine Translation by Jointly Learning to Align and Translate

论文地址:http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2a5ea0.pdf

GIF来源:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/

摘要

        神经机器翻译(Neural machine translation,NMT)是最近提出的机器翻译方法。与传统的统计机器翻译不同,NMT的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能。最近提出的用于神经机器翻译的模型经常属于编码器 - 解码器这种结构,他们将源句子编码成固定长度的矢量,解码器从该矢量生成翻译。在本文中,我们推测使用固定长度向量是提高这种基本编码器 - 解码器架构性能的瓶颈,提出让模型从源语句中自动寻找和目标单词相关的部分,而不是人为的将源语句显示分割进行关系对应。采用这种新方法,我们实现了与现有最​​先进的基于短语的系统相媲美的英文到法文翻译的翻译性能。此外,定性分析显示模型发现的(软)对齐与我们的直觉非常吻合。

 

简介 

     之前的NMT在处理长句子的时候会有些困难,尤其是比训练数据集更长的文本。随着数据句子长度增加,基本的编码解码器表现会急剧下降。因此,该论文提出将编码解码模型拓展,使其能够连带地学习去对齐和翻译。每翻译一个单词,它就在源语句中查找信息最相关的位置集合。这个模型基于与这些源位置相关联的上下文向量和所有之前形成的目标单词预测目标单词。 
最大的区别在于它不是尝试去把一整个输入句子编码为一个单一的固定长度的向量。而是把输入的句子编码为向量的序列,解码翻译的时候选择这些向量的一个子集。这也就解放了NMT,不需要再把源语句所有的信息,不管有多长,压缩成一个固定长度的向量。这个模型对长句子表现要更好。不过任何长度上它的优势都很明显。在英法翻译的任务中,这个方法可以媲美基于短语的系统。而且分析显示这个模型在源语句和对应的目标语句之间的对齐效果更好。

 

背景:神经机器翻译

      从概率的角度上来说,机器翻译的任务等同于找到一个目标序列y,使得在给定源语句x的情况下生成y的概率最大。即:

arg_{y}max(p(y|x)),在NMT任务中,我们使用平行的训练语料库(即:x,y为相同内容的2种语言)来拟合参数化的模型,让模型学习到能最大化目标语句的条件概率分布。NMT一旦学会了这种条件概率分布,那么给予一个源语句,它都能通过搜索找出条件概率最大的句子作为相应的翻译。

 RNN Encoder–Decoder:

      首先介绍一下本文使用的底层框架RNN Encoder–Decoder。本文是在此框架上进行修改从而提出的。Encoder读取一个向量化的输入序列X=(x_{1},x_{2}...x_{T_{x}}),转化成向量c。最常见的方法是使用RNN:

                                                                                   h_t=f(x_t,h_{t-1})

                                                                                   c=q({h_{1},h_{2}...h_{T}}) 

其中h_{t}=\in \mathbb{R}_{n}是时间t时刻下的hidden state,c是由hidden state组成的序列生成的向量。fq是2个非线性的函数。例如:你可以使用LSTM作为函数f来得到hidden state,同时你可以使用q({h_{1},h_{2}...h_{T}})=h_{T}来作为q的函数。

      Decoder一般情况下是通过训练给定上下文向量c和所有之前已经预测过的单词\{ y_{1},...y_{t^{'}-1} \}来预测下一个单词y_{t^{'}},换句话说,Decoder通过将联合概率分解成有序条件来定义翻译为序列y的概率:                                         

                                                                                 p(Y)=\prod _{t=1}^{T}p(y_{t}|\{y_{1},...y_{t-1}\},c)                                              (1)

其中Y=(y_{1},...y_{T_{y}}),通过RNN,每个条件概率被建模为:

                                                                                p(y_{t}|\{y_{1},...,y_{t-1}\},c)=g(y_{t-1},s_{t},c)

其中g是一个非线性的(可能是多层的)函数,它的输出指的是输出结果为y_{t}的概率。s_{t}是RNN的hidden state。

 

对齐翻译结构

 这部分提出一个NMT的新结构。这个新结构包括一个双向RNN作为Encoder,一个模拟翻译过程中通过源语句进行搜索的Decoder。     

Decoder:

 在这个新的结构中,我们对公式(1)中的条件概率分布做了新的定义:

                                                                              p(y_{i}|\{y_{1},...y_{i-1}\},X)=g(y_{i-1},s_{i},c_{i})

其中,s_{i}是时间i时RNN的hidden state,由公式:

                                                                              s_i=f(s_{i-1},y_{i-1},c_{i})

需要注意的是,与现有的EncoderDecoder模式不同(如上节),这里概率是针对每个目标字y_{i}的不同的上下文向量c_{i}。上下文向量c_{i}取决于Encoder将输入句子映射到的annotations(即序列 ({h_{1},h_{2}...h_{T_{x}}}))。在annotations中,每个h_{i}包含了整个输入序列的信息,但重点关注(Attention)输入序列中第i个单词周围的部分。下一节会介绍annotations的计算方法。这一节我们先默认我们已知annotations。

                                                           

观察上图,上下文向量c_{i}实则是对annotations序列h_{i}的逐个加权求和:

                                                                                        c_{i}=\sum _{j=1}^{T_{x}}\alpha _{ij}h_{j}

每个h_{i}的权值\alpha _{ij}的计算:

                                                                                     \alpha _{ij}=\frac{exp(e_{ij})}{\sum _{k=1}^{T_{x}}exp(e_{ik})}

其中                                                                                e_{ij}=a(s_{i-1},h_{j})

e_{ij}是一个对齐模型,它可以评估值位置j周围的输入和位置i的输出匹配程度。对匹配程度的打分依赖于RNN hidden state(s_{i-1})和输入序列的第j个的值h_{j}

                                                                          a(s_{i-1},h_{j})=v_a^{T}tanh(W_as_{i-1}+U_ah_j)

      我们将对齐函数a参数化为一个前馈神经网络,让它和本文中的其它模块联合训练。需要注意的是,不同于传统的机器翻译,这里的对齐值不再被视为潜在的变量。与之相反,对齐模型定向地计算一个柔和的对齐,这就允许代价函数的梯度反向传播。这个梯度就可以随着整个翻译模型一起训练这个对齐模型。

       我们可以将所有对annotations加权求和的方式看做是在计算数学期望,并且期望值是可能在对齐值之上的。设\alpha _{ij}为目标单词y_{i}与源词x_{i}对齐的概率,(通俗说就是x_{i}的翻译结果为y_{i}的概率),然后,第i个上下文向量c_{i}是所有具有概率的\alpha _{ij}的数学期望。

            概率\alpha _{ij}(或者说e_{ij})反映了在决定下一个状态s_{i}和生成y_{i}的时候,考虑到之前的hidden state (s_{i-1})的 annotation h_{j}的重要性。直观地说,这实现了Decoder中的Attention机制。 Decoder决定了源语句的哪些部分需要注意。 通过让Decoder具有注意力机制,我们可以免除Encoder将源句子中的所有信息编码成固定长度矢量的负担。 有了这个方法,信息就可以在annotations序列中传播,也可以被Decoder选择性地恢复。

Encoder: Bidirectional RNN for Annotating Sequences

一般的RNN模型,是按顺序由开始位置x_{1}到结束位置x_{T}读取的。然而在本文提出的结构中我们希望每个单词的annotations不仅能总结前面的单词,而且能总结后面紧跟着的单词。因此,在此处我们将使用双向RNN(Bi-RNN)。

如图一,Bi-RNN包含了前向hidden states和反向hidden states,其读取序列的方式是正好相反的,举个例子对于一句话“我爱祖国”,前向做的读入顺序为(我,爱,祖,国)和反向读入顺序为(国,祖,爱,我)。

我们通过连接前向隐藏状态和后向隐藏状态来获得每个单词x_{j}的annotations,可以表示为:,通过这个方式,annotations h_{j}将集中在x_{j}的周围单词上。Decoder和对齐模块稍后会使用该序列来计算上下文向量c_{i}

结构介绍:

RNN

当前状态:s_{i}=f(s_{i-1},y_{i-1},c_{i})=(1-z_{i})\odot s_{i-1}+z_{i}\odot s_{i}^{'}

更新状态:s_{i}^{'}=tanh(We(y_{i-1})+U[r_{i}\odot s_{i-1}]+Cc_{i})

更新门: z_{i }=\sigma (W_ze(y_{i})+U_zs_{i-1}+C_zc_{i})

重置门: r_{i }=\sigma (W_re(y_{i})+U_rs_{i-1}+C_rc_{i})

对齐模型

a(s_{i-1},h_{j})=v_a^{T}tanh(W_as_{i-1}+U_ah_j)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63284.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer(四)--实现验证:transformer 机器翻译实践

转载请注明出处:https://blog.csdn.net/nocml/article/details/125711025 本系列传送门: Transformer(一)–论文翻译:Attention Is All You Need 中文版 Transformer(二)–论文理解:transformer 结构详解 Transformer(三)–论文实…

机器翻译之Facebook的CNN与Google的Attention

传统的seq2seqfacebook的cnn 结构特点 position embedding卷积的引入GLU控制信息的流动attention google的attention 结构特点 KVQ的思维架构multi-head attentionattention的多种应用 参考资料 机器翻译的常用架构是seq2seq,可是seq2seq中的核心模型RNN是序列模型…

探索机器翻译:从统计机器翻译到神经机器翻译

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

[机器翻译]——pivot-based zero-shot translation based on fairseq

文章目录 前言翻译到en生成"伪"的、到英语的数据文件把每一个zs语言对翻译到en从fairseq-generate生成的文件中,抽取纯en文件 把en数据和所有zs语言对的tgt数据形成平行语料,然后做预处理形成en到tgt的平行语料预处理 在en到tgt语言的"伪…

大语言模型的多语言机器翻译能力分析

来自:南大NLP 进NLP群—>加入NLP交流群 01 研究动机 以ChatGPT为代表的大语言模型(Large Language Models, LLM)在机器翻译(Machine Translation, MT)任务上展现出了惊人的潜力。通过情景学习(In-Contex…

嗖的一下第二弹,这些好看的皮肤直接一键收下~~

✨前言 📢首先祝大家假期愉快🚀 这个假期,大家是怎么玩的呢❓ 小博主我趁着假期也摆了几天😜 因此有好几天没有更新文章了…… 今天偷偷的发一篇文章,浅浅做个样子吧😬 今儿写的文章是继上次写的&#xff…

为什么国内APP热衷于皮肤特效

微博跟腾讯学到了精髓,功能不够皮肤来凑 这不是吐槽呀,是有一定心理学在里面的,人们普遍希望跟身边的人有差异性的,就好像打游戏我买个皮肤在战场上可以秀一下;在游戏中我买个xxx刀,可以打出火花星星等效果…

云炬Android开发教程0 jdk下载与安装教程(小白)

第一步:jdk下载 (1)oracle官网地址下载:点我进官网下载 (2)百度云连接下载(提供8u211版本): 链接:https://pan.baidu.com/s/1i74YGO8zXuGxumZYGakKKw 提取码…

墨墨背单词

墨墨背单词 推荐一款背单词软件:墨墨背单词(无限单词版) 下载链接:https://download.csdn.net/download/EQ_cyc/12438004

将有道云词典单词本导入到墨墨背单词

有道云词典导出.XML文件用EXCEL导入.XML文件。点击:数据>自其他来源>来自XML数据导入 导入后会提示以下界面,全部点击确定即可 导入数据后变成这样子 每一行的间距可能特别大,不用管直接复制第一列,放到一个新建的txt文件…

墨墨背单词(最新无限单词版---持续更新)

----------2020年5月27日更新---------- 废话不多说先上图 用户可以直接登录账号,由于现在直接注册功能系统会提示更新到最新系统导致无法注册账户,但是可以通过忘记密码的形式来曲线注册账户,方法如下 软件的下载连接为: https://down…

获取墨墨背单词里面的单词书中的单词

首先,其实是直接尝试抓包获取的,不过在抓包的信息中没发现类似的内容,然后就去百度了以下,发现还是有聪明人。 把下载的 apk 文件解压缩一下,把里面的 assets 文件夹里面的 maimemo.v3.db 直接拖到navicat中&#xff…

[小小项目]背单词的程序---1.0_纯C语言_单文件版本

文章目录 前言:可以学到什么?一、功能介绍以及演示二、准备工作1)准备所需的单词的文本2)任意的C语言开发环境 三、代码1)读取文件,不存在则爆出异常2)开辟空间来存放读取出来的内容3&#xff0…

android 补签控件,墨墨背单词怎么补签 看完你就懂了

现在手机的普及让不少用户在手机上面学习英语,而墨墨背单词就是一款专业的英语学习软件,它可以提醒用户每日记忆单词,还有督促你学习的签到系统,通过每日的签到不仅可以提高你学习英语的动力还能免费提升每日学习单词的上限量呢。…

未root的情况下获取墨墨背单词的databases文件夹

文章目录 前言解决思路第一步:备份下载Winhex使用abe解压备份文件结语 前言 在我的《墨墨背单词免费版本地数据找回方法》这篇博客中提到:“复制出“databases”文件”。但这个文件夹并不是那么容易复制出的,如果你的手机已经被root了&#…

C语言实现背单词软件(系统级别)

目录 一、软件需求说明书 1 引言 2 任务概述 二、可行性研究报告 1 编写目的 2 所建议的系统(技术可行性) 3 使用方面的可行性 4 结论 三、系统设计说明书 1.面向对象设计 1.1前提说明 1.2 系统设计 2.面向对象建模 四&#xf…

不背单词vs墨墨背单词 竞品分析

1. 分析背景 1.1 业界状况 根据易观千帆数据中心,2020年4月全网教育APP活跃用户共44597.16万,将近4.5亿,且仍在持续稳定增长,其中在线外语学习赛道坐拥6726.52万活跃用户,占比15%。背单词类软件作为一项外语学习人群…

【墨墨英语单词库免费开源无偿分享】小学、初中、高中、大学四六级专四专八、考研、托福、雅思等词书文本大合集

还在愁没有自己想要的词书?这不,我都给你准备好了: 纯英文txt源词库 带list分类txt词库大全 带中文释义excel词库 这些词书呢,是知乎上的一位大神用爬虫把墨墨背单词app的所有词库给爬取下来的, 而且无偿开源&…

关于电脑使用墨墨背单词使用键盘操作问题

在上班期间摸鱼的时候偶尔背背单词,用鼠标还需要平移点击,很累。 如何全用键盘操作界面? 01 Windows系统 Windows系统使用比较简单,下载一个雷电模拟器就可以解决。 默认数字123分别对应墨墨上的“认识”、“模糊”、“忘记”。…

印度网民集体删除中国APP,网友评论亮了

全世界只有3.14 % 的人关注了 爆炸吧知识 最近,国外有一款Remove China Apps火了。 这款APP只有一个功能:可以一键扫描用户手机里的应用,识别出自中国公司的应用,并进行一键删除的骚操作。 应用的主图标、界面,甚至特意…