XiachongFeng1摘要跨语言自然语言处理是当下研究的热点.
其中,跨语言词向量(Cross-lingualWordEmbedding)可以帮助比较词语在不同语言下的含义,同时也为模型在不同语言之间进行迁移提供了桥梁.
[Ruderetal.
,2017]详细描述了跨语言词向量学习方法和分类体系,将跨语言词向量按照对齐方式分为了基于词对齐、基于句子对齐、基于文档对齐的方法.
其中基于词对齐的方法是所有方法的核心和基础.
在基于词对齐的方法中,又有基于平行语料的方法,基于无监督的方法等.
近些年,无监督方法成为研究热点.
本文主要记录一些跨语言词向量的相关论文.
2单语言词向量常用的单语词向量有Word2Vec,GloVe,fastText等.
下面主要介绍一下Word2Vec[Mikolovetal.
,2013c,a],Word2Vec基于分布式假设(Distributionalhypothesis):拥有相似上下文(context)的词语通常拥有相似的含义.
其算法分为Skip-gram和ContinuousBagofWords(CBOW).
Skip-gram根据中心词预测周围的词,CBOW根据周围的词预测中心的词语,如图1.
图1:Word2Vec一种常见的方法为Skip-gram+NegativeSampling.
简单来说,该算法构造两个向量矩阵,一个Embedding矩阵,一个Context矩阵.
利用Skip-gram来构建训练正例,使用Negativesampling来构建负例,如图2.
训练完成以后(教程可参考TheIllustratedWord2vec,VectorSemantics),每个词语对应两个向量,一个Embedding矩阵中的表示,一个Context矩阵中的表示.
最终表示可以直接使用Embedding矩阵作为词向量,或者可以将两个矩阵相加得到词向量,或者可以将两个1矩阵拼接得到词向量.
图2:Skipgram+NegativeSampling,图片来源于TheIllustratedWord2vec3基于词语映射的方法[Ruderetal.
,2017]将基于词映射的方法根据映射方法(mappingmethod)、种子词语的选择(seedlexicon)、映射的改进(refinement)、最近邻词语的检索方法(retrieval)进行了分类.
下面简单介绍其中的一些经典工作.
[Mikolovetal.
,2013b]观察发现,不同语言的词向量在向量空间中有着相似的几何排列.
如图3.
图3:英语、西班牙语词向量表示左图为英语,右图为西班牙语(利用PCA进行词向量的降维).
发现,不论是数字还是动物,英语和西班牙语词向量的分布非常相似.
基于这一观察,提出了一种简单地线性映射的方法来完成源语言向量空间到目标语言向量空间的转换.
该方法的目标在于学习一个从源语言到目标语言的线性映射矩阵(lineartransformationmatrix)Ws→t,首先从源语言中选择n=5000个频率最高的词语ws1,wsn以及其对应的翻译wt1,wtn作为种子词语,用于学习线性映射.
使用随机梯度下降来最小化均方误差(meansquarederror,MSE)∑ni=1∥Wxsixti∥2.
学习好映射矩阵之后,将2源语言映射到目标语言空间,根据cosinesimilarity来寻找翻译.
[Xingetal.
,2015]发现上述方法有几处不一致.
词向量学习的时候使用的是内积(innerprod-uct),但是在选择词语的时候却是根据cosinesimilarity,学习映射矩阵时,使用的是均方误差(meansquareerror),这些导致了几处不匹配.
因此首先将词向量的长度限制为单位长度.
这样相当于所有的向量都会在高维空间落在一个超球面上,如图4.
这样就使得两个向量的内积和co-sinesimilarity是一致的.
然后将目标函数从以均方误差为目标修改为以cosinesimilarity为目标:maxW∑i(Wxi)Tzi.
之前的方法对映射矩阵是没有限制的,这里将映射矩阵限制为正交矩阵(Or-thogonaltransform),使得其满足WW=I,其实际求解是使用奇异值分解(SVD)来完成,XtXs=UΣV,W=VU.
其中Xs为源语言向量矩阵,Xt为目标语言向量矩阵.
实验证明,该方法的实际效果更好.
[Xingetal.
,2015,Ruderetal.
,2017].
图4:未归一化向量和归一化向量4基于无监督的方法之前的方法都是依赖于平行语料的,接下来主要介绍一些无监督的工作,也是当前比较热门的方向.
[Conneauetal.
,2017]提出了一种完全无监督的词级别的翻译(对齐)方法,首先使用对抗训练将两种语义空间对齐,然后使用迭代的方式来一步步更新学习到的映射矩阵,并提出了一种CSLS方法来检索最近的翻译词语.
如图5.
图5:无监督词翻译由于没有对齐信号,所以有一个基本的前提条件是两种语言的词汇处于同一内容空间(碎碎念:FAIR的无监督机器翻译),这样两种语言的向量空间几何排列才是相似的,才有可能通过映射完成两个空间的对齐,不然是完全没有任何对齐信号的.
首先使用对抗训练的方式使得判别器无法区分映射之后的源语言向量和目标语言向量,相当于要求将源语言映射到目标语言语义空间下.
判别器的学习目标为尽可能区分映射后的源语言与目标语言:LD(θD|W)=1n∑ni=1logPθD(source=1|Wxi)31m∑mi=1logPθD(source=0|yi),映射矩阵的目标为尽可能使得判别器区分错误:LW(W|θD)=1n∑ni=1logPθD(source=0|Wxi)1m∑mi=1logPθD(source=1|yi).
在得到映射矩阵以后,有一个迭代调整的过程,根据学习到的映射,选择互为最近邻的词语作为词典来学习映射,可以迭代这个过程.
作者还提出了一种新的相似性度量方式,因为在高维空间中存在一种现象叫做Hub-ness,即向量空间中存在密集区域,其中的一些点会是很多点的最近邻.
之前的方式采用cosinesimilarity来选择最近邻,作者设计了一种Cross-DomainSimilarityLocalScaling(CSLS)的度量方式:CSLS(Wxs,yt)=2cos(Wxs,yt)rT(Wxs)rS(yt),其中rT(Wxs),为Wxs和其K个目标语言最近邻的平均余弦距离.
基于上述工作,[Lampleetal.
,2017]在没有对齐语料的情况下,仅使用单语语料来完成无监督机器翻译.
该方法可以很好地泛化到其他语言,并且为有监督的方法提供了性能下限.
其baseline模型如[Johnsonetal.
,2017].
首先使用上述无监督方法得到的翻译词典来初始化翻译模型.
接着使用降噪自编码器训练,跨领域训练和对抗训练得到最终模型,如图6.
图6:无监督机器翻译降噪自编码器部分,首先从数据集中采样一条数据x,然后给输入数据引入噪音C(x),使用编码器对该噪音输入进行编码e(C(x),),接着使用解码器进行解码xd(e(C(x)得到输出.
其损失函数为:Lauto(θenc,θdec,Z,)=ExD,xd(e(C(x)x,x)],其中为交叉熵损失.
其中噪音模型C(x)有两种方式,一种是以一定的概率丢弃每个词语.
第二种是打乱输入,但是在文中限制了新的位置距离原本的位置不能超过k,如图7.
图7:轻微打乱句子,图片来源于《UnsupervisedMachineTranslationUsingMonolingualCorporaOnly》阅读笔记第二部分是跨领域训练,这部分是得到翻译模型的关键.
利用到了backtranslation,首先从l1语4言中采样一个句子,使用当前翻译模型翻译到l2语言下,然后给加噪声C(M(x)),使用(C(M(x)),x)作为训练对来训练模型,其损失函数为:Lcd(θenc,θdec,Z,1,2)=ExD1,xd(e(C(M(x)),2),1)[(x,x)].
第三部分为对抗训练部分,希望编码器可以将表示编码到一个语言无关的空间下,其中有一个判别器目前是区分两种语言:LD(θD|θ,Z)=E(xi,i)[logpD(i|e(xi,i))],这部分要更新的参数是:θD,编码器的目标是尽可能使得判别器无法区分:Ladv(θenc,Z|θD)=E(xi,i)[logpD(j|e(xi,i))],这部分要更新的参数是θenc,Z,如图8.
对于选择模型的的超参,论文提出了代理准则(surrogatecriterion),如公式1,即输入和重构的输入之间的BLEU分数.
还有一些细节【decoder如何判断当前生成的语种在多语言翻译中,通常通过在解码端添加翻译方向的标志位来控制解码方向.
但是在本文的假设中,只有非此即彼的两个语种,并且encoder对它们一视同仁的.
因此,作者只是将两者的解码起始符加以区分,各自维护一个.
两个训练过程是如何共享同一套Seq2Seq框架的作者所谓的"同一个encoder和decoder",其实是针对隐层部分而言的.
每个语种有自己的embedding层和pre-softmax层,在模型训练中进行look-up来获取各自的参数矩阵.
此外,分成"源语言"和"目标语言"是为了便于描述,实际上两者并不区别.
最终训练得到的模型,可以在这两种语言中做任意方向的翻译.
(碎碎念:FAIR的无监督机器翻译)】MS(e,d,Dsrc,Dtgt)=12ExDsrc[BLEU(x,Msrc→tgtMtgt→src(x))]+12ExDtgt[BLEU(x,Mtgt→srcMsrc→tgt(x))](1)图8:降噪自编码器和跨领域训练[Lampleetal.
,2018]指出了[Lampleetal.
,2017,Artetxeetal.
,2017]几点特点:使用无监督方法推理出来的词典来初始化系统,使用了基于Seq2Seq的降噪自编码器模型,使用backtranslation来将无监督问题转换为有监督问题.
同时使用了对抗训练来将不同语言编码到同一空间.
本文总结了无监督机器翻译的三个核心点.
第一点,初始化,初始化可以帮助模型具有一定的先验知识.
第二点,语言模型,根据大规模的单语语料可以学习到好的语言模型.
第三点,迭代的反向翻译,该方法可以将无监督转换为有监督,可以完成翻译任务的学习.
如图9.
图9:初始化、语言模型、反向翻译对于初始化,本文使用源语言和目标语言的单语语料来共同学习BPE,学习完成以后用来初始化编码器和解码器的向量查找表.
对于语言模型,使用降噪自编码器来学习语言模型.
对于反向5翻译,使用迭代的反向翻译来完成翻译模型的学习.
该模型同时共享了编码器和解码器的参数,期望学习到共享的语义空间表示.
5基于虚拟双语语料库的方法[XiaoandGuo,2014]利用Wikitionary作为两种语言之间的桥梁,构建了统一的双语词典.
首先构建源语言词典,然后利用Wikitionary找到其所有的翻译.
删除满足以下条件的翻译:一个源语言词语有多个目标语言翻译、一个目标语言词语有多个源语言翻译、源语言的目标语言翻译词语在目标语言数据集中没有出现.
经过以上三步处理,可以得到一个一对一的双语词典.
将源语言和目标语言建立统一的双语词表V,利用构建好的双语词典,在词表V中属于词典映射关系的两个词语将会被映射到相同的词向量空间.
然后利用神经网络来学习词向量表示.
其任务是一个二分类问题,输入是一个子句,通过替换正例中的词语来构建负例.
最终会学习到统一双语词典的向量表示,以此作为双语空间的桥梁.
其模型如图10.
这种方法对齐词语有同一表示.
图10:神经网络模型学习跨语言表示[GouwsandSgaard,2015]构建了一种真实的虚拟双语语料库,混合了不同的语言.
针对不同的任务可以定义不同的对应等价方法,例如根据翻译,可以定义英语house和法语maison是等价的,根据词性标注,可以定义英语car和法语maison都是名词是等价的.
因此这里的对齐方式不一定是翻译,可以根据具体的任务来定义,然后利用这种对齐关系来构造双语伪语料.
首先将源语言和目标语言数据混合打乱.
对于统一语料库中一句话的每一个词语,如果存在于对齐关系中,以一定概率来替换为另一种语言的词语.
通过该方法可以构建得到真实的双语语料库.
例如根据翻译关系,原始句子buildthehouse经过构建可以得到buildthemaison,就是将house替换为了maison.
利用构建好的全部语料来使用CBOW算法学习词向量,由于替换以后的词语有相似的上下文,因此会得到相似的表示.
对于那些没有对齐关系的词语,例如"我吃苹果"和"Ieatapple",吃和eat没有对齐关系,但如果我和I、苹果和apple有对齐关系,根据构造出来的语料"I吃apple"也可以完成吃和eat的隐式对齐.
这种方法对齐词语有相似表示.
6[Ammaretal.
,2016]提出了一种将上述方法扩展到多种语言上的方法multiCluster.
借助双语词典,将词语划分为多个集合,每个集合中是相同语义的词语.
然后将所有语言的单语语料库拼接,对于其中的一句话,如果词语在集合中,那就替换为集合中其他语言的词语.
得到新的多语语料库以后,使用skip-gram来训练得到词向量表示.
[Duongetal.
,2016]提出的方法与上述方法类似,区别在于,只在使用CBOW算法学习词向量的时候替换目标词语.
而非预先利用词典构造多语语料库.
在学习的时候会同时预测源语言目标词语及其对应的替换后的目标词语作为联合训练目标.
除此以外,之前的方法都没有处理一词多义的问题,例如bank可能有两种意思:riverbank或者financialbank,对应在意大利语中的翻译就是sponda和banca.
因此作者利用上下文词汇表示结合中心词汇表示的方式来选择最合适的翻译词语.
通常来说,在CBOW算法中,会有两个矩阵,一个context矩阵V,一个word矩阵U.
作者指出,使用这种方式训练的词向量,V矩阵更倾向于单语表示,U矩阵更倾向于双语表示.
其过程如图11.
图11:UV矩阵,CBOW目标为预测finance和finanze,tree和dog为负例6基于预训练的方法[Devlinetal.
,2018]提出了MultilingualBERT,与单语BERT结构一样,使用共享的Word-piece表示,使用了104中语言进行训练.
训练时,无输入语言标记,也没有强制对齐的语料有相同的表示.
[Piresetal.
,2019]分析了MultilingualBERT的多语言表征能力,得出了几点结论:MultilingualBERT的多语言表征能力不仅仅依赖于共享的词表,对于没有重叠(overlap)词汇语言的zero-shot任务,也可以完成的很好;语言越相似,效果越好;对于语言顺序(主谓宾或者形容词名词)不同的语言,效果不是很好;MultilingualBERT的表示同时包含了多种语言共有的表示,同时也包含了语言特定的表示,这一结论,[WuandDredze,2019]在语言分类任务中也指出,MultilingualBERT由于需要完成语言模型任务,所以需要保持一定的语言特定的表示来在词表中选择特定语言词语.
[LampleandConneau,2019]提出了基于多种语言预训练的模型XLMs,首先从单语语料库中采样一些句子,对于资源稀少的语言可以增加数量,对于资源丰富的语言可以减少数量,将所有语言使用统一BPE进行表示.
使用三种语言模型目标来完成学习.
前两个是基于单语语料库的,最后一个是基于双语对齐数据的.
第一种是CausalLanguageModeling(CLM),根据之前的词语预测下一个词语.
第二个是MaskedLanguageModeling(MLM),和BERT类似,但是使用一个词语流,而非句子对.
第三种是TranslationLanguageModeling(TLM),可以随机mask掉其中一些两种语言中的一些词语,然后进行预测.
其模型如图12.
7图12:跨语言语言模型预训练7多语言机器翻译[Johnsonetal.
,2017]使用一个模型来完成多种语言的机器翻译任务.
唯一的不同是输入的开始需要拼接一个特殊的指示符,代表目标语言.
例如Howareyou->Cómoestás需要修改为Howareyou->Cómoestás,代表该句将被翻译为西班牙语.
另一个核心点在于使用共享的Wordpiece,利用BPE来完成.
模型在训练的时候,一个mini-batch中混合多个语言的平行数据.
该模型的优点在于:简单,只需要修改输入数据就可以;可以提升资源稀缺数据的翻译效果;支持直接的zero-shot翻译任务.
[Escolanoetal.
,2019]利用不同语言之间共有的词表来作为知识迁移的桥梁,提出了两种方法,progAdapt和progGrow.
第一种方法progAdapt将一种语言对的翻译任务迁移到另一种翻译任务上,保留词表中共享的部分,添加新任务的词语,词表大小保持不变,并使用新任务的数据.
第二种方法progGrow利用递增的方式来学习一个多语言的机器翻译模型,将新语言的词表添加到旧词表上,并使用新旧任务一起的数据.
如图13.
图13:progAdapt和progGrow[Piresetal.
,2019]指出[Johnsonetal.
,2017,Escolanoetal.
,2019]的问题在于当语言的词表有显著的不同时,例如中文,词表会变得很大.
因此提出了一种方法,每一种语言有自己的特定的编码器和解码器,编码器和解码器之间不共享参数.
对于一个翻译对X-Y,会完成自编码任务(X-X,Y-Y)和翻译任务(X-Y,Y-X),同时会要求编码器得到的两种表示相近.
新来一种语言以8后Z,假设目前有Z-X的平行语料,只需要添加Z语言的编码器,然后固定住X语言的解码器参数来进行训练,这个过程只更新Z编码器的参数.
如图14.
图14:多语言机器翻译递增训练[Kimetal.
,2019]也认为,训练一个共享的多语言机器翻译模型一方面需要语言之间相关,以此来构建一个共享的词表,另一方面当增加一种语言时,如果该语言的词汇不在现有此表中,词表需要更新,模型需要重新训练.
因此在多语言机器翻译或者迁移学习的设定下,距离较远的语言词表不匹配(vocabularymismatch)是一个急需解决的问题.
因此提出了一种在向量空间完成隐式翻译的方法,本质上是使用了跨语言词向量.
当需要添加一种新的语言t时,首先训练语言t的单语词向量,然后将已经训练好的机器翻译模型的词向量参数矩阵取出,在两者之间学习一个线性映射W,用于将新的语言t转换到模型的语义空间下,该方法不需要重新更新词表或者重新训练模型,由于在向量空间完成了隐式对齐,当新的语言句子输入以后,会首先通过W矩阵来把单语向量空间映射到模型的语义空间,然后接着训练.
这种方法虽然确实没有显式的两个词表对齐、增加、替换的过程.
但实际上在学习完映射矩阵W以后,将新语言的词向量经过映射替换到训练好的模型中,实际上已经隐式的完成了词表的替换,这个映射过后的向量参数矩阵也会随着训练来更新.
除此以外,新的语言和原来的语言可能语序不同,因此在训练原机器翻译模型时,会在输入端通过随机插入、删除,交换来引入一些噪音.
例如Icharbeitehier通过交换以后变为Ichhierarbeite.
同时由于新语言往往是低资源语言,这里没有使用backtranslation来构建新的语料.
而是原来语言数据和新语言数据词表重合的部分保留,其他替换为unk来构建伪语料.
例如德语数据Hallo,John!
会变为巴斯克语数据,John!
保留了共有部分John.
[Vázquezetal.
,2019]利用一个语言共享的自注意力机制(attentionbridge)来将不同语言编码到同一空间.
不同语言的编码器和解码器不共享参数,在使用LSTM得到特定语言的表示以后,9使用共享的attentionbridge得到语言无关表示,用来初始化解码器的初始状态.
8相关论文[Liuetal.
,2019]利用一种共享-私有(Shared-Private)词向量来建模源语言词向量和目标语言词向量之间的关系,以及减少模型参数量.
其核心想法在于,词向量的一部分是语言无关的,是共享的,另一部分是语言相关的,是私有的.
并提出了三种共享关系,相似词语表示(lm)、相同词形(wf)、不相关(ur).
如图15.
利用fast-align首先根据一定的阈值找到语义对齐的词语.
具体实现时,拿源语言词向量矩阵Ex来举例,该矩阵由三个部分构成,Ex=Ex1mExwfExur,分别代表了三种共享关系词语的表示,每个词语只属于其中一种关系,并按照上述顺序的优先级来排序.
其中每一种共享关系由共享部分和私有部分组成,例如lm部分,Ex1m=SlmPxlm,其中S1m代表语言和目标语言共有的,Pxlm代表源语言私有的.
整个实现由矩阵拼接完成.
图15:共享私有词向量[Kumaretal.
,2019]利用资源丰富的语言来辅助资源稀少语言的问题生成任务,该任务输入句子,输出问题.
并构建了一个新的印度语的问题生成数据集HiQuAD.
其具体做法为:首先使用降噪自编码器(DAE)和反向翻译(backtranslation)来完成模型的预训练,然后在监督学习部分,分别使用各自数据进行训练.
其模型在编码器部分和解码器部分会共享部分参数.
其模型如图16.
昨天晚上有收到VULTR服务商的邮件,如果我们有清楚的朋友应该知道VULTR对于新注册用户已经这两年的促销活动是有赠送100美元最高余额,不过这个余额有效期是30天,如果我们到期未使用完的话也会失效的。但是对于我们一般用户来说,这个活动还是不错的,只需要注册新账户充值10美金激活账户就可以。而且我们自己充值的余额还是可以继续使用且无有效期的。如果我们有需要申请的话可以参考"2021年最新可用Vul...
每年的7月的最后一个周五是全球性质的“系统管理员日”,据说是为了感谢系统管理员的辛苦工作....friendhosting决定从现在开始一直到9月8日对其全球9个数据中心的VPS进行4.5折(优惠55%)大促销。所有VPS基于KVM虚拟,给100M带宽,不限制流量,允许自定义上传ISO...官方网站:https://friendhosting.net比特币、信用卡、PayPal、支付宝、微信、we...
HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。本月商家针对全场VPS主机提供8折优惠码,优惠后美国洛杉矶VPS月付5.2美元起。下面列出几款不同机房VPS主机产品配置信息。套餐:美国US-Plan0CPU:1cores内存:1GB硬...