skip-gram目的:给定一个单词,预测其它单词出现的概率。

模型基本组件:

  • one-hot vector: wiw_i,为中心节点的独热表示,大小为 1×V1\times VVV为节点个数;
  • First matrix:W1W_1,第一个矩阵,大小为 V×dV\times d,每一行表示一个节点的表示向量;
  • Second matrix:W2W_2,第二个矩阵,大小为 d×Vd\times V,每一列表示一个节点的表示向量;
  • Similarity vector:scs_c,大小为 1×V1\times V,其中元素表示两个节点的相似性,用内积来表示;
  • Softmax Function:e(vi,vj)k=1Ve(vi,vj)\frac{e^{(v_i, v_j)}}{\sum_{k=1}^{V}{e^{(v_i, v_j)}}},可以将向量变成一个和为1的概率分布,其中 viv_i 表示中心词ii的表示向量,大小为 1×d1\times d

预测过程
Step1vi=wi×W1v_i=w_i\times W_1,得到中心词ii的表示向量,大小为 1×d1\times d
Step2sc=vi×W2s_c=v_i\times W_2,这一步可以得到中心词 ii 与其它单词的相似性,值越大说明两个向量越相似;
Step3:Softmax(scs_c),输出每个单词出现的概率,依据概率大小进行预测。

模型训练
假设:近邻的两个单词,其表示向量应该是相似的。
将所有邻近的单词对依次作为输入进行训练,以单词 ii 和单词 jj 为例,其向量表示分别为 viv_ivjv_j,则可以通过最大化似然函数来训练模型,即最大化 P(wjwi)P(w_j|w_i),加上 loglog,并且最小化其负数,目标函数变为:log(P(wjwi))-log(P(w_j|w_i))。因为

P(wjwi)=e(vi,vj)k=1Ve(vi,vj)P(w_j|w_i)=\frac{e^{(v_i, v_j)}}{\sum_{k=1}^{V}{e^{(v_i, v_j)}}}

所以,模型优化目标为:

min L=log(e(vi,vj)k=1Ve(vi,vj))\mathcal{L} =-log(\frac{e^{(v_i, v_j)}}{\sum_{k=1}^{V}{e^{(v_i, v_j)}}})

可变形为:

min L=[(vi,vj)log(k=1Ve(vi,vj))]\mathcal{L} = -[(v_i, v_j) - log(\sum_{k=1}^{V}{e^{(v_i, v_j)}})]

上式更新策略:采用梯度下降法,分别对 viv_ivjv_j 求偏导,具体为:

  • 更新 viv_i

dLdvi=[vjk=1V(e(vi,vk)×vk)k=1V(e(vi,vk)]\frac{d\mathcal{L}}{dv_i}=-[v_j-\frac{\sum_{k=1}^{V}(e^{(v_i, v_k)}\times v_k)}{\sum_{k=1}^{V}(e^{(v_i, v_k)}}]

设学习率为 r1r_1,则 viv_i 的更新规则为:

vi=vir1×([vjk=1V(e(vi,vk)×vk)k=1V(e(vi,vk)])v_i=v_i-r_1\times(-[v_j-\frac{\sum_{k=1}^{V}(e^{(v_i, v_k)}\times v_k)}{\sum_{k=1}^{V}(e^{(v_i, v_k)}}])

  • 更新 vjv_j

dLdvj=[vivi×e(vi,vj)k=1Ve(vi,vk)]\frac{d\mathcal{L}}{dv_j}=-[v_i-v_i\times\frac{e^{(v_i, v_j)}}{\sum_{k=1}^{V}e^{(v_i, v_k)}}]

设学习率为 r2r_2,则 vjv_j 的更新规则为:

vj=vjr2×([vivi×e(vi,vj)k=1Ve(vi,vk)])v_j=v_j-r_2\times(-[v_i-v_i\times\frac{e^{(v_i, v_j)}}{\sum_{k=1}^{V}e^{(v_i, v_k)}}])

存在问题
模型训练更新 W1W_1W2W_2 时计算量太大,特别是每一次 k=1Ve(vi,vk)\sum_{k=1}^{V}e^{(v_i, v_k)} 这一项的计算,如果训练的样本数特别大的话,这个计算量过大。

自己的推导过程:
skip-gram笔记
参考文章:
直观理解skip-gram模型
skip-gram,单词向量化算法及其数学原理

相关文章:

  • 2021-10-22
  • 2022-01-24
  • 2022-12-23
  • 2021-05-18
  • 2022-01-23
  • 2021-08-18
  • 2021-07-25
  • 2021-05-17
猜你喜欢
  • 2021-09-08
  • 2021-06-16
  • 2021-07-24
  • 2021-09-25
  • 2021-10-26
  • 2022-01-05
相关资源
相似解决方案