word embedding以及one-hot编码的区别及应用

在 NLP领域,word embedding 已经成为了众所周知的技术。
在现实生活中 word embedding 已经拥有非常广泛的应用:语音助手、机器翻译、情感分析… 因为 word embedding 的特殊性,它几乎覆盖了所有 NLP 的应用。
本文将会从传统的 one-hot 编码开始,阐述其优劣,并延伸至 word embedding 技术和其优点

​一、为什么要让单词变成向量 - 让计算机知道爱(NLP中读懂数据)

人类可以很轻易地理解一个单词、词组或者字母,比如「LOVE」,但机器是理解不了的。想要让机器理解单词,就必须要把它变成一串数字(向量)。下面介绍的 One-Hot Encoding(One-Hot 编码)和 Word Embedding (词嵌入)和就是把单词变成向量的两类方法。

二、One-Hot Encoding - 不负责任的老师(词汇表->稀疏向量)

​以前人们采用的方法是 one-hot encoding。
我们以英文为例,首先你要维护一个很长很长很长的词汇表,词汇表可以是前人总结出来的常用词,也可以是你文本数据里的所有单词的集合,词汇表大概长成这样:
在这里插入图片描述
可以把词汇表理解成一个(V, 1)维的向量,其中V为词汇个数,在上面这个词汇表里,第一个词是 a,第 v 个词是 zulu,假设 love 是其中的第 520 个词,那么 love 这个单词就可以表示成如下向量:
在这里插入图片描述即在这个(V, 1)维的向量中,第 520 元素为 1(表示出现了单词 love),其余元素为 0。同理,词汇表中的任何一个单词都可以以这种形式表达,这个方法叫做 one-hot encoding。

三、word embedding - 让计算机学会爱(词间的关系)

one-hot encoding 可以让计算机知道有这么个单词,但这个单词表示什么意思?和其他单词有什么关联?计算机是理解不了的。比如「love」和「romantic」,人类可以很轻易的理解这两个单词,但是 one-hot encoding 的结果只能告诉计算机:「love」和「romantic」仅仅是非常高维的空间里两个毫无关系的向量(内积为 0)。
one-hot encoding 不是一个好老师,它只让计算机死记硬背单词,却不能让计算机理解单词背后的文化和内涵。此时就需要 word embedding 这个优秀的老师登场了。word embedding 将 one-hot encoding 的向量映射到一个新的空间,在这个空间里,「love」和「romantic」、「apple」和「orange」等不再是毫无关系的高维向量,表示近似含义的单词可能会更加接近彼此,向量间的相似度也更有意义。比如说,经过了 word embedding 后,每个单词都会映射到一个 300 维的空间,那么单词可能会被表示成如下形式:

word embedding以及one-hot编码的区别及应用_第1张图片

第一个维度表示性别,King 接近 -1(男性),Queen 接近 +1(女性),而 Apple 和 Orange 与性别没什么关系,所以接近 0;
第二个维度表示尊贵程度,第三个维度表示年龄,可以以此类推。显而易见,经过 word embedding 后,「King」和「Queen」更接近了,「Apple」和「Orange」更接近了,同时「King」或「Queen」离「Apple」或「Orange」更远了。现在计算机已经懂了,

后来学者们又发现,其实通过向量的基础运算,我们也可以对 word embedding 的结果更懂一些,
比如说,在上面的例子中,代表 King 的向量减去代表 Queen 的向量,其结果和代表 Man 的向量减去代表 Woman 的向量近似相等:
再比如假如以 B 站的网页信息和弹幕等作为语料库训练模型,二次元的女神也可以被作为词向量进行计算: 这是一个很惊奇的发现:原来单词的基础运算也有一些奇妙的意义。现在我们不仅懂了,还很扎心了。最后还需要澄清一点,
在本文举的例子里,word embedding 的结果,每个维度都有很容易解释的意义,比如性别等,
实际上算法计算出的词向量其 维度代表的意义往往难以解释,也不具备现实意义。这也是深度学习一直很魔幻的地方:算法研究者自己计算出的结果自己都很难解读。

四、总结

最后我们来做一个总结,自然语言的向量化表示方法主要有两类:one-hot encoding 和 word embedding。它们的优缺点如下:
word embedding以及one-hot编码的区别及应用_第2张图片https://www.zhihu.com/org/ling-kou-leetcode

你可能感兴趣的:(计算机基础知识)