首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

循环神经网络(三)

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

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

一、词汇表征

1、one-hot表示法

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

如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、其他

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

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

1、相似处理过程

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

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

要使用公式化,即arg maxwsim(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矩阵大量的元素,乘法无意义且效率低,故常用其他方式来得到矩阵e。

2、词嵌入学习网络

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

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

3、超参数设置方式

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

——written by linhxx 2018.03.21

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180321G0MPDH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券