SkipGram, CBOW,Hierarchical Softmax,Negative Sampling

本文提供了优快云博客的一个示例链接,展示了如何分享技术文章并进行交流。
**Hierarchical Softmax(分层 Softmax)** 是 Word2Vec 中用于优化传统 Softmax 的一种高效替代方案,特别是在词汇量较大的情况下,能显著提升训练效率。 --- ## ✅ 一、传统 Softmax 的问题 在 Word2Vec 的 Skip-gram 或 CBOW 模型中,输出层通常使用 Softmax 来预测上下文词: $$ P(w_O | w_I) = \frac{\exp(\mathbf{v}_{w_O}^T \mathbf{h})}{\sum_{w=1}^{V} \exp(\mathbf{v}_w^T \mathbf{h})} $$ 其中: - $ V $:词汇表大小; - $ w_I $:输入词; - $ w_O $:输出词(即预测的目标词); - $ \mathbf{h} $:隐藏层输出(输入词的向量); ### 问题: - **计算复杂度高**:每次更新都需要计算所有 $ V $ 个词的概率; - **内存消耗大**:当 $ V $ 达到几十万甚至百万时,计算变得非常慢; - **不适合大规模训练**; --- ## ✅ 二、Hierarchical Softmax 的优化点 ### 1. ❗ 用二叉树结构代替全量 Softmax - **构建一棵二叉 Huffman 树**,每个词对应一个叶子节点; - 每个非叶子节点对应一个二分类决策(左/右); - 从根节点到目标词的路径构成一个二分类序列; ### 优点: - 不需要计算所有词的概率; - 时间复杂度从 $ O(V) $ 降低到 $ O(\log V) $; --- ### 2. ❗ 用多个二分类代替一个多元分类 - 每个词的概率表示为从根节点到该词的路径上所有节点的二分类概率乘积; - 使用 Sigmoid 函数来建模每个节点的选择概率; 例如: $$ P(w | w_I) = \prod_{j=1}^{L(w)-1} \sigma([\![ n(w,j+1) = \text{left} ]\!] \cdot \mathbf{v}_{n(w,j)}^T \mathbf{h}) $$ 其中: - $ L(w) $:词 $ w $ 到根节点的路径长度; - $ n(w,j) $:路径上第 $ j $ 个节点; - $ \sigma $:Sigmoid 函数; - $ \mathbf{v}_{n(w,j)} $:节点对应的向量; --- ### 3. ❗ 更关注高频词(Huffman 编码优化) - 构建的是 Huffman 树,高频词路径更短; - 低频词路径更长,但更新次数少; - 整体训练效率更高; --- ### 4. ❗ 避免数值不稳定问题 - 传统 Softmax 中,指数运算可能导致数值溢出; - Hierarchical Softmax 使用多个 Sigmoid 函数,数值更稳定; --- ## ✅ 三、Hierarchical Softmax 的代码示例(伪代码) ```python # Hierarchical Softmax 计算示例(伪代码) def hierarchical_softmax(center_vector, path, vectors, sigmoid): log_prob = 0.0 for node in path: direction = node['direction'] # 1 for left, 0 for right vector = vectors[node['index']] score = np.dot(center_vector, vector) prob = sigmoid(direction * score) log_prob += np.log(prob) return -log_prob # 损失函数 ``` --- ## ✅ 四、与 Negative Sampling 的对比 | 优化点 | Hierarchical Softmax | Negative Sampling | |--------|-----------------------|-------------------| | 时间复杂度 | $ O(\log V) $ | $ O(K) $,K 为负样本数 | | 高频词优化 | 通过 Huffman 树优化 | 通过加权采样优化 | | 实现复杂度 | 较高(需构建 Huffman 树) | 较低(随机采样) | | 训练速度 | 中等 | 更快 | | 词向量质量 | 适合低频词 | 适合高频词 | --- ## ✅ 五、总结 | 优化点 | 描述 | |--------|------| | ✅ 降低时间复杂度 | 从 $ O(V) $ 降到 $ O(\log V) $ | | ✅ 使用 Huffman 树 | 高频词路径短,提升效率 | | ✅ 多个二分类任务 | 替代传统 Softmax | | ✅ 更稳定的数值计算 | 避免指数溢出 | | ✅ 特别适合低频词 | 低频词也能得到有效训练 | --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值