第三部分 · 用数字表示词义

GloVe、相似度,以及词向量学到了什么

用方向比较向量,认识 GloVe,把词向量交给分类器,再看窗口大小和训练文本怎样影响向量学到的东西。

相关课次第 7 讲Sep 15

为什么比较方向,而不直接用点积? Lec 7 · PDF pp. 46–50

第 7 讲回到第 6 讲的相似度度量,并补充了一个偏爱余弦的理由。两个向量的点积,是把对应坐标相乘再相加:

\[ \mathbf{v}\cdot\mathbf{w}=\sum_{i=1}^{N}v_iw_i=v_1w_1+v_2w_2+\dots+v_Nw_N \]

两个向量在相同坐标上都有大数值时,点积会很大。但只要一个向量长,也就是在很多坐标上都有大数值,点积同样会很大。the、you、of 这类高频词和很多词一起出现,它们的计数向量就很长。直接用点积,会偏向高频词,而不是真正相似的词。

余弦消除了这个影响。点积等于两个长度的乘积再乘以夹角的余弦,所以除以两个长度后,剩下的只有夹角:

\[ \mathbf{v}\cdot\mathbf{w}=|\mathbf{v}|\,|\mathbf{w}|\cos\theta \qquad\Rightarrow\qquad \cos(\mathbf{v},\mathbf{w})=\frac{\mathbf{v}\cdot\mathbf{w}}{|\mathbf{v}|\,|\mathbf{w}|}=\frac{\sum_{i=1}^{N}v_iw_i}{\sqrt{\sum_{i=1}^{N}v_i^2}\,\sqrt{\sum_{i=1}^{N}w_i^2}} \]

两个向量方向相同时结果是 \(+1\),互相垂直时是 \(0\),方向相反时是 \(-1\)。我们不在乎词向量的长度,只在乎它们之间的夹角。

cherry、digital 和 information

课件从一张计数表里取了三个词和三个上下文列:

piedatacomputer
cherry44282
digital516831670
information539823325
\[ \cos(\text{cherry},\text{information})=\frac{442\times5+8\times3982+2\times3325}{\sqrt{442^2+8^2+2^2}\,\sqrt{5^2+3982^2+3325^2}}\approx0.018 \] \[ \cos(\text{digital},\text{information})=\frac{5\times5+1683\times3982+1670\times3325}{\sqrt{5^2+1683^2+1670^2}\,\sqrt{5^2+3982^2+3325^2}}\approx0.996 \]

digital 和 information 几乎指向同一个方向,cherry 则指向别处。课件把 pie 和 computer 两个坐标画成二维图,看到的也是同样的情形:cherry 沿 pie 轴往上,另外两个词几乎贴着 computer 轴。

关于数值:第一个比值算出来是 \(0.01775\),四舍五入是 \(0.018\)。PDF 第 49 页印的是 \(.017\),那是直接截断而不是四舍五入的结果。

GloVe:让向量拟合全局共现统计 Lec 7 · PDF pp. 51–55

word2vec 不容易解释:它在文本上一次滑过一个窗口,最后得到的向量到底在逼近什么量,并不明显。课件问,有没有更有理论依据的方式来描述学到的东西。

GloVe(Global Vectors,Pennington 等人,2014)是另一个广泛使用的静态词向量模型。它不从窄窗口出发,而是从整个语料的全局词-词共现矩阵出发,也就是计算 PPMI 时用的那个矩阵。课件把它的思想概括为:用词向量去逼近两个词的点互信息。

\[ \operatorname{PMI}(\text{word}_1,\text{word}_2)=\log_2\frac{P(\text{word}_1,\text{word}_2)}{P(\text{word}_1)\,P(\text{word}_2)} \]

课件列出 GloVe 依赖的几样东西:从共现矩阵得到的概率比值、PPMI 这类基于计数的模型的直觉,以及矩阵分解(matrix factorization)。目标是把大部分重要信息存进固定的少量维度里,得到一个低维矩阵,同时让重构损失(reconstruction loss)尽量小。重构损失指的是从低维向量还原回完整矩阵时的误差。它训练很快,能扩展到非常大的语料。

课件写下的分解形式
\[ V^{\top}U\approx\log M \]

这里 \(M\) 收集了所有目标词与上下文词的共现次数。一个矩阵里每个目标词占一个向量,另一个矩阵里每个上下文词占一个向量,使得目标词向量与上下文向量的点积逼近对应共现项的对数。课件把解描述为对 \(M\) 做秩为 \(d\) 的分解,\(d\) 就是词向量的长度。

补充自 GloVe 论文:完整的目标函数

课件只给出上面的近似关系。Pennington 等人用加权最小二乘来拟合它:每个词 \(i\) 和上下文 \(j\) 还各有偏置 \(b_i\) 和 \(\tilde b_j\),加权函数 \(f\) 用来削弱极罕见和极高频词对的影响:

\[ J=\sum_{i,j}f(X_{ij})\big(\mathbf{w}_i\cdot\tilde{\mathbf{w}}_j+b_i+\tilde b_j-\log X_{ij}\big)^2 \]

\(X_{ij}=0\) 的词对权重为零,所以永远不需要算零的对数。这个细节课件里没有。

哪种方法更好? Lec 7 · PDF p. 56

都不是。课件明确说,没有哪种词向量方法对所有应用都是最好的。更重要的是训练数据的数量和质量,以及超参数的选择:向量维度 \(d\);对 word2vec 来说,负采样的权重 \(\alpha\) 和负样本数 \(K\);对 GloVe 来说,矩阵分解的算法;还有其他设置。

把词向量当作分类器的特征 Lec 7 · PDF p. 57

多分类逻辑回归这类分类器,每篇文档需要一个特征向量。一个句子却给了我们每个词一个向量。课件的例子是 I am a student at USC,六个词,六个向量 \(\mathbf{v}_1,\dots,\mathbf{v}_n\)。

最简单的合并方法是逐元素池化(element-wise pooling):对每一个坐标,在所有词向量上应用同一条规则。

\[ \mathbf{v}=\operatorname{pool}(\mathbf{v}_1,\dots,\mathbf{v}_n) \qquad\text{例如取每个坐标的平均值或最大值} \]

取平均或取最大值会丢掉词的顺序,也丢掉词与词之间的修饰关系。课件直接指出:词序和上下文信息都没有保留。即便如此,结果仍然是一个有用而紧凑的输入,而且比词袋更好,因为意思相近的词现在会产生相近的特征。

向量抓住什么,取决于窗口 Lec 7 · PDF p. 59

上下文窗口的大小会改变哪些词最终靠在一起。稀疏向量和稠密向量都是如此。

窗口最近邻往往是Hogwarts 的例子
小窗口,约 \(\pm2\)语法行为相似、属于同一类别的词其他虚构的学校:Sunnydale、Evernight、Blandings
大窗口,约 \(\pm5\)主题相关的词同一个故事里的词:Dumbledore、half-blood、Malfoy

所以窗口大小是建模上的选择,不只是速度设置。小窗口抓住一个词怎么用,大窗口抓住一个词讲什么。

怎么知道这些向量好不好? Lec 7 · PDF p. 60

一种检查是第 6 讲的类比测试:在 GloVe 空间里,\(\mathbf{w}_{king}-\mathbf{w}_{man}+\mathbf{w}_{woman}\) 落在 \(\mathbf{w}_{queen}\) 附近,投影到二维后,相关词对之间呈现平行的位移。课件重申了限制:这只对高频词、短距离和某些关系有效,例如国家与首都、词性变化,对其他关系则不成立。理解类比仍是一个开放的研究领域。

更好的检验是外在评估(extrinsic evaluation):把向量放进真实任务里,看任务的表现。这和困惑度那一页对语言模型做的区分是一样的。

词向量会反映文化偏见 Lec 7 · PDF pp. 61–62

向量是从人写的文本里学来的,所以会吸收文本里的关联,包括有害的关联。课件给了三个类比补全:

  • "Paris 之于 France,如同 Tokyo 之于 ___" → Japan。这个没问题。
  • "father 之于 doctor,如同 mother 之于 ___" → nurse。
  • "man 之于 computer programmer,如同 woman 之于 ___" → homemaker。

课件把这类问题称为分配性伤害(allocational harm):如果一个算法带着这样的词向量去搜索程序员候选人,机会就可能被不公平地分配。例子来自 Bolukbasi 等人(2016),那篇论文的标题问的正是这个问题,并提出了减少偏见的方法。

同样的性质也让词向量成为研究偏见的工具。Garg 等人(2018)用不同年代的文本训练词向量,对每个形容词测量它离指代女性的词比离指代男性的词近多少,或者离某些族裔的名字有多近。其中两个发现:

  • smart、wise、brilliant、logical 这类表示能力的形容词偏向男性,这种偏向在 1960 到 1990 年间缓慢下降。
  • barbaric、monstrous、bizarre 这类贬低人格的形容词在 1930 年代偏向亚裔,这种偏向在二十世纪逐渐减弱。

这些测量结果与 1930 年代的态度调查相符。课件把这类影响称为表征性伤害(representational harm):表示本身就带有贬损性的关联,不管有没有用它做任何决定。

这一页要记住什么
  • 直接用点积会偏向高频词,因为它们的向量长。余弦除掉长度,只比较方向。
  • GloVe 让目标词向量和上下文向量的点积逼近共现矩阵的对数,是 word2vec 的一个全局的、基于矩阵分解的近亲。
  • 没有一种词向量方法处处最好。数据和超参数(包括 \(d\)、\(\alpha\)、\(K\))更重要。
  • 对词向量做池化,能给分类器每段文本一个输入向量,代价是丢掉词序。
  • 小窗口找到用法相似的词,大窗口找到主题相关的词。用它们在任务中的帮助来评判向量。
  • 词向量会继承训练文本里的偏见,既可能造成伤害,也可以被测量。