word2vec Parameter Learning Explained学习笔记

目录


原因:

  • 看了几篇提及CBOW(Continuous Bag-of-Word)的综述,都没直接看懂。综述中都指向这篇文章的这张图。
    word2vec Parameter Learning Explained学习笔记_第1张图片

word2vec是一个预训练(pretrained)模型,在大量语料上训练词向量(或者称为词嵌入,word embedding)。尽管训练语料与应用场景不尽相同,但实验表明,对下游(downstream)应用效果良好。

CBOW的目的是通过上下文(context)预测目标词(target word)。举例来说,“I like this cute very much”,其中就是要预测的目标词,而上下文指的是与目标词距离为k的窗口内的词,如果窗口大小m=2,则上下文为“this cute”和“very much”。N-gram只考虑目标词前面的词。

我的理解:CBOW的训练模型,以m=1为例,训练数据train_data为多段文本的集合,其中每段文本,以text表示,可以得到len(text)-2个训练样本。例如,text=‘I love Tom Hank’,则训练样本两个,分别为‘I love Tom’和‘love Tom Hank’,目标词分别为‘love’和‘Tom’。输入张量shape=(None,sequence_length),其中第一维为None,代表输入个数,第二维为sequence_length,大小为2m+1。然后,送入嵌入Embedding层。然后,Dense层,最后,softmax层,得到vocabulary中每个词的概率。

实际上,采用bigram模型,即只考虑上下文中的一个词(没说是左侧还是右侧),也没有Embedding层,输入是这个词one-hot编码,也就是说,编码长度是vocabulary的大小V。输入是V维列向量。对于vocabulary中的第k个word x k \textbf{x}_k xk,只有第k维=1,其余为0。

模型三层,输入层,隐藏层(全连接+softmax),输出层。

  • 输入层——隐藏层之间的权重矩阵 W \textbf{W} W V × N V\times N V×N维,隐藏层——输出层之间的权重矩阵 W ′ \textbf{W}' W N × V N\times V N×V维矩阵。
    隐藏层的输入(或者说输入层的输出)是 W T x \textbf{W}^\textrm{T}\textbf{x} WTx,即N维列向量 h \textbf{h} h。将 W \textbf{W} W写作列向量的形式,即 W = ( w 1 , … , w V ) T \textbf{W}=(\textbf{w}_1,\ldots , \textbf{w}_V)^\textrm{T} W=(w1,,wV)T。因为输入 x \textbf{x} x只有第k维=1,其余为0,所以
    h = W T x = ( w 1 , … , w V ) x = w k \textbf{h}=\textbf{W}^\textrm{T}\textbf{x}=(\textbf{w}_1,\ldots , \textbf{w}_V)\textbf{x}=\textbf{w}_k h=WTx=(w1,,wV)x=wk
    这里, w k \textbf{w}_k wk是第k个word的向量表示, x k \textbf{x}_k xk是第k个word的one-hot表示。
    This implies that the link (activation) function of the hidden layer units is simply linear (i.e., directly passing its weighted sum of inputs to the next layer).
  • 隐藏层——输出层之间的权重矩阵 W ′ \textbf{W}' W N × V N\times V N×V维矩阵,可以表示为 W ′ = ( w 1 ′ , … , w N ′ ) T \textbf{W}'=(\textbf{w}'_1,\ldots , \textbf{w}'_N)^\textrm{T} W=(w1,,wN)T W ′ T h = ( w 1 ′ , … , w N ′ ) h = ( w 1 ′ h , … , w N ′ h ) \textbf{W}'^\textrm{T}\textbf{h}=(\textbf{w}'_1,\ldots , \textbf{w}'_N)\textbf{h}=(\textbf{w}'_1\textbf{h},\ldots , \textbf{w}'_N\textbf{h}) WTh=(w1,,wN)h=(w1h,,wNh)。其中,每个 w i ′ h = ( s 1 , … , s N ) \textbf{w}'_i\textbf{h}=(s_1,\ldots,s_N) wih=(s1,,sN)代表第i个word的分数score。
    softmax函数计算给定上下文词 w C w_C wC每个word w j w_j wj的后验概率posterior probability:
    p ( w j ∣ w C ) = y j = exp ⁡ ( s j ) ∑ j ′ = 1 V exp ⁡ ( s j ′ ) p(w_j|w_C)=y_j=\frac{\exp(s_j)}{\sum_{j'=1}^{V}\exp(s_j')} p(wjwC)=yj=j=1Vexp(sj)exp(sj)

skip-gram与CBOW相反,是通过中心词预测上下文。

  • 此外,word2vec模型与CBOW和skip-gram的关系是什么?(后面再写)

word2vec是一个预训练(pretrained)模型,在大量语料上训练词向量(或者称为词嵌入,word embedding)。尽管训练语料与应用场景不尽相同,但实验表明,对下游(downstream)应用效果良好。

你可能感兴趣的:(NLP)