基于分层Softmax的Skip-gram模型训练算法详解
题目描述
Skip-gram模型是Word2Vec的核心算法之一,用于学习高质量的词向量表示。但当词汇表规模巨大(如百万级别)时,传统的Softmax计算会非常昂贵,因为需要为每个训练样本计算所有词的得分并归一化。分层Softmax(Hierarchical Softmax, HS)是一种高效的替代方案,它通过构建一棵二叉树(通常是霍夫曼树)将复杂度从O(|V|)降低到O(log|V|),从而大幅加速训练。本题目将详细讲解如何将分层Softmax应用于Skip-gram模型的训练过程。
解题过程循序渐进讲解
1. 回顾Skip-gram模型的基本目标
Skip-gram模型的目标是给定一个中心词(如“猫”),预测其上下文窗口内的周围词(如“可爱”、“宠物”)。对于每个训练样本(中心词c,上下文词t),模型需要最大化条件概率P(t|c)。传统Softmax的定义如下:
P(t|c) = exp(v't · v_c) / Σ{w=1}^{|V|} exp(v'_w · v_c)
其中v_c是中心词c的输入向量,v'_t是目标词t的输出向量,|V|是词汇表大小。分母需要遍历整个词汇表,计算成本高昂。
2. 分层Softmax的核心思想:用二叉树替代扁平化计算
分层Softmax不再直接计算所有词的Softmax概率,而是构建一棵二叉树,树的每个叶子节点对应词汇表中的一个词。从根节点到叶子节点的路径上的每一个二分类决策(如左走或右走)共同决定了该词的最终概率。
- 树的构建:通常使用霍夫曼树,它根据词频构建,高频词路径更短,计算更快。
- 节点表示:每个非叶子节点都有一个可学习的向量表示(例如,d维向量,与词向量同维度)。
- 概率计算:对于一条路径,在每个非叶子节点处,使用逻辑斯蒂(Sigmoid)函数计算走左子节点或右子节点的概率。
3. 分层Softmax的数学建模
假设我们有一棵二叉树,对于词汇表中的每个词w,都存在一条从根节点到w的路径,记作Path(w)。路径由一系列节点构成:n(w,1)(根节点), n(w,2), ..., n(w, L_w)(叶子节点w),其中L_w是路径长度。
- 在路径上的每个非叶子节点n(w, j),我们定义:
- 向左走(通常编码为1)的概率:σ(v'_{n(w,j)} · v_c)
- 向右走(通常编码为0)的概率:1 - σ(v'{n(w,j)} · v_c) = σ(-v'{n(w,j)} · v_c)
其中σ(x) = 1/(1+exp(-x))是Sigmoid函数,v'_{n(w,j)}是节点n(w,j)的向量表示,v_c是中心词c的输入向量。
- 词w的条件概率P(w|c)是路径上所有节点决策概率的乘积:
P(w|c) = ∏{j=1}^{L_w-1} [σ(v'{n(w,j)} · v_c)]^{1-dir} · [1 - σ(v'{n(w,j)} · v_c)]^{dir}
其中dir是一个指示函数:如果n(w, j+1)是n(w, j)的左孩子,dir=1;如果是右孩子,dir=0。更简洁的写法是:
P(w|c) = ∏{j=1}^{L_w-1} σ( dir · v'_{n(w,j)} · v_c ),其中dir ∈ {-1, 1}(1表示左,-1表示右)。
4. 分层Softmax在Skip-gram中的训练过程
a. 初始化:
- 为词汇表中的每个词初始化一个输入向量v_w(中心词表示)。
- 为二叉树中的每个非叶子节点初始化一个输出向量v'_n。
- 构建霍夫曼树:根据训练语料中词的频率,高频词放在离根节点近的位置。
b. 前向传播:
对于一个训练样本(中心词c,目标词t):
- 查找中心词c的输入向量v_c。
- 找到从根节点到目标词t的叶子节点的路径Path(t)。
- 沿着Path(t),对于路径上的每个非叶子节点n(t, j),计算Sigmoid函数的输入:u_j = v'_{n(t,j)} · v_c。
- 计算路径上每个节点的预测概率(向左或向右的概率)。
- 将路径上所有节点的预测概率相乘,得到最终的P(t|c)。
c. 损失函数与反向传播:
- 损失函数是负对数似然:L = -log P(t|c) = -Σ_{j=1}^{L_t-1} log σ( dir_j · v'_{n(t,j)} · v_c )。
- 反向传播时,我们只需要更新路径Path(t)上涉及到的参数,而不是整个词汇表的输出向量。这极大地减少了计算量。
- 参数更新:
- 更新中心词向量v_c:梯度会反向传播到v_c,v_c的更新会受路径上所有节点向量的影响。
- 更新路径上每个非叶子节点的向量v'_{n(t,j)}:每个节点向量的更新只依赖于当前中心词向量v_c和该节点的决策错误。
5. 分层Softmax的优势与局限性
- 优势:
- 高效性:将计算复杂度从O(|V|)降至O(log|V|),特别适合大规模词汇表。
- 实践效果好:在Word2Vec的原始论文中,分层Softmax是默认的高效训练方法之一。
- 局限性:
- 模型近似:分层Softmax是对完整Softmax的一种近似,其概率模型依赖于树的结构。
- 高频词偏好:霍夫曼树使得高频词更容易被训练,可能对低频词的表征学习略有影响(但通常影响不大)。
总结
分层Softmax通过将复杂的多分类问题分解为一系列简单的二分类问题,巧妙地利用二叉树结构大幅提升了Skip-gram模型的训练效率。其核心在于用路径概率乘积代替全局归一化,并通过霍夫曼编码优先处理高频词,实现了效率与效果的平衡。理解这一算法有助于深入掌握大规模词向量训练的技术本质。