目录
- 单词向量和word2vec
- 优化基础
- 我们能否通过计数更有效地抓住这一本质?
- GloVe模型
- 评估词向量
- 词义(word sences)
单词向量和word2vec
word2vec的主要idea:
1.遍历整个语料库中的每个单词
2.使用单词向量预测周围的单词
3.更新向量以便更好地预测
Word2vec的参数和计算:
1.每行代表⼀个单词的词向量,点乘后得到的分数通过softmax映射为概率分布,并且我们得到的概率分布是对于该中心词而言的上下文中单词的概率分布,该分布于上下文所在的具体位置无关,所以在每个位置的预测都是⼀样的
2.我们希望模型对上下文中(相当频繁)出现的所有单词给出⼀个合理的高概率估计
3.the, and, that, of 这样的停用词,是每个单词点乘后得到的较大概率的单词(去掉这⼀部分可以使词向量效果更好)
优化基础
Gradient Descent 每次使⽤全部样本进行更新
Stochastic Gradient Descent 每次只是用单个样本进行更新
Mini-batch具有以下优点
- 通过平均值,减少梯度估计的噪音
- 在GPU上并行化运算,加快运算速度
Stochastic gradients with word vectors
将会非常稀疏,所以我们可能只更新实际出现的向量
解决方案
- 需要稀疏矩阵更新操作来只更新矩阵U和V中的特定⾏
- 需要保留单词向量的散列
如果有数百万个单词向量,并且进行分布式计算,那么重要的是不必到处发送巨大的更新
更多的细节
为什么两个向量?
- 更容易优化,最后都取平均值
- 可以每个单词只用⼀个向量
两个模型变体 - Skip-gram:输入中心词预测上下文的单词
- CBOW:输入上下文的单词预测中心词
之前⼀直使用naive的softmax(简单但代价很高的训练方法),接下来使用负采样方法加快训练速率 - 使用⼀个 true pair (中心词及其上下文窗口中的词)与几个 noise pair (中心词与随机词搭配) 形成的样本,训练二元逻辑回归
我们能否通过计数更有效地抓住这一本质?
共现矩阵 X
两个选项:windows vs. full document
- Window :与word2vec类似,在每个单词周围都使用Window,包括语法(POS)和语义信息
- Word-document 共现矩阵的基本假设是在同⼀篇文章中出现的单词更有可能相互关联。假设单词
出现在文章
中,则矩阵元素
加⼀,当我们处理完数据库中的所有文章后,就得到了矩阵X,其大小为
,其中
为词汇量,而
为文章数。这⼀构建单词文章co-occurrence matrix的方法也是经典的Latent Semantic Analysis所采用的(潜在语义分析)。
利用某个定长窗口中单词与单词同时出现的次数来产生window-based (word-word) co-occurrence
matrix。下面以窗口长度为1来举例,假设我们的数据包含以下几个句子: - I like deep learning.
- I like NLP.
-
I enjoy flying.
则我们可以得到如下的word-word co-occurrence matrix:
使用共现次数衡量单词的相似性,但是会随着词汇量的增加而增⼤矩阵的大小,并且需要很多空间来存 储这⼀高维矩阵,后续的分类模型也会由于矩阵的稀疏性二存在稀疏性问题,使得效果不佳。我们需要 对这⼀矩阵进行降维,获得低维(25-1000)的稠密向量。
Method 1: Dimensionality Reduction on X (HW1)
使用SVD方法将共现矩阵X分解为,
是对角线矩阵,对角线上的值是矩阵的奇异值。
,
是对应于行和列的正交基。
为了减少尺度同时尽量保存有效信息,可保留对角矩阵的最大的k个值,并将矩阵,
的相应的行列保留。这是经典的线性代数算法,对于大型矩阵而言,计算代价昂贵。
Hacks to X (several used in Rohde et al. 2005)
按比例调整 counts 会很有效
- 对高频词进行缩放(语法有太多的影响)
1.使用log进行缩放
2.
3.直接全部忽视 - 在基于window的计数中,提高更加接近的单词的计数
-
使用Person相关系数
GloVe模型
将两个流派的想法结合起来,在神经网络中使用计数矩阵
关键思想:共现概率的比值可以对meaning component进行编码
重点不是单⼀的概率大小,重点是他们之间的比值,其中蕴含着meaning component。
我们如何在词向量空间中以线性meaning component的形式捕获共现概率的比值?
log-bilinear 模型 :
向量差异 :
-
如果使向量点积等于共现概率的对数,那么向量差异变成了共现概率的比率
- 使用平方误差促使点积尽可能得接近共现概率的对数
- 使用
对常见单词进行限制
优点:
1.训练快速
2.可以扩展到大型语料库
3.即使是小语料库和小向量,性能也很好
评估词向量
与NLP的⼀般评估相关:内在与外在
- 内在
1.对特定/中间子任务进行评估
2.计算速度快
3.有助于理解这个系统
4.不清楚是否真的有用,除非与实际任务建立了相关性 - 外在
1.对真实任务的评估
2.计算精确度可能需要很长时间
3.不清楚子系统是问题所在,是交互问题,还是其他子系统
4.如果用另⼀个子系统替换⼀个子系统可以提高精确度
Intrinsic word vector evaluation
词向量类比 a:b :: c:?
- 通过加法后的余弦距离是否能很好地捕捉到直观的语义和句法类比问题来评估单词向量
- 从搜索中丢弃输入的单词
- 问题:如果有信息但不是线性的怎么办?
词义(word sences)
大多数单词都是多义的
- 特别是常见单词
- 特别是存在已久的单词
Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang
et al. 2012)
将常用词的所有上下文进行聚类,通过该词得到⼀些清晰的簇,从而将这个常用词分解为多个单词,例如bank_1, bank_2, bank_3
虽然这很粗糙,并且有时sensors之间的划分也不是很明确甚至相互重叠
ILinear Algebraic Structure of Word Senses, with Applications to Polysemy
单词在标准单词嵌入(如word2vec)中的不同含义以线性叠加(加权和)的形式存在, 指频率
令人惊讶的结果,只是加权平均值就已经可以获得很好的效果
- 由于从稀疏编码中得到的概念,你实际上可以将感官分离出来(前提是它们相对比较常见)
- 可以理解为由于单词存在于高维的向量空间之中,不同的纬度所包含的含义是不同的,所以加权平均值并不会损害单词在不同含义所属的纬度上存储的信息