前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络(三) ——词嵌入学习与余弦相似度

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

作者头像
用户1327360
发布2018-03-29 16:53:37
1.4K0
发布2018-03-29 16:53:37
举报
文章被收录于专栏:决胜机器学习

循环神经网络(三)

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

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

一、词汇表征

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决胜机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档