深度学习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 条评论
登录 后参与评论

相关文章

来自专栏机器人网

深度学习知识框架--概率图模型

在实际应用中,变量之间往往存在很多的独立性假设或近似独立,随机变量与随机变量之间存在极少数的关联。PGM根据变量之间的独立性假设,为我们提供了解决这类问题...

1112
来自专栏灯塔大数据

塔秘 | 宅男的福音:用GAN自动生成二次元萌妹子

导读:相信每个人都会被卡哇伊的二次元妹子萌到,我们很多人也可能梦想自己创作二次元人物,但奈何技艺不精、功力不足,得到的结果往往无法达到我们的期望。现在人工智能来...

5217
来自专栏IT派

机器学习中的数学基础

导语:现在出现了很多易于使用的机器学习和深度学习的软件包,例如 scikit-learn, Weka, Tensorflow 等等。机器学习理论是统计学、概率学...

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

浅析深度学习在实体识别和关系抽取中的应用

实体识别 作者:蒙 康 编辑:黄俊嘉 命名实体识别 1 命名实体识别(Named Entity Recognition,NER)就是从一段自然语言文本中...

5984
来自专栏数据科学与人工智能

【应用】Python做文本挖掘的情感极性分析

「情感极性分析」是对带有感情色彩的主观性文本进行分析、处理、归纳和推理的过程。按照处理文本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析。其中...

1283
来自专栏量子位

Goodfellow新研究:对抗样例让机器与人类双双上当 | 论文

安妮 编译自 arXiv 量子位 出品 | 公众号 QbitAI 俗话说的好,耳听为虚。但眼见……也不一定为实。 机器学习模型很容易受到对抗样例的影响,一个图片...

3816
来自专栏AI科技评论

如何评价Google最新发布的增强型风格迁移算法?

Google最新发布了一种新的迁移网络(来自其论文《A Learned Representation for Artistic Style》)同时学习多种风格的...

4339
来自专栏CDA数据分析师

大数据时代空间数据挖掘的认识及其思考

引言 空间数据挖掘(Spatial Data Mining,SDM)即找出开始并不知道但是却隐藏在空间数据中潜在的、有价值的规则的过程。具体来说,空间数据挖掘就...

25910
来自专栏AI研习社

说到修图这件事,你还真是比不上AI | 2分钟读论文

来源 / Two Minute Papers 翻译 / 林立宏 校对 / J叔 整理 / 雷锋字幕组 本期论文 Visual Attribute Transfe...

2948
来自专栏人工智能头条

中文NLP用什么?中文自然语言处理的完整机器处理流程

人工智能头条早先发布的文章《用 Python 构建 NLP Pipeline,从思路到具体代码,这篇文章一次性都讲到了》,是基于英文来举例的。

1K5

扫码关注云+社区