CS224n Lecture 2 词向量表示:word2vec

1. Word meaning

1.1 one-hot表示法

比如一个有4个词的语料:

I like deep learning,如果使用one-hot编码那么每一个词对应一个1,其他词则对应0,

I :[1 0 0 0]
like :[0 1 0 0]
deep :[0 0 1 0]
learning:[0 0 0 1]

但是使用这样的表大方是有个问题,就是每当我的语料库更改的话,那么同一个词的编码方式就会发生变化,比如我的语料库变成了:I like deep learning very much,那么这里面的词的编码就变成:

I :[1 0 0 0 0 0]
enjoy :[0 1 0 0 0 0]
deep :[0 0 1 0 0 0]
learning:[0 0 0 1 0 0]
very :[0 0 0 0 1 0]
much :[0 0 0 0 0 1]

可以看到,只是语料库发生了变化,同一个词I,deep,learning三个词都发生了变化,而且可以发现随着语料库的增加,每一个句中的词的长度都在增加,并且1在整个句子中越来越稀疏,比如有个200个词的语料库只有一位是1,其他199位都是0,再比如2000个词的语料库呢?并且 like 和 enjoy其实表达的是差不多的意思,但是使用这种方法就完全体现不出来,所以总结一下使用one-hot有一下几个缺点:

  • 同一个随着语料库发生改变表达也会不同

  • 不能表示词与词之间的相似性

  • 随着语料库的增加one-hot表式会变得越来越稀疏

1.2 分布式表示

基于上面one-hot无法表示词与词之间的相似性,所以1957年语言学家J.R.Firth提出:
“You \ shall \ know \ a \ word \ by \ the \ company \ it \ keeps"
这句话是说:你要是想知道一个单词的意思,可以通过这个单词周围的词(上下文)看出来。所以应运而生了一种新的表示方法:distributed representation(分布式表示),其实这个概念我们中国学生最了解不过了,还记不记得大家上学时做过一种英语题叫做完形填空,你做题时是不是英语老师会跟你说这个空里面的词你就看上下文就能十有八九猜出来。这里有的小伙伴可能会疑惑,为什么叫分布式表示呢,我的理解是一个词的意思不单单在于它本身还取决于他周围的词,也就是说词的信息有一部分存在于上下文中,信息被分散了。比如下面这个例子:

1.3 分布式词表示的实现

跟one-hot相同的是,分布式词表示同样使用一个向量来表示,但与one-hot使用词在句子中的位置来标识不同,分布式是是使用一个稠密的向量来表示一个词,这个向量一般在300-500维左右,有的会超过1000维,但对于超大型的预料来说这已经相对于one-hot是降维的了。


那么,句中的所有词都使用这样的稠密向量表示后,我们就可以用一些手段来优化这些向量,使得剧中的某些词的向量能更准确的代表词的意思。而这种方法就是接下来要提到的word2vec model(Mikolov et al. 2013)

2. Word2vec introduction

2.1 word2vec的主要思路

predict \ between \ every \ word \ and \ its \ context \ words!

2.2 word2vec有两个基本模型

  • Skip-gram(SG)
    ~~~给出中心词预测上下文 predict context words given target (position independent)
  • Continuous Bags of Words(CBOW)
    ~~~给出上下文预测中心词 predict target word from bag-of-words context

2.3 两种高效的训练模型的方式

  • Hierarchical softmax(层次softmax)
  • Negative sampling(负例采样)
    虽然上述两种方式对于word2vec模型的训练很高效,但是在本节课中只针对Skip-gram模型介绍一种低效的训练方式,叫做Naïve softmax

2.4 Skip-gram

skip-gram的主题思想是通过一个中心词预测该词周围的上下文词,如图:


从图中看到,该中心词是banking然后预测的词是 turningintocrisesas 四个词,也就是说定义了一个分别向前向后的m=2窗口,用数据学表达式写出就是:

公式的意义是:最大化所有中心词预测它周围上下文词正确的概率,这个公式作为loss function即代价函数。
我再举个例子来说明下这个数学公式,借用漫威中Spider Man的一句话:

I \ believe \ there's \ a \ hero \ in \ all \ of \ us

这里我就写了t=there'st=hero两个,但是聪明的你应该知道这里的t应该要遍历文本中所有的词来作为中心词的。这里解释清楚了我们继续,对J'(\theta)取对数似然的相反数为:

我们的目标是最大化loss functionmaxJ'(\theta),那么对于J(\theta)就变成了minJ(\theta)。再反观J(\theta)公式,这个P(w_{{t+j}}|w_{t})该如何表示呢?答案是使用softmax函数替换:

这个公式里面的u_{o}v_{c}分别代表的是中心词的向量和当前预测的上下文的向量,这个也说明了:在一句话中一个词有两个向量,一个是中心词向量,一个是上下文向量,比如我刚才举的例子,当t=there's作为中心词预测hero时,hero会有个上下文向量,当t=hero作为中心词预测其他词时,hero也会有个中心词向量。

2.5 Skip-gram详细过程

下图是课程中老教授给出的一幅skip-gram的介绍图,从图中我们可以看出一点端倪:


这里有几个符号需要说一下:

w_{t}:句子中某个单词的one-hot向量
W:语料库中(非一个句子)所有单词对应的中心词向量矩阵(这个矩阵就是我们的优化目标,初始化一般是随机小数)
v_{c}:中心词的向量
W':语料库中(非一个句子)所有单词的上下文向量矩阵(这个矩阵就是我们的优化目标,初始化一般是随机小数)
u_{x}^{T}v_{c}:中心词向量与上下文向量的内积

可以看到在最终的结果中w_{t-3}w_{t-2}都预测错了,所以我们会不断优化使得最终所有的词尽可能的都预测正确。如果这个图看着不舒服的话,这里附上标准的图片:

3. Skip-gram模型训练:梯度计算

在2.5中提到过WW'都是我们的优化目标矩阵,有的时候会把它们统称为\theta然后放在一起:

明白了这点我们就开始使用梯度下降对loss function进行求导计算了:




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • BERT发展史(三)全方位多角度理解Word2Vec 建议先阅读之前两篇文章: BERT发展史(一)从词嵌入讲起 ...
    LITD阅读 3,393评论 0 13
  • 自然语言处理中文本数值化表方法 词向量是什么,自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把...
    mugtmag阅读 5,129评论 4 10
  • 目前词向量主要用的技术 word2vec fasttext glove 1 one-host编码 one-hot编...
    georgeguo阅读 2,275评论 0 2
  • 1. 导入   这是语言表示系列的第1篇,主要讲述了分布式表示里的Word2vec方法。该系列目前暂定有4篇语言的...
    brucep3阅读 3,198评论 0 5
  • 自从关注了熹文的公众号,几乎定期或者不定期地看了她写的文章,才觉得她的文字对我来说太有力量了。她能把好多现实与难以...
    吴晓亮爱分享阅读 189评论 0 0