您现在的位置是:首页 >技术杂谈 >Word2vec Skip-Gram 模型网站首页技术杂谈
Word2vec Skip-Gram 模型
图例

Skip-gram 模型,假设句子中的每个词都决定了相邻词的选取,所以你可以看到Skip-gram模型的输入是 W t W_{t} Wt, 预测的输出是 W t W_t Wt 周边的词
也是说Skip-gram的目标是:给定一个中心词 W t W_t Wt, 预测其上下词 W t + j W_{t+j} Wt+j(j 在窗口大小c内)
例如,句子’I love machine learing’ 中,若中心词为"machine", 则上下文词为"love" 和 “learing”
Skip Gram 模型结构

Skip-Gram 模型的目标是通过中心词预测其上下文。其结构分为三个部分: 输入层 -> 隐藏层 -> 输出层
权重矩阵
权重矩阵的定义
在Skip-Gram 模型中,存在两个权重矩阵。输入层到隐藏层的矩阵W和隐藏层到输出层的矩阵W’. 这个两个矩阵分别对应词向量的输入和输出表示
权重矩阵初始化的方法
在 Word2Vec Skip-Gram 模型中, 权重矩阵的初始化是模型训练的起点
目的是为每个词分配一个初始向量表示。常见的初始化方法包括均匀分布初始化 和 正态分布初始化
均匀分布初始化
均匀分布初始化从 固定区间 [-a, a] 内随机采样数值,通常选择较小的范围(如[-0.1,0.1]), 以避免初始值过大导致梯度爆炸,所有值出现的概率相等
示例设定
- 词汇表:
["猫", "狗", "抓"],词向量纬度 d = 2, 词汇表大小 V = 3 - 均匀分布区间: [-0.1, 0.1]
初始化步骤
- 输入矩阵W
-
设置区间为[-0.1,0.1], 词向量纬度 d = 2, 词汇表大小 V = 3
-
初始化输入矩阵 W ∈ R 3 ∗ 2 W in R^{3 * 2} W∈R3∗2

-
每个元素均从[-0.1, 0.1] 中独立随机采样
- 输出矩阵W’
每个输出向量同样从[-0.1, 0.1] 中采样,生成一个 2 * 3 的矩阵

物理意义
- 输入向量和输出向量初始时均为随机小数值,无明确语义
- 例如: "猫"的输入向量为[0.05, -0.03], "狗"的输出向量为[-0.04, 0.08]
均匀分布初始化的特点
- 优点: 简单易实现,避免初始值过大或过小导致梯度问题
- 缺点: 在有限区间内分布均匀,可能缺乏对数据分布的适应性
正态分布初始化
正态分布初始化从 均值0、标准差为 σ 的正态分布中采样 (
μ
mu
μ = 0,
σ
sigma
σ = 0.01),使初始值集中在0附近
示例设定:
- 词汇表同上(
["猫", "狗", "抓"]), d = 2, V = 3 - 正态分布参数: μ mu μ = 0, σ sigma σ = 0.01
示例:
-
设定 μ mu μ = 0, σ sigma σ = 0.01。 词向量纬度 d = 2, 词汇表大小 V = 3
-
初始化输入矩阵 W ∈ R 3 ∗ 2 W in R^{3 * 2} W∈R3∗2

-
每个元素均从 η eta η (0,0.01) 中独立采样
初始化后的前向传播示例
以均匀分布初始化后的输入矩阵W和输出W‘为例,假设中心词为"猫"(对应 one-hot 向量 x = [ 1 , 0 , 0 ] T [1,0,0]^{T} [1,0,0]T):
-
输入层 -> 隐藏层:

-
隐藏层 -> 输出层:
计算每个词的得分 u j = h T u j u_{j}=h^{T}u_{j} uj=hTuj:

通过Softmax 计算概率

目标函数
假设上下文词 “抓”, 对应的one-hot 标签为: [0,1,0]
交叉嫡损失函数L为:
L =
−
(
0
∗
log
(
0.33
)
+
1
∗
log
(
0.33
)
+
0
∗
log
(
0.33
)
)
-(0 * log(0.33) + 1 * log(0.33) + 0 * log(0.33))
−(0∗log(0.33)+1∗log(0.33)+0∗log(0.33))





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结