Lecture Plan
- The course
- Human language and word meaning
- Word2vec introduction
- Word2vec objective function gradients
- Optimization basics
- Looking at word vectors
Human language and word meaning
人类之所以比类人猿更“聪明”,是因为我们有语言,因此是一个人机网络,其中人类语言作为网络语言。人类语言具有 信息功能 和 社会功能 。
据估计,人类语言只有大约5000年的短暂历。语言是人类变得强大的主要原因。写作是另一件让人类变得强大的事情。它是使知识能够在空间上传送到世界各地,并在时间上传送的一种工具。
但是,相较于如今的互联网的传播速度而言,人类语言是一种缓慢的语言。然而,只需人类语言形式的几百位信息,就可以构建整个视觉场景。这就是自然语言如此迷人的原因。
How do we represent the meaning of a word?
meaning
- 用一个词、词组等表示的概念。
- 一个人想用语言、符号等来表达的想法。
- 表达在作品、艺术等方面的思想
理解意义的最普遍的语言方式(linguistic way) : 语言符号与语言符号的意义的转化
denotational semantics 指称语义
How do we have usable meaning in a computer?
WordNet, 一个包含同义词集和上位词(“is a”关系) synonym sets and hypernyms 的列表的辞典
Problems with resources like WordNet
- 作为一个资源很好,但忽略了细微差别
- 例如“proficient”被列为“good”的同义词。这只在某些上下文中是正确的。
- 缺少单词的新含义
- 难以持续更新
- 例如 wicked, badass, nifty, wizard, genius, ninja, bombest
- 主观的
- 需要人类劳动来创造和调整
- 无法计算单词相似度
Representing words as discrete symbols
在传统的自然语言处理中,我们把词语看作离散的符号: hotel, conference, motel - a localist representation。单词可以通过独热向量(one-hot vectors,只有一个1,其余均为0的稀疏向量) 。向量维度=词汇量(如500,000)。
Problem with words as discrete symbols
所有向量是正交的。对于独热向量,没有关于相似性概念,并且向量维度过大。
Solutions
- 使用类似WordNet的工具中的列表,获得相似度,但会因不够完整而失败
- 学习在向量本身中编码相似性
Representing words by their context
- Distributional semantics :一个单词的意思是由经常出现在它附近的单词给出的
- “You shall know a word by the company it keeps” (J. R. Firth 1957: 11)
- 现代统计NLP最成功的理念之一
- 有点物以类聚,人以群分的感觉
- 当一个单词$w$出现在文本中时,它的上下文是出现在其附近的一组单词(在一个固定大小的窗口中)。
- 使用$w$的许多上下文来构建$w$的表示
Word2vec introduction
我们为每个单词构建一个 密集 的向量,使其与出现在相似上下文中的单词向量相似
词向量 word vectors 有时被称为词嵌入 word embeddings 或词表示 word representations
它们是分布式表示 distributed representation
Word2vec (Mikolov et al. 2013)是一个学习单词向量的 框架
IDEA:
- 我们有大量的文本 (corpus means ‘body’ in Latin. 复数为corpora)
- 固定词汇表中的每个单词都由一个向量表示
- 文本中的每个位置
$t$,其中有一个中心词 $c$ 和上下文(“外部”)单词 $o$ - 使用 $c$ 和 $o$ 的 词向量的相似性 来计算给定 $c$ 的 $o$ 的 概率 (反之亦然)
- 不断调整词向量 来最大化这个概率
下图为窗口大小$j=2$时的$P\left(w_{t+j} | w_{t}\right)$计算过程,center word分别为$into$和$banking$
Word2vec objective function
对于每个位置$t=1, \ldots, T$,在大小为$m$的固定窗口内预测上下文单词,给定中心词$w_j$
- 其中,$\theta$ 为所有需要优化的变量
目标函数$J(\theta)$(有时被称为代价函数或损失函数) 是(平均)负对数似然
其中log形式是方便将连乘转化为求和,负号是希望将极大化似然率转化为极小化损失函数的等价问题。
在连乘之前使用log转化为求和非常有效,特别是在做优化时
- 最小化目标函数 $\Leftrightarrow$ 最大化预测精度
- 问题:如何计算$P(w_{t+j} | w_{t} ; \theta)$?
- 回答:对于每个单词都是用两个向量
- $v_w$当$w$是中心词时
- $u_w$当$w$是上下文时
- 于是对于一个中心词$c$和一个上下文词$o$
公式中,向量$u_o$和向量$v_c$进行点乘。向量之间越相似,点乘结果越大,从而归一化得到的概率值也越大。模型的训练正是为了使得具有相似上下文的单词,具有相似的向量。
Word2vec prediction function
- 取幂使任何数都为正
- 点积比较$o$和$c$的相似性 $u^{T} v=u \cdot v=\sum_{i=1}^{n} u_{i} v_{i}$,点积越大则概率越大。根据Vector Space的知识:$u \cdot v = |u| \cdot |v| \cdot cos \angle(u,v)$
- 分母:对整个词汇表进行标准化,从而给出概率分布
softmax function $\mathbb{R}^{n} \rightarrow \mathbb{R}^{n}$
将任意值$x_i$映射到概率分布$p_i$
- max :因为放大了最大的概率
- soft :因为仍然为较小的 $x_i$ 赋予了一定概率
- 深度学习中常用
首先我们随机初始化$u_{w}\in\mathbb{R}^d$和$v_{w}\in\mathbb{R}^d$ ,而后使用梯度下降法进行更新
偏导数可以移进求和中,对应上方公式的最后两行的推导
我们可以对上述结果重新排列如下,第一项是真正的上下文单词,第二项是预测的上下文单词。使用梯度下降法,模型的预测上下文将逐步接近真正的上下文。
再对$u_o$进行偏微分计算,注意这里的$u_o$是$u_{w=o}$的简写,故可知
可以理解,当$P(o|c) \to 1$,即通过中心词 $c$ 我们可以正确预测上下文单词 $o$ ,此时我们不需要调整$u_o$,反之,则相应调整$u_o$。
关于此处的微积分知识,可以通过《神经网络与深度学习》中的 附录B 了解。