点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
作者简介
作者戴硕是深度学习爱好者,主要关注NLP方向。这篇文章向对深度学习感兴趣的初学者介绍了机器翻译当前的现状,及其涉及的基本原理和流程。
本文只对相关应用作简要介绍,不涉及公式推导(本文部分图片来源于网络)。
1.机器翻译的发展
上世纪80年代之前,机器翻译主要依赖于语言学的发展,分析句法、语义、语用等;
之后,研究者开始将统计模型应用于机器翻译,这种方法是基于对已有的文本语料库的分析来生成翻译结果;
2012年至今,随着深度学习的兴起,神经网络开始被运用在机器翻译上,并在短短几年取得了非常大的成果。
2.神经网络机器翻译(Neural Machine Translation)
2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构。2014 年,Sutskever等开发了一种名叫序列到序列(seq2seq)学习的方法,google以此模型在其深度学习框架tensorflow的tutorial中给出了具体的实现方法,取得了很好的效果(见https://www.tensorflow.org/tutorials/seq2seq)。
2.1 (预)最快速度介绍神经网络
深度学习(名字很高大上),就是指多层神经网络。上图。
这是一个单层的神经网络,多层神经网络就是在中间再插入若干个隐层,每个隐层有若干个结点。但输入输出层都只有一层。
传统的编程是给了输入,确定每一个步骤,最后得到输出。神经网络的做法是给定已知的多组输入输出,称为训练样本,要做的步骤(即模型)是未知的,那怎么确定步骤(模型)呢?“回归/拟合”,用最简单的方程模型来打比方。。。直接上式子!
神经网络的训练过程与此相似,也是通过训练确定隐层结点中的若干个系数。只不过神经网络模型本身是非线性的,比较复杂。前馈、误差反向传播、梯度下降这些名词,都是训练过程中用到的方法。
2.2 基础的seq2seq模型
基础的Seq2Seq模型由Encoder、Decoder以及连接两者的中间状态向量三部分组成,Encoder通过学习输入,将其编码成一个固定大小的状态向量C,继而将C传给Decoder,Decoder再通过对状态向量C的学习来进行输出。
2.2.1 RNN与LSTM
Encoder、Decoder编解码器一般采用循环神经网络(Recurrent Neural Network,RNN)的变种——长短时记忆神经网络(Long Short-term Memory,LSTM)。LSTM与普通RNN的不同之处在于,对于长距离的状态存储有着较好的效果。见下图。