| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Seq2Seq and NMT(基于cs224n的最全综述神经机器翻译技术) -> 正文阅读 |
|
[人工智能]Seq2Seq and NMT(基于cs224n的最全综述神经机器翻译技术) |
文章目录Machine Translation的简介:机器翻译是一个将一个 one language sentence X 翻译为 target language Y的 任务. 最开始的机器翻译的需求是发生在冷战时期,美国人想要更有效地知道俄国人在干什么,但是其方法就比较建议了,直接将一个双语词典放在磁盘上进行逐个查找。 统计机器翻译模型(SMT):统计机器翻译的核心是从数据中学到一个概率模型。目标是找到target language的一个最大概率的y。 但是前人们想到一个办法用贝叶斯公式将概率分解成两个components a r g m a x y p ( x ∣ y ) p ( y ) argmax_y{p(x|y)p(y)} argmaxy?p(x∣y)p(y) 左边是一个model定义的是words 和 phrases应该如何被翻译(精确性) x应该有了,如何选择y使得整个概率最大化 ,其需要从并行数据(pair of human-translated French/English sentences) 所以我们需要很多块这样的石头。 右边是一个language model,主要要句法结构等要素出发,我们前面讲过,其可以不断预测下一个单词是什么(根据概率),其从monolingual data中学习-只需要从目标语言中学习就行。 在具体的实践过程中,我们还需要做一些更为精细的处理,例如我们需要学习对齐。也就是我们需要学习或者说找到一种word-level correspondence between French sentence X and English sentence y。 P(x,a|y) alignment(对齐)是很复杂的,存在很多种情况
所以,其实我们需要通过数据去学习的p(x,a|y)是一个many factors 的combination,其包括
对于SMT,我们只需要大概了解其概念即可,重点是与我们要重点学习的神经翻译模型作比较。 argmax-代表的是右边这一坨函数的参数使得函数取得最大值.具体如何去找到这个Y,我们肯定不可能又去遍历所有的可能性,答案是使用一种启发式的搜索算法并且舍弃掉很多低概率的假设。 像是一种树搜索,加剪枝(概率低的) 机器翻译中一个典型的搜索算法是Beam-search https://zhuanlan.zhihu.com/p/82829880 一个总结: SMT是一个巨大的研究领域,很多技术也非常复杂,例如需要非常强大且繁琐的特征工程工作。 神经机器翻译(NMT)-sequence 2 sequencelogits: 注意,上图是我们已经在测试或者说应用的时候的网络结构。 两个RNN ,一个encoder,一个decoder。 两组分别独立的word-embedding set-法语的和英语的词嵌入-word2vectors。 事实上,sequence to sequence 是一种非常实用的架构: 例如其还有以下四种应用:
现在还有比较火的 text2sql 所以,实际上,NMT的sequence 2 sequence modal是一种条件语言模型。
所以我们应该如何去训练一个NMT system呢? 答案是-使用一个大的并行语料库 这是训练时候的网络结构图,在这个地方,我们有三个重点需要了解。 其与test time的不同就是decoder 每一个hidden state输出一个y_hat,然后,与其本来应该与语料库中对应的单词去计算一个损失函数-交叉熵损失算出来的负对数概率of“target world”,最后将所有对应翻译结果的loss sum up and do a average caclulation.-值得注意的是我们需要自己输入一个 token,然后在最后一个hidden state我们希望其输出应该是 token. 输出依然可以看作是一个softmax函数然后选概率最大的 然后下面是一些我们需要注意的点
简单摘录下一个embedding和word2vector的区别:反正就是我们既可以从one-hot编码加权重矩阵-word-embedding去从头训练,也可以用别人预训练好的。 Greedy decodinggreedy decoding的一个重要问题是我们每次都选择一个概率最大的词,而且是无法回头的。 例如出现上面的这种情况··· 我们将使用Exhaustive search decoding: 如果我们计算所有的可能,代价是十分昂贵的。虽然这能保证找到一个最佳答案。 Beam searching decoding分数都是负的,因为我们将一个概率(0~1)值加了一个对数-底数一般为e这里-加对数真是贯穿我们整个数学历程的重要trick啊。-基于概率最大化的思想 举个栗子: 每次我们只要两个可能的部分翻译-beam 两个束-比如第一次得到了4个项,我们将取其中两个得分最高的 这就是全部过程-最终我们得到了正确的翻译-He hit me with a pie。-单三也是相似的词训练出来 word-embedding都在附件·· Beam search decoding: stopping criterion—停止标准在greedy decoding中,当模型输出一个token的时候,就证明翻译已经结束了。 而在beam search decoding中,不同的假设可能在不同的timesteps产生 token.这个时候我们应该怎么办呢? 答案是出现 token我们就将其放在一边然后继续其他未完成的hypothesis。 那么beam search什么时候可以结束呢?
最后我们将假设集合里的所有假设作一个综合评价: 值得注意的是,这里我们不能再用最开始的简单相加的评价方式: 而需要使用一种基于长度normalized的方法,因为我们仍然使用上面的方法的话,结果就是越短的翻译结果越好,这显然是不科学的。当然这个标准并不需要用在我们寻找假设的过程中,因为寻找假设的时候都是长度相同的。 1 t ∑ i = 1 t l o g p L M ( y i ∣ y 1 , ? ? ? , y i ? 1 , x ) \frac{1}{t}\sum_{i=1}^{t}log_{p_{LM}}^{(y_i|y_1,···,y_{i-1},x)} t1?i=1∑t?logpLM?(yi?∣y1?,???,yi?1?,x)? NMT与SMT的对比:说一下主要的优点-不用特征工程,对于所有的语言翻译对几乎都可以使用相同的网络架构,且事实上表现效果更好,而且整个系统是end-end的整体优化,不需要特别去优化一些子组件。 NMT的缺点:
NMT评估-BLEU
可以看到,NMT系统进步是飞快的,这也是很多人共同努力 ,提交自己的系统所获得的成果。 结合NMT和SMT的研究-取长补短 tackle:解决 NMT仍然需要重点研究和解决的领域:
实际上,现在的谷歌翻译对于这种无意义的输入已经做了很多的限制工作和语言自动检测工作: NMT研究的继续-sequence to sequence的新进展(Attention)Attention的由来: Attention被提出的原因是我们需要解决一种信息瓶颈,因为原来我们想要最后一个hidden state-一个vector去代表整个句子的信息,即使你使用了LSTM,其压力仍然是巨大的。 核心思想,在decoder的每一步,都使用一些直接连接到encoder去获得一些源序列的特殊部分-信息。 Attention的工作方式bar chart-条形图 计算过程简述
接下来我们将attention的output与decoder的hidden state作一个concatenate(注意是变为2倍长度的向量连接),然后依然按照以前的方式计算y_hat–一个选择是用一个weight matrix去作参数矩阵乘积最后使用梯度下降进行总体优化的,(用一个全连接层的(Dense)或者说前馈神经网络)-然后用损失函数与target word的one-hot编码求loss。 事实上,对于维度这个问题我们都可以使用权重矩阵来进行调整,毕竟权重矩阵可以随机初始化,然后根据数据去学习即可。 加一句-一个合理的方法是将输入使用预训练的word-embedding,而将输出使用权重矩阵自定义embedding进行端到端的总体优化。 如果不使用word-embedding-直接将word丢入神经网络是非常难以训练的,由于其强大的稀疏性。 作业中给出的课堂上未给出的details:
?Sequence to Sequence Learning with Neural Networks 还有Benigo的论文也有不同的解决方案,链接在后面。 这些计算是高度软对齐的。 还有一种做法是我们可以将前一个decoder hidden state算出来的attention output也和平常的输入一起输入到decoder hidden state中,这在很多时候也是有用的。 例如经典论文- Neural Machine Translation by Jointly Learning to Align and Translate中使用的方法 完全过程,当然这里少了一个输出 token. 最小二乘法-简单 下面是公式版的attention的计算过程-和图解版是一个意思 喜欢数学公式和更详细维度推到的同学可以看看下面这篇论文-可以重点看看模型的细节部分-在最后的附录中,了解具体的计算过程: https://arxiv.org/pdf/1409.0473.pdf 深度学习神经机器翻译的经典之作-由Benigo领衔 https://www.jianshu.com/p/8d6341ded7eb 解析 https://blog.csdn.net/lujian1989/article/details/81535310 翻译 Attention的优点Attention一个最厉害的地方就是其自己以一种unsupervised的方式学会了对齐,而不是我们去设置一个loss function让其去学习。 它会明白什么时候应该1对多,而这是我们在SMT 系统中难以解决的一个问题。 Attention实际上是通用的Deep learning technique其一个更加基本的概念如下:
我们可以建立一些直觉
Attention的变种常见的三种计算得分的方式 1.基本的点积(前提是要求decoder的 hidden state 的size和encoder的 hidden state 的size一样)。 2.将两个vector做矩阵乘法-成为一个需要学习的权重矩阵 。 3.更为复杂,我们去选择一个叫做attention dimensionality的向量作为超参数,具体计算过程如下PPT,包括维度的对应。 博客和课程的总结:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 11:17:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |