没有合适的资源?快使用搜索试试~ 我知道了~
首页深度学习word2vec学习笔记
伴随着深度学习的大红大紫,只要是在自己的成果里打上 deep learning 字样, 总会有人去看。深度学习可以称为当今机器学习领域的当之无愧的巨星,也特别 得到工业界的青睐。 在各种大举深度学习大旗的公司中,Google 公司无疑是旗举得最高的,口号 喊得最响亮的那一个。Google 正好也是互联网界璀璨巨星,与深度学习的联姻, 就像影视巨星刘德华和林志玲的结合那么光彩夺目。 巨星联姻产生的成果自然是天生的宠儿。2013 年末,Google 发布的 word2vec 工具引起了一帮人的热捧,互联网界大量 google 公司的粉丝们兴奋了,从而 google 公司的股票开始大涨,如今直逼苹果公司。 在大量赞叹 word2vec 的微博或者短文中,几乎都认为它是深度学习在自然 语言领域的一项了不起的应用,各种欢呼“深度学习在自然语言领域开始发力了”。 互联网界很多公司也开始跟进,使用 word2vec 产出了不少成果。身为一个 互联网民工,有必要对这种炙手可热的技术进行一定程度的理解。 好在 word2vec 也算是比较简单的,只是一个简单三层神经网络。在浏览了 多位大牛的博客,随笔和笔记后,整理成自己的博文,或者说抄出来自己的博文
资源详情
资源评论
资源推荐
ML info word2vec
- 1 -
深度学习 word2vec 笔记之基础篇
by 北流浪子(2014-05-25)
博客地址:http://blog.csdn.net/mytestmy/article/details/26969149
基础篇:http://blog.csdn.net/mytestmy/article/details/26961315
一.前言
伴随着深度学习的大红大紫,只要是在自己的成果里打上 deep learning 字样,
总会有人去看。深度学习可以称为当今机器学习领域的当之无愧的巨星,也特别
得到工业界的青睐。
在各种大举深度学习大旗的公司中,Google 公司无疑是旗举得最高的,口号
喊得最响亮的那一个。Google 正好也是互联网界璀璨巨星,与深度学习的联姻,
就像影视巨星刘德华和林志玲的结合那么光彩夺目。
巨星联姻产生的成果自然是天生的宠儿。2013 年末,Google 发布的 word2vec
工具引起了一帮人的热捧,互联网界大量 google 公司的粉丝们兴奋了,从而
google 公司的股票开始大涨,如今直逼苹果公司。
在大量赞叹 word2vec 的微博或者短文中,几乎都认为它是深度学习在自然
语言领域的一项了不起的应用,各种欢呼“深度学习在自然语言领域开始发力了”。
互联网界很多公司也开始跟进,使用 word2vec 产出了不少成果。身为一个
互联网民工,有必要对这种炙手可热的技术进行一定程度的理解。
好在 word2vec 也算是比较简单的,只是一个简单三层神经网络。在浏览了
多位大牛的博客,随笔和笔记后,整理成自己的博文,或者说抄出来自己的博文。
二.背景知识
2.1 词向量
自然语言处理(NLP)相关任务中,要将自然语言交给机器学习中的算法来
处理,通常需要首先将语言数学化,因为机器不是人,机器只认数学符号。向量
是人把自然界的东西抽象出来交给机器处理的东西,基本上可以说向量是人对机
器输入的主要方式了。
词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就
是把一个词表示成一个向量。
主要有两种表示方式,下面分别介绍,主要参考了@皮果提在知乎上的问答,
也就是参考文献【2】。
2.1.1 One-Hot Representation
一种最简单的词向量方式是 one-hot representation,就是用一个很长的向量
ML info word2vec
- 2 -
来表示一个词,向量的长度为词典的大小,向量的分量只有一个 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 Distributed Representation
另一种就是 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 距离,得到距离最小的那个词,就是它最相似的。
ML info word2vec
- 3 -
这样的特性使得词向量很有意义,自然就会吸引比较多的人去研究,前有
Bengio 发表在 JMLR 上的论文《A Neural Probabilistic Language Model》,又有
Hinton 的层次化 Log-Bilinear 模型,还有 google 的 Tomas Mikolov 团队搞的
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,将它们在二维平面上描出来(可能还需
作适当的旋转),如下图右图所示:
观察左、右两幅图,容易发现:五个词在两个向量空间中的相对位置差不多,
这说明两种不同语言对应向量空间的结构之间具有相似性,从而进一步说明了在
词向量空间中利用距离刻画词之间相似性的合理性。
2.2 语言模型
2.2.1 基本概念
语言模型其实就是看一句话是不是正常人说出来的。这玩意很有用,比如机
器翻译、语音识别得到若干候选之后,可以利用语言模型挑一个尽量靠谱的结果。
在 NLP 的其它任务里也都能用到。
语言模型形式化的描述就是给定一个 T 个词的字符串 s,看它是自然语言的
概率 P(w1,w2,…,wt)。w1 到 wT 依次表示这句话中的各个词。有个很简单的推
论是:
ML info word2vec
- 4 -
p
= p
1
,
2
,
=
p
1
p
2
1
)p(
3
|
1
,
2
) p(
|
1
,
2
,
1
) (1)
上面那个概率表示的意义是:第一个词确定后,看后面的词在前面的词出现
的情况下出现的概率。如一句话“大家喜欢吃苹果”,总共四个词“大家”,“喜欢”,
“吃”,“苹果”,怎么分词现在不讨论,总之词已经分好,就这四个。那么这句话
是一个自然语言的概率是:
P(大家,喜欢,吃,苹果)=p(大家)p(喜欢|大家)p(吃|大家,喜欢)p(苹果|大家,
喜欢,吃)
p(大家)表示“大家”这个词在语料库里面出现的概率;
p(喜欢|大家)表示“喜欢”这个词出现在“大家”后面的概率;
p(吃|大家,喜欢)表示“吃”这个词出现在“大家喜欢”后面的概率;
p(苹果|大家,喜欢,吃)表示“苹果”这个词出现在“大家喜欢吃”后面的概率。
把这些概率连乘起来,得到的就是这句话平时出现的概率。
如果这个概率特别低,说明这句话不常出现,那么就不算是一句自然语言,
因为在语料库里面很少出现。如果出现的概率高,就说明是一句自然语言。
看到了上面的计算,看有多麻烦:只有四个词的一句话,需要计算的是 p(大
家),p(喜欢|大家),p(吃|大家,喜欢),p(苹果|大家,喜欢,吃)这四个概率,这四个
概率还要预先计算好,考虑词的数量,成千上万个,再考虑组合数,p(吃|大家,
喜欢)这个有“大家”、“喜欢”和“吃”的组合,总共会上亿种情况吧;再考虑 p(苹果
|大家,喜欢,吃)这个概率,总共也会超过万亿种。
从上面的情况看来,计算起来是非常麻烦的,一般都用偷懒的方式。
为了表示简单,上面的公式(1)用下面的方式表示
p
s
= p
1
,
2
,
= (
|
)
=1
其中,如果 Contexti 是空的话,就是它自己 p(w),另外如“吃”的 Context 就
是“大家”、“喜欢”,其余的对号入座。
符号搞清楚了,就看怎么偷懒了。
2.2.2 N-gram 模型
接下来说怎么计算(
|
),上面看的是跟据这句话前面的所有词来
计算,那么(
|
)就得计算很多了,比如就得把语料库里面 p(苹果|大家,
喜欢,吃)这种情况全部统计一遍,那么为了计算这句话的概率,就上面那个例子,
都得扫描四次语料库。这样一句话有多少个词就得扫描多少趟,语料库一般都比
较大,越大的语料库越能提供准确的判断。这样的计算速度在真正使用的时候是
万万不可接受的,线上扫描一篇文章是不是一推乱七八糟的没有序列的文字都得
扫描很久,这样的应用根本没人考虑。
ML info word2vec
- 5 -
最好的办法就是直接把所有的(
|
)提前算好了,那么根据排列组
上面的来算,对于一个只有四个词的语料库,总共就有 4!+3!+2!+1!个情况要计
算,那就是 24 个情况要计算;换成 1000 个词的语料库,就是
!
1000
=1
个情况需
要统计,对于计算机来说,计算这些东西简直是开玩笑。
这就诞生了很多偷懒的方法,N-gram 模型是其中之一了。N-gram 什么情况
呢?上面的 context 都是这句话中这个词前面的所有词作为条件的概率,N-gram
就是只管这个词前面的 n-1 个词,加上它自己,总共 n 个词,计算(
|
)只
考虑用这 n 个词来算,换成数学的公式来表示,就是
p
= p(
|
+1
,
+2
, ,
1
)
这里如果 n 取得比较小的话,就比较省事了,当然也要看到 n 取得太小,会
特别影响效果的,有可能计算出来的那个概率很不准。怎么平衡这个效果和计算
就是大牛们的事情了,据大牛们的核算,n 取 2 效果都还凑合,n 取 3 就相当不
错了,n 取 4 就顶不住了。看下面的一些数据,假设词表中词的个数 |V| = 20,000
词,那么有下面的一些数据。
照图中的数据看去,取 n=3 是目前计算能力的上限了。在实践中用的最多的
就是 bigram 和 trigram 了,而且效果也基本够了。
N-gram 模型也会有写问题,总结如下:
1、n 不能取太大,取大了语料库经常不足,所以基本是用降级的方法
2、无法建模出词之间的相似度,就是有两个词经常出现在同一个 context 后面,但
是模型是没法体现这个相似性的。
3、有些 n 元组(n 个词的组合,跟顺序有关的)在语料库里面没有出现过,对应出
来的条件概率就是 0,这样一整句话的概率都是 0 了,这是不对的,解决的方法
主要是两种:平滑法(基本上是分子分母都加一个数)和回退法(利用 n-1 的元
组的概率去代替 n 元组的概率)
2.2.3N-pos 模型
当然学术是无止境的,有些大牛觉得这还不行,因为第 i 个词很多情况下是
条件依赖于它前面的词的语法功能的,所以又弄出来一个 n-pos 模型,n-pos 模
型也是用来计算(
|
) 的,但是有所改变,先对词按照词性
(Part-of-Speech,POS)进行了分类,具体的数学表达是
p
= p
|c(
+1
), c(
+2
), , c(
1
)
剩余33页未读,继续阅读
luancuan
- 粉丝: 0
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0