查看原文
其他

自然语言理解与深度学习课堂笔记1: Word2Vec

2016-08-01 集智俱乐部 集智俱乐部
2016年7月21日 (AndreaSunshine、甄慧玲、祁辉记录,Jake整理、综合)
主题:Word2Vec:Basics and ModelNatural Language Processing in the Era of Deep Learning
主讲人:Yanran Li (The Hong Kong Polytechnic University)课程主页,云端资料及助教邮箱Course Page:

https://swarma.github.io

▲ All resources (syllabus,slides,suggested readings,homework) are shared via


http://pan.baidu.com/s/1qYN9yji

Password:  j7hu

(可点击文末阅读原文下载)


Class monitor: swarma_era@163.com

这次课程主要介绍学习Word embedding 和 word2vec 前需要了解的知识。


一、背景

传统自然语言处理的表达,一般以词为单位。自然语言字符表达成计算机能处理的信息,采取离散表达。假设有个词表,可以理解为字典,如何在这一万个字中表达这一个字。用一万维的向量表达这个字,某个字只可能在某一维地方为1,其他位置都为0。


这种方法特点:根据词表大小决定向量长度。很占空间,即使稀疏表示。缺乏泛化性,即lack of generalization。这种表示没法表达相似(cos函数)。所以希望能够有一种方式计算这种泛化性,稠密向量。


“You shall know a word by the company it keeps.”--J.R. Firth(1957)基于同一种思想,生出很多方法,主要有两种假说。




假说一:the distributional hypothesis 分布式假说 


一个词由周围词来推断。相似的词会出现在相似的语境里。由词跟语境的关系来判断相似度。下面是由这种假说,产生的很多种方法来计算这个实值向量。1954年BOW模型不考虑语序,出现一次加1。2003年LDA模型,是主题模型中的某一个特例。


Distributional models 基于那个假设,细化到自己的模型中,意思是相关的词出现在相同的句子里面。例如今晚的天空有很多星星。句子中天空和星星相关,横向。共现,相关词共同出现几次,svd矩阵分解方式拆除实值向量结果。



假说二:Distributed models  


相似词在相似语境contex下。例如今天天空有很多星星。今天天空有个太阳。这两个句子中的星星和太阳这两个词。纵向相似性。由神经网络语言模型得出的副产物,深度学习副产物,深度学习中基于错误传导的预测方式。


Context 可以同一个句子,也可以纵向。这两者的区别和联系如下图:



后来Bangio在一篇论文中提出了一种利用神经网络的方法来做自然语言理解的思路:

尽管这一框架本身并不实用,但是却包含了将单词进行向量编码的操作,而这却成为了后来词向量算法的前身。
于是,到了2013年Google的Mikolov提出了两套实用的算法,它们统称为Word2Vec。Word2vec 是代码项目的名字,只是计算word embedding的一个工具,是CBOW和Skip-Gram这两个模型开源出来的工具。连续实值词表达也叫词嵌入 word embedding。
如下图所示,左边的CBOW是利用词的上下文预测当前的单词;而Skip-Gram则是利用当前词来预测上下文。



二、Skipgram的原理 在这节课中,我们重点介绍后一种,即Skipgram,它的结构如图:

它的工作原理如下: 首先要有语料库和词库,大概词库需要包含所有语料库中的词,或者把没囊括的词encode成一个统一的值。如下图所示,每一个input都是一个1-hot encoded的词。每一个output是一个概率Vector表示Vector位置上的词出现在当前output位置的概率,Vector的位置和input的词的位置相符。
很绕口,当时听课这部分也没听明白,举个例子吧,如果有这样一个词序列 (我爱中国)那么就会有四个1-hot encoded input vector 1000, 0100,0010,0001。
 记得那个牛人的名言么,词的含义包含在这个词周围的小伙伴中。那么就要取周围的小伙伴,比如说取前后各一个。
那么就会有三个output,刚才说了每个output是一个概率Vector, 假设这三个output Vector是(0.3, 0.5, 0.7, 0.2), (0.1,0.9,0.1,0.2), (0.3,0.1,0.8,0.1)如果当前输入的词是0100的话,也就是“爱”这个词,那么三个Vector中的第一个(0.3,0.5,0.7,0.2)表示的就是“我”出现在“爱”之前一位的概率是0.3, “爱”出现在“爱”之前一位的概率是0.5, "中"出现在“爱”之前一位的概率是0.7,“国”出现在“爱”之前一位的概率是0.2 。同样对output中第二个Vector就是出现在当前“爱”的位置的概率,也许有小伙伴问,这个位置不应该是确定的词“爱”吗? 我也有同样的疑问,暂时搞不清。第三个output就是每个词出现在“爱”之后的概率了。
如果这部分理解了,那么我们就可以有一个优化的目标了,就是使得这一系列的Output Vector最接近真实的情况。所谓真实的情况就是各个文本了。也就是说在收集的上百万千万真实的文本中,对于“爱”这个词,之前(第一个Vector)出现“我”,“爱”,“中”,“国”的概率到底有多大。 Input 和 output优化目标都有了,那么通过一系列复杂的公式,以及参照下图,就会得到两个参数W和W’。 W我们可以简单的理解为词向量,也就是说这样的形式:
我 (0.9,-0.2,0.1)爱 (0.8, 0.2,0.2)中 (0.1, 0.3,0.4)国 (0.2, 0.3,0.6) 那么这一系列的复杂运算是怎么做的呢?答案就在于优化。我们让训练这个网络的最终目标就是去根据当前词来优化预测出它的上下文的概率,于是,我们就可以写出目标函数:

其中,T是语料库单词的总个数,p(wt+j|wt)是已知当前词t,预测周围词的总概率对数值。
(1)依然有一个 tips: 这里值得注意的不是函数本身,因为之所以在目标函数中用对数,完全是为了计算方便,值得注意的是第二个求和号的下标,需要在第 j 个词的左右分别有 c个。
这里,概率的计算方式如下:

(2)再来一个 tips:这里无论是 v 还是 v’对应的都是图 2 中的 v-dim,因此这里的乘法是向量乘法。


三、负采样 而后,依然可以采用反向传播等方式计算。然而,在实际的计算过程中,运算量过于巨大,于是人们就像出了一个绝妙的解决办法,从而快速地完成任务。这种方法就被称为“负采样”。 负采样的核心思想是,如果将自然语言看作是一串单词的随机组合,那么它的出现概率是很小的。于是,如果我们将拼凑的单词随机组合(负采样)起来将会以很大的概率不会出现在当前文章中。于是,我们很显然应该至少让我们的模型在这些负采样出来的单词组合上面出现概率应该尽可能地小,同时要让真正出现在文中的单词组合出现概率大。这样我们的模型才足够有效。于是,我们的目标变成了优化新的概率函数,从而得到最优的词向量嵌入:

这里D是出现在文章中的那些单词组合,Dbar是所有的未出现的,但是由机器生成的随机单词组合。Theta则是包含词向量的待优化参数。 实验证明,采用了新的目标函数以后,我们整个计算过程会非常快,而词向量嵌入的效果也很好。


四、联想:与统计物理的联系  从第一次课程对 word2vec 的“前世今生”的剖析我们似乎可看出:这是一个工业界至少是实验室的 project 中很好用的工具,它的原理已经很清楚。但是,关于 word2vec 或者 说关于 distributed representation 可以做的工作远远没有结束,尤其是从统计物理的角度而言。 第 I 部分的最后一个 tips 中我简单提到如果把分母都理解成配分函数的话, word2vec 与 RBM 的关系。下面我将用一部分的文字更加详细的说明。因为,与 RBM 的联系,远远不限于配分函数。
我看到 distributed representation 的第一反应,就是和统计物理及机器学习等都密 切相关的 representation learning。 事实上,Bengio 在 2013 年发表的 review:《Representation Learning: A Review and New Perspectives》中就已经指出了基于能量的模型 Boltzmann machine 和 Restricted Boltzmann machine 与 appropriate objectives for learning good representations 之间千丝万缕的联系。
人们为了研究 representation 的种种训练算法,以得到更好的语言模型,很多工作都 已经开展。例如,为了建立 deep representations, Hinton 和学生在 2009 年就研究了 Deep Boltzmann Machine(DBM),这里所提到的 Boltzmann Machine(BM) 与上文说到的RBM 一样,都是一个基于能量的模型,甚至可以说 RBM 是 BM 的一个特例:因为它们两个都是两层神经网络,但是 BM 是层间和层内都全连接,而 RBM 是层内无连接,层间全连接。下图展示了 RBM 的网络模型结构。 
RBM 的网络结构


这里,W 是连接隐藏层和显层之间的权值矩阵。

 当然,当年也是 Hinton 等人为了训练 RBM 并提出了 CD-k 算法,当然,这是另外一个内容了。至于文献中常常能看到的 Deep Belief Networks (DBNs)和 DBM 一样,都是基于 RBM 的一种扩展。这里,我们主要讲 distributed representation 和 RBM 的关系,至于 DBN 和 DBM,留下节课的课后作为脑洞分别说明。

通过上面的整理我们看出,无论是 word2vec 训练过程中的目标函数,还是目前工业界多用于分类的 RBM(当然包括 DBN,DBM),还是 planted 自旋玻璃模型,最后都可以归结到统计推断问题上面来。所以,是不是可以将大家的分析方式进行相互借鉴?将统计物理中求解配分函数的方式用到(1)式中,而将这里的负采样的想法用到配分函数的数值模拟中,当然,这里,如果定义“负”才是问题的核心。 



END




关于《走近2050:注意力、互联网与人工智能》




←识别二维码购买

随着人工智能程序AlphaGo以4:1的大比分战胜人类围棋世界冠军李世石,机器将征服人类的担忧正在甚嚣尘上。《走近2050:注意力、互联网与人工智能》则为我们描绘了一幅人机和谐共生、协同演化的全新场景。在看得见的未来,人类将越来越多地沉浸于五花八门的虚拟世界以获取各式体验,与此同时,我们将心甘情愿地将自己的注意力源源不断地输入给机器世界以促使它们进化。


本书从注意力的角度解读了包括互联网、人工智能、众包、人类计算、计算机游戏、虚拟现实在内的技术领域及其对社会生活的影响,还创造性地提出了一系列全新的概念:占意理论、图灵机-参与者模型、“游戏+”时代、意本家、自动游戏设计、自动化创业、占意通货、许愿树,等等。所有这些将为我们理解技术与人类的关系、透视人类社会的未来发展和走向提供深刻的洞察。




让苹果砸得更猛烈些吧!!!



长按识别二维码,关注集智Club,

让我们离科学探索更近一步。



▼点此下载云端资料,密码:j7hu

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存