Word2Vec 学习计划 二
以 Word2Vec 作为神经网络的入门起点,是非常完美的决定!
Word2Vec 本质上是一个没有激活函数的浅层(单隐藏层)神经网络。它剥离了现代深度学习中复杂的多层网络堆叠,把核心直接指向了神经网络的本质:矩阵乘法、梯度下降和特征表示。如果你能吃透它,后续学习 CNN、RNN 甚至 Transformer 都会顺理成章。
从“数学原理”到“训练推理”的系统性学习方案如下:
阶段一:数学原理与网络架构 (The Theory)
Word2Vec 的核心思想基于语言学的分布式假设 (Distributional Hypothesis):“一个词的含义由它的上下文决定”。为了让神经网络学习这种上下文关系,它提出了两种经典的架构:
- CBOW (Continuous Bag-of-Words):通过上下文(周围的词)来预测中心词。
- Skip-gram:通过中心词来预测上下文。Skip-gram 在大型数据集上表现更好,能更精准地处理生僻词,这也是工业界最常用的版本。
神经网络的数学拆解 (以 Skip-gram 为例)
你可以把它的网络结构看作三个相连的部分:
- 输入层 (\(x\)):一个大小为 \(V\)(词表大小,比如 10,000)的 One-hot 向量。目标词的位置是 1,其余全是 0。
- 隐藏层权重矩阵 (\(W\)):大小为 \(V \times N\)(\(N\) 是你想要的词向量维度,比如 300)。因为输入是 One-hot 向量,这里的矩阵乘法实际上等同于查表,直接把矩阵的某一行抽出来作为隐藏状态:
注意:这里没有任何激活函数(如 ReLU 或 Sigmoid),纯粹是线性映射。
- 输出层权重矩阵 (\(W'\)):大小为 \(N \times V\)。隐藏层向量乘上这个矩阵后,通过 Softmax 函数转化为输出词汇表中每个词的概率:
进阶数学必学:当词表 \(V\) 非常大(如 10 万)时,标准 Softmax 在输出层的计算量极高(每次都要算 10 万次指数求和)。为了解决这个工程灾难,你必须学习 Word2Vec 论文中提出的两个伟大 trick:负采样 (Negative Sampling)(把多分类转化为二分类问题)和 分层 Softmax (Hierarchical Softmax)。
阶段二:模型训练 (The Training)
神经网络的学习,本质上就是通过数据不断微调上面提到的 \(W\) 和 \(W'\) 两个矩阵。
- 构建滑动窗口 (Sliding Window):定义一个窗口大小(如 2),在文本语料上滑动。比如句子 "The quick brown fox jumps",假设中心词是 "brown",上下文就是
["The", "quick", "fox", "jumps"]。通过滑动,生成海量用于训练的(输入词, 目标上下文)数据对。 - 前向传播 (Forward Pass):输入词进入网络,得出一个预测周围会出现哪些词的概率分布。
- 计算损失 (Loss Calculation):对比网络的预测结果和真实的上下文,通常使用交叉熵损失 (Cross-Entropy Loss)。如果是负采样,则退化为简单的二元交叉熵损失。
- 反向传播与优化 (Backpropagation & SGD):根据损失函数,利用链式法则对 \(W\) 和 \(W'\) 求偏导数,并通过随机梯度下降更新矩阵中的权重。让网络下一次遇到同样的词时,预测得更准。
阶段三:模型推理与评估 (The Inference)
这是 Word2Vec 最迷人的地方:训练完成后,我们会把庞大的输出层 (\(W'\)) 直接扔掉!
我们并不真的需要这个网络去预测下一个词,我们真正想要的是那个隐藏层的权重矩阵 \(W\)。由于输入是 One-hot 编码,输入词 \(i\) 对应的特征向量,刚好就是矩阵 \(W\) 的第 \(i\) 行。这个矩阵 \(W\) 就是所谓的 词向量查找表 (Word Embedding Table)。
拿到了词向量,就可以进行以下经典操作:
- 计算相似度:万物皆可向量。使用余弦相似度 (Cosine Similarity) 来计算两个向量在空间中的夹角,夹角越小,词义越相近。
- 向量线性平移:模型不仅学习到了词义,还学到了语法和语义关系。NLP 领域最经典的类比推理公式诞生于此:
最佳学习资源推荐
为了不被海量碎片化教程淹没,强烈建议严格按照以下顺序和材料进行学习:
1. 数学推导 (必读神作)
- 《word2vec Parameter Learning Explained》by Xin Rong: 这篇 2014 年的论文是公认的、全世界解释 Word2Vec 数学原理最清晰的材料。作者极其耐心地推导了前向传播、反向传播、负采样和分层 Softmax 的所有公式。建议把它打印下来,拿笔跟着推导一遍,你的神经网络底子就打牢了。
2. 直觉与动态可视化
- The Illustrated Word2vec (图解 Word2Vec) by Jay Alammar: 作者用极其精美的动图和图解,解释了滑动窗口是如何生成训练数据的,以及高维向量空间是什么样的。
3. 代码实战 (从零手搓)
- 不要一开始就用 Gensim:Gensim 库太好用了,一行代码
Word2Vec(sentences)就能跑出结果,但你学不到神经网络细节。 - PyTorch 官方教程 (Word Embeddings):用 PyTorch 构建
nn.Embedding和简单的线性分类器,自己写一个简单的 Skip-gram 训练循环,看看 Loss 是如何下降的。 - Stanford CS224n (Lecture 1 & 2):斯坦福深度学习 NLP 课程的前两讲完全专注于 Word2Vec,不仅讲模型架构,还从语言学直觉剖析了为什么它能起作用。

浙公网安备 33010602011771号