教程:
【官方】【中英】CS224n 斯坦福深度自然语言处理课 @雷锋字幕组
CS224n—Lecture 1 Introduction and Word Vectors
word2vec(一)——skip-gram原理理解(含公式推导)
Word2Vec - Skip-gram是如何训练出词向量的(含公式推导)

语义空间

将单词用向量表示,利用深度学习来学习单词向量,把单词放在高维向量空间中,这些空间就成了语义空间。相似的词汇在空间中会聚集。
image.png
可以用小词组成大词

词向量表示

含义:用向量来表示词汇(针对的是英文)

分布相似性

知道词汇之间的相似性关系。

含义

通过观察上下文,获取某个词汇含义的值。(这里有人在弹幕中提到了“左右信息熵”),根据例句,通过某种算法用上下文中出现的其它词语来表示核心词的含义。

步骤

  1. 给每个单词构建一个向量(使用密集型向量),让其可以预测目标单词所在文本的其它词汇(通过上下文构建连续向量就能表现出相似性)
  2. 用一些相似性方法,通过向量的点积、递归、循环等方法,让他可以预测上下文的其他词汇

Word2vec

含义

Word2vec是一类神经网络模型——在给定无标签的语料库的情况下,为语料库中的单词产生一个能表达语义的向量。这些向量通常是有用的:

  • 通过词向量来计算两个单词的语义相似性
  • 对某些监督型NLP任务如文本分类,语义分析构造特征

参考资料:轻松理解skip-gram模型

Word2vec模型的核心是构建一个很简单的、可扩展的、快速的训练模型,让我们可以处理数十亿单词的文本,并生成非常棒的单词表达。

学习神经词嵌入问题的一种基本方法。

  1. 定义一个模型,根据中心词汇推测上下文的词汇,预测上下文单词出现的频率。
  2. 用损失函数判断预测的准确性
  3. 目标:调整词汇表示使损失最小化,让每个单词都能预测其周围的词汇。

image.png
image.pngimage.png

两种算法

skip-gram(SG)

模型概念

  1. 在每一个估算步都取一个词作为中心词汇
  2. 尝试去预测它一定范围内的上下文的词汇
  3. 即给定一个中心词汇,预测某个单词在它上下文中出现的概率

我们会选取词汇的向量表示,以让概率分布值最大化

模型图片

image.png
image.png

模型细节

  1. 定义一个半径m
  2. 从中心词汇开始,到距离为m的位置,来预测周围的词汇
  3. 在多处进行多次重复操作

image.png

损失函数 J’(θ)

也叫目标函数、代价函数。

  1. 对很长的文本,遍历文本中的所有位置。
  2. 对于文本中的每个位置,都定义一个围绕中心词汇的大小为2m的窗口,即中心词前后各有m个单词。
  3. 这样就得到一个概率分布,可以根据中心词汇给出其上下文的词汇出现的概率。
  4. 设置模型的参数,让上下文中所有词汇出现的概率都尽可能的高。
  5. 这里的θ是模型的参数,它是词汇的向量表示,也是每个词汇的向量表示的唯一参数。

交叉熵损失函数 J(θ)

  1. 我们要做最大化操作,实际上就是解决对数分布问题(对数似然函数),这样子就能把公式中的求积变成求和。
  2. 取每个位置上的平均值,得到1/T,相当于对每个词汇进行了归一化处理。
  3. 计算机喜欢做的是最小化操作,所以式子前面加了‘-’,把最大化问题变成最小化问题。
  4. 最后得到了一个负的对数似然,也就是模型的负对数分布。这是我们最后的损失函数。我们使用的是交叉熵损失函数。

softmax函数

image.png

image.png