【吴恩达deeplearning.ai】Course 5 – 2.3 词嵌入的特性

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

到现在,你应该明白了词嵌入是如何帮助你构建自然语言处理应用的。 词嵌入还有一个迷人的特性就是 它还能帮助实现类比推理,尽管类比推理可能不是自然语言处理应用中最重要的,不过它能帮助人们理解词嵌入做了什么,以及词嵌入能够做什么,让我们来一探究竟。

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

【吴恩达deeplearning.ai】Course 5 - 2.3 词嵌入的特性
我们用一个四维向量来表示man,我们用e 5391 e_{5391}e 5 3 9 1 ​来表示,不过在这节视频中我们先把它(上图编号1所示)称为e man e_{\text{man}}e man ​,而旁边这个(上图编号2所示)表示woman的嵌入向量,称它为e woman e_{\text{woman}}e woman ​,对king和queen也是用一样的表示方法。在该例中,假设你用的是四维的嵌入向量,而不是比较典型的50到1000维的向量。这些向量有一个有趣的特性,就是假如你有向量e man e_{\text{man}}e man ​和e woman e_{\text{woman}}e woman ​,将它们进行减法运算,即
e man − e woman = [ 1 0.01 0.03 0.09 ] − [ 1 0.02 0.02 0.01 ] = [ 2 0.01 0.01 0.08 ] ≈ [ 2 0 0 0 ] e_{\text{man}} – e_{\text{woman}} = \begin{bmatrix} 1\ 0.01\ 0.03\ 0.09\ \end{bmatrix} – \begin{bmatrix} 1\ 0.02\ 0.02\ 0.01\ \end{bmatrix} = \begin{bmatrix} 2\ 0.01\0.01\ 0.08\ \end{bmatrix} \approx \begin{bmatrix} 2\ 0\ 0\ 0\ \end{bmatrix}e man ​−e woman ​=⎣⎢⎢⎡​1 0 .0 1 0 .0 3 0 .0 9 ​⎦⎥⎥⎤​−⎣⎢⎢⎡​1 0 .0 2 0 .0 2 0 .0 1 ​⎦⎥⎥⎤​=⎣⎢⎢⎡​2 0 .0 1 0 .0 1 0 .0 8 ​⎦⎥⎥⎤​≈⎣⎢⎢⎡​2 0 0 0 ​⎦⎥⎥⎤​

类似的,假如你用e king e_{\text{king}}e king ​减去e queen e_{\text{queen}}e queen ​,最后也会得到一样的结果,即

e king − e queen = [ 0.95 0.93 0.70 0.02 ] − [ 0.97 0.95 0.69 0.01 ] = [ 1.92 0.02 0.01 0.01 ] ≈ [ 2 0 0 0 ] e_{\text{king}} – e_{\text{queen}} = \begin{bmatrix} 0.95\ 0.93\ 0.70\ 0.02\ \end{bmatrix} – \begin{bmatrix} 0.97\ 0.95\ 0.69\ 0.01\ \end{bmatrix} = \begin{bmatrix} 1.92\ 0.02\ 0.01\ 0.01\ \end{bmatrix} \approx \begin{bmatrix} 2\ 0\ 0\ 0\ \end{bmatrix}e king ​−e queen ​=⎣⎢⎢⎡​0 .9 5 0 .9 3 0 .7 0 0 .0 2 ​⎦⎥⎥⎤​−⎣⎢⎢⎡​0 .9 7 0 .9 5 0 .6 9 0 .0 1 ​⎦⎥⎥⎤​=⎣⎢⎢⎡​1 .9 2 0 .0 2 0 .0 1 0 .0 1 ​⎦⎥⎥⎤​≈⎣⎢⎢⎡​2 0 0 0 ​⎦⎥⎥⎤​

这个结果表示,man和woman主要的差异是gender(性别)上的差异,而king和queen之间的主要差异,根据向量的表示,也是gender(性别)上的差异,这就是为什么e man − e woman e_{\text{man}}- e_{\text{woman}}e man ​−e woman ​和e king − e queen e_{\text{king}} – e_{\text{queen}}e king ​−e queen ​结果是相同的。

所以得出这种 类比推理的结论的方法就是,当算法被问及man对woman相当于king对什么时,算法所做的就是计算e man − e woman e_{\text{man}}-e_{\text{woman}}e man ​−e woman ​,然后找出一个向量也就是找出一个词,使得e man − e woman e_{\text{man}}-e_{\text{woman}}e man ​−e woman ​≈e king − e ? \ e_{\text{king}}- e_{?}e king ​−e ?​,也就是说,当这个新词是queen时,式子的左边会近似地等于右边。这种思想首先是被Tomas Mikolov 和 Wen-tau Yih还有Geoffrey Zweig提出的,这是词嵌入领域影响力最为惊人和显著的成果之一,这种思想帮助了研究者们对词嵌入领域建立了更深刻的理解。

(Mikolov T, Yih W T, Zweig G. Linguistic regularities in continuous space word representations[J]. In HLT-NAACL, 2013.)

【吴恩达deeplearning.ai】Course 5 - 2.3 词嵌入的特性
让我们来正式地探讨一下应该如何把这种思想写成算法。在图中,词嵌入向量在一个可能有300维的空间里,于是单词man代表的就是空间中的一个点,另一个单词woman代表空间另一个点,单词king也代表一个点,还有单词queen也在另一点上(上图编号1方框内所示的点)。事实上,我们在上个幻灯片所展示的就是向量man和woman的差值非常接近于向量king和queen之间的差值,我所画的这个箭头(上图编号2所示)代表的就是向量在gender(性别)这一维的差,不过不要忘了这些点是在300维的空间里。

为了得出这样的类比推理,计算当man对于woman,那么king对于什么,你能做的就是找到单词w来使得,e man − e woman ≈ e king − e w e_{\text{man}}-e_{\text{woman}}≈ e_{\text{king}} – e_{w}e man ​−e woman ​≈e king ​−e w ​这个等式成立,你需要的就是找到单词w来最大化e w e_{w}e w ​与e king − e man + e woman e_{\text{king}} – e_{\text{man}} + e_{\text{woman}}e king ​−e man ​+e woman ​的相似度,即

F i n d w o r d w : a r g m a x S i m ( e w , e king − e man + e woman ) Find\ word\ w:argmax \ Sim(e_{w},e_{\text{king}} – e_{\text{man}} + e_{\text{woman}})F i n d w o r d w :a r g m a x S i m (e w ​,e king ​−e man ​+e woman ​)

所以我做的就是我把这个e w e_{w}e w ​全部放到等式的一边,于是等式的另一边就会是e king − e man + e woman e_{\text{king}}- e_{\text{man}} + e_{\text{woman}}e king ​−e man ​+e woman ​。我们有一些用于测算e w e_{w}e w ​和e king − e man + e woman e_{\text{king}} -e_{\text{man}} + e_{\text{woman}}e king ​−e man ​+e woman ​之间的相似度的函数,然后通过方程找到一个使得相似度最大的单词,如果结果理想的话会得到单词queen。值得注意的是这种方法真的有效,如果你学习一些词嵌入,通过算法来找到使得相似度最大化的 单词w,你确实可以得到完全正确的答案。不过这取决于过程中的细节,如果你查看一些研究论文就不难发现,通过这种方法来做类比推理准确率大概只有30%~75%,只要算法猜中了单词,就把该次计算视为正确,从而计算出准确率,在该例子中,算法选出了单词queen。

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

现在,再继续之前,我想再快速地列举一个最常用的相似度函数,这个最常用的相似度函数叫做 余弦相似度。这是我们上个幻灯片所得到的等式(下图编号1所示),在余弦相似度中,假如在向量u u u和v v v之间定义相似度:sim ( u , v ) = u T v ∣ ∣ u ∣ ∣ 2 ∣ ∣ v ∣ ∣ 2 \text{sim}\left( u,v \right) = \frac{u^{T}v}{\left| \left| u \right| \right|{2}\left| \left| v \right| \right|{2}}sim (u ,v )=∣∣u ∣∣2 ∣∣v ∣∣2 u T v ​

现在我们先不看分母, 分子其实就是u u u 和v v v 的内积。如果u和v非常相似,那么它们的内积将会很大, 把整个式子叫做余弦相似度,其实就是因为该式是u u u 和v v v 的夹角的余弦值,所以这个角(下图编号2所示)就是Φ角, 这个公式实际就是计算两向量夹角Φ角的余弦。你应该还记得在微积分中,Φ角的余弦图像是这样的(下图编号3所示),所以夹角为0度时,余弦相似度就是1,当夹角是90度角时余弦相似度就是0,当它们是180度时,图像完全跑到了相反的方向,这时相似度等于-1,这就是为什么余弦相似度对于这种类比工作能起到非常好的效果。 距离用平方距离或者欧氏距离来表示:∣ ∣ u − v ∣ ∣ 2 \left| \left| u – v \right| \right|^{2}∣∣u −v ∣∣2

【吴恩达deeplearning.ai】Course 5 - 2.3 词嵌入的特性
【吴恩达deeplearning.ai】Course 5 - 2.3 词嵌入的特性
参考资料: 余弦相似度 为了测量两个词的相似程度,我们需要一种方法来测量两个词的两个嵌入向量之间的相似程度。 给定两个向量u u u和v v v,余弦相似度定义如下: C o s i n e S i m i l a r i t y ( u , v ) = u . v ∣ ∣ u ∣ ∣ 2 ∣ ∣ v ∣ ∣ 2 = c o s ( θ ) ( 1 ) {CosineSimilarity(u, v)} = \frac {u . v} {||u||_2 ||v||_2} = cos(\theta) ~~~~~~~~~~~~~(1)C o s i n e S i m i l a r i t y (u ,v )=∣∣u ∣∣2 ​∣∣v ∣∣2 ​u .v ​=c o s (θ)(1 )

其中 u . v u.v u .v 是两个向量的点积(或内积),∣ ∣ u ∣ ∣ 2 ||u||_2 ∣∣u ∣∣2 ​是向量u u u的范数(或长度),并且 θ \theta θ 是向量u u u和v v v之间的角度。这种相似性取决于角度在向量u u u和v v v之间。如果向量u u u和v v v非常相似,它们的余弦相似性将接近1; 如果它们不相似,则余弦相似性将取较小的值。

【吴恩达deeplearning.ai】Course 5 - 2.3 词嵌入的特性
图1: 两个向量之间角度的余弦是衡量它们有多相似的指标,角度越小,两个向量越相似。

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

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

在本节视频中,你见到了词嵌入是如何被用于类比推理的,可能你不会自己动手构建一个类比推理系统作为一项应用,不过希望在这些可学习的类特征的表示方式能够给你一些直观的感受。你还看知道了余弦相似度可以作为一种衡量两个词嵌入向量间相似度的办法,我们谈了许多有关这些嵌入的特性,以及如何使用它们。下节视频中,我们来讨论如何真正的学习这些词嵌入。

Original: https://blog.csdn.net/qq_42994177/article/details/123314043
Author: why do not
Title: 【吴恩达deeplearning.ai】Course 5 – 2.3 词嵌入的特性

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531331/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球