在了解什么是嵌入(embeddings)之前,我们需要先搞清楚一个词语在NLP中是如何被表示的

注:本次不涉及任何具体算法,只是单纯对概念的理解

词汇表征

One-Hot

词汇的表示方法有很多,最有名的肯定是独热编码(One-Hot )了。因为不是重点,所以下面只简单介绍一下

废话不多说,上图!

image-20210702103445478

假设我们有10000个词,Man位于第5391个,Woman位于9853,如果想要唯一表示这些词怎么办?

我们可以根据词的总量创建一个n行一列的矩阵,在某个词出现的地方标注为1,其余都用0填充,这样就可以唯一表示某个词了(如上图中的Man),这就是One-Hot编码的基本原理

为什么它常常被提到?可能因为比较好理解吧

但One-Hot其实有很多问题的,例如:

  • 数据量大了就炸了
  • 词与词之间没有关联性

关于第二个缺点这里单独说明一下

设想你已经有一个训练好的语言模型,可以预测句子下一个词是什么,如:

我想喝可口()#模型会判断出完整句子为“我想喝可口可乐”

但是换一下

我想喝百事()#这时候你的模型可能不知道“百事”与“可口”之间的联系,自然它不会输出“我想喝百事可乐”的结果

这种情况我们称为泛化性差。

那么想要提高泛化性,我们势必要获得词语之间的关系

一种自然的思路就是增加维度

高维词语表征

这里为什么不说一种具体的方法呢?因为我还是想从举例入手,避免一步太大扯着蛋

废话不多说,还是上图

image-20210702105217612

我们还是沿用之前的例子,只是这里我们加入了Apple和CS两个新词

这次试试用特征化的表示方法来表示这些词,因此,我们的学习对象从词的唯一表示变成了词的特征

例如,我们想知道这些词语与性别(gender)这个特征之间的关系

因为Man和Woman本质上就是性别的指代,这两个词应该最接近性别(gender)特征,所以我们假设男人的性别值是-1,女人的是1。

King和男人是非常相关的则可设为-0.95,Queen则与女人非常相关,可设为0.97,Apple和CS则与性别没什么关系,这显然是符合我们认知的。

注意:这里的数字只是为了说明相关性,不是由某种计算得出的(暂时不是),你也可以把King设成-0.91

图中其余特征表示原理类似

又如游戏(Game)与CS这个词相关性大,因此CS的数值为0.98,而其余的就很低,表明他们与游戏这个特征没什么关系

那么好了,现在我们把特征扩展到500个

image-20210702111317614

也就是说,我们有了500个维度去衡量一个词语

此时右边出现了一些由数值构成的奇怪阵列(你在看glove之类的模型时经常会看见这种东西)

现在,我们还是用一个矩阵表示一个词,这个矩阵的大小为500行1列,由某个词的特征构成从而具有唯一性

由此,Man就可以表示为e_5391,同理可以表示其他词汇

因此,高维表示会比One-Hot有更好的泛化能力。

这种用300维的特征去表示一个词语的方法就称为嵌入(embeddings),至于为什么叫嵌入,我猜可能与高维图像的表示有关,类似于一种嵌套。

版权声明:本文为DAYceng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/DAYceng/p/14962528.html