文章目录

  • 引入
  • 1 为何不采用one-hot向量?
  • 2 跳字模型


引入

  自然语言是一套用来表达含义的复杂系统。这套系统中,词是表义的基本单元,词向量则是用来表示词的向量。把词映射为实数域向量的技术也叫做词嵌入 (word embedding)。近年来,词嵌入逐渐成为自然语言处理的基础知识。

1 为何不采用one-hot向量?

  简单回顾一下one-hot:
  假设词典中不同词的数量为bert词嵌入矩阵_深度学习,每个词可以从bert词嵌入矩阵_因吉_02bert词嵌入矩阵_因吉_03的连续整数一一对应。这些与词对应的整数叫做词的索引
  假设一个词的索引为bert词嵌入矩阵_bert词嵌入矩阵_04,为了得到该词的one-hot向量,我们创建了一个全bert词嵌入矩阵_因吉_02且长度为bert词嵌入矩阵_深度学习的向量,并将第bert词嵌入矩阵_bert词嵌入矩阵_04位设置位bert词嵌入矩阵_深度学习_08。这样构建的向量将可以直接给神经网络使用。
  然而,尽管ont-hot向量构建容易,但是这可能出现以下问题:One-hot词向量无法准确表示不同词之间的相似度,如余弦相似度。对于向量bert词嵌入矩阵_torch_09,其余弦相似度计算为:
bert词嵌入矩阵_bert词嵌入矩阵_10显然,任意两个不同词的one-hot向量的余弦相似度将为bert词嵌入矩阵_因吉_02
  Word2vec工具的提出是为了解决上述问题:
  1)将每个词表示成一个定长的向量,并使得这些向量能够较好地表达不同词之间的相似和类比关系;
  2)包含两个模型,跳字模型 (skip-gram)和连续词袋模型 (continuous bag of words, CBOW)。

2 跳字模型

  跳字模型假设基于某个词来生成它在文本系列周围的词。例如,假设文本序列是“the”、“man”、“loves”、“his”、“son”,以“love”作为中心词,设背景窗口大小为bert词嵌入矩阵_python_12。如下图所示,跳字模型所关心的是给定中心词“loves”,生成其窗口范围内的背景词“the”、“man”、“his”、“son”的条件概率,即

bert词嵌入矩阵_bert词嵌入矩阵_13  假定给定中心词的情况下,背景词的生成是相互独立的,那么上式可以改写为

bert词嵌入矩阵_深度学习_14

bert词嵌入矩阵_bert词嵌入矩阵_15


  在跳字模型中,每个词被表示成两个bert词嵌入矩阵_torch_16维向量,用来计算条件概率。假设这个词在词典中索引为bert词嵌入矩阵_bert词嵌入矩阵_04,当它为中心词时向量表示为bert词嵌入矩阵_torch_18,而当为背景词时向量表示为bert词嵌入矩阵_python_19

  设中心词bert词嵌入矩阵_torch_20在词典中的索引为bert词嵌入矩阵_bert词嵌入矩阵_21,背景词bert词嵌入矩阵_bert词嵌入矩阵_22的索引为bert词嵌入矩阵_深度学习_23给定中心词生成背景词的条件概率可以通过对向量内积做softmax运算得到:

bert词嵌入矩阵_bert词嵌入矩阵_24其中词典索引集bert词嵌入矩阵_因吉_25

  假定给定中心词的情况下背景词的生成相互独立,当背景窗口大小为bert词嵌入矩阵_torch_26时,跳字模型的似然函数即给定任一中心词生成所有背景词的概率

bert词嵌入矩阵_torch_27这里小于bert词嵌入矩阵_深度学习_08和大于bert词嵌入矩阵_因吉_29的时间步可以忽略。