Word2vec之CBOW和Skip-gram

       本文章基于论文《Efficient estimation of word representations in vector space》(2013,Tomas Mikolov等)、《word2vec Parameter Learning Explained 》(2016,Xin Rong)和《word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method 》(2014,Yoav Goldberg and Omer Levy)等进行讲解,内容包括CBOW和Skip-gram算法,以及分层softmax和负采样优化算法。

一、为什么要提出CBOW和Skip-gram算法

1.1 稀疏表示问题

        在自然语言处理中,需要将文本中的单词转化为计算机能够处理的数值向量形式,即词向量。传统的词表示方法,如独热编码,存在维度灾难、无法捕捉语义信息等问题。

1.2 提升计算效率

        早期的神经网络语言模型,如前馈神经网络语言模型(NNLM),存在计算瓶颈。

        NNLM用于预测一句话下一个词语出现的概率:例如,输入10个词语,预测第11个词。模型架构如下:

模型包含四层:输入层—>投影层—>隐藏层—>输出层。
(1)输入层:假设输入N个词,每个词的独热编码是V维(V为词汇量)。输入层无显示计算。

(2)投影层:将N个词的的独热编码(V维)映射为D维度的稠密向量(NxD维)。计算复杂度为NxD。

(3)隐藏层:将投影层输出(NxD维)通过全链接层映射到H维隐藏层。计算复杂度为NxDxH。

(4)输出层:隐藏层输出(H维)通过全连接层映射到V维概率分布(Softmax)。计算复杂度为HxV。

       因此,NNLM总的计算复杂度为N×D+(N×D)×H+H×V。NNLM的主要瓶颈在于投影层到隐藏层的计算((N×D)×H)及隐藏层到输出层的计算(H×V)。

1.3 有效利用上下文信息

       自然语言中,单词的含义往往与其周围的上下文紧密相关。CBOW 算法根据上下文单词来预测目标单词,Skip - gram 算法则根据目标单词来预测上下文单词,它们都能够有效地利用文本中的上下文信息来学习单词的表示,从而更好地理解单词在不同语境中的语义。

二、CBOW算法

       CBOW的网络架构与NNLM比较类似,但CBOW去掉了隐藏层,并且所有上下文词共享同一投影矩阵(词嵌入矩阵),而非每个词独立映射。为了便于理解,我们从上下文单词数为1个的简单场景开始学习。

2.1 One-word context

        上图为上下文单词数为1的CBOW网络结构图。假设词库大小为V(共有V个单词),因此输入层one-hot向量的维度为V;隐藏层神经元个数为N;输入层到隐藏层,隐藏层到输出层均为全链接,且无激活函数。输入层到隐藏层之间的权重矩阵为的每一行都是一个N维的向量,用表示。

1、从输入层到隐藏层:

       给定一个上下文(一个单词),假设这个单词的one-hot向量中第k个元素,其他的元素。因此,我们有:

                                                                                           (1)

        其中:h为隐藏层向量        x为输入层向量     表示输入单词的词嵌入向量。

2、从隐藏层到输出层:

       从隐藏层到输出层的权重矩阵用表示,。从隐藏层到输出层的计算公式为。假设的第j列,                                                       (2)

       表示得到词库中第j个单词()的得分(输出层第j个神经元的输入)。然后经过softmax后将得分进行归一化:。                                                              (3)

      表示输出层的第j个神经元的输出。这也是给定上下文单词w_{I}的情况下,得到单词的概率,即

     将公式(1)和公式(2)带入公式(3)后,得到公式:

                                                                                 (4)     

      可以看出均为单词的词嵌入向量,来自于来自于,我们将叫做输入向量,叫做输出向量。

3、隐藏层到输出层的权重更新

       根据公式(4),对于给定的上下文,实际输出的词为,因此我们要使条件概率值最大,即                        (6)

       因为,所以

                                          (7)

       就是我们的损失函数,需要进行最小化。

      根据E的公式,先对求偏导:

      当时,;当时,               

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值