Embedding原理到实战

原创:王稳钺
资料来源:张春阳

词向量被应用在非常非常多的场景中,甚至可以说跟文字相关的互联网应用基本上都会跟词向量有关系。本文主要从应用、发展以及实战代码来介绍词向量。

1. 词向量的应用

搜索引擎是人们每天都在使用的产品,搜索引擎其实就是利用词向量技术来进行搜索的。搜索引擎是如何工作的呢?其实主要分为三步。第一步,搜索引擎需要爬取互联网上所有的文章,把这些文章全部都转化成词向量。第二步是要将搜索词也转化为词向量。最后一步就是用搜索词的词向量与文章转变成的词向量进行相似度的比较,再把与搜索词相似的文章返回给用户。

第二个应用也非常常见——头条新闻。今日头条之所以能做得像现在这么好,它背后最主要的商业逻辑就是它使用了推荐引擎,给不同的用户分发不同的内容。它是如何实现的呢?首先第一步就是把很多的新闻转换成向量。第二步就是根据用户的行为,比如点击、点赞、评论某个新闻,将用户也转化为向量。第三步与搜索引擎类似,就是将与用户向量相似的文章返回给用户。其实还有很多类似的应用,比如淘宝等电商平台。

2. 从文字到词向量

如何生成词向量呢?词向量是如何发展到现在的呢? 1946计算机诞生了。自从有了计算机之后,其实有很多伟大的先贤们一直在想着一个问题,就是怎么能够让计算机也能像人一样帮助人们去做一些事情,比如识别图像,比如”理解“文字。这里面最伟大的人物就是阿兰图灵,阿兰图灵发表了《计算机器与智能》这篇论文。这篇论文可能很多人都没听说过,但是图灵测试一定不陌生。图灵测试其实就是人工智能的最早的雏形,它的思想就是制作一个机器,让其他人分辨不出来这个机器人是一个真的机器还是一个人。阿兰图灵的很多理论成为了人工智能最早期的思想萌芽。

1950 年,在有了人工智能的想法之后,人们就在思考,人主要有几个功能——文字语言、视觉、思考与决策。这就诞生了所谓的人工智能的三大方向——自然语言处理(NLP)、机器视觉(CV)、商业分析(BI)。 自然语言处理其实就是把人类说的文字表示成计算机也可以理解。但计算机只能处理1、0这些数字信号,所以计算机看不懂人们所写的这些奇奇怪怪的文字,不管是英文、中文或其他文字的。那最早人类是怎么去表示文字的呢?其实人类就用了一种其实到今天为止依然很常用的一种方法——WordNet。这个词可能很多人没听说过,但是它的应用却非常实用——词典。WordNet的想法说能不能使用同义词或者反义词来去解释原单词。其实这个过程会非常的复杂,而且同时也存在一些问题。例如解释丈夫这个词,就需要用很多周边的词来解释,比如先生、老公、英语的话husband等等。但第一个问题是,人类的语言是在不断进化的,经常会出现新的词汇,比如网络上的一些新鲜词汇。那这些新鲜词汇怎么给它放到这个同义词的解释当中呢?这就需要人去做,就需要耗费很大的劳动力。因为并不知道新的网络文化或者网络用语,它会产生在哪里,那做起来就会无从下手。并且还有非常高的延迟性,因为可能需要很长时间理解新的词汇的意思,之后才能将它整理进词表中。另一个问题是这种方式其实就没有办法比较相似的程度是多少,但其实人们想要知道的其实不仅仅是相似不相似,而是到底有多相似或不相似。所以WordNet方法,它天生就有这样的局限性。

后来人们又想到Onehot方法。Onehot方法其实是非常常用的一种方法,就是在今天,深度学习横行,机器学习非常普及的情况下,其实Onehot方法也是依然在用的一种方法。Onehot方法其实就是假设有一个词典,词典里面包含了很多个单词,为了解释起来比较方便,下图中假设词典中只有5个词——小学、中学、大学、硕士和博士。如何去表示这五个单词呢?其实就用一种很简单的方式,小学给它编码为1000,中学为0100,大学0010……五个不同编码码,分别来代表不同的含义。Onehot的本质思想就是用不同的符号去表示不同的词,这种方法其实被称为离散型方法。其实Onehot也有它的问题。首先它无法表示相似词,比如之前提到的老公、丈夫其实都是一个意思,但是Onehot会将它编成两个不同的编码,其实也无法计算相似度。另一个问题是维度爆炸。如果词典中有1万个词,那么表示某一个词就要用长度1万的向量来表示,这对于计算机来说非常浪费存储空间。

为了解决问题,人们又探索了别的方法。首先人们提出了分布式假设,即如果两个词的上下文是相似的,那么这两个词也是相似的。

利用这种想法,表示方法又发生了改变——把一个单词划到一个向量的空间中,就是将它变成一个向量。词义是比较相似的词,就在向量空间中表示到很相近的位置上。下图分别表示了二维和三维空间的表达示例。这种表达方式叫做分布式表达。

那么如何将词投射到向量空间中呢?并且空间可以是任意维度的。第一种方法是NNLM,其实是利用一个神经网络。这个网络很简单,只有三层,输入层、隐藏层和输出层。输入层就是把文本用Onehot表示出来,然后给它塞到Embedding层里面去。第二层就是tanh函数,第三层是softmax层。其实这个网络的目的就是通过上文来预测下文。下面展示一下每一层的细节。

首先输入层就是全链接层,来实现降维的目的。后面会展示代码,只需一行就能实现这样的功能。

隐藏层就只是tanh函数,具体的函数公式以及图像可以见上图。这一层的目的在于增加非线性关系,让模型拥有更强的学习能力。

输出层也非常简单,就是softmax函数。softmax函数能把一个值转化成一个概率的分布,这样就可以得到下文可能出现的词的概率。下面用代码来具体实现。

3. 词向量实战

下图用代码展示了NNLM的实现。

下图的部分展示了如何把一些单词转化为Onehot形式。

词表是一个动态大小的词表,不同的数据就有不同的词表大小。窗口大小是指到底用多少上文去预测一个下文,窗口大小是可以自己决定的,所以这是一个动态的参数。图中就是用了第一个句子的长度减1。特征大小就是想得到的向量是多长的,可以是两维的、三维的、1000维的都是可以的。

这两部分展示了模型的训练和模型的预测。

欢迎大家通过复现代码实现具体的应用,来帮助理解词向量。

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