【万字长文】Word2Vec计算详解(二)Skip-gram模型
【万字长文】Word2Vec计算详解(二)Skip-gram模型
写在前面
本篇介绍Word2Vec中的第二个模型Skip-gram模型
【万字长文】Word2Vec计算详解(一)CBOW模型 markdown行 9000+
【万字长文】Word2Vec计算详解(二)Skip-gram模型 markdown行 12000+
【万字长文】Word2Vec计算详解(三)分层Softmax与负采样 markdown行 18000+
Skip-gram模型
Skip-gram 模型是自然语言处理(NLP)中 Word2Vec 的一种重要模型。与 CBOW 正好反过来,Skip-gram的主要思想是通过输入某个单词,要求预测它的上下文单词。
模型结构
Skip-gram 模型的输入是目标单词的one-hot向量,通过线性变换形成预测上下文单词的向量,然后再通过一次线性变换得到每一个上下文单词的得分表,最后经过多分类得到要预测的上下文单词。Skip-gram 的模型结构如下图所示。

预处理
在正式介绍模型输入前,需要简单介绍模型输入前的处理。模型的预处理与 CBOW 模型的预处理一致,需要得到词汇表的 one-hot表示,这里详细可以参考 CBOW 模型的预处理。
模型输入
在模型中,将目标单词表示为独热编码(one-hot encoding)向量然后作为 Skip-gram 模型的输入 x i x_i xi, x i ∈ R V × 1 x_i \in \mathbb{R}^{V \times 1} xi∈RV×1, i i i为目标单词所在位置。
权重输入层
在这一层,我们将的得到 one-hot 编码的目标单词 x i ∈ R V × 1 x_i \in \mathbb{R}^{V \times 1} xi∈RV×1 与隐藏层的权重输入矩阵 W W W 相乘再加上置偏值 b b b 得到隐藏层向量 h h h。其中 W ∈ R D × V W \in \mathbb{R}^{D \times V} W∈RD×V, b ∈ R D × 1 b \in \mathbb{R}^{D \times 1} b∈RD×1, h ∈ R D × 1 h \in \mathbb{R}^{D \times 1} h∈RD×1。写成矩阵的形式为
h = W x i + b h = Wx_i + b h=Wxi+b
权重输出层
我们将得到 h h h 与隐藏层的权重输出矩阵 W j ′ ∈ R V × D W_j' \in \mathbb{R}^{V \times D} Wj′∈RV×D 相乘再加上置偏值 b j ′ ∈ R V × 1 b_j' \in \mathbb{R}^{V \times 1} bj′∈RV×1 得到多个上下文单词得分的向量 S j ∈ R V × 1 S_j \in \mathbb{R}^{V \times 1} Sj∈RV×1, S = ( S 1 , S 2 , … , S 2 C ) T S = ( S_1, S_2, \dots, S_{2C})^T S=(S1,S2,…,S2C)T。其中 W j W_j Wj 表示为位置索引为 j j j 处的预测的上下文单词的权重输出矩阵, b j b_j bj 表示为位置索引为 j j j 处的预测的上下文单词的权重矩阵对应的置偏, S j S_j Sj 表示为位置索引为 j j j 处的预测的上下文单词的得分。其中, j = 1 , 2 , 3 , ⋯ , 2 C j = 1,2,3,\dotsm,2C j=1,2,3,⋯,2C, C C C为窗口大小,要预测窗口大小为 C C C 的上下文,就要预测位置为 j j j上的前 C C C个单词和后 C C C个单词,总共为 2 C 2C 2C 个单词。将上面运算写成矩阵的形式为
S j = W j ′ h + b j ′ S_j = W_j'h + b_j' Sj=Wj′h+bj′
其中 j = 1 , 2 , … , C j = 1,2,\dots,C j=1,2,…,C为上文索引, j = C + 1 , C + 2 , … , 2 C j = C+1,C+2,\dots,2C j=C+1,C+2,…,2C为下文索引,最后构成总的上下文索引。我们定义 S j = ( S j ( 0 ) , S j ( 1 ) , … , S j ( V − 1 ) ) T S_j = (S_j(0),S_j(1),\dots,S_j(V-1))^T Sj=(Sj(0),Sj(1),…,Sj(V−1))T,方便后面使用。
Softmax层
我们将输出层得到的的得分 S j S_j Sj用 Softmax 处理为概率 P j P_j Pj。 P j = ( P j ( 0 ) , P j ( 1 ) , … , P j ( V − 1 ) ) T P_j = (P_j(0), P_j(1), \dots, P_j(V-1))^T Pj=(Pj(0),Pj(1),…,Pj(V−1))T, P j P_j Pj 表示位置索引为 j j j 处的上下文单词的概率向量。其中 P j ∈ R V × 1 P_j \in \mathbb{R}^{V \times 1} Pj∈RV×1, S j ( k ) S_j(k) Sj(k)表示得分向量 S j S_j Sj 第 k k k 行对应位置的得分值。 P j ( k ) P_j(k) Pj(k)表示向量 P j P_j Pj 第 k k k 行对应位置的概率值。Softmax 公式见 (\ref{SG02})。运算写成矩阵的形式为
P j ( k ) = Softmax ( S j ) = exp ( S j ( k ) ) ∑ l = 0 V − 1 exp ( S j ( l ) ) P_j(k) = \text{Softmax}(S_{j}) =\frac{\exp(S_{j}(k))}{ \sum\limits_{l=0}^{V-1} \exp(S_j(l))} Pj(k)=Softmax(Sj)=l=0∑V−1exp(Sj(l))exp(Sj(k))
模型输出
模型的输出是在 P P P 中取出最大概率对应位置的值设为1,其他位置设置为0,我们将得到一个one-hot编码。从该one-hot编码我们可以找到对应的单词,我们将其作为预测的上下文单词结果。这就是 Skip-gram 模型的输出。
简单的Skip-gram例子
下面给定一个例子来解释 Skip-gram 模型的计算。假设语料库为 text = ‘The cat plays in the garden, and the cat chases the mouse in the garden.’ 我们使用预处理给处给出的函数 preprocess 和 convert_one_hot 进行处理,分别得到以下结果。
| index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| x i x_i xi | x 0 x_0 x0 | x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | x 5 x_5 x5 | x 6 x_6 x6 | x 7 x_7 x7 | x 8 x_8 x8 | x 9 x_9 x9 |
| word | the | cat | plays | in | garden | , | and | chases | mouse | . |
preprocess 函数得到后的结果(词汇表)
由上表展示了词汇表的信息,我们得到词汇表的大小 V = 10 V = 10 V=10。下面是 转换得到的one-hot矩阵我们标记其为 X X X。 X X X 中对应的一列为相应索引单词的 one-hot向量,即用 x i x_i xi表示该索引位置为 i i i 的one-hot向量。
X o n e h o t = ( x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 , x 9 ) = [ 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 ] X_{onehot} = (x_0, x_1, x_2,x_3,x_4,x_5,x_6, x_7,x_8,x_9) = \begin{bmatrix} 1&0&0&0&0&0&0&0&0&0\\ 0&1&0&0&0&0&0&0&0&0\\ 0&0&1&0&0&0&0&0&0&0\\ 0&0&0&1&0&0&0&0&0&0\\ 0&0&0&0&1&0&0&0&0&0\\ 0&0&0&0&0&1&0&0&0&0\\ 0&0&0&0&0&0&1&0&0&0\\ 0&0&0&0&0&0&0&1&0&0\\ 0&0&0&0&0&0&0&0&1&0\\ 0&0&0&0&0&0&0&0&0&1 \end{bmatrix} Xonehot=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)= 1000000000010000000000100000000001000000000010000000000100000000001000000000010000000000100000000001
我们假设窗口大小 C = 2 C = 2 C=2,隐藏层的维数 D = 4 D = 4 D=4 ,并且给定 “plays” 的上下文进行预测。我们可以得到模型输入是 x 2 x_2 x2,对应单词为 “plays”。则 X = ( x 2 ) = ( 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) T X = (x_2) = (0,0,1,0,0,0,0,0,0,0)^T X=(x2)=(0,0,1,0,0,0,0,0,0,0)T。 我们对输入权重权重矩阵 W W W 和置偏值 b b b 进行初始化。
W = [ − 0.2047 0.4789 − 0.5194 − 0.5557 1.9657 1.3934 0.0929 0.2817 0.769 1.2464 1.0071 − 1.2962 0.2749 0.2289 1.3529 0.8864 − 2.0016 − 0.3718 1.669 − 0.4385 − 0.5397 0.4769 3.2489 − 1.0212 − 0.577 0.1241 0.3026 0.5237 0.0009 1.3438 − 0.7135 − 0.8311 − 2.3702 − 1.8607 − 0.8607 0.5601 − 1.2659 0.1198 − 1.0635 0.3328 ] W = \begin{bmatrix} -0.2047 & 0.4789 & -0.5194 & -0.5557 & 1.9657 & 1.3934 & 0.0929 & 0.2817 & 0.769 & 1.2464\\ 1.0071 & -1.2962 & 0.2749 & 0.2289 & 1.3529 & 0.8864 & -2.0016 & -0.3718 & 1.669 & -0.4385\\ -0.5397 & 0.4769 & 3.2489 & -1.0212 & -0.577 & 0.1241 & 0.3026 & 0.5237 & 0.0009 & 1.3438\\ -0.7135 & -0.8311 & -2.3702 & -1.8607 & -0.8607 & 0.5601 & -1.2659 & 0.1198 & -1.0635 & 0.3328 \end{bmatrix} W= −0.20471.0071−0.5397−0.71350.4789−1.29620.4769−0.8311−0.51940.27493.2489−2.3702−0.55570.2289−1.0212−1.86071.96571.3529−0.577−0.86071.39340.88640.12410.56010.0929−2.00160.3026−1.26590.2817−0.37180.52370.11980.7691.6690.0009−1.06351.2464−0.43851.34380.3328
b = [ 1.1274 − 0.5683 0.3093 − 0.5773 ] b = \begin{bmatrix} 1.1274 \\ -0.5683 \\ 0.3093 \\ -0.5773 \end{bmatrix} b= 1.1274−0.56830.3093−0.5773
接下来是权重输入层的运算。我们将 W W W 与 X X X 进行矩阵乘法运算计算得到 h h h。
h = W X + b = [ − 0.5194 0.2748 3.2488 − 2.3701 ] T h = WX + b = \begin{bmatrix} -0.5194 & 0.2748 & 3.2488 & -2.3701 \end{bmatrix}^T h=WX+b=[−0.51940.27483.2488−2.3701]T
接下来是权重输出层,我们将 W j ′ W_j' Wj′ 和 b j ′ b_j' bj′进行随机初始化。然后进行运算 W j ′ h + b j ′ W_j'h + b_j' Wj′h+bj′ 得到预测对应上下文的评分 S j S_j Sj。由于窗口大小为 C = 2 C = 2 C=2,所以我们有 2 × C = 2 × 2 = 4 2 \times C = 2 \times 2 = 4 2×C=2×2=4个 需要预测的上下文单词。也就是说有 W 1 ′ , W 2 ′ , W 3 ′ , W 4 ′ W_1',W_2',W_3',W_4' W1′,W2′,W3′,W4′和 b 1 ′ , b 2 ′ , b 3 ′ , b 4 ′ b_1',b_2',b_3',b_4' b1′,b2′,b3′,b4′ 四组权重输出矩阵和置偏值,下面我们计算 S 1 , S 2 , S 3 , S 4 S_1, S_2, S_3, S_4 S1,S2,S3,S4。计算公式为 S j = W j ′ h + b j S_j = W_j'h + b_j Sj=Wj′h+bj。
以 S 1 S_1 S1的计算为例,我们首先初始化 W 1 ′ W_1' W1′和 b 1 ′ b_1' b1′。
W 1 ′ = [ − 2.3594 − 1.3070 0.3312 − 0.0118 − 1.5491 0.8625 0.8529 − 0.6524 0.7236 − 0.6222 0.0513 1.0107 − 0.1315 − 0.1149 0.1181 − 1.5656 − 0.4825 − 0.5894 0.9299 0.2204 − 2.2528 − 0.2745 − 0.4170 1.6347 1.3067 − 0.8239 0.1869 0.6803 − 0.3042 − 0.3674 − 0.4162 − 0.7769 1.9207 0.7273 − 0.9192 − 0.5674 1.2098 − 0.3957 0.8387 − 1.0209 ] , b 1 ′ = [ − 1.1686 − 0.7519 − 0.4937 − 0.8468 − 0.4456 0.6254 − 0.3501 − 1.0522 − 1.0623 − 1.3675 ] W_1' = \begin{bmatrix} -2.3594 & -1.3070 & 0.3312 & -0.0118\\ -1.5491 & 0.8625 & 0.8529 & -0.6524\\ 0.7236 & -0.6222 & 0.0513 & 1.0107\\ -0.1315 & -0.1149 & 0.1181 & -1.5656\\ -0.4825 & -0.5894 & 0.9299 & 0.2204\\ -2.2528 & -0.2745 & -0.4170 & 1.6347\\ 1.3067 & -0.8239 & 0.1869 & 0.6803\\ -0.3042 & -0.3674 & -0.4162 & -0.7769\\ 1.9207 & 0.7273 & -0.9192 & -0.5674 \\ 1.2098 & -0.3957 & 0.8387 & -1.0209 \end{bmatrix}, b_1' =\begin{bmatrix} -1.1686 \\ -0.7519 \\ -0.4937 \\ -0.8468 \\ -0.4456 \\ 0.6254 \\ -0.3501 \\ -1.0522 \\ -1.0623 \\ -1.3675 \end{bmatrix} W1′= −2.3594−1.54910.7236−0.1315−0.4825−2.25281.3067−0.30421.92071.2098−1.30700.8625−0.6222−0.1149−0.5894−0.2745−0.8239−0.36740.7273−0.39570.33120.85290.05130.11810.9299−0.41700.1869−0.4162−0.91920.8387−0.0118−0.65241.0107−1.56560.22041.63470.6803−0.7769−0.5674−1.0209 ,b1′= −1.1686−0.7519−0.4937−0.8468−0.44560.6254−0.3501−1.0522−1.0623−1.3675
于是根据公式 S j = W j ′ h + b j ′ S_j = W_j'h + b_j' Sj=Wj′h+bj′ 计算,有
S 1 = W 1 ′ h + b 1 ′ = [ − 1.0059 3.0113 − 2.6677 4.1419 2.093 − 6.9661 − 0.6537 − 0.3203 − 1.7061 5.4778 ] S_1 = W_1'h + b_1' = \begin{bmatrix} -1.0059 \\ 3.0113 \\ -2.6677 \\ 4.1419 \\ 2.093 \\ -6.9661 \\ -0.6537 \\ -0.3203 \\ -1.7061 \\ 5.4778 \end{bmatrix} S1=W1′h+b1′= −1.00593.0113−2.66774.14192.093−6.9661−0.6537−0.3203−1.70615.4778
同理可计算得到 S 2 S_2 S2, S 3 S_3 S3, S 4 S_4 S4,计算过程如下。
S 2 = W 2 ′ h + b 2 ′ = [ − 0.1995 0.2864 1.3497 1.0048 0.0222 − 0.0100 − 0.9559 − 1.2183 0.6900 − 0.9212 − 1.1577 1.8249 0.9124 2.0037 − 0.7485 − 0.5625 − 0.0363 1.5817 − 1.5693 − 0.1934 − 1.1668 − 0.1391 − 0.0170 0.9890 − 0.4406 1.3206 − 0.3917 0.6355 − 1.6778 1.0459 − 0.1167 1.4402 0.7464 − 0.8687 − 0.8388 − 0.3726 1.2700 − 0.2894 0.2669 − 1.4134 ] [ − 0.5194 0.2748 3.2488 − 2.3701 ] + [ − 0.825 − 0.1326 1.2399 0.6032 0.4683 1.0228 0.2179 1.4366 0.2373 − 0.0302 ] = [ 0.8106 0.0736 − 7.5685 − 0.4352 − 5.0315 − 2.6214 − 3.7044 − 4.5506 − 0.9403 5.9425 ] S_2 = W_2'h + b_2' = \begin{bmatrix} -0.1995 & 0.2864 & 1.3497 & 1.0048 \\ 0.0222 & -0.0100 & -0.9559 & -1.2183 \\ 0.6900 & -0.9212 & -1.1577 & 1.8249 \\ 0.9124 & 2.0037 & -0.7485 & -0.5625 \\ -0.0363 & 1.5817 & -1.5693 & -0.1934 \\ -1.1668 & -0.1391 & -0.0170 & 0.9890 \\ -0.4406 & 1.3206 & -0.3917 & 0.6355 \\ -1.6778 & 1.0459 & -0.1167 & 1.4402 \\ 0.7464 & -0.8687 & -0.8388 & -0.3726 \\ 1.2700 & -0.2894 & 0.2669 & -1.4134 \end{bmatrix} \begin{bmatrix} -0.5194 \\ 0.2748 \\ 3.2488 \\ -2.3701 \end{bmatrix} + \begin{bmatrix} -0.825 \\ -0.1326 \\ 1.2399 \\ 0.6032 \\ 0.4683 \\ 1.0228 \\ 0.2179 \\ 1.4366 \\ 0.2373 \\ -0.0302 \end{bmatrix} = \begin{bmatrix} 0.8106 \\ 0.0736 \\ -7.5685 \\ -0.4352 \\ -5.0315 \\ -2.6214 \\ -3.7044 \\ -4.5506 \\ -0.9403 \\ 5.9425 \end{bmatrix} S2=W2′h+b2′= −0.19950.02220.69000.9124−0.0363−1.1668−0.4406−1.67780.74641.27000.2864−0.0100−0.92122.00371.5817−0.13911.32061.0459−0.8687−0.28941.3497−0.9559−1.1577−0.7485−1.5693−0.0170−0.3917−0.1167−0.83880.26691.0048−1.21831.8249−0.5625−0.19340.98900.63551.4402−0.3726−1.4134 −0.51940.27483.2488−2.3701 + −0.825−0.13261.23990.60320.46831.02280.21791.43660.2373−0.0302 = 0.81060.0736−7.5685−0.4352−5.0315−2.6214−3.7044−4.5506−0.94035.9425
S 3 = W 3 ′ h + b 3 ′ = [ − 1.5420 0.3780 0.0699 1.3272 0.7584 0.0500 − 0.0235 − 1.3326 1.0015 − 0.7262 0.8167 − 0.9975 0.1882 0.0296 0.5850 − 0.0327 1.0954 − 0.5287 − 1.0225 0.6692 0.3536 0.1077 − 1.2242 0.4579 − 0.3014 0.5080 − 0.2723 − 0.7572 0.4270 1.2200 − 1.8448 − 0.1106 2.2247 − 1.2139 0.4352 − 0.9266 − 0.9744 − 0.7343 0.7212 1.2966 ] [ − 0.5194 0.2748 3.2488 − 2.3701 ] + [ − 2.6444 1.4572 − 0.1357 1.2635 − 0.9616 1.1074 − 0.8948 − 0.5762 0.0009 0.9404 ] = [ − 7.3561 5.7478 6.5325 3.5469 − 5.751 − 4.4147 0.0358 − 6.9127 5.989 − 0.6921 ] S_3 = W_3'h + b_3' = \begin{bmatrix} -1.5420 & 0.3780 & 0.0699 & 1.3272 \\ 0.7584 & 0.0500 & -0.0235 & -1.3326 \\ 1.0015 & -0.7262 & 0.8167 & -0.9975 \\ 0.1882 & 0.0296 & 0.5850 & -0.0327 \\ 1.0954 & -0.5287 & -1.0225 & 0.6692 \\ 0.3536 & 0.1077 & -1.2242 & 0.4579 \\ -0.3014 & 0.5080 & -0.2723 & -0.7572 \\ 0.4270 & 1.2200 & -1.8448 & -0.1106 \\ 2.2247 & -1.2139 & 0.4352 & -0.9266 \\ -0.9744 & -0.7343 & 0.7212 & 1.2966 \end{bmatrix} \begin{bmatrix} -0.5194 \\ 0.2748 \\ 3.2488 \\ -2.3701 \end{bmatrix} + \begin{bmatrix} -2.6444 \\ 1.4572 \\ -0.1357 \\ 1.2635 \\ -0.9616 \\ 1.1074 \\ -0.8948 \\ -0.5762 \\ 0.0009 \\ 0.9404 \end{bmatrix} = \begin{bmatrix} -7.3561 \\ 5.7478 \\ 6.5325 \\ 3.5469 \\ -5.751 \\ -4.4147 \\ 0.0358 \\ -6.9127 \\ 5.989 \\ -0.6921 \end{bmatrix} S3=W3′h+b3′= −1.54200.75841.00150.18821.09540.3536−0.30140.42702.2247−0.97440.37800.0500−0.72620.0296−0.52870.10770.50801.2200−1.2139−0.73430.0699−0.02350.81670.5850−1.0225−1.2242−0.2723−1.84480.43520.72121.3272−1.3326−0.9975−0.03270.66920.4579−0.7572−0.1106−0.92661.2966 −0.51940.27483.2488−2.3701 + −2.64441.4572−0.13571.2635−0.96161.1074−0.8948−0.57620.00090.9404 = −7.35615.74786.53253.5469−5.751−4.41470.0358−6.91275.989−0.6921
S 4 = W 4 ′ h + b 4 ′ = [ − 0.9707 − 0.7539 0.2467 − 0.9193 − 0.6605 0.6702 − 2.3042 1.0746 − 0.5031 0.2229 0.4336 0.8506 2.1695 0.7953 0.1527 − 0.9290 0.9809 0.4570 − 0.4028 − 1.6490 0.7021 − 0.6065 − 1.8008 0.5552 0.4988 − 0.6534 − 0.0171 0.7181 − 1.5637 − 0.2477 2.0687 1.2274 − 0.6794 − 0.4706 − 0.5578 1.7551 − 0.6347 − 0.7285 0.9110 0.2523 ] [ − 0.5194 0.2748 3.2488 − 2.3701 ] + [ − 0.1529 0.6095 1.43 − 0.2554 − 1.8245 0.0909 − 1.7414 − 2.4202 0.0652 − 0.6424 ] = [ 3.0653 − 11.3551 0.0944 4.1118 2.0648 − 7.3483 − 3.4239 0.4448 − 7.3677 1.6833 ] S_4 = W_4'h + b_4' = \begin{bmatrix} -0.9707 & -0.7539 & 0.2467 & -0.9193 \\ -0.6605 & 0.6702 & -2.3042 & 1.0746 \\ -0.5031 & 0.2229 & 0.4336 & 0.8506 \\ 2.1695 & 0.7953 & 0.1527 & -0.9290 \\ 0.9809 & 0.4570 & -0.4028 & -1.6490 \\ 0.7021 & -0.6065 & -1.8008 & 0.5552 \\ 0.4988 & -0.6534 & -0.0171 & 0.7181 \\ -1.5637 & -0.2477 & 2.0687 & 1.2274 \\ -0.6794 & -0.4706 & -0.5578 & 1.7551 \\ -0.6347 & -0.7285 & 0.9110 & 0.2523 \end{bmatrix} \begin{bmatrix} -0.5194 \\ 0.2748 \\ 3.2488 \\ -2.3701 \end{bmatrix} + \begin{bmatrix} -0.1529 \\ 0.6095 \\ 1.43 \\ -0.2554 \\ -1.8245 \\ 0.0909 \\ -1.7414 \\ -2.4202 \\ 0.0652 \\ -0.6424 \end{bmatrix} = \begin{bmatrix} 3.0653 \\ -11.3551 \\ 0.0944 \\ 4.1118 \\ 2.0648 \\ -7.3483 \\ -3.4239 \\ 0.4448 \\ -7.3677 \\ 1.6833 \end{bmatrix} S4=W4′h+b4′= −0.9707−0.6605−0.50312.16950.98090.70210.4988−1.5637−0.6794−0.6347−0.75390.67020.22290.79530.4570−0.6065−0.6534−0.2477−0.4706−0.72850.2467−2.30420.43360.1527−0.4028−1.8008−0.01712.0687−0.55780.9110−0.91931.07460.8506−0.9290−1.64900.55520.71811.22741.75510.2523 −0.51940.27483.2488−2.3701 + −0.15290.60951.43−0.2554−1.82450.0909−1.7414−2.42020.0652−0.6424 = 3.0653−11.35510.09444.11182.0648−7.3483−3.42390.4448−7.36771.6833
于是我们得到 S = ( S 1 , S 2 , S 3 , S 4 ) S = (S_1, S_2, S_3, S_4) S=(S1,S2,S3,S4)
S = ( S 1 , S 2 , S 3 , S 4 ) = [ − 1.0059 0.8106 − 7.3561 3.0653 3.0113 0.0736 5.7478 − 11.3551 − 2.6677 − 7.5685 6.5325 0.0944 4.1419 − 0.4352 3.5469 4.1118 2.093 − 5.0315 − 5.751 2.0648 − 6.9661 − 2.6214 − 4.4147 − 7.3483 − 0.6537 − 3.7044 0.0358 − 3.4239 − 0.3203 − 4.5506 − 6.9127 0.4448 − 1.7061 − 0.9403 5.989 − 7.3677 5.4778 5.9425 − 0.6921 1.6833 ] S = (S_1, S_2, S_3, S_4) =\begin{bmatrix} -1.0059 & 0.8106 & -7.3561 & 3.0653 \\ 3.0113 & 0.0736 & 5.7478 & -11.3551 \\ -2.6677 & -7.5685 & 6.5325 & 0.0944 \\ 4.1419 & -0.4352 & 3.5469 & 4.1118 \\ 2.093 & -5.0315 & -5.751 & 2.0648 \\ -6.9661 & -2.6214 & -4.4147 & -7.3483 \\ -0.6537 & -3.7044 & 0.0358 & -3.4239 \\ -0.3203 & -4.5506 & -6.9127 & 0.4448 \\ -1.7061 & -0.9403 & 5.989 & -7.3677 \\ 5.4778 & 5.9425 & -0.6921 & 1.6833 \end{bmatrix} S=(S1,S2,S3,S4)= −1.00593.0113−2.66774.14192.093−6.9661−0.6537−0.3203−1.70615.47780.81060.0736−7.5685−0.4352−5.0315−2.6214−3.7044−4.5506−0.94035.9425−7.35615.74786.53253.5469−5.751−4.41470.0358−6.91275.989−0.69213.0653−11.35510.09444.11182.0648−7.3483−3.42390.4448−7.36771.6833
接下来是 Softmax 层,计算公式即 P j ( k ) = S o f t m a x ( S j ( k ) ) = exp ( S j ( k ) ) ∑ l = 0 V − 1 exp ( S j ( l ) ) P_j(k) = Softmax(S_j(k)) =\frac{\exp(S_j(k))}{ \sum\limits_{l=0}^{V-1} \exp(S_{j}(l))} Pj(k)=Softmax(Sj(k))=l=0∑V−1exp(Sj(l))exp(Sj(k))计算过程如下:
以 P 1 P_1 P1为例计算,我们首先对 S 1 S_1 S1每一个元素都取 e x e^x ex,即 e S 1 ( k ) e^{S_{1}(k)} eS1(k),可以得到
S 1 ′ = [ S 1 ′ ( 0 ) S 1 ′ ( 1 ) S 1 ′ ( 2 ) S 1 ′ ( 3 ) S 1 ′ ( 4 ) S 1 ′ ( 5 ) S 1 ′ ( 6 ) S 1 ′ ( 7 ) S 1 ′ ( 8 ) S 1 ′ ( 9 ) ] T = [ e − 1.0059 e 3.0113 e − 2.6677 e 4.1419 e 2.093 e − 6.9661 e − 0.6537 e − 0.3203 e − 1.7061 e 5.4778 ] T = [ 0.3657 20.3137 0.0694 62.9222 8.1092 0.0009 0.5201 0.7259 0.1815 239.3196 ] T S_1'=\begin{bmatrix} S_{1}'(0) & S_{1}'(1) & S_{1}'(2) & S_{1}'(3) & S_{1}'(4) & S_{1}'(5) & S_{1}'(6) & S_{1}'(7) & S_{1}'(8) & S_{1}'(9) \end{bmatrix}^T =\begin{bmatrix} e^{-1.0059} & e^{3.0113} & e^{-2.6677} & e^{4.1419} & e^{2.093} & e^{-6.9661} & e^{-0.6537} & e^{-0.3203} & e^{-1.7061} & e^{5.4778} \end{bmatrix}^T = \begin{bmatrix}0.3657 & 20.3137 & 0.0694 & 62.9222 & 8.1092 & 0.0009 & 0.5201 & 0.7259 & 0.1815 & 239.3196\end{bmatrix}^T S1′=[S1′(0)S1′(1)S1′(2)S1′(3)S1′(4)S1′(5)S1′(6)S1′(7)S1′(8)S1′(9)]T=[e−1.0059e3.0113e−2.6677e4.1419e2.093e−6.9661e−0.6537e−0.3203e−1.7061e5.4778]T=[0.365720.31370.069462.92228.10920.00090.52010.72590.1815239.3196]T
对 S 1 ′ S_1' S1′中的每个元素 S 1 ′ ( k ) S_1'(k) S1′(k), k = 0 , 2 , … , V − 1 k = 0,2,\dots,V-1 k=0,2,…,V−1 进行求和得到 S u m 1 Sum_1 Sum1,计算过程为
S u m 1 = ∑ l = 0 V − 1 S 1 ′ ( l ) = e − 1.0059 + e 3.0113 + e − 2.6677 + e 4.1419 + e 2.093 + e − 6.9661 + e − 0.6537 + e − 0.3203 + e − 1.7061 + e 5.4778 = 0.3657 + 20.3137 + 0.0694 + 62.9222 + 8.1092 + 0.0009 + 0.5201 + 0.7259 + 0.1815 + 239.3196 = 332.5281 Sum_1 = \sum\limits_{l = 0}^{V-1} S_{1}'(l) \\ = e^{-1.0059} + e^{3.0113} + e^{-2.6677} + e^{4.1419} + e^{2.093} + e^{-6.9661} + e^{-0.6537} + e^{-0.3203} + e^{-1.7061} + e^{5.4778} \\ = 0.3657 + 20.3137 + 0.0694 + 62.9222 + 8.1092 + 0.0009 + 0.5201 + 0.7259 + 0.1815 + 239.3196 \\ = 332.5281 Sum1=l=0∑V−1S1′(l)=e−1.0059+e3.0113+e−2.6677+e4.1419+e2.093+e−6.9661+e−0.6537+e−0.3203+e−1.7061+e5.4778=0.3657+20.3137+0.0694+62.9222+8.1092+0.0009+0.5201+0.7259+0.1815+239.3196=332.5281
然后将 S 1 ′ S_1' S1′ 中的每个元素除以 S u m 1 Sum_1 Sum1 得到 P 1 P_1 P1,即
P 1 = [ S 1 ′ ( 0 ) S 1 ′ ( 1 ) S 1 ′ ( 2 ) S 1 ′ ( 3 ) S 1 ′ ( 4 ) S 1 ′ ( 5 ) S 1 ′ ( 6 ) S 1 ′ ( 7 ) S 1 ′ ( 8 ) S 1 ′ ( 9 ) ] T S u m 0 = [ 0.3657 20.3137 0.0694 62.9222 8.1092 0.0009 0.5201 0.7259 0.1815 239.3196 ] T 332.5281 = [ 0.001 0.061 0.0002 0.1892 0.0243 0 0.0015 0.0021 0.0005 0.7196 ] T P_1 = \frac{\begin{bmatrix} S_{1}'(0) & S_{1}'(1) & S_{1}'(2) & S_{1}'(3) & S_{1}'(4) & S_{1}'(5) & S_{1}'(6) & S_{1}'(7) & S_{1}'(8) & S_{1}'(9) \end{bmatrix}^T}{Sum_0} =\frac{\begin{bmatrix}0.3657 & 20.3137 & 0.0694 & 62.9222 & 8.1092 & 0.0009 & 0.5201 & 0.7259 & 0.1815 & 239.3196\end{bmatrix}^T}{332.5281} =\begin{bmatrix}0.001 & 0.061 & 0.0002 & 0.1892 & 0.0243 & 0 & 0.0015 & 0.0021 & 0.0005 & 0.7196\end{bmatrix}^T P1=Sum0[S1′(0)S1′(1)S1′(2)S1′(3)S1′(4)S1′(5)S1′(6)S1′(7)S1′(8)S1′(9)]T=332.5281[0.365720.31370.069462.92228.10920.00090.52010.72590.1815239.3196]T=[0.0010.0610.00020.18920.024300.00150.00210.00050.7196]T
同理可计算出 P 2 P_2 P2、 P 3 P_3 P3、 P 4 P_4 P4,计算过程如下。首先计算出 S 2 ′ S_2' S2′、 S 3 ′ S_3' S3′、 S 4 ′ S_4' S4′
S 2 ′ = [ S 2 ′ ( 0 ) S 2 ′ ( 1 ) S 2 ′ ( 2 ) S 2 ′ ( 3 ) S 2 ′ ( 4 ) S 2 ′ ( 5 ) S 2 ′ ( 6 ) S 2 ′ ( 7 ) S 2 ′ ( 8 ) S 2 ′ ( 9 ) ] T = [ e 0.8106 e 0.0736 e − 7.5685 e − 0.4352 e − 5.0315 e − 2.6214 e − 3.7044 e − 4.5506 e − 0.9403 e 5.9425 ] T = [ 2.2492 1.0763 0.0005 0.6471 0.0065 0.0727 0.0246 0.0105 0.3905 380.8859 ] T S_2' = \begin{bmatrix} S_{2}'(0) & S_{2}'(1) & S_{2}'(2) & S_{2}'(3) & S_{2}'(4) & S_{2}'(5) & S_{2}'(6) & S_{2}'(7) & S_{2}'(8) & S_{2}'(9) \end{bmatrix}^T =\begin{bmatrix} e^{0.8106} & e^{0.0736} & e^{-7.5685} & e^{-0.4352} & e^{-5.0315} & e^{-2.6214} & e^{-3.7044} & e^{-4.5506} & e^{-0.9403} & e^{5.9425} \end{bmatrix}^T = \begin{bmatrix} 2.2492 & 1.0763 & 0.0005 & 0.6471 & 0.0065 & 0.0727 & 0.0246 & 0.0105 & 0.3905 & 380.8859 \end{bmatrix}^T S2′=[S2′(0)S2′(1)S2′(2)S2′(3)S2′(4)S2′(5)S2′(6)S2′(7)S2′(8)S2′(9)]T=[e0.8106e0.0736e−7.5685e−0.4352e−5.0315e−2.6214e−3.7044e−4.5506e−0.9403e5.9425]T=[2.24921.07630.00050.64710.00650.07270.02460.01050.3905380.8859]T
S 3 ′ = [ S 3 ′ ( 0 ) S 3 ′ ( 1 ) S 3 ′ ( 2 ) S 3 ′ ( 3 ) S 3 ′ ( 4 ) S 3 ′ ( 5 ) S 3 ′ ( 6 ) S 3 ′ ( 7 ) S 3 ′ ( 8 ) S 3 ′ ( 9 ) ] T = [ e − 7.3561 e 5.7478 e 6.5325 e 3.5469 e − 5.751 e − 4.4147 e 0.0358 e − 6.9127 e 5.989 e − 0.6921 ] T = [ 0.0006 313.5002 687.1138 34.7055 0.0031 0.012 1.0364 0.0009 399.0153 0.5005 ] T S_3' = \begin{bmatrix} S_{3}'(0) & S_{3}'(1) & S_{3}'(2) & S_{3}'(3) & S_{3}'(4) & S_{3}'(5) & S_{3}'(6) & S_{3}'(7) & S_{3}'(8) & S_{3}'(9) \end{bmatrix}^T = \begin{bmatrix} e^{-7.3561} & e^{5.7478} & e^{6.5325} & e^{3.5469} & e^{-5.751} & e^{-4.4147} & e^{0.0358} & e^{-6.9127} & e^{5.989} & e^{-0.6921} \end{bmatrix}^T = \begin{bmatrix} 0.0006 & 313.5002 & 687.1138 & 34.7055 & 0.0031 & 0.012 & 1.0364 & 0.0009 & 399.0153 & 0.5005 \end{bmatrix}^T S3′=[S3′(0)S3′(1)S3′(2)S3′(3)S3′(4)S3′(5)S3′(6)S3′(7)S3′(8)S3′(9)]T=[e−7.3561e5.7478e6.5325e3.5469e−5.751e−4.4147e0.0358e−6.9127e5.989e−0.6921]T=[0.0006313.5002687.113834.70550.00310.0121.03640.0009399.01530.5005]T
S 4 ′ = [ S 4 ′ ( 0 ) S 4 ′ ( 1 ) S 4 ′ ( 2 ) S 4 ′ ( 3 ) S 4 ′ ( 4 ) S 4 ′ ( 5 ) S 4 ′ ( 6 ) S 4 ′ ( 7 ) S 4 ′ ( 8 ) S 4 ′ ( 9 ) ] T = [ e 3.0653 e − 11.3551 e 0.0944 e 4.1118 e 2.0648 e − 7.3483 e − 3.4239 e 0.4448 e − 7.3677 e 1.6833 ] T = [ 21.4408 0 1.0989 61.0565 7.8837 0.0006 0.0325 1.5601 0.0006 5.3832 ] T S_4' =\begin{bmatrix} S_{4}'(0) & S_{4}'(1) & S_{4}'(2) & S_{4}'(3) & S_{4}'(4) & S_{4}'(5) & S_{4}'(6) & S_{4}'(7) & S_{4}'(8) & S_{4}'(9) \end{bmatrix}^T = \begin{bmatrix} e^{3.0653} & e^{-11.3551} & e^{0.0944} & e^{4.1118} & e^{2.0648} & e^{-7.3483} & e^{-3.4239} & e^{0.4448} & e^{-7.3677} & e^{1.6833} \end{bmatrix}^T = \begin{bmatrix} 21.4408 & 0 & 1.0989 & 61.0565 & 7.8837 & 0.0006 & 0.0325 & 1.5601 & 0.0006 & 5.3832 \end{bmatrix}^T S4′=[S4′(0)S4′(1)S4′(2)S4′(3)S4′(4)S4′(5)S4′(6)S4′(7)S4′(8)S4′(9)]T=[e3.0653e−11.3551e0.0944e4.1118e2.0648e−7.3483e−3.4239e0.4448e−7.3677e1.6833]T=[21.440801.098961.05657.88370.00060.03251.56010.00065.3832]T
然后计算 S u m 2 Sum_2 Sum2、 S u m 3 Sum_3 Sum3、 S u m 4 Sum_4 Sum4,得到
S u m 2 = ∑ l = 0 V − 1 S 2 ′ ( l ) = e 0.8106 + e 0.0736 + e − 7.5685 + e − 0.4352 + e − 5.0315 + e − 2.6214 + e − 3.7044 + e − 4.5506 + e − 0.9403 + e 5.9425 = 2.2492 + 1.0763 + 0.0005 + 0.6471 + 0.0065 + 0.0727 + 0.0246 + 0.0105 + 0.3905 + 380.8859 = 385.3637 Sum_2 = \sum\limits_{l = 0}^{V-1} S_2'(l) \\ = e^{0.8106} + e^{0.0736} + e^{-7.5685} + e^{-0.4352} + e^{-5.0315} + e^{-2.6214} + e^{-3.7044} + e^{-4.5506} + e^{-0.9403} + e^{5.9425} \\ = 2.2492 + 1.0763 + 0.0005 + 0.6471 + 0.0065 + 0.0727 + 0.0246 + 0.0105 + 0.3905 + 380.8859 \\ = 385.3637 Sum2=l=0∑V−1S2′(l)=e0.8106+e0.0736+e−7.5685+e−0.4352+e−5.0315+e−2.6214+e−3.7044+e−4.5506+e−0.9403+e5.9425=2.2492+1.0763+0.0005+0.6471+0.0065+0.0727+0.0246+0.0105+0.3905+380.8859=385.3637
S u m 3 = ∑ l = 0 V − 1 S 3 ′ ( l ) = e − 7.3561 + e 5.7478 + e 6.5325 + e 3.5469 + e − 5.751 + e − 4.4147 + e 0.0358 + e − 6.9127 + e 5.989 + e − 0.6921 = 0.0006 + 313.5002 + 687.1138 + 34.7055 + 0.0031 + 0.012 + 1.0364 + 0.0009 + 399.0153 + 0.5005 = 1435.8883 Sum_3 = \sum\limits_{l = 0}^{V-1} S_{3}'(l) \\ = e^{-7.3561} + e^{5.7478} + e^{6.5325} + e^{3.5469} + e^{-5.751} + e^{-4.4147} + e^{0.0358} + e^{-6.9127} + e^{5.989} + e^{-0.6921} \\ = 0.0006 + 313.5002 + 687.1138 + 34.7055 + 0.0031 + 0.012 + 1.0364 + 0.0009 + 399.0153 + 0.5005 \\ = 1435.8883 Sum3=l=0∑V−1S3′(l)=e−7.3561+e5.7478+e6.5325+e3.5469+e−5.751+e−4.4147+e0.0358+e−6.9127+e5.989+e−0.6921=0.0006+313.5002+687.1138+34.7055+0.0031+0.012+1.0364+0.0009+399.0153+0.5005=1435.8883
S u m 4 = ∑ l = 0 V − 1 S 4 ′ ( l ) = e 3.0653 + e − 11.3551 + e 0.0944 + e 4.1118 + e 2.0648 + e − 7.3483 + e − 3.4239 + e 0.4448 + e − 7.3677 + e 1.6833 = 21.4408 + 0 + 1.0989 + 61.0565 + 7.8837 + 0.0006 + 0.0325 + 1.5601 + 0.0006 + 5.3832 = 98.4569 Sum_4 = \sum\limits_{l = 0}^{V-1} S_{4}'(l) \\ = e^{3.0653} + e^{-11.3551} + e^{0.0944} + e^{4.1118} + e^{2.0648} + e^{-7.3483} + e^{-3.4239} + e^{0.4448} + e^{-7.3677} + e^{1.6833} \\ = 21.4408 + 0 + 1.0989 + 61.0565 + 7.8837 + 0.0006 + 0.0325 + 1.5601 + 0.0006 + 5.3832 \\ = 98.4569 Sum4=l=0∑V−1S4′(l)=e3.0653+e−11.3551+e0.0944+e4.1118+e2.0648+e−7.3483+e−3.4239+e0.4448+e−7.3677+e1.6833=21.4408+0+1.0989+61.0565+7.8837+0.0006+0.0325+1.5601+0.0006+5.3832=98.4569
最后进行 P 2 P_2 P2、 P 3 P_3 P3、 P 4 P_4 P4的计算
P 2 = [ S 2 ′ ( 0 ) S 2 ′ ( 1 ) S 2 ′ ( 2 ) S 2 ′ ( 3 ) S 2 ′ ( 4 ) S 2 ′ ( 5 ) S 2 ′ ( 6 ) S 2 ′ ( 7 ) S 2 ′ ( 8 ) S 2 ′ ( 9 ) ] T S u m 1 = [ 2.2492 1.0763 0.0005 0.6471 0.0065 0.0727 0.0246 0.0105 0.3905 380.8859 ] T 385.3637 = [ 0.0057 0.0027 0 0.0016 0 0.0001 0 0 0.001 0.9883 ] T P_2 = \frac{\begin{bmatrix} S_{2}'(0) & S_{2}'(1) & S_{2}'(2) & S_{2}'(3) & S_{2}'(4) & S_{2}'(5) & S_{2}'(6) & S_{2}'(7) & S_{2}'(8) & S_{2}'(9) \end{bmatrix}^T}{Sum_1} \\ = \frac{\begin{bmatrix} 2.2492 & 1.0763 & 0.0005 & 0.6471 & 0.0065 & 0.0727 & 0.0246 & 0.0105 & 0.3905 & 380.8859 \end{bmatrix}^T}{385.3637} \\ =\begin{bmatrix} 0.0057 & 0.0027 & 0 & 0.0016 & 0 & 0.0001 & 0 & 0 & 0.001 & 0.9883 \end{bmatrix}^T P2=Sum1[S2′(0)S2′(1)S2′(2)S2′(3)S2′(4)S2′(5)S2′(6)S2′(7)S2′(8)S2′(9)]T=385.3637[2.24921.07630.00050.64710.00650.07270.02460.01050.3905380.8859]T=[0.00570.002700.001600.0001000.0010.9883]T
P 3 = [ S 3 ′ ( 0 ) S 3 ′ ( 1 ) S 3 ′ ( 2 ) S 3 ′ ( 3 ) S 3 ′ ( 4 ) S 3 ′ ( 5 ) S 3 ′ ( 6 ) S 3 ′ ( 7 ) S 3 ′ ( 8 ) S 3 ′ ( 9 ) ] T S u m 2 = [ 0.0006 313.5002 687.1138 34.7055 0.0031 0.012 1.0364 0.0009 399.0153 0.5005 ] T 1435.8883 = [ 0 0.2183 0.4785 0.0241 0 0 0.0007 0 0.2778 0.0002 ] T P_3 = \frac{\begin{bmatrix} S_{3}'(0) & S_{3}'(1) & S_{3}'(2) & S_{3}'(3) & S_{3}'(4) & S_{3}'(5) & S_{3}'(6) & S_{3}'(7) & S_{3}'(8) & S_{3}'(9) \end{bmatrix}^T}{Sum_2} \\ = \frac{\begin{bmatrix} 0.0006 & 313.5002 & 687.1138 & 34.7055 & 0.0031 & 0.012 & 1.0364 & 0.0009 & 399.0153 & 0.5005 \end{bmatrix}^T}{1435.8883} \\ = \begin{bmatrix} 0 & 0.2183 & 0.4785 & 0.0241 & 0 & 0 & 0.0007 & 0 & 0.2778 & 0.0002 \end{bmatrix}^T P3=Sum2[S3′(0)S3′(1)S3′(2)S3′(3)S3′(4)S3′(5)S3′(6)S3′(7)S3′(8)S3′(9)]T=1435.8883[0.0006313.5002687.113834.70550.00310.0121.03640.0009399.01530.5005]T=[00.21830.47850.0241000.000700.27780.0002]T
P 4 = [ S 4 ′ ( 0 ) S 4 ′ ( 1 ) S 4 ′ ( 2 ) S 4 ′ ( 3 ) S 4 ′ ( 4 ) S 4 ′ ( 5 ) S 4 ′ ( 6 ) S 4 ′ ( 7 ) S 4 ′ ( 8 ) S 4 ′ ( 9 ) ] T S u m 3 = [ 21.4408 0 1.0989 61.0565 7.8837 0.0006 0.0325 1.5601 0.0006 5.3832 ] T 98.4569 = [ 0.2177 0 0.0111 0.6201 0.08 0 0.0002 0.0158 0 0.0546 ] T P_4 = \frac{\begin{bmatrix} S_{4}'(0) & S_{4}'(1) & S_{4}'(2) & S_{4}'(3) & S_{4}'(4) & S_{4}'(5) & S_{4}'(6) & S_{4}'(7) & S_{4}'(8) & S_{4}'(9) \end{bmatrix}^T}{Sum_3} \\ = \frac{\begin{bmatrix} 21.4408 & 0 & 1.0989 & 61.0565 & 7.8837 & 0.0006 & 0.0325 & 1.5601 & 0.0006 & 5.3832 \end{bmatrix}^T}{98.4569} \\ =\begin{bmatrix} 0.2177 & 0 & 0.0111 & 0.6201 & 0.08 & 0 & 0.0002 & 0.0158 & 0 & 0.0546 \end{bmatrix}^T P4=Sum3[S4′(0)S4′(1)S4′(2)S4′(3)S4′(4)S4′(5)S4′(6)S4′(7)S4′(8)S4′(9)]T=98.4569[21.440801.098961.05657.88370.00060.03251.56010.00065.3832]T=[0.217700.01110.62010.0800.00020.015800.0546]T
于是我们得到 P = ( P 1 , P 2 , P 3 , P 4 ) P = (P_1, P_2, P_3, P_4) P=(P1,P2,P3,P4)
P = ( P 1 , P 2 , P 3 , P 4 ) = [ P 1 ( 0 ) P 2 ( 0 ) P 3 ( 0 ) P 4 ( 0 ) P 1 ( 1 ) P 2 ( 1 ) P 3 ( 1 ) P 4 ( 1 ) P 1 ( 2 ) P 2 ( 2 ) P 3 ( 2 ) P 4 ( 2 ) P 1 ( 3 ) P 2 ( 3 ) P 3 ( 3 ) P 4 ( 3 ) P 1 ( 4 ) P 2 ( 4 ) P 3 ( 4 ) P 4 ( 4 ) P 1 ( 5 ) P 2 ( 5 ) P 3 ( 5 ) P 4 ( 5 ) P 1 ( 6 ) P 2 ( 6 ) P 3 ( 6 ) P 4 ( 6 ) P 1 ( 7 ) P 2 ( 7 ) P 3 ( 7 ) P 4 ( 7 ) P 1 ( 8 ) P 2 ( 8 ) P 3 ( 8 ) P 4 ( 8 ) P 1 ( 9 ) P 2 ( 9 ) P 3 ( 9 ) P 4 ( 9 ) ] = [ 0.001 0.0057 0 0.2177 0.061 0.0027 0.2183 0 0.0002 0 0.4785 0.0111 0.1892 0.0016 0.0241 0.6201 0.0243 0 0 0.08 0 0.0001 0 0 0.0015 0 0.0007 0.0002 0.0021 0 0 0.0158 0.0005 0.001 0.2778 0 0.7196 0.9883 0.0002 0.0546 ] P = (P_1, P_2, P_3, P_4) = \begin{bmatrix} P_{1}(0) & P_{2}(0) & P_{3}(0) & P_{4}(0) \\ P_{1}(1) & P_{2}(1) & P_{3}(1) & P_{4}(1) \\ P_{1}(2) & P_{2}(2) & P_{3}(2) & P_{4}(2) \\ P_{1}(3) & P_{2}(3) & P_{3}(3) & P_{4}(3) \\ P_{1}(4) & P_{2}(4) & P_{3}(4) & P_{4}(4) \\ P_{1}(5) & P_{2}(5) & P_{3}(5) & P_{4}(5) \\ P_{1}(6) & P_{2}(6) & P_{3}(6) & P_{4}(6) \\ P_{1}(7) & P_{2}(7) & P_{3}(7) & P_{4}(7) \\ P_{1}(8) & P_{2}(8) & P_{3}(8) & P_{4}(8) \\ P_{1}(9) & P_{2}(9) & P_{3}(9) & P_{4}(9) \\ \end{bmatrix} = \begin{bmatrix} 0.001 & 0.0057 & 0 & 0.2177 \\ 0.061 & 0.0027 & 0.2183 & 0 \\ 0.0002 & 0 & 0.4785 & 0.0111 \\ 0.1892 & 0.0016 & 0.0241 & 0.6201 \\ 0.0243 & 0 & 0 & 0.08 \\ 0 & 0.0001 & 0 & 0 \\ 0.0015 & 0 & 0.0007 & 0.0002 \\ 0.0021 & 0 & 0 & 0.0158 \\ 0.0005 & 0.001 & 0.2778 & 0 \\ 0.7196 & 0.9883 & 0.0002 & 0.0546 \end{bmatrix} P=(P1,P2,P3,P4)= P1(0)P1(1)P1(2)P1(3)P1(4)P1(5)P1(6)P1(7)P1(8)P1(9)P2(0)P2(1)P2(2)P2(3)P2(4)P2(5)P2(6)P2(7)P2(8)P2(9)P3(0)P3(1)P3(2)P3(3)P3(4)P3(5)P3(6)P3(7)P3(8)P3(9)P4(0)P4(1)P4(2)P4(3)P4(4)P4(5)P4(6)P4(7)P4(8)P4(9) = 0.0010.0610.00020.18920.024300.00150.00210.00050.71960.00570.002700.001600.0001000.0010.988300.21830.47850.0241000.000700.27780.00020.217700.01110.62010.0800.00020.015800.0546
根据 P P P,我们得到 P 1 , P 2 , P 3 , P 4 P_1, P_2, P_3, P_4 P1,P2,P3,P4中概率最大的值分别为 0.7196 0.7196 0.7196、 0.9883 0.9883 0.9883、 0.4785 0.4785 0.4785、 0.6201 0.6201 0.6201,也就是索引位置在 9 9 9、 9 9 9、 2 2 2、 3 3 3位置的单词,对应的one-hot向量为 [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] T [0,0,0,0,0,0,0,0,0,1]^T [0,0,0,0,0,0,0,0,0,1]T、 [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] T [0,0,0,0,0,0,0,0,0,1]^T [0,0,0,0,0,0,0,0,0,1]T、 [ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] T [0,0,1,0,0,0,0,0,0,0]^T [0,0,1,0,0,0,0,0,0,0]T、 [ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] T [0,0,0,1,0,0,0,0,0,0]^T [0,0,0,1,0,0,0,0,0,0]T,也就是单词 ‘.’(句号)、‘.’(句号)、‘plays’、‘in’。于是我们输出预测的上下文单词按顺序依次为 ‘.’(句号)、‘.’(句号)、‘plays’、‘in’。
下面继续依据模型结构中的例子,用来解释损失函数的计算。
损失函数
Skip-gram 模型的损失函数是与 CBOW 模型的损失函数一样,在模型结构中的 CrossEntropyError 模块中,使用交叉熵损失进行计算。交叉熵损失的计算公式如 \ref{equation02}所示。CrossEntropyError 的输入是 Softmax 层计算得到的概率向量 P j ( k ) P_j(k) Pj(k),和正确的监督标签 T T T ,其中 P j = ( P 1 , P 2 , … , P 2 C ) T P_j = (P_1, P_2, \dots, P_{2C})^T Pj=(P1,P2,…,P2C)T,正确的监督标签 T j = [ ( t j ( 1 ) , t j ( 2 ) , … , t j ( V ) ] T T_j = \left[(t_j(1), t_j(2), \dots, t_j(V)\right]^T Tj=[(tj(1),tj(2),…,tj(V)]T 就是正确答案单词的 one-hot 向量。计算出每一个预测单词的损失累加最后得到总损失,计算公式为
L j = − ∑ k = 1 V t k log ( P j ( k ) ) \text{L}_j = - \sum\limits_{k = 1}^{V} t_k\log(P_j(k)) Lj=−k=1∑Vtklog(Pj(k))
Loss = ∑ j = 1 2 C L j \text{Loss} = \sum\limits_{j = 1}^{2C} L_j Loss=j=1∑2CLj
我们使用上面第一个公式,计算交叉熵损失得到损失的结果,并将 2 × C 2 \times C 2×C个交叉熵损失的结果相加得到总的损失结果。
小结
Skip-gram 模型训练的基本步骤包括:
1.将目标单词进行 one-hot 表征作为模型的输入 x i x_i xi,其中词汇表的维度为 V V V,上下文单词数量为 C C C ;
2.然后将目标单词的 one-hot 向量乘以输入层到隐层的权重输入矩阵 W W W 再加上置偏值 b b b得到隐藏层向量 h h h,其中隐藏层的维数为 D D D。计算公式为
h = W x i + b h = Wx_i + b h=Wxi+b
3.将隐藏层向量 h h h 乘以隐藏层到输出层的权重输出矩阵 W j ′ W_j' Wj′ 再加上置偏值 b j ′ b_j' bj′ 得到多个预测的上下文词的得分向量 S j S_j Sj,即
S j = W j ′ h + b j ′ S_j = W_j'h + b_j' Sj=Wj′h+bj′
其中共有 2 × C 2 \times C 2×C对权重数组矩阵和置偏值, j j j为需要预测的上下文单词的索引。
4.将计算得到的得分向量 S j S_j Sj都通过 Softmax 激活处理得到 V V V 维的概率分布 P i P_i Pi,即
P j = Softmax ( S j ) P_j = \text{Softmax}(S_j) Pj=Softmax(Sj)
5.取概率最大的索引作为预测的上下文词;通过概率分布 P j P_j Pj和 one-hot 监督标签 T j T_j Tj 用交叉熵损失计算损失。
我们的目标是通过梯度下降让损失函数变小,使模型学习到如何根据上下文的信息推断出最可能的上下文词,训练结束得到的 W W W 或 W ′ W' W′ 作为训练的副产物就是我们的词向量(矩阵)。
相关文章:
【万字长文】Word2Vec计算详解(二)Skip-gram模型
【万字长文】Word2Vec计算详解(二)Skip-gram模型 写在前面 本篇介绍Word2Vec中的第二个模型Skip-gram模型 【万字长文】Word2Vec计算详解(一)CBOW模型 markdown行 9000 【万字长文】Word2Vec计算详解(二)S…...
随机掉落的项目足迹:解决TypeError: Cannot read properties of undefined (reading ‘push‘)报错
问题引入 下面是request.js中请求拦截器相关的代码 但是运行时却出现了报错 问题解决 useRouter() 是 Vue Router 提供的组合式 API,它只能在 Vue 组件的 setup() 函数中有效。如果在其他地方(例如 Axios 的拦截器中)调用它,可…...
ChatTTS 本地安装和测试
Ubuntu 22服务器,3.9/3.10都可以,但是 3.11不可以 sudo apt install python3.10 apt install python3.10 python3.10-dev #ubuntu 22 安装python3.10对应的pip3.10 # 下载 get-pip.py curl -sS https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 使…...
[Leetcode] 560 Subarray Sum Equals K
题意:给定一个数组求连续的子数组的和为k的有几个 Input: nums [1,1,1], k 2 Output: 2 https://leetcode.com/problems/subarray-sum-equals-k/description/ 首先思考1.因为是subarray sum前缀和很容易想到,那问题就转化成preSum[i] preSum[j] - k…...
TCL Android面试题大全及参考答案
能谈谈Jetpack组件吗? Jetpack 是一套用于 Android 开发的工具和组件库,它可以帮助开发者更高效地构建高质量的 Android 应用。 一、主要组件分类 架构组件: ViewModel:负责存储和管理与界面相关的数据,当屏幕旋转或配置发生变化时,ViewModel 可以帮助保存数据,避免数据…...
JVM错误:OutOfMemoryError: GC overhead limit exceeded
OutOfMemoryError: GC overhead limit exceeded 在Window服务器上跑一个项目,无意中出现服务访问不了,查看日志文档,第一次遇到了这个异常信息。 1. 错误含义 OutOfMemoryError: GC overhead limit exceeded 是 JVM 中的一种错误ÿ…...
Unity网络开发 - C#开源网络通信库PESocket的使用
概述 在现代多人在线游戏中,稳定且高效的网络通信是确保游戏体验的关键。本文将探讨如何利用C#开源网络通信库PESocket来构建一个简单的Unity客户端与.NET控制台服务器之间的实时消息传递系统。通过本例,读者不仅能够了解PESocket的基本用法,…...
【完-网络安全】Shell与脚本
文章目录 1.CLI与GUI2.终端和Shell2.1 Shell 壳层2.2 终端2.3 终端和Shell区别3.标准流 4.PowerShell4.1 管理员与非管理员4.2 指令4.3 重定向4.4 管道 5.环境变量5.1 影响范围5.2环境变量的作用5.3 常见的环境变量 6.脚本 1.CLI与GUI CLI命令行界面(CLl,Command Line Interfa…...
磁盘标签和分区标签
在Windows中,我们为分区命名,那个名字就是「分区标签」。所以说“分区标签”是给分区的一个名字。 「磁盘标签」其实是我们经常说的「分区表」,比如MBR、GPT等等。而「分区标签」,虽然叫做“分区”标签,但它则是文件系…...
关于摩托车一键启动无钥匙进入、智能科技创新
摩托车一键启动无钥匙进入功能 一、工作原理 摩托车的一键启动无钥匙进入功能采用了世界最先进的RFID无线射频技术和最先进的车辆身份编码识别系统,率先应用小型化、小功率射频天线的开发方案,并成功融合了遥控系统和无钥匙系统,沿用了传统…...
怎么找矩阵系统,怎么源码搭建,源头技术开发需要哪些支持
一、引言 在进行矩阵系统源码搭建时,选择合适的工具至关重要。正确的工具选择不仅可以提高开发效率,还能确保系统的稳定性、可扩展性和性能。本文将探讨在矩阵系统源码搭建过程中如何选择合适的工具。 二、前端开发工具选择 前端框架 React:由…...
云原生化 - 工具镜像(简约版)
在微服务和云原生环境中,容器化的目标之一是尽可能保持镜像小型化以提高启动速度和减少安全风险。然而,在实际操作中,有时候需要临时引入一些工具来进行调试、监控或问题排查。Kubernetes提供了临时容器(ephemeral containers&…...
uni-app如何搭建项目(一步一步教程)
来来来,看这里 uni-app新建项目教程uni-app项目结构 首先我们要有一个HBuilder这个软件,然后我们来搭建uni-app项目 uni-app新建项目教程 首先我们打开这个HBuilder软件,好我们就出现这个界面,我们点击新建项目 然后我们选择…...
javascript中原型链(__proto__)与原型(prototype)
JavaScript中原型链(proto)与原型(prototype) 在JavaScript中,理解原型链(__proto__)和原型(prototype)对于深入掌握面向对象编程至关重要。本文将通过示例代码,详细解析__proto__和prototype之间的关系&a…...
基于多种机器学习的酒店客户流失预测模型的研究与实现
文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍实现过程 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 项目背景: 在当今竞争激烈的酒店行业中,预测和防止客户流…...
Unity实现自定义图集(三)
以下内容是根据Unity 2020.1.0f1版本进行编写的 1、实现编辑器模式下进游戏前Pack全部自定义图集 同Unity的图集一样,Unity的编辑器模式会在进游戏前把全部的SpriteAtlas都打一次图集,如图: 我们也实现这样的效果。 首先需要获取全部的图集路径。因为目前使用的是以.…...
【测开面试真题】
针对地图导航设计测试用例 文章目录 1. selenium 定位元素的方式有几种?2. 自动化测试能够取代人工测试吗?3. 什么是回归测试? 1. selenium 定位元素的方式有几种? 🐧①通过CSS选择器定位;🐧②…...
RelationGraph实现工单进度图——js技能提升
直接上图: 从上图中可以看到整个工单的进度是从【开始】指向【PCB判责】【完善客诉】【PCBA列表】,同时【完善客诉】又可以同时指向【PCB判责】【PCBA列表】,后续各自指向自己的进度。 直接上代码: 1.安装 1.1 Npm 方式 npm …...
针对脚本爬虫攻击的防御策略与实现
随着互联网的发展,网站和应用程序面临着越来越多的自动化攻击,其中包括使用脚本进行的大规模数据抓取,即所谓的“爬虫攻击”。这类攻击不仅影响网站性能,还可能导致敏感数据泄露。本文将探讨如何识别爬虫攻击,并提供一…...
JVM发展历程
JVM发展历程 Sun Classic VM 早在1996年Java1.0版本的时候,Sun公司发布了一款名为sun classic VM的Java虚拟机,它同时也是世界上第一款商用Java虚拟机,JDK1.4时完全被淘汰。这款虚拟机内部只提供解释器。现在还有及时编译器,因此…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
