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\)值表示为
\(tf_{t,d}\)有两中计算方式,一种是\(tf_{t,d} = count(t,d)\),但更常见的是用log函数对计数进行处理:
\(df_t\)代表单词t在多少个文档中出现,N表示数据集中文档的总数,有
word2vec
word2vec 的直觉是,我们不会计算每个单词 w 在例如杏子附近出现的频率,而是在二进制预测任务上训练分类器。
给定一组正采样和负采样,以及一组初始词向量,
算法的学习目标是将这些初始向量训练为:
•最大化目标词和上下文词对(w , cpos )的相似性,
•最小化反例中目标词与反例上下文词对 (w , cneg) 的相似性。
sigmoid函数
值域为 \([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)-1]w \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)-1]c_{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)-1]w \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)-1]c_{pos}+\sum_{i=1}^{k}[\sigma(c_{neg_i}·w)]c_{neg_i} \tag{6.37} \]