循环神经网络(三)
——词嵌入学习与余弦相似度
(原创内容,转载请注明来源,谢谢)
一、词汇表征
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