Lecture 01 Introduction and Word Vectors

文章目录
  1. 1. Lecture Plan
  2. 2. Human language and word meaning
  3. 3. Word2vec introduction
  4. 4. Word2vec objective function
  5. 5. Word2vec prediction function

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 的列表的辞典

wordnet

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$的表示

distributional-semantics

Word2vec introduction

我们为每个单词构建一个 密集 的向量,使其与出现在相似上下文中的单词向量相似

词向量 word vectors 有时被称为词嵌入 word embeddings 或词表示 word representations

它们是分布式表示 distributed representation

word-vector-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$

center-word-calculation-into

center-word-calculation-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 了解。