斯坦福大学深度学习与自然语言处理第二讲

第二讲:简单的词向量表示:word2vecGlove(Simple Word Vector representations: word2vec, GloVe)

转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:斯坦福大学深度学习与自然语言处理第二讲:词向量

推荐阅读材料:

  1. Paper1:[Distributed Representations of Words and Phrases and their Compositionality]]
  2. Paper2:[Efficient Estimation of Word Representations in Vector Space]
  3. 第二讲Slides [slides]
  4. 第二讲视频 [video]

以下是第二讲的相关笔记,主要参考自课程的slides,视频和其他相关资料。

如何来表示一个词的意思(meaning)

    • 英文单词Meaning的定义(来自于韦氏词典)
      • the idea that is represented by a word, phrase, etc.
      • the idea that a person wants to express by using words, signs, etc.
      • the idea that is expressed in a work of writing, art, etc.

在计算机中如何表示一个词的意思

      • 通常使用类似Wordnet的这样的语义词典,包含有上位词(is-a)关系和同义词集
      • panda的上位词,来自于NLTK中wordnet接口的演示

      • good的同义词集

语义词典存在的问题

      • 语义词典资源很棒但是可能在一些细微之处有缺失,例如这些同义词准确吗:adept, expert, good, practiced, proficient,skillful?
      • 会错过一些新词,几乎不可能做到及时更新: wicked, badass, nifty, crack, ace, wizard, genius, ninjia
      • 有一定的主观倾向
      • 需要大量的人力物力
      • 很难用来计算两个词语的相似度

One-hot Representation

      • 传统的基于规则或基于统计的自然语义处理方法将单词看作一个原子符号:hotel, conference, walk
      • 在向量空间的范畴里,这是一个1很多0的向量表示:[0,0,0,0,…,0,1,0,…,0,0,0]
      • 维数:20K(speech)–50K(PTB)–500K(big vocab)–13M(Google 1T)
      • 这就是”one-hot”表示,这种表示方法存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。光从这两个向量中看不出两个词是否有关系:

Distributional similarity based representations

      • 通过一个词语的上下文可以学到这个词语的很多知识

      • 这是现代统计NLP很成功的一个观点

如何使用上下文来表示单词

      • 答案:使用共现矩阵(Cooccurrence matrix)X
        • 2个选择:全文还是窗口长度
        • word-document的共现矩阵最终会得到泛化的主题(例如体育类词汇会有相似的标记),这就是浅层语义分析(LSA, Latent Semantic Analysis)
        • 窗口长度容易捕获语法(POS)和语义信息

基于窗口的共现矩阵:一个简单例子

      • 窗口长度是1(一般是5-10)
      • 对称(左右内容无关)
      • 语料样例
        • I like deep learning.
        • I like NLP.
        • I enjoy flying

存在的问题

      • 规模随着语料库词汇的增加而增加
      • 非常高的维度:需要大量的存储
      • 分类模型会遇到稀疏问题
      • 模型不够健壮

解决方案:低维向量

      • idea: 将最重要的信息存储在固定的,低维度的向量里:密集向量(dense vector)
      • 维数通常是25-1000
      • 问题:如何降维?

方法1:SVD(奇异值分解)

      • 对共现矩阵X进行奇异值分解

Python中简单的词向量SVD分解

      • 语料:I like deep learning. I like NLP. I enjoy flying

      • 打印U矩阵的前两列这也对应了最大的两个奇异值

用向量来定义单词的意思:

      • 在相关的模型中,包括深度学习模型,一个单词常常用密集向量(dense vector)来表示

Hacks to X

      • 功能词(the, he, has)过于频繁,对语法有很大影响,解决办法是降低使用或完全忽略功能词
      • 延展窗口增加对临近词的计数
      • 用皮尔逊相关系数代替计数,并置负数为0
      • +++

词向量中出现的一些有趣的语义Pattern

        以下来自于:

An improved model of semantic similarity based on lexical co-occurence


使用SVD存在的问题

      • 对于n*m矩阵来说计算的时间复杂度是o(mn^2) 当 n<m,当单词或者文档数以百万计时很糟糕< li="">
      • 对于新词或者新的文档很难及时更新
      • 相对于其他的DL模型,有着不同的学习框架

解决方案:直接学习低维度的词向量

word2vec的主要思路

      • 与一般的共现计数不同,word2vec主要来预测单词周边的单词
      • GloVe和word2vec的思路相似:GloVe: Global Vectors for Word Representation
      • 比较容易且快速的融合新的句子和文档或者添加新的单词进入词汇表

word2vec的主要思路

      • 预测一个窗口长度为c的窗口内每个单词的周边单词概率
      • 目标函数:对于一个中心词,最大化周边任意单词的log概率

      • 对于p(wt+j/wt)最简单的表达式是:
      • 这里v和v′分布是w的“输入”和“输出”向量表示(所以每个w都有两个向量表示)
      • 这就是基本的“动态”逻辑回归(“dynamic” logistic regression)

代价/目标函数

      • 我们的目标是优化(最大化或最小化)代价/目标函数
      • 常用的方法:梯度下降

      • 一个例子(来自于维基百科): 寻找函数f(x)=x4–3x3+2的局部最小点,其导数是f′(x)=4x3–9x2
      • Python代码:

梯度的导数

      • 白板(建议没有直接上课的同学看一下课程视频中的白板推导)
      • 有用的公式

      • 链式法则

word2vec中的线性关系

      • 这类表示可以很好的对词语相似度进行编码
        • 在嵌入空间里相似度的维度可以用向量的减法来进行类别测试

计数的方法 vs 直接预测

GloVe: 综合了两类方法的优点

      • 训练更快
      • 对于大规模语料算法的扩展性也很好
      • 在小语料或者小向量上性能表现也很好

GloVe的效果

      • 英文单词frog(青蛙)的最相近的词

Word Analogies(词类比)

      • 对单词之间的线性关系进行测试(Mikolov et al.(2014))

Glove可视化一

Glove可视化二:Company-CEO

Glove可视化三:Superlatives

Word embedding matrix(词嵌入矩阵)

      • 提前训练好的词嵌入矩阵

      • 又称之为查询表(look-up table)

低维度词向量的优点

      • 深度学习词向量的最大优势是什么?
      • 可以将任何信息表征成词向量的形式然后通过神经网络进行传播

      • 词向量将是之后章节的基础
      • 我们所有的语义表示都将是向量形式
      • 对于长的短语和句子也可以通过词向量的形式组合为更复杂的表示,以此来解决更复杂的任务–>下一讲

课程笔记索引:
斯坦福大学深度学习与自然语言处理第一讲:引言

参考资料:
Deep Learning in NLP (一)词向量和语言模型
奇异值分解(We Recommend a Singular Value Decomposition)

时间: 2024-08-01 17:49:14

斯坦福大学深度学习与自然语言处理第二讲的相关文章

斯坦福大学深度学习与自然语言处理第一讲

我学习自然语言是从Christopher D.Manning的统计自然语言处理基础这本书开始的,很多文本分析也是应用统计方法,或者机器学习的方法,而近年来深度学习逐渐渗入各个领域,其在自然语言处理领域中也取得了令人惊叹的效果,这成功的引起了我的重视,决定学习一下.何其所幸,让我找到了斯坦福大学深度学习与自然语言的课程,深得我心啊,所以打算好好学习一下,鉴于我爱自然语言处理中有相关课程的slides,我就直接复制粘贴了,接下来打算做的工作是对该课程中推荐阅读的部分论文做一些笔记.本人才疏学浅,专业

斯坦福大学深度学习与自然语言处理第一讲:引言

斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing ,授课老师是青年才俊Richard Socher,他本人是德国人,大学期间涉足自然语言处理,在德国读研时又专攻计算机视觉,之后在斯坦福大学攻读博士学位,拜师NLP领域的巨牛 Chris Manning和Deep Learning 领域的巨牛 Andrew Ng ,其博士论文是< Recursive Deep Le

Deep Learning 十_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)

前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab2015b,16G内存,2T机械硬盘 实验内容:Exercise:Convolution and Pooling.从2000张64*64的RGB图片(它是the STL10 Dataset的一个子集)中提取特征作为训练数据集,训练softmax分类器,然后从3200张64*64的RGB图片(它是th

Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)

前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep learning:二十九(Sparse coding练习) 实验环境:win7, matlab2015b,16G内存,2T机械硬盘 本节实验比较不好理解也不好做,我看很多人最后也没得出好的结果,所以得花时间仔细理解才行. 实验内容:Exercise:Sparse Coding.从10张512*51

Deep Learning九之深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)

前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取彩色特征,这些特征会被用于下一节的练习 理论知识:线性解码器和http://www.cnblogs.com/tornadomeet/archive/2013/04/08/3007435.html 实验基础说明: 1.为什么要用线性解码器,而不用前面用过的栈式自编码器等?即:线性解码器的作用? 这一点,Ng

Deep Learning 十一_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一步!如果说原始数据的获得,是深度学习中最重要的一步,那么获得原始数据之后对它的预处理更是重要的一部分. 1.数据预处理的方法: ①数据归一化: 简单缩放:对数据的每一个维度的值进行重新调节,使其在 [0,1]或[ − 1,1] 的区间内 逐样本均值消减:在每个样本上减去数据的统计平均值,用于平稳的数

深度学习与自然语言处理(3)_斯坦福cs224d Lecture 3

原文作者:Rohit Mundra, Richard Socher 原文翻译:@熊杰([email protected]) && @王昱森([email protected]) && @范筑军老师( [email protected]) && @OWEN([email protected]) 内容校正:寒小阳 && 龙心尘 时间:2016年6月 出处:http://blog.csdn.net/han_xiaoyang/article/deta

深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答

深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答 作业内容翻译:@胡杨([email protected]) && @胥可([email protected]) 解答与编排:寒小阳 && 龙心尘 时间:2016年6月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51760923 http://blog.csdn.net/longxinchen_ml/article/details/51765

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及