循环神经网络(三) ——词嵌入学习与余弦相似度

循环神经网络(三)

——词嵌入学习与余弦相似度

(原创内容,转载请注明来源,谢谢)

一、词汇表征

1、one-hot表示法

之前的学习中提到过,对于词汇库,可以用one-hot表示法来表示。即,假设词汇库单词量是10000个单词,则可以用1*10000的矩阵来表示每个单词,单词在对应词汇表中的位置是1,其他位置是0。

如man是第5391个单词,则矩阵为[0 0 0 ... 0 0 1 0 0 ... 0]T,这里的1就是在矩阵的第5391个位置。

这样做有个缺点,即词语之间无法建立任何联系,只有自身的位置关系。当训练出一句话认为orange是一种水果,后面可以跟上juice表示果汁,而另一种水果apple则还需要重新训练。

2、词嵌入表示法

为了改进one-hot的问题,可以使用词嵌入表示法。这个表示法关注的重点不是词在词汇表的位置,而是词的一些特性。例如词语是否包含性别、年龄、食品、形状、价值等特征,包含的程度如何等。

例如下图,就把男人、女人、国王、王后、苹果、橘子表示出来,实际上特征通常有300个左右,这里只列举几个特征。

这样,就可以判断出两个词语的相似度,进而进行推断。

3、可视化

300维太高维,无法可视化展示,可以使用t-SNE算法,将高维内容压缩到二维,以便展示出来。

但是需要注意的是,这里的压缩是非线性压缩,因此在高维两个词语之间的相差度换到二维后可能会有所变化。

词嵌入,可以理解成把每个词语嵌入到一个300维的物体中,在这个维度中找到一个特定的位置,放置这个词语。因为词汇表本身是一个很高维度的空间,通过这个算法压缩到二维的可视化平面上,每一个单词嵌入属于自己的一个位置,相似的单词离的近,没有共性的单词离得远。

二、使用词嵌入

1、介绍

从句子中,找出Sally Johnson是个名字:

由orange farmer 可知,Sally Johnson 是个人名,而非公司名。

若是用特征化表示方法表示嵌入的向量,用词嵌入作为输入训练好的模型,就能更容易的知道,因为 orange farmer和apple farmer 是相似的,甚至换成durian cultivator(榴莲培育家),词性也还是和orange farmer相似,故可以推断出Robert Lin也是个人名。

2、使用词嵌入迁移学习

1)根据大量文本语料库(10-1000亿个例子)来训练出词嵌入模型。或者使用现成的训练过的开源词嵌入模型。

2)从词嵌入中提取出的所需的模型数量(如10万个单词),同时适当减少词语的特征维度,并将词嵌入模型迁移到我们小训练集的新任务上。

3)使用我们新的标记数据对词嵌入模型继续进行微调。(如果训练量很小就不要更新了)。

说明:当训练集数据较小时,词嵌入的作用最明显,所以词嵌入在 NLP 应用很广泛。

3、其他

另外,这个过程类似人脸识别中的人脸图像编码的过程,都是比较编码后的向量的相似度来确认两者是否相似。但是词嵌入模型的词语通常是有限种类的,未知的词语会标记成<UKN>,而图像则需要处理各种的输入。

三、词嵌入特性与余弦相似度

1、相似处理过程

词嵌入有个特性,称为类比推理。例如已知man to woman,求 king to ?。

判断两对词语是否相似,例如man-woman与king-queen,可以把对应的词特征向量进行相减,减完以后进行比对即可。即求一个向量e,使得eman−ewoman≈eking−e

要使用公式化,即arg maxw sim(ew , eking−eman+ewoman),这里sim表示相似函数,即sim(a,b)表示a和b两个向量相似程度的值。

需要说明的是,通常相似度并不会精准的100%,因为经过压缩后,会有一定的误差。

2、相似度函数

最常用的相似度函数,即余弦相似度,如下图所示。其中分子表示两个向量的内积,分母表示向量元素的平方和的乘积。

因为这和计算余弦是一致的,故称为余弦相似度。

除此之外,还有欧拉距离(||u-v||2)等计算相似度的方式,但是余弦相似度最常用。

四、嵌入矩阵与嵌入网络

1、嵌入矩阵

上述的词嵌入模型,可以用一个矩阵E来表示,即E是300*10000维的矩阵。通过矩阵乘法法则,易知E * o = e。其中o表示词语用one-hot法表示的1*10000的矩阵,e是词的特征矩阵。

但是实际中,o矩阵大量的0元素,乘法无意义且效率低,故常用其他方式来得到矩阵e。

2、词嵌入学习网络

如下图所示,得到每个单词的特征矩阵e后,通过一个隐藏层连接,在经过一个softmax层,即可得到所需的结果。

这里输入6个词*每个词维度300 = 1800,而且不同的句子可能输入不一样。为了神经网络的稳定性,可以指定只需要目标词的前x个词语(这个x是一个超参数,可以设定成4)。

3、超参数设置方式

前面说了可以指定目标词的前四个单词,也可以指定前后各四个、前面一个、附件的某一个词(这个方式成为skip gram,后面会学习)等。

——written by linhxx 2018.03.21

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-03-21

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

开发 | 深度学习调参入门,有哪些技巧?

AI科技评论按:作者杨军,从事大规模机器学习系统研发及应用相关工作。本文整理自知乎,已获作者授权。 本文将分享一些自己关于深度学习模型调试技巧的总结思考(以CN...

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

【算法】朴素贝叶斯分类算法原理与实践

小编邀请您,先思考: 1 朴素贝叶斯公式是什么? 2 朴素贝叶斯的假设是什么? 3 朴素贝叶斯是如何分类? 本文介绍一下朴素贝叶斯分类算法,讲一下基本原理,再以...

40014
来自专栏AI科技评论

干货 | 张宇伦:基于残差密集网络的图像超分辨率(CVPR 2018 亮点论文)| 分享总结

AI 科技评论按:图像超分辨率技术作为底层计算机视觉任务,有着广泛的应用场景,比如:手机图像增强,视频监控,医疗影像,卫星图像,低分辨率人脸识别。因此,图像超分...

1842
来自专栏SIGAI学习与实践平台

化秋毫为波澜:运动放大算法(深度学习版)

运动放大(Motion Magnification),将视频中对应位置的运动进行放大,简单理解的话,就是找到时间段内的运动矢量,进行放大,然后权值叠加回去。

2862
来自专栏人工智能头条

深度学习-LeCun、Bengio和Hinton的联合综述(下)

1825
来自专栏企鹅号快讯

你所不能不知道的CNN

说起CNN,最初人们想到的都是某电视台,但等过几年,人们想起的多半是深度学习了。 应该说, CNN是这两年深度学习风暴的罪魁祸首, 自2012年, 正是它让打入...

4868
来自专栏CreateAMind

深度学习调参有哪些技巧?

最近因为一些需要,参与了一些CNN建模调参的工作,出于个人习性,我并不习惯于通过单纯的trial-and-error的方式来调试经常给人以”black-box...

2114
来自专栏专知

36页最新《深度学习在推荐系统上的应用》综述论文,209篇参考论文

【导读】随着在线信息量的不断增长,推荐系统已成为克服此类信息过载的有效策略。鉴于其在许多网络应用中的广泛采用,以及其改善与过度选择相关的许多问题的潜在影响,推荐...

2572
来自专栏PPV课数据科学社区

【干货】机器学习常见算法分类汇总

作者|王萌 转自|IT经理网 (www.ctocio.com) 机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法...

2916
来自专栏机器学习养成记

不同需求下可视化图形选择(翻译)

机器学习工程师George Seif的文章《5 Quick and Easy Data Visualizations in Python with Code》部...

37913

扫码关注云+社区

领取腾讯云代金券