教程:
【官方】【中英】CS224n 斯坦福深度自然语言处理课 @雷锋字幕组
CS224n—Lecture 1 Introduction and Word Vectors
word2vec(一)——skip-gram原理理解(含公式推导)
Word2Vec - Skip-gram是如何训练出词向量的(含公式推导)
语义空间
将单词用向量表示,利用深度学习来学习单词向量,把单词放在高维向量空间中,这些空间就成了语义空间。相似的词汇在空间中会聚集。
可以用小词组成大词
词向量表示
分布相似性
含义
通过观察上下文,获取某个词汇含义的值。(这里有人在弹幕中提到了“左右信息熵”),根据例句,通过某种算法用上下文中出现的其它词语来表示核心词的含义。
步骤
- 给每个单词构建一个向量(使用密集型向量),让其可以预测目标单词所在文本的其它词汇(通过上下文构建连续向量就能表现出相似性)
- 用一些相似性方法,通过向量的点积、递归、循环等方法,让他可以预测上下文的其他词汇
Word2vec
含义
Word2vec是一类神经网络模型——在给定无标签的语料库的情况下,为语料库中的单词产生一个能表达语义的向量。这些向量通常是有用的:
- 通过词向量来计算两个单词的语义相似性
- 对某些监督型NLP任务如文本分类,语义分析构造特征
参考资料:轻松理解skip-gram模型
Word2vec模型的核心是构建一个很简单的、可扩展的、快速的训练模型,让我们可以处理数十亿单词的文本,并生成非常棒的单词表达。
学习神经词嵌入问题的一种基本方法。
- 定义一个模型,根据中心词汇推测上下文的词汇,预测上下文单词出现的频率。
- 用损失函数判断预测的准确性
- 目标:调整词汇表示使损失最小化,让每个单词都能预测其周围的词汇。
两种算法
skip-gram(SG)
模型概念
- 在每一个估算步都取一个词作为中心词汇
- 尝试去预测它一定范围内的上下文的词汇
- 即给定一个中心词汇,预测某个单词在它上下文中出现的概率
我们会选取词汇的向量表示,以让概率分布值最大化
模型图片
模型细节
- 定义一个半径m
- 从中心词汇开始,到距离为m的位置,来预测周围的词汇
- 在多处进行多次重复操作
损失函数 J’(θ)
也叫目标函数、代价函数。
- 对很长的文本,遍历文本中的所有位置。
- 对于文本中的每个位置,都定义一个围绕中心词汇的大小为2m的窗口,即中心词前后各有m个单词。
- 这样就得到一个概率分布,可以根据中心词汇给出其上下文的词汇出现的概率。
- 设置模型的参数,让上下文中所有词汇出现的概率都尽可能的高。
- 这里的θ是模型的参数,它是词汇的向量表示,也是每个词汇的向量表示的唯一参数。
交叉熵损失函数 J(θ)
- 我们要做最大化操作,实际上就是解决对数分布问题(对数似然函数),这样子就能把公式中的求积变成求和。
- 取每个位置上的平均值,得到1/T,相当于对每个词汇进行了归一化处理。
- 计算机喜欢做的是最小化操作,所以式子前面加了‘-’,把最大化问题变成最小化问题。
- 最后得到了一个负的对数似然,也就是模型的负对数分布。这是我们最后的损失函数。我们使用的是交叉熵损失函数。
softmax函数





