赞
踩
与人类类似,这种方法在翻译时会先分析句子中单词的词性,将每个词翻译成目标语言,再根据语法规则进行调整,然后输出结果。
如下图所示这个例子"We do chicken right",被翻译为“我们做鸡右”,由此可见这种翻译方法的效果并不好,因为语言表达的方法十分灵活,有限的语法和规则无法覆盖所有的语言现象。而且这种方法高度依赖人类专家,人类专家必须有源语言的知识和目标语言的知识,开发周期也比较长。
假设有一个任务将汉语翻译成英语,源语言是“布什与沙龙举行了会谈”,寻找条件概率分布 P ( y ∣ x ; θ ) P(y|x;\theta) P(y∣x;θ),给定x,寻找y,其中 θ \theta θ是模型参数,如何建立一个概率分布呢?
从直观上说,可以枚举所有的中文句子和英文句子来建立概率分布,但这样的做法显然是不合适的。因为语言随时都会产生新的句子,所以不太可能建立直接的映射。为此,引入隐变量。比如知道了源语言句子,翻译得到了目标语言句子,但整个翻译过程的细节都是在训练集上看不到的,这就称为隐变量。
在基于隐变量的统计机器翻译中,如何设置特征函数成为最关键的问题。
2014年时,Kyunghyun Cho和Sutskever先后提出了一种End-to-End即所谓“端到端”的模型,直接对输入输出建立联系,前者将其模型命名为Encoder-Decoder模型,后者将其命名为Sequence-to-Sequence模型。
观看下图中的数学模型,和上面说的统计机器翻译非常不一样,并没有引入任何的隐变量z,而是实现了一个马尔科夫分解,把译文的生成变成每个词的生成,公式中的N代表了目标语言的长度,
y
n
y_n
yn代表第n个词,x代表整个中文句子,
y
<
n
y_{<n}
y<n代表目前已经生成的英文句子。
问题转化为如何建立一个条件概率,已知源语言的句子和已经生成的目标语言的句子来预测当前的目标词是什么。最大的难点在于源语言的句子和已经生成的目标语言的句子是非常稀疏的,可以生成各种各样的句子,很难用传统的离散表示来建立这样的概率分布。
深度学习最大的贡献在于可以使用连续的表示来对条件概率进行建模。因此我们可以对条件概率进行分解,数学技巧在于引入一个softmax函数,内部引入一个
φ
\varphi
φ函数,该公式的主要参数在于第n个目标词生成的语言词
y
n
y_n
yn,公式中x是源语言的句子,
y
<
n
y_{<n}
y<n就是目前已经生成的部分译文以及模型参数。
使用softmax函数能保证这是一个概率分布, φ \varphi φ函数定义了生成 y n y_n yn概率的一种可能性。因此关键问题在于怎么定义一个 φ \varphi φ函数。数学技巧在于用向量来表示这些句子,从公式中可以看到引入了一个 v y n v_{y_n} vyn向量来表示这个词, c s c_s cs表示源语言段的上下文信息, c t c_t ct表示目标语言端的上下文信息。因此神经网路翻译最关键在于如何生成源语言上下文、目标语言上下文,并且使用它们来预测当前的译文。
在深度学习中,使用最广泛的是使用递归神经网络。给定一个句子“布什与沙龙举行了会谈”,并且使用/s作为句尾结束符,可以使用递归神经网络来计算句子的向量表示。
首先对每一个中文词生成一个向量,这个操作可以通过word-embedding生成,然后从左到右通过递归神经网络来生成隐变量的表示。
比如在当前结点下认为这样的一个结点对“布什与沙龙”这个子串进行了向量表示,最终到生成最后的结点,就可以认为它存储了整个句子的信息。
所以我们说深度学习带给我们一种革命性的变化就是信息的表达形式。机器翻译的核心就在于不同语言信息之间的等价转换。传统上习惯了使用离散表示,用词、短语等。深度学习所提倡的理念是用连续的表示,用数字进行信息的传递。
利用递归神经网络(RNN)实现源语言的编码和目标语言的解码。使用句子“布什与沙龙举行了会谈”,用递归神经网络实现句子的向量表示,最后一个隐藏层结点对整个句子进行了编码,它存储了整个句子的语义信息,然后我们再使用一个解码器,从这个节点中恢复出英文句子。当生成句尾结束符的时候,整个翻译过程就结束的。
递归神经网络会遇到各种各样的问题,比如说梯度消失和梯度爆炸,所以经常使用长短时记忆网络来代替传统的递归神经网络。
革命性思想:引入注意力机制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。