【Word2Vec】Skip-gram的直观理解(深入浅出)
- 软件开发
- 2025-09-16 02:57:01

01 什么是skip-gram
一句话来说就是,给定中心词,然后预测其周围的词:
02 模型结构 对于skip-gram来说,输入是一个[1 x V]维的ont-hot向量,其中V为词表大小,值为1的那一项就表示我们的中心词。经过一个[V x N]的矩阵得到一个[1 x N]的向量,这个向量就是我们需要的词的embedding表示。然后[1 x N]的向量经过一个[N x V]的矩阵得到一个[1 x V]的向量,这个向量的值就是中心词与词表中其他词的相似度,经过softmax就是中心词旁边周围词出现的概率。优化目标:经过训练[V x N]和[N x V]这两个矩阵,使得最后目标词与周围词的出现概率最大,而与除了周围词以外的词概率最小(负采样,这里不详细展开了)。 03 直观理解skip-gram流程这里的每一步,对应了 02 模型结构 中的步骤。
这里我们举一个例子,一步步推导是怎么走的,这样更加直观:
以这句话为例:I love machine learning。
我们随机初始化两个矩阵:
[V x N]的矩阵为: [0.1, 0.2] [0.3, -0.2] [0.5, 0.4] [-0.1, 0.3]其中,V为4,表示词表中有4个单词,N为2表示我们想讲词向量映射为2(这个N是超参数,可以自己设定)。
注意这里为了文章简洁,使用两个相同矩阵,只是转置了一下,真实情况中一般是随机初始化的(大概率不同)。
1. 输入[1 x V]向量假设我们的目标词是love,那么输入向量就是[0, 1, 0, 0]。
2. 经过一个[V x N]的矩阵得到一个[1 x N]的向量输入向量 x [V x N]的矩阵的直观理解就是:将词映射成embeding。
以所举例子所示,向量 x 矩阵的结果就是:
I -> [0.1, 0.2] love -> [0.3, -0.2] machine-> [0.5, 0.4] learning -> [-0.1, 0.3]也就是将love从ont-hot向量映射为[0.3, -0.2]这个embedding。
3. [1 x N]的向量经过一个[N x V]的矩阵得到一个[1 x V]的向量这个过程即做预测,skip-gram的预测过程就是找出跟中心词最相近的词,向量表示最简单就是看向量乘积,越高说明越相似。
比如,如果想知道love和I、machine之间的相似度:
4. 优化目标使用交叉熵损失函数,目标是最小化目标词与真实上下文词之间的预测误差(注意是真实上下文)。
对于该例子就是:
然后反向传播计算损失,不断优化两个矩阵,最后使得总损失最小,直观理解就是目标词与周围词的出现概率最大;
训练完成后的第一个矩阵的每一行,就对应着每个词的embedding表示;训练完成后,在做预测时:给定一个词,想知道他的上下文词是谁,就看3. 的结果[1 x V]的向量值最大的n个元素,就对应最可能的n个上下文词。【Word2Vec】Skip-gram的直观理解(深入浅出)由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Word2Vec】Skip-gram的直观理解(深入浅出)”