美文网首页
word2vec学习笔记之CBOW和skip-gram

word2vec学习笔记之CBOW和skip-gram

作者: 仰望星空的小狗 | 来源:发表于2020-01-26 12:46 被阅读0次

    在上一篇学习笔记《word2vec学习笔记之概述》中介绍了word2vec提出的一些背景(当然,除了该篇文章中所说的一些向量化方法之外,在word2vec之后,还有fasttext,glove等其他方法,但在word2vec学习笔记系列中不对这些新的方法进行介绍)。本文将详细针对word2vec中的CBOW和skip-gram这两种形式进行详细介绍。本文主要是学习《word2vec Parameter Learning Explained》进行笔记。
    word2vec的两个模型与上一篇笔记中提到的NNLM相似,均是在训练语言模型的过程中,使用语言模型的中间产物来得到词表的词向量。

    1. Continuous Bag-of-Word Model(CBOW)

    CBOW

    上图是连续词袋模型CBOW的结构图。该模型中,是使用上下文词汇来预测中间词。下面将与《word2vec Parameter Learning Explained》相同,分别从一个词的上下文和多个词的上下文来进行介绍。

    1.1 One-word context(一个词的上下文)

    这里是先简单的从一个词的输入上下文开始介绍,即假设输入侧只有一个词。此时CBOW模型的结构如下

    CBOW one word in context
    上图中,输入层是一个词的one-hot形式,假设词表大小为V,那么输入是一个大小为V维的one-hot向量,该one-hot向量中,仅有所对应的词的下标处为1,其他位置均为0,我们可以将输入向量记为。
    输入层经过与一个大小的矩阵相乘后,得到N维大小的隐藏层的向量,从输入层到隐藏层可以理解为是一个全连接过程,但是跟平时的全连接不同的是,这里没有进行非线性函数的处理。并且,由于输入是一个one-hot向量,因此相乘后的结果实际上是从矩阵中取出第行的向量(one-hot向量中1的下标为k),也就是词所对应的词向量。即
    隐藏层再经过与一个大小的矩阵相乘后,得到V维大小的输出层的向量。其中输出层向量中的第个元素就是矩阵中的第列向量与隐藏层向量的乘积然后将输出的向量进行softmax处理,得到此表中每一个词的预测概率,而输出概率最大的词即为本次预测的结果。即,输入输出的概率为
    隐藏层到输出层之间的权重更新
    在模型训练过程中,假设当输入的词是时,期望输出的词是,那么我们希望能够最大,即我们训练的目标是使得下面的式子最大化其中,就是我们所期望能够达到最小的损失函数,就是实际输出词或者说是我们期望输出词在此表中的下标。
    接下来,我们使用反向传播来进行权重的更新。首先是求损失函数对于的求导(是输出层输出向量的第个值,是矩阵的第行第列的元素)其中,当的时候为1,否则为0。于是,矩阵的更新公式如下或者其中是learning rate。

    输入层到隐藏层之间的权重更新
    与上述”隐藏层到输出层之间的权重更新“过程类似,可以使用以下几个式子求得损失函数Eh_i和w_{ki}的求导\frac{\partial E}{\partial h_j}=\sum^V_{j=1}\frac{\partial E}{\partial u_j}·\frac{\partial u_j}{\partial h_i}=\sum^V_{j=1}e_j·w'_{ij}:=EH_i$$$$\frac{\partial E}{\partial w_{ki}}=\frac{\partial E}{\partial h_i}·\frac{\partial h_i}{\partial w_{ki}}=EH_i·x_k其中h_i=\sum^V_{k=1}x_k·w_{ki}而由于输入向量x中仅有一个元素非零,因此{v_{w_I}}^{(new)}={v_{w_I}}^{(old)}-\eta EH^T

    1.2 Multi-word context(多个词的上下文)

    多个词上下问的CBOW的结构图如下

    CBOW Multi-word context
    多个词的上下文与单个词的上下文的主要区别在于,每次训练的时候,输入层中的输入词不是一个而是多个。于是,从输入层到中间层的映射变为,将每一个单独的输入词所对应的向量做均值其中,C是输入层输入词的个数。于是损失函数也就变为于是,更新中的值的公式为

    2. Skip-gram model

    skip-gram
    上图是跳字模型skip-gram的结构图。该模型中,是使用中间词来预测上下文词汇。
    下图中每一个节点均是表示一个向量,将上图中的每一个节点展开为向量,就与下面的图相同
    skip-gram
    在skip-gram中的输入层到中间层的过程,就与1.1节中介绍的相似,于是也就有了在隐藏层到输出层中,是有多个词输出,而每一个词的输出概率同样是于是skip-gram的损失函数就是其中是输入的词,w_{O,c}表示输入的C个词中的第c个。于是,损失函数对输出的第c个输出词向量的第j个元素的求导为损失函数E对矩阵中的第i行第j列元素的求导为于是,可更新权重或者
    而在skip-gram的输入层到隐藏层的过程与一个词上下文的CBOW相似,矩阵的更新公式为

    相关文章

      网友评论

          本文标题:word2vec学习笔记之CBOW和skip-gram

          本文链接:https://www.haomeiwen.com/subject/gkyjthtx.html