深度学习word2vec笔记(基础篇)

一.前言

伴随着深度学习的大红大紫,只要是在自己的成果里打上deep learning字样,总会有人去看。深度学习可以称为当今机器学习领域的当之无愧的巨星,也特别得到工业界的青睐。

在各种大举深度学习大旗的公司中,Google公司无疑是旗举得最高的,口号喊得最响亮的那一个。Google正好也是互联网界璀璨巨星,与深度学习的联姻,就像影视巨星刘德华和林志玲的结合那么光彩夺目。

巨星联姻产生的成果自然是天生的宠儿。2013年末,Google发布的word2vec工具引起了一帮人的热捧,互联网界大量google公司的粉丝们兴奋了,从而google公司的股票开始大涨,如今直逼苹果公司。

在大量赞叹word2vec的微博或者短文中,几乎都认为它是深度学习在自然语言领域的一项了不起的应用,各种欢呼“深度学习在自然语言领域开始发力了”。

互联网界很多公司也开始跟进,使用word2vec产出了不少成果。身为一个互联网民工,有必要对这种炙手可热的技术进行一定程度的理解。

好在word2vec也算是比较简单的,只是一个简单三层神经网络。在浏览了多位大牛的博客,随笔和笔记后,整理成自己的博文,或者说抄出来自己的博文。

二.背景知识

2.1词向量

自然语言处理(NLP)相关任务中,要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,因为机器不是人,机器只认数学符号。向量是人把自然界的东西抽象出来交给机器处理的东西,基本上可以说向量是人对机器输入的主要方式了。

词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就是把一个词表示成一个向量。

主要有两种表示方式,下面分别介绍。

2.1.1 One-Hot Representation

一种最简单的词向量方式是 one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的分量只有一个 1,其他全为 0, 1 的位置对应该词在词典中的位置。举个例子,

  “话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...]

  “麦克”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...]

每个词都是茫茫 0 海中的一个 1。

这种 One-hot Representation 如果采用稀疏方式存储,会是非常的简洁:也就是给每个词分配一个数字 ID。比如刚才的例子中,话筒记为 3,麦克记为 8(假设从 0 开始记)。如果要编程实现的话,用 Hash 表给每个词分配一个编号就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF 等等算法已经很好地完成了 NLP 领域的各种主流任务。

但这种词表示有两个缺点:(1)容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;(2)不能很好地刻画词与词之间的相似性(术语好像叫做“词汇鸿沟”):任意两个词之间都是孤立的。光从这两个向量中看不出两个词是否有关系,哪怕是话筒和麦克这样的同义词也不能幸免于难。

所以会寻求发展,用另外的方式表示,就是下面这种。

2.1.2 DistributedRepresentation

另一种就是Distributed Representation 这种表示,它最早是Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点。其基本想法是直接用一个普通的向量表示一个词,这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, ...],也就是普通的向量表示形式。维度以 50 维和 100 维比较常见。

当然一个词怎么表示成这么样的一个向量是要经过一番训练的,训练方法较多,word2vec是其中一种,在后面会提到,这里先说它的意义。还要注意的是每个词在不同的语料库和不同的训练方法下,得到的词向量可能是不一样的。

词向量一般维数不高,很少有人闲着没事训练的时候定义一个10000维以上的维数,所以用起来维数灾难的机会现对于one-hot representation表示就大大减少了。

由于是用向量表示,而且用较好的训练算法得到的词向量的向量一般是有空间上的意义的,也就是说,将所有这些向量放在一起形成一个词向量空间,而每一向量则为该空间中的一个点,在这个空间上的词向量之间的距离度量也可以表示对应的两个词之间的“距离”。所谓两个词之间的“距离”,就是这两个词之间的语法,语义之间的相似性。

一个比较爽的应用方法是,得到词向量后,假如对于某个词A,想找出这个词最相似的词,这个场景对人来说都不轻松,毕竟比较主观,但是对于建立好词向量后的情况,对计算机来说,只要拿这个词的词向量跟其他词的词向量一一计算欧式距离或者cos距离,得到距离最小的那个词,就是它最相似的。

这样的特性使得词向量很有意义,自然就会吸引比较多的人去研究,前有Bengio发表在JMLR上的论文《A Neural Probabilistic Language Model》,又有Hinton的层次化Log-Bilinear模型,还有google的TomasMikolov 团队搞的word2vec,等等。

词向量在机器翻译领域的一个应用,就是google的Tomas Mikolov 团队开发了一种词典和术语表的自动生成技术,该技术通过向量空间,把一种语言转变成另一种语言,实验中对英语和西班牙语间的翻译准确率高达90%。

介绍算法工作原理的时候举了一个例子:考虑英语和西班牙语两种语言,通过训练分别得到它们对应的词向量空间 E 和 S。从英语中取出五个词 one,two,three,four,five,设其在 E 中对应的词向量分别为 v1,v2,v3,v4,v5,为方便作图,利用主成分分析(PCA)降维,得到相应的二维向量 u1,u2,u3,u4,u5,在二维平面上将这五个点描出来,如下图左图所示。类似地,在西班牙语中取出(与 one,two,three,four,five 对应的) uno,dos,tres,cuatro,cinco,设其在 S 中对应的词向量分别为 s1,s2,s3,s4,s5,用 PCA 降维后的二维向量分别为 t1,t2,t3,t4,t5,将它们在二维平面上描出来(可能还需作适当的旋转),如下图右图所示:

观察左、右两幅图,容易发现:五个词在两个向量空间中的相对位置差不多,这说明两种不同语言对应向量空间的结构之间具有相似性,从而进一步说明了在词向量空间中利用距离刻画词之间相似性的合理性。


(本文出自:http://blog.csdn.net )

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-09-21

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

喵咪制造机:生成式对抗网络的花式画喵大法

2012年,吴恩达和Jeff Dean用Google Brain的1.6万个CPU所打造的大型神经网络,在被1000万YouTube视频中的猫图像训练三天后,自...

2656
来自专栏AI研习社

Facebook介绍ICCV2017收录论文,其中五分之一都有何恺明的名字(附下载链接)

本周,全球的计算机视觉专家们即将齐聚威尼斯参加 ICCV (International Conference on Computer Vision)2017,展...

2749
来自专栏大数据文摘

“无中生有”计算机视觉探奇

952
来自专栏计算机视觉战队

腾讯AI Lab的CVPR 2018文章解读

今天和大家分享马上要召开的CVPR 2018会议,这算殿堂级的会议,今天主要主角是我和腾讯,?说起腾讯,其实和他还有许多缘分,但是现在还挺不是个滋味,永远记得1...

861
来自专栏Petrichor的专栏

深度学习: pooling (池化 / 降采样)

对于网络结构而言,上面的层看下面的层经过pooling后传上来的特征图,就好像在太空上俯瞰地球,看到的只有山脊和雪峰。这即是对特征进行宏观上的进一步抽象。

932
来自专栏人工智能头条

“照骗”难逃Adobe的火眼金睛——用机器学习让P图无所遁形

521
来自专栏量子位

汤晓鸥为CNN搓了一颗大力丸

是重新搭一个模型呢,还是拿来新数据重新调参,在这个已经训练好的模型上搞迁移学习呢?

600
来自专栏机器之心

四大深度学习框架+四类GPU+七种神经网络:交叉性能评测

选自add-for 作者:Pedro Gusmão 机器之心编译 参与:李泽南、黄小天 最近,Pedro Gusmão 等人对于英伟达的四种 GPU 在四种不同...

37216
来自专栏AI科技大本营的专栏

【NLP年度重磅盘点】12项重大行业突破!详解2017年深度学习加持下的NLP大事件

翻译 | 林椿眄、刘畅、彭硕 编辑 | Donna Suisui 过去几年,深度学习架构和算法在图像识别和语音处理等领域取得了重大的进步。而在NLP(自然语言处...

3768
来自专栏人工智能LeadAI

TensorFlow从1到2 | 第三章:深度学习革命的开端:卷积神经网络

关于全连接神经网络(Full Connected Neural Network,FC)的讨论已经说的不少了,本篇将要介绍的是,从2006年至今的神经网络第三次浪...

3335

扫码关注云+社区