词嵌入的特性(Properties of Word Embeddings)

来源:Coursera吴恩达深度学习课程

词嵌入(Word Embeddings)还有一个迷人的特性就是实现类比推理(analogy reasoning),尽管类比推理(reasonable analogies)可能不是自然语言处理应用中最重要的,不过它能帮助人们理解词嵌入做了什么,以及词嵌入能够做什么,让我们来一探究竟。

如上图,这是一系列词嵌入可以捕捉的单词的特征表示,假如提出一个问题,man如果对应woman,那么king应该对应什么?我们应该都能猜到king应该对应queen。能否有一种算法来自动推导出这种关系呢?

用一个四维向量e_5391来表示man,也称为e_man,同样表示woman的嵌入向量称为e_woman,对king和queen也是一样的表示方法。对向量e_man和e_woman进行减法运算(minus),即

类似地,用e_king减去e_queen,也有一样的结果,即

这个结果表示,man和woman主要的差异是gender(性别)上的差异,而king和queen之间的主要差异,也是gender(性别)上的差异。这种思想首先是被Tomas Mikolov 和 Wen-tau Yih还有Geoffrey Zweig提出的,这是词嵌入领域影响力最为惊人和显著的成果之一,帮助研究者们对词嵌入领域建立更深刻的理解。

论文链接:Linguistic regularities in continuous space word representations

接下来我们正式地探讨一下应该如何把这种思想写成算法。

如上图所示,词嵌入向量在一个可能有300维的空间里,于是单词man代表的就是空间中的一个点,另一个单词woman代表空间另一个点,单词king也代表一个点,还有单词queen也在另一点上。为了得出这样的类比推理,计算当man对于woman,那么king对于什么,你能做的就是找到单词w来使得下面的等式成立:

我们需要找到单词w来最大化e_w和e_king-e_man+e_woman的相似度,即

我们有一些用于测算e_w和e_king-e_man+e_woman的相似度的函数,然后通过方程(equation)找到一个使得相似度最大的单词,如果结果理想的话会得到单词queen。

在继续下一步之前,再说明一下上面的这幅图(上图右上方所示),在之前我们谈到过用t-SNE算法来将单词可视化。t-SNE算法所做的就是把这些300维的数据用一种非线性的方式(non-linear way)映射到2维平面上,可以得知t-SNE中这种映射很复杂而且很非线性。在进行t-SNE映射之后,我们不能总是期望使等式成立的关系,会像左边那样成一个平行四边形,尽管在这个例子最初的300维的空间内你可以依赖这种平行四边形(parallelogram)的关系来找到使等式成立的一对类比,通过t-SNE算法映射出的图像可能是正确的。但在大多数情况下,由于t-SNE的非线性映射,你就没法再指望这种平行四边形了,很多这种平行四边形的类比关系在t-SNE映射中都会失去原貌。

现在,快速地列举一个最常用的相似度函数,这个最常用的相似度函数叫做余弦相似度(cosine similarity)

如上图所示,在余弦相似度中,假如在向量u和v之间定义相似度:

分子是u和v的内积,u的转置乘以v(u transpose v divided),如果u和v非常相似,那么它们的内积将会很大。分母是u和v的欧氏距离(Euclidean lengths)

把整个式子叫做余弦相似度,其实就是因为该式是u和v的夹角的余弦值,所以这个夹角就是Φ角(phi),这个公式实际就是计算两向量夹角Φ角的余弦。在微积分中,Φ角的余弦图像是递减的,所以夹角为0度时,余弦相似度就是1,当夹角是90度角时余弦相似度就是0,当它们是180度时,图像完全跑到了相反的方向,这时相似度等于-1,这就是为什么余弦相似度对于这种类比工作能起到非常好的效果。

如果你想的话,距离也可以用平方距离或者欧氏距离来表示

从学术上来说,比起测量相似度,这个函数更容易测量的是相异度(dissimilarity),所以对其取负,这个函数才能正常工作。不过Andrew还是觉得余弦相似度用得更多一点,这两者的主要区别是它们对u和v之间的距离标准化的方式不同。

词嵌入的一个显著成果就是,可学习的类比关系的一般性。举个例子,它能学会man对于woman相当于boy对于girl,因为man和woman之间和king和queen之间,还有boy和girl之间的向量差在gender(性别)这一维都是一样的。它还能学习Canada(加拿大)的首都是Ottawa(渥太华),而渥太华对于加拿大相当于Nairobi(内罗毕)对于Kenya(肯尼亚),这些都是国家中首都城市名字。它还能学习big对于bigger相当于tall对于taller,还能学习Yen(円)对于Janpan(日本),円是日本的货币单位(currency),相当于Ruble(卢比)对于Russia(俄罗斯)。这些东西都能够学习,只要你在大型的文本语料库上实现一个词嵌入学习算法,只要从足够大的语料库中进行学习,它就能自主地发现这些模式。

以上就是关于类别推理的讨论。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

猜你喜欢

转载自blog.csdn.net/csdn_xmj/article/details/118518452