【CS224n 笔记】Lecture 1: NLP 的基石——词向量 (Word Vectors)
斯坦福大学的 CS224n (Natural Language Processing with Deep Learning) 是 NLP 领域的入门神课。Lecture 1 作为开篇,并没有直接通过复杂的神经网络把人劝退,而是从最本质的问题出发:计算机应该如何理解一个词(Word)?
本文是对 Lecture 1 核心内容的总结,带你从传统的 One-hot 编码走到 Word2vec 的思想殿堂。
1. 词的含义 (Meaning) 与传统表示法的局限
在人类语言中,"含义" (Meaning) 通常指用符号(Symbol)来代表某种思想或现实世界的对象。在计算机中,我们如何表示这种含义呢?
传统方案一:WordNet
最早期的尝试是构建像 WordNet 这样的分类词典(Thesaurus)。它通过人工标注的同义词(synonyms)和上下位关系(hypernyms)来建立词与词的联系。
-
局限性:
- 缺乏细微差别 (Nuance): "proficient" 和 "good" 是同义词,但它们在语境中通常不能互换。
- 更新滞后: 语言演化极快(如 "apple", "tweet", "ninja" 的新含义),人工维护跟不上。
- 主观性强: 依赖专家的主观判断。
- 无法计算相似度: 很难量化两个词到底有多像。
传统方案二:离散符号 (Discrete Symbols)
在传统 NLP 中,我们把每个词看作一个独立的离散符号,通常使用 One-hot 编码。
- 假设词表大小为 V,则每个词表示为一个 V 维向量。
- 例如:
- 致命问题:正交性 (Orthogonality) 任意两个 One-hot 向量的点积为 0。这意味着在向量空间里,"motel" 和 "hotel" 的距离,与 "motel" 和 "cat" 的距离是一样的。模型无法从向量中捕捉到任何语义相似性。
2. 核心思想:分布式语义 (Distributional Semantics)
为了解决上述问题,现代 NLP 采用了一个革命性的理念:
"You shall know a word by the company it keeps." (J.R. Firth, 1957) 一个词的含义由它周围经常出现的上下文 (Context) 决定。
这意味着,如果要理解 "banking" 这个词,我们不需要查字典,而是看它经常出现在 "government", "debt", "crisis" 这些词旁边。
基于此,我们要构建 分布式表示 (Distributed Representation) ,也就是大名鼎鼎的 词向量 (Word Vectors / Word Embeddings) 。
- 这是一个稠密(Dense)向量,不再全是 0。
- 维度通常较低(如 50, 300, 1000),远小于词表大小。
- 相似的词在向量空间中距离更近。
3. Word2vec 算法详解
Word2vec (Mikolov et al., 2013) 是一个学习词向量的框架。它的核心是预测:与其统计共现频率,不如训练一个模型,让它能根据上下文预测中心词(或者反过来)。
模型概览
-
目标: 遍历海量语料库中的每个位置 t,给定中心词 c (center word),预测其窗口内的上下文词 o (context/outside word)。
-
参数: 每个词 w 有两个向量:
- vw: 当 w 做中心词时的向量。
- uw: 当 w 做上下文词时的向量。
-
计算概率: 给定中心词 c 和 上下文词 o,我们用 Softmax 函数计算概率:
- 分子:uoTvc 是点积,代表两个向量的相似度。越相似,点积越大,概率越高。
- 分母:对词表中所有词进行归一化,确保概率和为 1。
目标函数 (Objective Function)
我们需要最大化所有预测正确的概率(Likelihood),等价于最小化负对数似然(Negative Log Likelihood):
训练优化
由于直接计算 Softmax 分母需要遍历整个词表(代价极其昂贵),Word2vec 通常采用 负采样 (Negative Sampling) 来近似训练:
- 这里的思想由“多分类问题”转变为“二分类问题”。
- 对于每一对正样本 (c,o)(真实出现的),我们随机抽取 K 个负样本(没出现的噪声词)。
- 目标: 最大化正样本概率,最小化负样本概率。使用 Sigmoid 函数 σ(x):
- 通过 随机梯度下降 (SGD) 迭代更新 u 和 v,最终得到包含丰富语义的词向量。
4. 词向量的神奇特性
训练完成后,我们会发现向量空间展现出了惊人的性质:
- 相似性聚合: 可以在空间中看到 "banking", "finance", "monetary" 聚在一起。
- 线性类比关系 (Linear Analogies): 这是最著名的例子。向量的加减法居然对应语义的加减法: 这意味着模型不仅记住了词的位置,还隐式地编码了性别、时态、国家-首都等复杂的语义关系(甚至包括 lecture 中提到的 is-a 这种层级关系)。
5. 总结
Lecture 1 告诉我们:NLP 的基础是将离散的符号转化为连续的向量空间。
- One-hot 是死板的、孤立的。
- Word Vectors 是灵活的、互联的。
- Word2vec 证明了通过简单的“预测上下文”任务,计算机可以自动学习到人类语言中丰富的语义结构。
这仅仅是深度学习 NLP 的开始,掌握了词向量,我们才算真正拿到了通往大语言模型时代的入场券。
参考资料:
- Stanford CS224n Lecture 1 Slides & Video
- Paper: Distributed Representations of Words and Phrases and their Compositionality (Mikolov et al., 2013)