目录

1 回顾:word2vec的主要思想

2 优化 : 梯度下降

3 The skip-gram model with negative sampling 基于负采样的Skip-gram模型  (HW2)

4 能否通过计数更好的抓取词义的本质?为什么不直接抓取共现次数?

5 列举降低纬度的方法

5.1  Dimensionality Reduction on X  X上的降维(HW1)

5.2 Hacks to X(several used in Rohde et al. 2005)Rohde等人在2005年在COALS中使用的方法

6  词向量的GloVe模型

7 如何评价单词向量

8 词义

9 其他学习资料


1 回顾:word2vec的主要思想

通过中心单词来预测周围的单词:

  • 遍历整个语料库中的每个单词
  • 使用单词向量预测周围的单词
  • 更新向量以便更好地预测

Word2vec parameters and computations  (Word2vec的参数以及计算)

其中,

  • 每行代表一个单词的词向量,点乘后得到的分数通过softmax映射为概率分布,并且我们得到的概率分布是对于该中心词而言的上下文中单词的概率分布,该分布于上下文所在的具体位置无关,所以在每个位置的预测都是一样的。
  • 期待有一个可以在对上下文中出现频率较高的单词供一个合理的高概率估计的模型。
  • 例如想a|and|the|this|that这样的高频词,是每个单词点成后得到的较大概率的单词。由于这部分单词的出现频率较大,故能去去掉这一部分单词将会使效果更好。

2 优化 : 梯度下降

回忆:

  • Gradient Descent 每次使用全部样本进行更新
  • Stochastic Gradient Descent 每次只是用单个样本进行更新
  • Mini-batch  通过平均值,减少梯度估计的噪音 。在GPU上并行化运算,加快运算速度
  • Stochastic gradients with word vectors  带有词向量的随机梯度, 将会非常的稀疏,则只能更新实际出现的向量.

解决方案:需要稀疏矩阵更新操作来只更新矩阵U和V的特定行和及保留单词向量的散列。如果有百万个单词向量,并且进行分布式计算,那么重要的是不必导出发送巨大的更新。

注意:word2vec中为什么要是用两个向量?因为更容易优化,可最后都去平均值;可以每一个单词都是用一个向量。

3 The skip-gram model with negative sampling 基于负采样的Skip-gram模型  (HW2)

由于使用的softmax方法训练时间长效率不高且代价太大,故采用负采样的方法加快训练速度。其代价主要体现在softmax中公式中用于归一化的分母的计算代价成本太高:

作业2中的任务:实现使用 negative sampling 负采样方法的 skip-gram 模型。我们可使用一个true pair(中心词及其上下文窗口中的词汇)与几个noise pair (中心词与随机词搭配) 形成的样本,训练二元逻辑回归。

最大化目标函数:

课程中的目标函数:

其中k是负采样的样本数目。要求是中心词与真实上下文单词的向量点积更大,中心词与随机单词的点积更小(最大限度地提高真实外字出现的概率,最大限度地降低中心字周围随机字出现的概率)。使用上式子作为抽样的分布,U(w)是unigram分布,通过3/4次方。相对减少出现频率较高的单词的频率,增加稀有单词的频率,Z用于生成概率的分布。

4 能否通过计数更好的抓取词义的本质?为什么不直接抓取共现次数?

共现矩阵X的构建:

  • 两个选项:windows vs. full document
  • Window :与word2vec类似,在每个单词周围都使用Window,包括语法(POS)和语义信息
  • Word-document 共现矩阵的基本假设是在同一篇文章中出现的单词更有可能相互关联。假设单词 i 出现在文章 j 中,则矩阵元素加一,当我们处理完数据库中的所有文章后,就得到了矩阵 X ,其大小为|V| X M ,其中|V|是词汇量,而M为文章数。这一构建Word-document 共现矩阵的方法也是经典的latent Semantic Analysis所采用的.一般给出主题,从而进行“潜在语义分析”。

利用某个定长窗口中单词与单词同时出现的次数来产生window-based (word-word) co-occurrence matrix。下面用例子来解释说明Word-document 共现矩阵。

其中:窗口长度为1且对称

数据集包含下面三个句子:

  • I like deep learning.
  • I like NLP.
  • I enjoy flying.

得到的Word-document 共现矩阵如下图所示:

不难发现,矩阵中的矢量会随着词汇量的增加而增大。若有非常高的维度,则需要大量的存储空间,后续的分类模型也会由于矩阵的稀疏性而存在稀疏性问题,使得效果不佳。这必须对矩阵进行降维操作,获得低纬度的(25-100)的稠密向量。

为了有效的存储,我们可以对其进行SVD处理,即将其转化为酉矩阵X对角矩阵X酉矩阵的形式:

为了减少尺度同时尽量保存有效信息,可保留对角矩阵的最大的k个值,其余置零,并将酉矩阵的相应的行列保留,其余置零:

这就是经典的SVD算法。

那么用什么方法来降低纬度呢?

5 列举降低纬度的方法

5.1  Dimensionality Reduction on X  X上的降维(HW1)

使用SVDfangfa将共现矩阵X分解为其中 是对角线矩阵,对角线上的值是矩阵的奇异值,U与V是对应于行和列的正交基。

为了减少尺度同时尽量保存有效信息,可保留对角矩阵的最大的k个值,并将矩阵 U,V 的相应的行列保留。是X的最佳秩k近似,用最小二乘法表示这是经典的线性代数算法,对于大型矩阵而言,计算代价昂贵。

5.2 Hacks to X(several used in Rohde et al. 2005)Rohde等人在2005年在COALS中使用的方法

按比例调整counts会很有效

  • 在原始计数上运行SVD效果不佳
  • 缩放cells中的计数,会有一些好的效果。对高频词(a|the|that|this)进行缩放,可以使用log进行缩放;min(X,t) , t ≈100; 忽视部分或者全部功能词汇
  • 在基于window的计数中,提高更加接近的单词的计数
  • 使用Person相关系数。

对计数进行处理是可以得到有效的词向量

drive → driver, swim → swimmer, teach →   teacher

在向量中出现的有趣的句法模式:语义向量基本上是线性组件,虽然有一些摆动,但是基本是存在动词和动词实施者的方向。

6  词向量的GloVe模型

基于计数 直接预测
LSA, HAL (Lund & Burgess) Skip-gram/CBOW (Mikolovet al)
OALS, Hellinger-PCA (Rohde et al, Lebret& Collobert) NNLM, HLBL, RNN (Bengioet al; Collobert& Weston; Huang et al; Mnih & Hinton)
训练速度快 随语料库大小而伸缩
高效使用统计数据 统计资料的使用效率低下
主要用于捕捉词的相似性 提高其他任务的性能
对大数的重视程度不成比例 可以捕捉到超越词语相似性的复杂模式

在向量差异中编码意义 : 将两个流派的想法结合起来,在神经网络中使用计数矩阵。

关键思想:共现概率的比值可以对meaning component进行编码

重点不是单一的概率大小,重点是他们之间的比值,其中蕴含着meaning component。

例如我们想区分热力学上两种不同状态ice冰与蒸汽steam,它们之间的关系可通过与不同的单词 x 的co-occurrence probability 的比值来描述。

例如对于solid固态,虽然 P(solid|ice)P(solid|ice) 与 P(solid|steam)P(solid|steam) 本身很小,不能透露有效的信息,但是它们的比值却较大,因为solid更常用来描述ice的状态而不是steam的状态,所以在ice的上下文中出现几率较大

对于gas则恰恰相反,而对于water这种描述ice与steam均可或者fashion这种与两者都没什么联系的单词,则比值接近于1。所以相较于单纯的co-occurrence probability,实际上co-occurrence probability的相对比值更有意义

那么我们如何在词向量中以线性meanning component的形式捕获共现概率的比值?

log- bilinear (对数双线性)模型:

vector differences(向量差异):

  • 如果使向量点积等于共现概率的对数,那么向量差异变成了共现概率的比率

  • 如果使用平方误差促使点积尽可能得接近共现概率的对数
  • 如果使用 f(x)f(x) 对常见单词进行限制

性能优点:

可快速训练;可以扩展到庞大的语料库;即使在很小语料库和小向量的情况下也有良好的性能。

7 如何评价单词向量

与NLP的一般评价相关:内部评估和外部评估

在NLP的研究领域里,一个模型的评估通常有两种方式:Intrinsic和Extrinsic。

Intrinsic评估(内部评估)关注的是模型在一个特定子任务上的表现。子任务的设计使得Intrinsic的评估快速便捷,同时有助于我们更好地理解模型内在的性质。不过,要注意的是,除非子任务被设计为与我们的最终目标有一定的联系,否则,模型在子任务上的评估结果并不具有太大的意义。

Extrinsic评估则(外部评估)关注的是模型在一个具体任务上的表现。比如情感分析或是机器翻译。此时,我们关注的模型通常只是一个更复杂模型里的一部分。因此,Extrinsic评估一般比较耗时。但是相比于Intrinsic评估更具有参考意义。

内部评估方法指的是利用一个明确的中间子任务来评估词向量模型的表现,一般来讲分为以下几个步骤:

  1. 将单词作为机器学习模型的输入,并将其转化为词向量
  2. 将词向量输入到特别设计的机器学习模型中,得到对应的词向量输出
  3. 将输出的词向量转换回单词,作为最终得出的答案

以上步骤构成一个完整的问答系统,在实际运用中,对于评估输出的结果,需要对模型的参数进行调整,然后再从头到尾对模型进行训练,这对于机器学习这一深度神经网络构造的模型而言是不太可行的,因为神经网络中包含的参数过多,训练代价会很大,因此需要用一个简单的评估系统来替代这个较为完备的评估方法.

比如,将下图左边的评估任务替换成右侧的评估任务,简化评估过程的同时满足上述要求。

外部评估词:向量的外在评价是在当前实际任务上生成的。这些任务通常很复杂,计算速度很慢。比如上面左侧的例子中,对问题的答案进行评估的系统是外部评估系统。通常,对性能不佳的外部评估系统进行优化无法确定是哪个子系统出了问题,这就引起了对内部评估的需求.

  • 内部评估

    • 对特定/中间子任务进行评估
    • 计算速度快
    • 有助于理解这个系统
    • 不清楚是否真的有用,除非与实际任务建立了相关性
  • 外部评估
    • 对真实任务的评估
    • 计算精确度可能需要很长时间
    • 不清楚子系统是问题所在,是交互问题,还是其他子系统
    • 如果用另一个子系统替换一个子系统可以提高精确度

对于词向量模型,一个常用的Intrinsic评估是向量类比(word vector analogies)。它评估了一组词向量在语义和句法上表现出来的线性关系。具体来说,给定一组词(a, b, c, d),我们要需要完成以下任务:验证的是:

即d是与向量(xb−xa+xc)的cosine距离最近的词。

  • 通过加法后的余弦距离是否能很好地捕捉到直观的语义和句法类比问题来评估单词向量
  • 从搜索中丢弃输入的单词
  • 问题:如果有信息但不是线性的怎么办?

Glove可视化

Glove可视化: Company - CEO

Glove可视化: superlatives(最高级)

类比评估和超参数

语义 句法 整体

  • 300是一个很好的词向量维度
  • 不对称上下文(只使用单侧的单词)不是很好,但是这在下游任务重可能不同
  • window size 设为 8 对 Glove向量来说比较好

  • 分析

    • window size设为2的时候实际上有效的,并且对于句法分析是更好的,因为句法效果非常局部

 关于词嵌入的维度

利用矩阵摄动理论,揭示了词嵌入维数选择的基本的偏差与方法的权衡

当持续增大词向量维度的时候,词向量的效果不会一直变差并且会保持平稳

在类比评估和超参数训练中,有以下几个特点:

  • 训练时间越长越好

  • 数据集越大越好,并且维基百科数据集比新闻文本数据集要好

    • 因为维基百科就是在解释概念以及他们之间的相互关联,更多的说明性文本显示了事物之间的所有联系
    • 而新闻并不去解释,而只是去阐述一些事件

8 词义

词义和词义歧义

大多数的单词都有很多的含义,特别是常见的单词和存在已久的单词。

例子:

The future (coming down the pike)
A type of body position (as in diving)
To make one’s way (pike along)
In Australian English, pike means to pull out from doing something: I reckon he could have climbed that cliff, but he piked!

Improving Word Representations Via Global Context And Multiple Word Prototypes (通过全局上下文和多个单词原型改进单词表示)

思想:将常用词的所有上下文进行聚类,通过该词得到一些清晰的簇,从而将这个常用词分解为多个单词,例如bank_1、bank_2、bank_3,进而在进行训练。(虽然这很粗糙,并且有时sensors之间的划分也不是很明确甚至相互重叠)

Linear Algebraic Structure of Word Senses, with Applications to Polysemy(词义的线性代数结构及其在多义词中的应用)

  • 单词在标准单词嵌入(如word2vec)中的不同含义以线性叠加(加权和)的形式存在,ff指频率

只是加权平均值就已经可以获得很好的效果.

  • 由于从稀疏编码中得到的概念,你实际上可以将感官分离出来(前提是它们相对比较常见).
  • 可以理解为由于单词存在于高维的向量空间之中,不同的纬度所包含的含义是不同的,所以加权平均值并不会损害单词在不同含义所属的纬度上存储的信息.

9 其他学习资料

词向量:GloVe,评估和训练: 链接直达https://zhuanlan.zhihu.com/p/59267815https://zhuanlan.zhihu.com/p/59267815

【2019斯坦福CS224N笔记】(2)Word Vectors and Word Senses相关推荐

  1. 【2019斯坦福CS224N笔记】(5)The probability of a sentence Recurrent Neural Networks and Language Models

    这部分内容主要研究语言模型及循环神经网络在语言模型中的应用. 目录 1.语言模型 2.经典n-gram模型 3.Window-based DNN 4.Recurrent Neural Networks ...

  2. 【2019斯坦福CS224N笔记】(5)依存结构语法

    csdn:https://blog.csdn.net/abcgkj github:https://github.com/aimi-cn/AILearners 上节课我们主要讲述了神经网络是如何进行反向 ...

  3. Task 2: Word Vectors and Word Senses (附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)

    Task 2: Word Vectors and Word Senses 目录 Task 2: Word Vectors and Word Senses 一.词向量计算方法 1 回顾word2vec的 ...

  4. 【NLP CS224N笔记】Assignment 1 - Exploring Word Vectors

    作业来源:https://github.com/xixiaoyao/CS224n-winter-together 1. 写在前面 这篇文章是CS224N课程的第一个大作业, 主要是对词向量做了一个探索 ...

  5. 2019斯坦福CS224n深度学习自然语言处理笔记(3)反向传播与计算图

    向AI转型的程序员都关注了这个号

  6. 2019斯坦福CS224n深度学习自然语言处理笔记(1)Word2Vec与Glove

    向AI转型的程序员都关注了这个号

  7. 最新(2019)斯坦福CS224n深度学习自然语言处理课程(视频+笔记+2017年合集)

    向AI转型的程序员都关注了这个号

  8. 2019斯坦福CS224n深度学习自然语言处理笔记(3)——分类模型与神经网络

    文章目录 1. 什么是分类? 1.1 logist(二分类) 1.2 softmax(多分类) 1.2.1 softmax函数 1.2.2 独热编码 1.2.3 交叉熵 1.2.4 反向传播 2.神经 ...

  9. 2019 斯坦福 CS224n 课程

    课程网站,有PPT和参考资料: http://web.stanford.edu/class/cs224n/index.html#schedule 官方课程视频网站: http://onlinehub. ...

最新文章

  1. Velocity判断空的方法
  2. python能绘制统计图吗-Python数据科学(九)- 使用Pandas绘制统计图表
  3. http工具类(支持https,连接池和失败重试)
  4. 和搜狗输入法快捷键冲突_电脑输入法怎么设置成搜狗双拼?
  5. TypeScript基础入门 - 接口 - 可索引的类型
  6. mysql连接数详解_MySQl 修改最大连接数详解
  7. 秒速五厘米男主php,秒速五厘米最后男主从事的是什么工作?
  8. 计算点在哪些四边形内
  9. python3 使用sorted 实现倒序
  10. 安卓手机更新过程手机乱码_关于安卓手机上自带播放器乱码问题的解决
  11. 云计算淡定从容的大局观
  12. 联想家庭版 mysql_联想自带win7家庭版..
  13. 数学建模——时间序列预测(股价预测)
  14. 不给移动一分钱!10个免费发短信的国外站点
  15. 手机号-号段2021
  16. 微信小程序居家养老+后台管理系统
  17. 建站助手搭建php网站,【产品】特网科技建站助手一键配置PHP环境
  18. WEB2.0中AJAX应用的详细探讨
  19. Linux项目之部署lnmp架构
  20. Python后端转JAVA最快多久_【动力节点】老杜支招:Java小白学习入门攻略,涵盖学习路线...

热门文章

  1. 网络安全合规-ISO 27001(一)
  2. 东芝打印机报故障维修CD40
  3. SQL Server 2012下载安装详细教程以及SQL Server 2012各种版本简介
  4. java编程规范心得
  5. python import什么意思_from .module import,模块前面的点是什么意思?
  6. Windows组策略屏蔽U盘
  7. ROS学习(六)机器人系统设计
  8. 无线路由器信道怎么设置 无线路由器信道选择哪个好
  9. 虚拟现实解决方案,实现 VR 数智机房
  10. 模拟电话和数字电话有什么区别?优点和缺点!!!