斯坦福大学NLP-cs224课程笔记2:词向量

开篇Richard教授总结了深度学习如何应用于NLP领域,包括:

  • 自然语言处理(NLP)是什么,语言的特点,NLP的难点;
  • 深度学习(DL)和经典的机器学习(ML)相比有哪些优势,DL在工程中的应用发展历程;
  • NLP的几种应用场景

详细请参考:斯坦福大学NLP-cs224课程笔记1:应用深度学习到自然语言处理简介

在第一堂课中,Richard教授留了3门课外阅读材料,线性代数,概率统计,凸优化,大神推荐的材料每门都浓缩到只有10页左右,但基本都包括了重要知识点。接下来,边学边结合这些资料,应该效果会更好,如有需要在后台回复:math.

接下来,跟随Richard一起学习NLP之词向量模型,词向量模型是将词语表达为数值向量的过程,这是进行数值计算的前提,也是NLP工作开展的第一步。

one-hot

one-hot 数值表达单词的方法很直接,将此库单词数标记为向量的长度,每个词向量的分量只有一个为1,其余全为0,1的位置对应该词在词典的位置,比如:

adore 表示为 [ 0,0,0,1,...,0,0 ]

respect 表示为 [ 0,1,0,0,...,0,0 ]

这种表示方法的优点是简洁,每个词分配一个编号,比如 adore 编号为102,respect 编号为34214,配合最大熵,SVM等算法可以完成NLP的一些任务。但缺点也很明显:

  1. 维数灾难. 如果有10万单词,维数就是10万。
  2. 词汇鸿沟. 不能很好地刻画词语与词语间的相似性,adore和respect的词向量是正交的,反映不出它们是同义词。
  3. 强稀疏性.

word vectors

一个单词的意思总是通过与它邻近的那些单词定义,这是NLP中最成功的idea之一。当一个单词 w 出现在文本中,w 的上下文就是在fixed-size窗口内的单词集合,例如 w 为 banking 时,它的语义可以通过以下三个句子的 banking 的上下文推断。

正是通过单词 w 的上下文确定 w 意思的想法,才有了下面的分布的、稠密的词向量表达,克服了 one-hot 表达的缺点。

基于此想法构建 w 的词向量,同 w 有相似上下文的那些单词,也会与 w 有相似的词向量,如 linguistics 表达为:[ 0.286 0.792 −0.177 −0.107 0.109 −0.542 0.349 0.271 ],注意无特殊说明,向量一般都指列向量。

有时也称 word vectors 为 word embeddings, 或 word resprensentations.

Word2vec

Mikolov et al. 2013 利用单词的意思通过其上下文确定的思想,开源了一个学习词向量的框架:Word2vec 模型。Word2vec 的主要思想:

  1. 基于超大的文本集
  2. 每一个单词都用向量表达
  3. 文本有单词 c 和 c 外的上下文单词集合 o 组成,扫描文本中的每一个位置 t
  4. 利用单词 c 的向量 和其上下文 o 的向量之间的相似性,计算给定 c 时 o 的概率 (或已知 o 时 c 的概率).
  5. 计算调整词向量使得上步的概率值最大

当文本扫描到位置 t 即单词 into 时,假定上下文窗口尺寸定义为 2 ,into 的上下文为前、后共 4 个位置,分别计算 4 个概率 : P(Wt+j | Wt)

下一个位置上的单词为 banking,同样计算 4 个概率:

更一般地,在已知中心词 wj 和 wj 的上下文窗口尺寸为 m 下,预测 wj 的上下文窗口的单词集合,即求窗口内几个单词都出现的概率,如下,T 为整个文本的单词个数,参数 theta 就是需要求解优化的参数:

最大似然估计的目标函数与线性回归、逻辑回归的一致,详细推导过程可以参考之前推送(后台回复 9 ),如下,即求目标函数的最小值:

目标函数中参数 theta 是待求解的,但是概率 P 是需要提前求解的,如何求解呢?

在这个模型中,处于文本中的每一个单词要么是中心词,要么是上下文,每个单词 w 用 2 个向量来表达:

  1. 当 w 是中心词,对应的向量为 Vw
  2. 当 w 是上下文词,对应的向量为 Uw

然后,对于中心词 c 和上下文词 o,给定 c 时 o 出现的概率可以表达为一个 softmax 函数:

分子中向量 Vw 和 Uw 相似性(相关性)越大,则分子越大;分母取e后,相当于对文本中的所有单词进行了正则处理。

可以用梯度下降求解目标函数中的参数,依次扫描每一个窗口,分别求出中心词的梯度及上下文窗口的梯度,同时更新本窗口的参数,如下所示当扫描到中心词 banking 时的场景。关于这部分内容,仍然参考之前推送(后台回复 9 )

More details

截止目前,我们都是已知中心词预测上下文单词,这就是 Skip-grams (SG) 模型;反过来,如果已知上下(bag of context words)预测中心词,称为 Continuous Bag of Words (CBOW)

注意到词库单词数亿级时,求成本函数的梯度便是亿级的,迭代更新一次将会很慢! 解决办法是每次迭代时,选择一批窗口作为样本,更新样本的窗口参数,这种方法称为 Stochastic gradient descent (SGD)

如果样本出现负采样技术时,需要对目标函数适当做适当修正,可以参考 google 的 Distributed Representations of Words and Phrases and their Compositionality” (Mikolov et al. 2013).

查看本课程完整资料,请后台回复:cs224

点击以下标题查看相关内容:

  • 最小二乘法原理(后):梯度下降求权重参数
  • 线性回归:算法兑现为python代码

原文发布于微信公众号 - Python与机器学习算法频道(alg-channel)

原文发表时间:2018-03-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

学界 | 双重注意力网络:中科院自动化所提出新的自然场景图像分割框架(附源码)

作者:Jun Fu、Jing Liu、Haijie Tian、Zhiwei Fang、Hanqing Lu

1852
来自专栏机器学习算法与Python学习

深度卷积生成对抗网络的无监督学习,补全人脸合成图像匹敌真实照

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 我们会再接再厉 成为全网优质的技术类...

4376
来自专栏小小挖掘机

推荐系统遇上深度学习(五)--Deep&Cross Network模型理论和实践

一个DCN模型从嵌入和堆积层开始,接着是一个交叉网络和一个与之平行的深度网络,之后是最后的组合层,它结合了两个网络的输出。完整的网络模型如图:

1642
来自专栏机器之心

ECCV 2018 | 腾讯AI lab & 复旦大学合作提出无监督高分辨率的图像到图像转换方法SCAN

作者:Minjun Li,Haozhi Huang,Lin Ma, Wei Liu, Tong Zhang, Yu-Gang Jiang

841
来自专栏SIGAI学习与实践平台

视频语义分割介绍

随着深度学习的发展,图像语义分割任务取得了很大的突破,然而视频语义分割仍然是一个十分具有挑战性的任务,本文将会介绍视频语义分割最近几年顶会上的一些工作。

3492
来自专栏达观数据

技术干货 | 漫谈Word2vec之skip-gram模型

新媒体管家 ? 作者简介 刘书龙,现任达观数据技术部工程师,兴趣方向主要为自然语言处理和数据挖掘。 word2vec是Google研究团队的成果之一,它作为一种...

9618
来自专栏专知

【专知-PyTorch手把手深度学习教程04】GAN快速理解与PyTorch实现: 图文+代码

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

54811
来自专栏IT派

机器学习中的算法:支持向量机(SVM)基础

导语:最近一段时间看了看关于SVM(Support Vector Machine)的文章,觉得SVM是一个非常有趣,而且自成一派的方向,所以今天准备写一篇关于关...

3766
来自专栏人工智能头条

神经网络训练中的Tricks之高效BP(反向传播算法)

1593
来自专栏智能算法

长文干货!走近人脸检测:从VJ到深度学习(下)

深度学习给目标检测带来的变革 人脸检测作为一种特定类型目标的检测任务,一方面具有其自己鲜明的特点,需要考虑人脸这一目标的特殊性,另一方面其也和其它类型...

3718

扫码关注云+社区