跨语言词向量笔记7. 无监督跨语言词向量
跨语言词向量笔记7. 无监督跨语言词向量
- 种子词典的推导
- 基于GAN的方法
- 基于ICP的方法
- 其它方法
- 精化与启发式算法
- 无监督方法的局限性
- 参考文献
本文完全来自于Anders Søgaard等人的著作[Søgaard2019] Søgaard, A., Vulić, I., Ruder, S., & Faruqui M. (2019). Cross-Lingual Word Embeddings
在基于单词映射求跨语言词向量的方法中,很多工作都试图在保持学到的映射可靠性的情况下,减少所需要的监督信号。一些工作发现即便只使用数词和不同语言间拼写相同的单词也可以学到可用的映射关系,另一些工作用的甚至是完全无监督的方法,其背后通常是生成式对抗网络网络(GAN)或者迭代最近点算法(iterative closest point, ICP)。所有算法的目的都可以看做是学习一个线性变换来最小化目标分布和源分布之间的散度
大多数使用无监督方法学习跨语言词向量的方法都分成两步。第一步使用GAN或ICP等方法产生一个种子词典,第二步则是使用这个种子词典做之前的映射算法(例如普式分析)。即映射算法还是有监督的,只不过不再人工制造种子词典,而是无监督学出一个种子词典。在这两步之间,还需要一个重要的启发式算法,引导如何选取词对来构造种子词典。本章第一节主要介绍种子词典的推导方法,第二节介绍精化和相关的启发式方法,第三章介绍当前无监督方法存在的问题。需要注意的是,无监督方法是目前跨语言词向量学习这一方向研究的重点,进展日新月异,因此本文的调研是不完备的
种子词典的推导
很多无监督方法使用的种子词典推导过程看上去都像是在炼丹,反直觉,但是很有趣。不过需要注意的是,推出种子词典只是迈出了一小步,后面的精化和启发式方法有时候能明显地化腐朽为神奇
基于GAN的方法
基于GAN的方法中,最典型也最出名的是MUSE[Conneau2018],其使用一个带线性生成器的原始GAN来学习嵌入空间之间的对齐。在一个有两名参与者的游戏中,判别器DDD试图区分两个嵌入空间,而生成器GGG试图通过将源语言空间映射到目标语言空间来欺骗判别器(这也是生成器的训练目标)
生成器可以是任何可微函数GwG_wGw,在本文中,其具体表现形式是一个线性映射Ws→t\boldsymbol{W}^{s\rightarrow t}Ws→t,目标使其选择的Ws→t\boldsymbol{W}^{s\rightarrow t}Ws→t可以让输出Ws→tXs\boldsymbol{W}^{s\rightarrow t}\boldsymbol{X}^sWs→tXs的分布尽可能接近Xt\boldsymbol{X}^tXt。判别器可以看做是一个形式为Dw:X→{0,1}D_w:\mathcal{X} \rightarrow \{0,1\}Dw:X→{0,1}的函数,在MUSE中是一个多层感知机,其任务是区分Ws→tXs\boldsymbol{W}^{s\rightarrow t}\boldsymbol{X}^sWs→tXs和Xt\boldsymbol{X}^tXt。由于对于任何向量x\boldsymbol{x}x,我们知道是x∈Xs\boldsymbol{x} \in \boldsymbol{X}^sx∈Xs还是x∈Xt\boldsymbol{x} \in \boldsymbol{X}^tx∈Xt,因此对NNN个来自于Xs\boldsymbol{X}^sXs的样本和NNN个来自Xt\boldsymbol{X}^tXt的样本,可以计算判别器的损失函数,并更新判别器的参数:
w←w+α∑i=1N∇[log(Dw(Xit))+log(1−Dw(Ws→tXis))]w \leftarrow w + \alpha\sum_{i=1}^N \nabla \left[\log( D_w(\boldsymbol{X}_i^t)) + \log (1-D_w(\boldsymbol{W}^{s \rightarrow t}\boldsymbol{X}_i^s))\right] w←w+αi=1∑N∇[log(Dw(Xit))+log(1−Dw(Ws→tXis))]
生成器的损失函数就是判别器的相反数
整个GAN的参数(Gw,Dw)(G_w, D_w)(Gw,Dw)通过求解如下最大-最小问题得出
minGwmaxDwE[log(Dw(Xt))+log(1−Dw(Gw(Xis)))]\min_{G_w}\max_{D_w} \mathbb{E}\left[\log( D_w(\boldsymbol{X}^t)) + \log (1-D_w(G_w(\boldsymbol{X}_i^s)))\right] GwminDwmaxE[log(Dw(Xt))+log(1−Dw(Gw(Xis)))]
如果生成器在大量样本上都能战胜理想的判别器,则Xt\boldsymbol{X}^tXt和Ws→tXs\boldsymbol{W}^{s\rightarrow t}\boldsymbol{X}^sWs→tXs可以看做是很相近的,Jensen-Shannon散度比较小,也就是模型学到了真实的分布。假设数据的真实分布为pdatap_{\rm data}pdata,生成器制造的数据分布为pGp_GpG,则根据GAN原始论文的引理,有
如果GGG和DDD有足够强的表示能力,而且在训练的每一步判别器都能在给定GGG的情况下都能达到最优解,对pGp_GpG的更新又可以提高
Ex∼pdata[logDG∗(x)]+Ex∼pdata[log(1−DG∗(x))]\mathbb{E}_{\boldsymbol{x} \sim p_{\rm data}}\left[\log D_G^\ast (\boldsymbol{x})\right] + \mathbb{E}_{\boldsymbol{x} \sim p_{\rm data}}\left[\log (1-D_G^\ast (\boldsymbol{x}))\right] Ex∼pdata[logDG∗(x)]+Ex∼pdata[log(1−DG∗(x))]
则pGp_GpG收敛于pdatap_{\rm data}pdata
但理想的结果通常依赖于若干在现实中无法成立的假设,例如生成器的表示能力有限,且实际更新的时生成器的参数而非pGp_GpG,因此在实践中通常是优化kkk步判别器,再优化一步生成器。尽管这样的做法在实践中有时是足够的,但是原始GAN的天花板仍然不可忽视。此外,实验表明MUSE非常不稳定,不同的初始化可以对映射准确率造成非常大的差异
基于ICP的方法
通过映射的方法无监督学习跨语言词向量,也可以看做是一个“点云配准问题”,而这个问题常用ICP算法求解。和GAN一样,ICP也非常依赖初始化结果,而且大部分点云配准问题的解法都依赖若干已知完全正确的对齐结果,因此这样的做法也算是游走在有监督学习和无监督学习之间。此外,ICP容易陷入局部最优,已有算法仅用来解决二维或三维点云配准,而且效率比较低。具体做法可以参看[Hoshen2018]
其它方法
如前所述,GAN的目标是缩小pdatap_{\rm data}pdata和pGp_GpG之间的散度。但是如果散度变大,梯度会变小,最终消失,使得生成器无法从梯度下降中学到东西。这种现象称为模型崩塌(model collapse)。为此,可以使用Wassersten GAN(WGAN),这种模型的梯度更加平滑(其梯度近乎线性),而且当其用于跨语言词向量训练时,可以避免“中枢焦点”hub的存在(MUSE使用了一种启发式算法来做到这一点,在后面讨论)。更进一步地,可以使用CT-GAN来改善WGAN的性能。这一系列工作(在本书成书时)最新可以参考[Xu2018]。此外,还有一些工作使用了图匹配问题的Gold-Rangarajan松弛函数及其对应的Frank-Wolfe算法来求解(图匹配问题本身是NP完全的)
精化与启发式算法
如前所述,大部分通过无监督学习跨语言词嵌入的方法都是分两步走的,在引入种子词典以后需要用有监督的方式学习最终嵌入。第二部有时称为精化步骤,可以使用前面提到的所有基于词对齐的方法。实践中大部分人使用普氏分析,很大程度上都是因为受了MUSE[Conneau2018]的影响。下面对MUSE继续介绍,这种方法具体分为以下几步
- 单语词嵌入 使用单语词嵌入训练方法获得源语言和目标语言的词嵌入Xs\boldsymbol{X}^sXs和Xt\boldsymbol{X}^tXt
- 对抗映射 按照前面的介绍,使用GAN训练一个翻译矩阵Ω\OmegaΩ
- 精化(普氏分析) 使用得到的Ω\OmegaΩ可以构造一个小的高频词双语词典,然后对这个词典剪枝,仅保留那些满足双向翻译性质的词对。通过求解正交普氏问题,可学到在这些高频词对上可用的新的翻译矩阵Ω\OmegaΩ
Ω∗=argminWs→t∥Ws→tXs−Xt∥Frob=UVTs.t.UΣVT=SVD(XtXsT)\begin{aligned} \Omega^\ast = \mathop{ {\rm arg}\min}_{\boldsymbol{W}^{s\rightarrow t}}\|\boldsymbol{W}^{s\rightarrow t}&\boldsymbol{X}^s - \boldsymbol{X}^t\|_{\rm Frob} = \boldsymbol{UV}^\mathsf{T} \\ {\rm s.t.}\ \boldsymbol{U\Sigma V}^\mathsf{T} &={\rm SVD}\left(\boldsymbol{X}^t{\boldsymbol{X}^s}^\mathsf{T}\right) \end{aligned} Ω∗=argminWs→t∥Ws→ts.t.UΣVTXs−Xt∥Frob=UVT=SVD(XtXsT)
新的Ω\OmegaΩ会得到新的种子词对,新的种子词对也会得到新的Ω\OmegaΩ,这个方法要求作为锚点的高频翻译对要尽可能可靠 - 跨域相似度局部缩放(cross-domain similarity local scaling, CSLS)作用是在高密度区域扩张,在低密度区域收缩,这样可以算出更准确的最邻近点,因此可以解决高维空间的中枢点问题。其计算方式为
CSLS(Wxs,xt)=2cos(Wxs,xt)−rt(Wxs)−rs(xt)rt(Wxs)=1K∑xt∈Nt(Wxs)cos(Wxs,xt)\begin{aligned} {\rm CSLS}(\boldsymbol{Wx}^s, \boldsymbol{x}^t) &= 2\cos(\boldsymbol{Wx}^s, \boldsymbol{x}^t) - r^t(\boldsymbol{Wx}^s) - r^s(\boldsymbol{x}^t) \\ r^t(\boldsymbol{Wx}^s) &= \frac{1}{K}\sum_{\boldsymbol{x}^t \in \mathcal{N}^t(\boldsymbol{Wx}^s)}\cos(\boldsymbol{Wx}^s, \boldsymbol{x}^t) \end{aligned} CSLS(Wxs,xt)rt(Wxs)=2cos(Wxs,xt)−rt(Wxs)−rs(xt)=K1xt∈Nt(Wxs)∑cos(Wxs,xt)
其它一些方法使用了核技巧来直接将最大平均差异(maximum mean discrepancy, MMD)最小化。另外一些以[Artetxe2018]为代表的的工作使用了随机词典:从一个相似度矩阵以概率1−p1-p1−p随机删除元素得到种子词典,而且在之后的普氏分析的每一个迭代都如此做。对于这样的方法,ppp越小,每次得到的词典越不同,因此可以逃离局部最优解。该文章的做法是每次迭代都稍微增大一点ppp,形成模拟退火的效果:初始p=0.1p=0.1p=0.1,每当损失值在若干步都不降时,将ppp翻倍。[Hoshen2018]则是在做ICP之前先对数据做PCA,以加速训练,增强鲁棒性
无监督方法的局限性
[Søgaard2018]给出了MUSE的三个局限性
- MUSE不能保证对所有语言对都能给出好的对齐结果。例如如果一个语言词形态丰富,而且是dependency-marking(这个语言学术语实在找不到翻译了)时,效果就不好
- MUSE不能很好对齐来自不同领域的词
- MUSE不能很好对齐使用不同算法训练出的词向量
例如,MUSE可以近乎完美地对齐用fasttext在维基上训出的英语-西班牙语词向量,但是不能很好对齐如下几种词向量:1. 英语-爱沙尼亚语 2. 使用医学语料训练出的英语词向量和使用维基训出的西班牙语词向量
此外,对一些比较难的语言对,MUSE有时可以学出可用的映射,但是有时候不行
无监督方法的效果还受其核心成分GAN能力的制约。一方面,如前所述,GAN有模型崩塌现象,另一方面,有时候向量空间之间不存在线性映射关系。最后,[Søgaard2018]指出使用不同算法在不同语言上训出的嵌入基本很难对齐
参考文献
- [Conneau2018]: Alexis Conneau, Guillaume Lample, Marc’Aurelio Ranzato, Ludovic Denoyer, and Hervé Jégou. 2018. Word translation without parallel data. In Proc. of the 6th International Conference on Learning Representations (ICLR 2018).
- [Hoshen2018]: Yedid Hoshen and Lior Wolf. 2018. Non-adversarial unsupervised word translation. In Proc. of the Conference on Empirical Methods in Natural Language Processing (EMNLP 2018), pages 469–478.
- [Xu2018]: Ruochen Xu, Yiming Yang, Naoki Otani, and Yuexin Wu. 2018. Unsupervised cross-lingual transfer of word embedding spaces. In Proc. of the Conference on Empirical Methods in Natural Language Processing (EMNLP 2018), pages 2465–2474
- [Artetxe2018]: Mikel Artetxe, Gorka Labaka, and Eneko Agirre. 2018b. A robust self-learning method for fully unsupervised cross-lingual mappings of word embeddings. In Proc. of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) (ACL 2018), pages 789–798.
- [Søgaard2018]: Anders Søgaard, Sebastian Ruder, and Ivan Vulić. 2018. On the limitations of unsupervised bilingual dictionary induction. In Proc. of Association for Computational Linguistics (ACL 2018), pages 778–788.
跨语言词向量笔记7. 无监督跨语言词向量相关推荐
- 经典算法笔记:无监督算法(聚类、降维)
本文是吴恩达老师的机器学习课程[1]的笔记和代码复现部分(聚类.降维). 作者:黄海广[2] 备注:笔记和作业(含数据.原始作业文件).视频都在github[3]中下载. 我将陆续将课程笔记和课程代码 ...
- LogTAD:无监督跨系统日志异常域检测
摘要 日志异常检测,其对开发稳定.可持续的系统具有重要意义.但当系统刚上线时,收集足够的数据训练一个无监督模型是不现实的.为此本文提出了一个可转移的日志异常检测(LogTAD)框架,该框架利用对抗域适 ...
- 【学习笔记】无监督行人重识别
BUC <A Bottom-up Clustering Approach to Unsupervised Person Re-identification>2019 AAAI BUC是一种 ...
- 【论文阅读笔记】无监督行人重识别中的采样策略
参考论文<Rethinking Sampling Strategies for Unsupervised Person Re-identification> 一.问题背景 无监督行人重识别 ...
- bert获得词向量_无监督语义相似度匹配之Bert抽取文本特征实战
今天记一次采用bert抽取句子向量的实战过程,主要是想感受一下bert抽取出来的句子特征向量是否真的具有不错的语义表达. 在此之前,我们来回顾一下,如果我们想拿到一个句子的特征向量可以采用什么样的方式 ...
- EMNLP 2018 | 基于短语和神经网络的无监督机器翻译
无监督机器翻译是目前热门研究方向之一.在仅依赖单语数据情况下,实现语种间的翻译是一个具有实际意义并极赋挑战的任务.文章<Phrase-Based & Neural Unsupervise ...
- 【论文笔记】SIFA——基于GAN的双向跨模态无监督域适应框架
本文是论文<Unsupervised Bidirectional Cross-Modality Adaptation via Deeply Synergistic Image and Featu ...
- Facebook开源了两个无监督翻译模型,只用单语就能训练双语
翻栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI 昨天,Yann LeCun大神发推宣布,Facebook的两个无监督翻译模型,开源了. 所谓无监督,便是不需要双语对照文本,只用单语 ...
- 强化学习经典算法笔记(十九):无监督策略学习算法Diversity Is All You Need
强化学习经典算法笔记19:无监督策略学习算法Diversity Is All You Need DIAYN核心要点 模型定义 目标函数的构造 DIAYN算法细节 目标函数的优化 SAC的训练 判别器的 ...
- 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型
本文是文章<Inverse-Consistent Deep Networks for Unsupervised Deformable Image Registration>的阅读笔记. 过 ...
最新文章
- Linux网络服务-Web Service之【HTTP协议简介】(一)
- 一篇文章带你搞懂JS对象的自我销毁
- javascript console自动点击页面元素
- windows上的几个常用端口号
- Leetcode 1. 两数之和 (Python版)
- .NET开发中应该遵循的几点建议
- C语言小白适合入门的项目——扫雷
- 如何通过输入域名直接访问项目地址
- Python爬虫之环境安装
- java 文件无法下载_无法从Java中的URL下载文件
- 重定向telnet方法
- NoSQL数据库——Hbase
- Java使用融云SDK,推送聊天信息
- ubuntu安装rabbitvcs
- Mybatis generator 生成xml文件时覆盖原文件
- Ubuntu问题:E45: ‘readonly‘ option is set (add ! to override)错误解决
- 商汤科技面试——实习面试案例总结
- access里面的表达式运用_ACCESS条件表达式用法
- IDEA环境下模块的右下角蓝色小方块缺失的解决方法,pom文件未识别
- java简单学生成绩系统_JAVA 实现简单的学生成绩管理系统
热门文章
- java 解压带密码rar_Java解压和压缩带密码的zip文件过程详解
- 计算机管理设置透明,怎么将电脑任务栏设置为透明
- 手把手教你搞懂麦克风的技术指标
- U盘装系统工具哪个好用?
- 模拟CMOS集成电路设计基础 第一章 第二章开头
- Android Apk反编译 dex2j遇到如下问题 com.googlecode.d2j.DexException: not support version.
- JS实现页面保存为图片
- python之class
- 凝思6.0.60操作系统编译安装sqliteman(版本1.2.2)
- nginx代理服务器