CS224N课程P2:词向量与神经网络分类器
本文最后更新于:几秒前
课程词汇
1 |
|
课程内容
分布式词向量:Word2Vec
数据设置
词袋模型实际上是不关心词序或位置的模型,无论上下文词离中心词远或近,其概率估计结果是相同的。word2vec为实现对上下文的高概率,其需要将相似的词汇放到词汇空间中十分接近的位置。
学习优化:梯度下降
因为
单词用向量表示使用行向量。
在随机梯度下降的过程中,由于每次更新时只用到
我们有时只需要更新实际上出现过的单词,大部分单词不需要更新,解决方法是需要稀疏矩阵更新操作,只更新全嵌入矩阵U和V的某些行;或者你需要为词向量保留一个哈希值。
Skip-gram+负采样
使用两个向量的原因是方便优化计算,只有一个向量确实会帮助提升效率,但当中心词和上下文词出现相同词类型的时候,这种
两种模型:
在skip-gram模型中,对于朴素的softmax函数的概率,其分母的计算要求十分昂贵,需要遍历一遍所有的词汇,因此引入负采样。
负采样的思想在于将分母去掉,以中心词和外部词的点积表示其和外部的相似度,一般来说,取样后产生的点积应该越小越好,以防止对上下文词的影响。我们将中心词和上下文词的点积概率最大化,而把中心词和外部词的点积概率最小化。这个思想和softmax函数的思路是一致的,增大分子而缩小分母。
其中
计数共现矩阵
共现矩阵
将单词表现为共现矩阵的一行或一列,这样可以保存单词之间的共现关系,直接训练相邻的单词。
共现矩阵的实现分为两种,一是确定窗口的单词共现矩阵,二是使用段落、单元等自有单位的文档-单词矩阵。
维度降低
我们可以在固定的少量维度中存储有关单词分布和其他单词上下文的大部分重要信息,从而实现低维向量的表示。具体的这里需要用到奇异值分解的基本知识:
奇异值分解(SVD)
一个
其中
如果
其中
对三个部分的求解,请参考原文,在这里不再赘述。
奇异值在降维的应用
将奇异值分解应用到降维部分,可以用几个低维矩阵最大程度还原原始矩阵。
其中,黄框中的内容是在主对角线中没有用到的,因此被压缩掉;为了减少尺度同时尽量保存有效信息,可保留对角矩阵的最大的
单纯使用SVD的效果并不太好,因此也有一些优化改进。
GloVe
GloVe模型解决了如何在词向量空间中捕捉共现概率比例作为线性意义的成分,共现矩阵中概率的比例可以编码词的意义成分(如:男人到女人、动物到植物等)。这也为之后能够对这些线性意义成分进行计算提供基础。
GloVe的核心在于使用词向量表达共现概率比值,而任意一个这样的比值需要三个词i、j和k的词向量。令i为单词ice,j为单词steam,论文中的一组比较可以体现这种共现性:
例如对于solid固态,虽然
定义一些符号:对于矩阵
基于对上面概率的观察,假设模型的函数有以下形式:
其中
等式右边为标量形式,左边如何操作能将矢量转化为标量形式呢?一个自然的选择是矢量的点乘形式:
又因为对称性,即对于单词-单词 共现矩阵,将向量划分为center word还是context word的选择是不重要的,即我们在交换
这里
评估过程
包括内在评估和外在评估。内在评估通过设置与词向量任务相关的子任务来测试词向量的效果,外在评估直接设置真实项目来予以实验。
内在评估
内在评估中,现有的评估大多针对于向量本身的评估,以及单词间相似性的评估。对于向量计算本身的评估,可以通过评估其向量计算后的单词类比来评估,即man->woman : king-> ?这种类比过程能否通过向量计算成功类比。
对于单词意义相似性的评估,现有人类已经有了相似单词定量化的数据集,因此可以通过比较词向量距离及其与人类判断的相关性来实现内在评估。
外在评估
外在评估中,可以通过比较不同的词向量来看到词向量带来的收益。如下图中提到的命名实体识别的真实任务。
课后问题
Q:为什么Skip-gram在数据统计的使用效率上比较低?
A:因为Skip-gram每次只操作一个中心词,需要对每个中心词都做一次处理,而共现矩阵这样的操作可以直接操作一整个矩阵,其操作效率会高上许多。
Q:可否再讲解一下GloVe的目标函数和双线性对数模型?
A:(返回看上面)每个词都有一个偏置项很重要,方便调整。
Q:如何处理词汇的多义性?(这个问题是补充讲解)
A:比较疯狂的做法是对词语的每个语义作一个词向量,这可以通过意义聚类来尝试;但一是这种做法复杂度较高,在词向量生成时要加上一层词义分析;二是词汇中多个语义之间可能难以区分,无法达到固定标准。
对每个语义做一个词向量,这个尝试在早期就有人做,主要思想是对各个词义的词向量作加权组合,而且令人惊讶的是通过稀疏自编码的思想,可以将组合后的词向量再分离回去(前提是语义十分常见)。