自然语言处理关注计算机与人类之间的自然语言交互。常常使用自然语言处理技术,处理和分析大量的自然语言数据。

1 词嵌入 word2vec

自然语言是一套用来表达含义的复杂系统。词的表义的基本单元,词向量是用来表示词的词向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫做词嵌入word embedding。

1.1 为何不采用one-hot向量

假设词典中不同词的数量为N,每个词可以和从0到N-1的连续整数一一对应,这些词对应的整数叫做词的索引,假设一个词的索引为i,为了得到该词的one-hot向量表示,我们创建一个全0长度为N的向量,并将其第i位设成1。这样一来,每个词就表示成了一个长度为N的向量,可以直接被神经网络使用。

不使用one-hot的原因是,无法准确表达不同词之间的相似度,如我们常常使用余弦相似度。对于向量y∈Rdy \in R^dy∈Rd,他们的预先相似度是他们之间夹角的余弦值xTy/(∣∣x∣∣∣y∣∣∣)∈[−1,1]x^Ty/(||x| ||y|||) \in [-1,1]xTy/(∣∣x∣∣∣y∣∣∣)∈[−1,1]。任何两个不同词的one-hot向量的余弦相似度是0,多个不同词之间的相似度难以通过one-hot向量准确地表现出来。

word2vec工具的提出正是为了解决上述问题,它将每个词表示成一个定长的向量,并使得这些向量能较好地表达不同词之间的相似和类比关系。word2vec⼯具包含了两个模型,即跳字模型(skip-gram)和连续词袋模型(continuous bag of words,CBOW)。

1.2 跳字模型

跳字模型假设基于某个词来⽣成它在⽂本序列周围的词。在跳字模型中,每个词被表⽰成两个d维向量,⽤来计算条件概率假设这个词在词典中索引为i,当它为中⼼词时向量表⽰为vi∈Rdv_i ∈ R^dvi​∈Rd,而为背景词时向量表⽰为ui∈Rdu_i ∈ R^dui​∈Rd。设中⼼词wcw_cwc​在词典中索引为c,背景词wow_owo​在词典中索引为o,给定中⼼词⽣成背景词的条件概率可以通过对向量内积做softmax运算而得到:
在这里插入图片描述
其中词典索引集V = {0, 1, . . . , |V|−1}。假设给定⼀个⻓度为T的⽂本序列,设时间步t的词为w(t)。假设给定中⼼词的情况下背景词的⽣成相互独⽴,当背景窗口⼤小为m时,跳字模型的似然函数即给定任⼀中⼼词⽣成所有背景词的概率
在这里插入图片描述
这⾥小于1和⼤于T的时间步可以忽略。

训练跳字模型

跳字模型的参数是每个词所对应的中⼼词向量和背景词向量。训练中我们通过最⼤化似然函数来学习模型参数,即最⼤似然估计。这等价于最小化以下损失函数:
在这里插入图片描述
如果使⽤随机梯度下降,那么在每⼀次迭代⾥我们随机采样⼀个较短的⼦序列来计算有关该⼦序列的损失,然后计算梯度来更新模型参数。梯度计算的关键是条件概率的对数有关中⼼词向量和背景词向量的梯度。
在这里插入图片描述
通过微分,我们可以得到上式中vc的梯度
在这里插入图片描述
它的计算需要词典中所有词以w_c为中⼼词的条件概率。有关其他词向量的梯度同理可得。训练结束后,对于词典中的任⼀索引为i的词,我们均得到该词作为中⼼词和背景词的两组词向量vi和ui。在⾃然语⾔处理应⽤中,⼀般使⽤跳字模型的中⼼词向量作为词的表征向量。

1.3 连续词袋模型

连续词袋模型与跳字模型类似。与跳字模型最⼤的不同在于,连续词袋模型假设基于某中⼼词在⽂本序列前后的背景词来⽣成该中⼼词。在这里插入图片描述#### 训练连续词袋模型
在这里插入图片描述

  • 词向量是⽤来表⽰词的向量。把词映射为实数域向量的技术也叫词嵌⼊。
  • word2vec包含跳字模型和连续词袋模型。跳字模型假设基于中⼼词来⽣成背景词。连续词袋模型假设基于背景词来⽣成中⼼词。

2 近似训练

在这里插入图片描述

2.1 负采样

在这里插入图片描述
在这里插入图片描述

2.2 层序softmax

另一种近似训练法。使用了二叉树这样一数据结构,树的每个叶节点代表词典V中的每个词。
在这里插入图片描述

  • 负采样通过考虑同时含有正类样本和负类样本的相互独⽴事件来构造损失函数。其训练中每⼀步的梯度计算开销与采样的噪声词的个数线性相关。
  • 层序softmax使⽤了⼆叉树,并根据根结点到叶结点的路径来构造损失函数。其训练中每⼀步的梯度计算开销与词典⼤小的对数相关。
2.3 数据集

PTB(Penn Tree Bank)是⼀个常⽤的小型语料库。它采样⾃《华尔街⽇报》的⽂章,包括训练集、验证集和测试集。我们将在PTB训练集上训练词嵌⼊模型。该数据集的每⼀⾏作为⼀个句⼦。句⼦中的每个词由空格隔开。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐