【NLP专题】斯坦福CS224n课程笔记02:词向量表示(1)

【导读】专知内容组近期将会推出自然语言处理、计算机视觉等国外经典课程笔记系列。我们将首先介绍基于深度学习的自然语言处理的相关知识及应用。本系列博文基于斯坦福CS224n 2018最新课程进行总结,希望大家喜欢。

上一次我们介绍了自然语言处理相关概念、自然语言处理的应用,以及深度学习相关概念,并且引入了使用深度学习的方法来进行处理自然语言处理许多应用问题。这节课主要给大家讲解一下词向量的概念,详细说了WordNet、one-hot vectors和Word vectors 这三种方式的优劣,并且介绍了Word2vec目标函数梯度计算和其优化方法。感兴趣的读者可以详细阅读一下。

【NLP专题】斯坦福CS224n课程笔记01:自然语言处理与深度学习简介

  • 2018CS224n官网: http://web.stanford.edu/class/cs224n/index.html
  • 2017CS224n官方笔记: https://github.com/stanfordnlp/cs224n-winter17-notes
  • 2017CS224n视频地址: https://www.youtube.com/watch?v=OQQ-W_63UgQ&list=PL3FW7Lu3i5Jsnh1rnUwq_TcylNr7EkRe6
  • 2017CS224n国内在线观看: https://www.bilibili.com/video/av13383754

cs224n深度学习与NLP课程详细信息可以参见专知以前的内容:

【最新】2018斯坦福cs224n深度学习与NLP课程又开课了(附ppt下载)

Lecture 02 Word Vectors(1)

本节课计划



  • 词的意义(word meaning) (15 mins)
  • 介绍Word2vec (20 mins)
    • Word2vec目标函数梯度计算 (25mins)
    • 优化(optimize)复习(10 mins)

一. 我们如何表达一个单词的意思?



1. meaning的定义(在字典中的含义)

• 用一个词,短语等表示

• 一个人想用文字、符号等来表达

• 在书法,艺术等作品中表现出来的

• 最常见的语言学的思维认为“meaning”是:

2. 如何在计算机中表达可用的词义

• 常见的解决方案:使用WordNet,一个包含同义词集(synonym sets)和hypernyms(“is a” 关系)的列表的资源。如下图python代码所示:

• WordNet存在的问题

  • 是很好的资源,但是缺少单词之间的一些细微差别(nuance),比如说,“精通(proficient)”被列为“好(good)”的同义词。但这只有在某些情况下是正确的。
  • 缺少一些新词的含义,比如:wicked, badass, nifty, wizard, genius, ninja, bombest。从而导致WordNet无法与时俱进。
  • 这个数据集单词的挑选是比较主观的
  • 需要人力来创造和修改
  • 难以精准地计算词的相似度(word similarity);

因此我们需要更好的方法来表达词意!

• 将单词表示为离散的符号(discrete symbols),使用one-hot vectors 来表示单词,单词向量的维度由词库中所拥有的单词数量来决定,如下图所示:

但是,这种用one-hot将单词表示为离散符号的做法是有问题的:

  • (举例说明)在网络搜索中,如果用户搜索“Seattle motel”,我们希望匹配包含“Seattle motel”的所有文档。
  • 但是,

motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0], hotel = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0], 这两个向量是正交的(orthogonal)。他们之间没有相似度(cos90°=0)。 所以对于one-hot vectors,没有相似(similarity)的概念。

  • 可能的解决方法:

• 可以依靠WordNet的同义词列表来获得相似度吗? NO!

• 相反,是否可以在向量本身中encode similarity。

• 用上下文来表示单词(Representing words by their context)

  • 核心思想:一个单词的意思是由经常出现在近旁的单词所给出的(A word’s meaning is given by the words that frequently appear close-by)。 • “You shall know a word by the company it keeps” (J. R. Firth 1957: 11) • 现代统计NLP最成功的思想之一!
  • 当一个单词w出现在文本中时,它的上下文就是出现在附近(在一个固定大小的窗口内)的一组单词的集合。
  • 使用w的众多的上下文(context)来建立w的表示,如下图所示:
  • 词向量 (Wordvectors) 我们将为每个单词构建一个密集的向量,这样它就与出现在类似上下文中的单词的向量相似。比如:

注意:词向量(word vectors)有时也被称为词嵌入(word embeddings)或词表示(word representations)。

二. Word2vec概述



概述:Word2vec (Mikolov et al. 2013)是一个学习词向量表示的框架。其主要思想是:

  • 我们有一个大型文本语料库
  • 一个固定词汇表中的每个词都用一个向量表示
  • 遍历文本中的每个位置t,它有一个中心词和上下文(“outside”)词
  • 使用和之间词向量的相似度(similarity of the word vectors for and )来计算在已知的情况下,的概率(或者相反,已知计算)
  • 不断调整这个词向量以使得这个概率最大化

见下图两个例子:

• Word2vec:目标函数(objective function) 对于每个位置

,预测在给定中心词的固定大小为的窗口内的上下文词。如下图:

是需要优化(optimized)的所有变量,目标函数

有时也叫做代价(cost)函数或者损失(loss)函数。

• 我们希望最小化(minimize)目标函数:

现在问题是,如何计算

? 解决方法:每个单词w我们使用两个向量:

表示当w是中心词时候的向量

表示当w是上下文词时候的向量,

之后,对于中心词c和上下文词o我们可以通过如下公式计算到:

本质上,这是一个Softmax公式。 例子如下图所示:

• Word2vec:预测函数(prediction function)

为什么要用Softmax函数?因为Softmax函数可以将任意值

映射到一个概率分布

• 训练模型:计算所有的向量梯度!

是表示模型所有参数的一个长向量。记住每个词都有两个向量,我们接下来要做的事就是优化这些参数。

三. 梯度(gradient)的计算



• Chain Rule

• 举例:计算所有中心词的梯度(留作homework)

• 计算所有的梯度

三. 一些补充知识



1. 关于Word2vec的补充知识

• 为什么每个单词需要两个向量来表示? 更容易优化。最后求两者的平均值。

• Word2vec的两种变体

  1. Skip-grams(SG):给出中心词,预测上下文词
    1. Continuous Bag of Words(CBOW):给出上下文词,预测中心词

• 为了在训练中进一步提高效率:使用Negative sampling的方法

  • 补充:Theskip-gram model and negative sampling

• 补充:The continuous bag of words model

2. 关于梯度(gradient)的补充知识

• 关于梯度下降(Gradient Descent)

• 随机梯度下降(Stochastic Gradient Descent)

下节课将继续讲解。

建议阅读资料:



  • Word2Vec 教程 - The Skip-Gram Model http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
  • 论文:Distributed Representations of Words and Phrases and their Compositionality http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
  • 论文:Efficient Estimation of Word Representations in Vector Space https://arxiv.org/pdf/1301.3781.pdf

请关注专知公众号(扫一扫最下面专知二维码,或者点击上方蓝色专知),后台回复“NLPS” 就可以获取 2018年斯坦福CS224n课程PPT下载链接~

-END-

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-05-19

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

ECCV 2018 | GANimation让图片秒变GIF表情包,秒杀StarGAN

如果一张图片中的面部表情可以自动变成动画形式,就会打开许多不同领域新应用的大门,包括电影产业、摄影技术、时尚界和电子商务等。随着生成对抗网络的流行,这项任务取得...

1334
来自专栏专知

【深度学习最精炼详实干货中文讲义】复旦邱锡鹏老师《神经网络与深度学习》讲义报告分享01(附报告pdf下载)

【导读】复旦大学副教授、博士生导师、开源自然语言处理工具FudanNLP的主要开发者邱锡鹏(http://nlp.fudan.edu.cn/xpqiu/)老师撰...

4725
来自专栏机器学习算法工程师

《机器学习》笔记-贝叶斯分类器(7)

作者:刘才权 编辑:陈人和 前 言 如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,还...

3986
来自专栏企鹅号快讯

人工智能AI(1)开篇:小白之学习计划

最近小拾君准备正式开始人工智能相关领域的系统性学习了,看了一些资料及书籍,给自己列个学习计划,分享给大家,与君共勉。后续,将按照本计划(3.1开始)包括但不限于...

3028
来自专栏杂七杂八

CS231n学习笔记--计算机视觉历史回顾与介绍2

PASCAL Visial Object Challenge为图像识别和分类提供了一整套标准化的优秀的数据集,共20类。

803
来自专栏机器之心

深度 | 思考VC维与PAC:如何理解深度神经网络中的泛化理论?

3914
来自专栏机器之心

吴恩达授课,斯坦福CS230深度学习课程资源开放

课程地址:https://web.stanford.edu/class/cs230/

1112
来自专栏人工智能头条

深度学习-LeCun、Bengio和Hinton的联合综述(下)

1835
来自专栏PPV课数据科学社区

【干货】机器学习常见算法分类汇总

作者|王萌 转自|IT经理网 (www.ctocio.com) 机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法...

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

支持向量机(SVM)之Mercer定理与损失函数----5

任何时代,大部分人的研究所得都不过是基于前人的研究成果,前人所做的是开创性工作,而这往往是最艰难最有价值的,他们被称为真正的先驱。牛顿也曾说过,他不过是站在巨人...

1K7

扫码关注云+社区

领取腾讯云代金券