这篇文章是用于解决skip-gram和CBOW两种模型在计算softmax时因为语料库V太大导致计算复杂度偏高的问题。为了降低复杂度,提高运算效率,论文作者提出了层次softmax以及负采样的方式去解决(负采样会比层次softmax用的更多些)。此外,作者还提出了一种重采样方式去使得采样更偏重一些含重要信息的词。
参考:
①B站视频
②论文
③Word2vec的两种原模型
④Word2vec 中的数学原理详解
⑤Word2Vec-知其然知其所以然
Distributed Representations of Words and Phrases and their Compositionality
文章介绍了2种可以简化skip-gram和CBOW两种模型中softmax部分的计算复杂度,即Hierarchical Softmax(HS)和Negative Sampling(NS)。这两种技巧均可用于上述2种模型,故HS和NS的目标就是改变softmax的表达式:
p ( o ∣ c ) = e x p ( u o T v c ) ∑ w = 1 V e x p ( u w T v c ) (1) p(o|c) = \frac{exp(u_o^Tv_c)}{\sum^V_{w=1}exp(u^T_wv_c)}\tag{1} p(o∣c)=∑w=1Vexp(uwTvc)exp(uoTvc)(1)
从式(1)中可以看出,计算一次概率需要经过 V V V(语料库大小)次的指数运算,那么自然HS和NS就要想办法在保证求出概率 p ( o ∣ c ) p(o|c) p(o∣c)的情况下,减小 u w T v c u^T_wv_c uwTvc的运算次数。因此原skip-gram以及CBOW的softmax需要做出改进。
1 Hierarchical Softmax
层次softmax的核心思想就是通过引出二叉树结构(Huffmax 二叉树)将求softmax的计算转为求sigmoid的计算,从而将计算复杂度从 V V V降到 l o g 2 V log_2V log2V以下,即从原来的需要求 V V V次关于 u w T v c u_w^Tv_c uwTvc的指数运算降低到求小于 l o g 2 V log_2V log2V次的sigmoid运算( s i g m o i d : σ ( x ) = 1 1 + e − x sigmoid: \sigma(x) = \frac{1}{1+e^{-x}} sigmoid:σ(x)=1+e−x1)。
为了便于理解,我们中间加入满二叉树过程而不是直接到Huffman树过程。

上图是一个满二叉树(V=8),可以看到,每次计算一个词 a a a的概率需要进行 l o g 2 V = 3 log_2V=3 log2V=3次的二分类过程,也就是说需要进行3次的sigmoid计算。
那么满二叉树达到了 l o g 2 V log_2V log2V的优化程度,那么有没有更快的方式呢?——引入Huffman树。

哈夫曼树是带权重路径最短二叉树,它基于将权值小的节点放的位子深(越小越接近叶子节点),权值大的节点放的位子浅(越大越靠近根节点)的原则来实现比满二叉树更小的路径和。
Note:
- 在层次softmax的CBOW和skip-gram模型中,你无法采用 W + W ∗ 2 \frac{W+W^*}{2} 2W+W∗的形式来做,因为在skip-gram模型中,只有一组完整的中心词向量矩阵 W W W,而中心词向量矩阵是由 θ \theta θ组成的,其维度势必小于 V V V,故 W W

本文探讨了Word2Vec模型中skip-gram和CBOW计算softmax时遇到的高复杂度问题,提出了层次softmax和负采样两种优化方法。层次softmax利用二叉树结构降低计算复杂度,而负采样则将多分类问题转换为二分类,提高了运算效率。文章详细解释了两种方法在skip-gram和CBOW模型中的应用,并介绍了词频重采样的策略,以加强重要词汇的训练。实验表明,这些优化方法能加速训练并提升词向量质量。
最低0.47元/天 解锁文章
1402

被折叠的 条评论
为什么被折叠?



