NLP复习之向量语义

向量语义

词汇语义

  • 语义概念(sense or concept)是单词含义(word sense)的组成部分,词原型可以是多义的。

  • 同义词是指:在某些或者全部的上下文中,单词之间有相同或近似含义

  • 可能没有完全相同含义的同义词例子!

    即使在很多情况下(上下文语境),单词间的含义是相同的。

    但仍然有可能因为礼貌(politeness),俚语(slang),流派(genre)等其他因素导致不会完全相同。

向量语义

  • 将语义定义为基于分布的一个空间向量

  • 一个单词 = 一个向量

    同义词定义为语义空间中相邻的词

    通过查看文本数据中的附近词来自动构建向量空间

  • 词向量可以称为词嵌入(embeddings),因为该向量嵌入在一个向量空间中。

两种词嵌入

  • Tf-idf:

    主要用于信息检索的一种常用模型

    会生成较为稀疏的词向量

    单词由附近单词计数有关的简单函数来表示

  • Word2vec:

    会生成较为稠密的词向量

    通过训练一个分类器来预测一个单词出现在某一语境中的概率,来生成表示

相似度度量

  • 两个向量的点积是一个标量

    \\\text{dot product}(v,w)=v \\cdot w=\\sum_{i=1}\^{N}v_iw_i \\

    • 点积的结果如果值越大,说明两个向量之间在相同维度上有较大的值。因此,点积可以作为一种向量之间相似度度量的方法。
    • 点积适合高纬度向量,如果向量维度越高,点积的结果值也会越高。
  • 余弦相似度

    \\\cos(v,w) = \\frac{v \\cdot w}{\|v\|\|w\|} = \\frac{\\sum_{i=1}\^{N}v_iw_i}{\\sqrt{\\sum_{i=1}\^{N}v_i\^2}\\sqrt{\\sum_{i=1}\^{N}w_i\^2}} \\

    • 基于向量a和b的点积:

      \a \\cdot b = \|a\|\|b\| \\cos{\\theta} \\

    • \(-1\)表示两个向量在相反方向;\(+1\)表示两个向量方向一致;\(0\)表示两个向量正交。

TF-IDF

单词t在文档d中的\(tf-idf\)值表示为

\w_{t,d} = tf_{t,d} \\times idf_t \\

\(tf_{t,d}\)有两中计算方式,一种是\(tf_{t,d} = count(t,d)\),但更常见的是用log函数对计数进行处理:

\tf_{t,d} = \\log_{10}(count(t,d)+1) \\

\(df_t\)代表单词t在多少个文档中出现,N表示数据集中文档的总数,有

\idf_t = \\log_{10}(\\frac{N}{df_t}) \\

word2vec

word2vec 的直觉是,我们不会计算每个单词 w 在例如杏子附近出现的频率,而是在二进制预测任务上训练分类器。

给定一组正采样和负采样,以及一组初始词向量,

算法的学习目标是将这些初始向量训练为:

•最大化目标词和上下文词对(w , cpos )的相似性,

•最小化反例中目标词与反例上下文词对 (w , cneg) 的相似性。

sigmoid函数

\y = \\sigma(z) = \\frac{1}{1 + e\^{-z}} \\

值域为 \(0,1\)

将点积转化为概率

  • \(P(+|w,c) = \sigma(c \cdot w) = \frac{1}{1 + \exp(-c \cdot w)}\)

  • \(P(-|w,c) = 1 - P(+|w,c) = \sigma(-c \cdot w) = \frac{1}{1 + \exp(c \cdot w)}\)

  • 假设上下文单词相互独立,并且将它们的概率相乘:

    \\\begin{aligned} P(+\|w, c_{1:L}) = \\Pi_{i=1}\^{L} \\sigma(c_i \\cdot w)\\\\ \\log P(+\|w, c_{1:L}) = \\sum_{i=1}\^{L} \\log \\sigma(c_i \\cdot w) \\end{aligned} \\

  • 将损失函数(公式6.34)各项偏导数进行求解,并使得推导结果分别为公式6.35,6.36,6.37。

    \\\begin{aligned} L_{CE} \&= - \\log{\[P(+\|w, c_{pos}) \\Pi_{i=1}\^k P(-\|w, c_{neg_i})} \\ &= - \\log{P(+\|w,c_{pos})}+\\sum_{i=1}\^k \\log{P(-\|w,c_{neg_i})} \\ &= -\\log{\\sigma(c_{pos} \\cdot w)} + \\sum_{i=1}\^k \\log{\\sigma(-c_{neg_i} \\cdot w)} \end{aligned} \tag{6.34} \]

    \\\frac{\\partial L_{CE}}{\\partial c_{pos}} = \[\\sigma(c_{pos} \\cdot w)-1w \tag{6.35} \]

    \\\frac{\\partial L_{CE}}{\\partial c_{neg}} = \[\\sigma(c_{neg} \\cdot w)w \tag{6.36} \]

    \\\frac{\\partial L_{CE}}{\\partial c_{w}} = \[\\sigma(c_{pos} \\cdot w)-1c_{pos}+\sum_{i=1}^k \\sigma(c_{neg_i} \\cdot w)c_{neg_i} \tag{6.37} \]

    We'll start by finding the partial derivative with respect to \(c_{pos}\):

    \\\frac{\\partial L_{CE}}{\\partial c_{pos}}=\\frac{\\partial}{\\partial c_{pos}} = (-\[\\log{\\sigma(c_{pos}·w)}+\\sum_{i=1}\^{k} \\log{\\sigma(-c_{neg_i}·w)}) \]

    Using the chain rule, we have:

    \\\frac{\\partial L_{CE}}{\\partial c_{pos}} = -\\frac{1}{\\sigma(c_{pos}·w)} \\frac{\\partial}{\\partial c_{pos}} \\sigma(c_pos·w) \\

    Recall that the derivate of the sigmoid function with respect to \(x\) is given by:

    \\\frac{\\partial}{\\partial x} \\sigma(x) = \\sigma(x)(1-\\sigma(x)) \\

    Applying this to our equation, we get:

    \\\frac{\\partial L_{CE}}{\\partial c_{pos}} = -\\frac{1}{\\sigma(c_{pos}·w)}·\\sigma(c_{pos}·w)·(1-\\sigma(c_{pos}·w))·w \\

    Simplifying further:

    \\\frac{\\partial L_{CE}}{\\partial c_{pos}} = \[\\sigma(c_{pos}·w)-1w \tag{6.35} \]

    Next, we find the partial derivative with respect to \(c_{neg}\):

    \\\frac{\\partial L_{CE}}{\\partial c_{neg}}=\\frac{\\partial}{\\partial c_{neg}} = (-\[\\log{\\sigma(c_{pos}·w)}+\\sum_{i=1}\^{k} \\log{\\sigma(-c_{neg_i}·w)}) \]

    Using the chain rule and the derivative of the sigmoid function, we have:

    \\\frac{\\partial L_{CE}}{\\partial c_{neg}} = \\sum_{i=1}\^{k} \\frac{1}{\\sigma(-c_{neg_i}·w)} \\frac{\\partial}{\\partial c_{neg}} \\sigma(-c_{neg_i}·w) \\

    Simplifying further:

    \\\frac{\\partial L_{CE}}{\\partial c_{neg}} = \[\\sigma(c_{neg}·w)w \tag{6.36} \]

    Using the chain rule and the derivative of the sigmoid function, we have:

    \\\frac{\\partial L_{CE}}{\\partial w} = - \\frac{1}{\\sigma(c_{pos}·w)} · \\frac{\\partial}{\\partial w} \\sigma(c_{pos}·w) - \\sum_{i = 1}\^{k} \\frac{1}{\\sigma(-c_{neg_i}·w)} \\frac{\\partial}{\\partial w} \\sigma(-c_{neg_i}·w) \\

    Using the derivative of the sigmoid function, we have:

    \\\frac{\\partial}{\\partial w} \\sigma(c_{pos}·w) = \\sigma(c_{pos}·w)·(1-\\sigma(c_{pos}·w))·c_{pos}\\

    and

    \\\frac{\\partial}{\\partial w} \\sigma(-c_{neg_i}·w) = \\sigma(-c_{neg_i}·w)·(1-\\sigma(-c_{neg_i}·w))·(-c_{neg_i}) \\

    Simplifying further, we have

    \\\frac{\\partial L_{CE}}{\\partial w} = \[\\sigma(c_{pos}·w)-1c_{pos}+\sum_{i=1}^{k}\\sigma(c_{neg_i}·w)c_{neg_i} \tag{6.37} \]