Word Embedding
引入
Word2Vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。其从大量的自然文本语料中以无监督的方式训练语言模型得到的一种副产物,可以作为先验知识应用在诸如语义相似度匹配、文本分类、文本聚类等任务中。
Word2Vec将每个词使用向量的方式表征该词的语义信息,即通过一个嵌入空间使得语义上相似的词在该空间内距离很近。
One-Hot
对于计算机而言,自然语言需要首先转换成数字才能被计算机识别,最初,人们直接将词映射为0-1的one-hot编码,例如语料为“我和你”,“我和他”。我们使用one-hot表示
- 首先构建词表:我,和,你,他
- 表示,即对应位置为1,否则为0。
我和你:1110, 我和他:1101
这样做有两个非常致命的缺点:
- 其假设词之间是相互独立的,无法表示词之间的联系,与词在句子中的顺序。
- 稀疏性问题进而导致维度灾难
所以我们希望使用一个稠密向量来表示每个词与每个句子。那如何将语义融入到词表示中?
分布式表示
Harris 在 1954 年提出的分布假说( distributional hypothesis)为将语义融入词表示中提供了理论基础:上下文相似的词,其语义也相似。
word embedding一般来说就是一种基于神经网络的分布表示。那分布式表示有什么优点呢:更加详细的解释可以看参考文献2中的解释,这里只按我自己的理解做下简单归纳
我们知道,机器学习需要从有限的例子中寻找到合理的使得出现新数据时可以预测出正确的结果。
问题的关键在于训练所需要的数据量上。
如果我们用One hot representation去学习,那么每一个单词我们都需要实例数据去训练,即便我们知道"篮球"和"足球"都是球类运动,有相近的语义。
分布式表示的优点
假设我们的词汇只有4个,girl, woman, boy, man,下面就思考用两种不同的表达方式会有什么区别。
如果使用one-hot表示:
只看第一层的权重,下面的情况需要确定4*3个权重,因为每个维度都彼此独立,girl的数据不会对其他单词的训练产生任何帮助,训练所需要的数据量,基本就固定在那里了。如果在来个单词queen,虽然我们知道其与girl与women相关,但由于没有训练数据,会导致无法对其进行预测,泛化能力很弱。
如果我们使用分布式表示:
我们这里手动的寻找这四个单词之间的关系。可以用两个节点去表示四个单词。每个节点取不同值时的意义如下表。 那么girl就可以被编码成向量[0,1],man可以被编码成[1,1](第一个维度是gender,第二个维度是age)。
那么这时再来看神经网络需要学习的连接线的权重就缩小到了2*3。同时,当送入girl为输入的训练数据时,因为它是由两个节点编码的。那么与girl共享相同连接的其他输入例子也可以被训练到(如可以帮助到与其共享female的woman,和child的boy的训练)。
Word embedding也就是要达到第二个神经网络所表示的结果,降低训练所需要的数据量。从数据中自动学习出输入空间到分布式空间的映射
经过一系列的降维神操作,有了用分布式表示的较短的词向量,我们可以使用词向量分析词之间的关系,比如我们将词的维度降维到2维,有一个有趣的研究表明:
出现这种现象的原因是,我们得到最后的词向量的训练过程中引入了词的上下文。
例如:姚明是篮球运动员,在后文中,训练篮球的词向量时考虑了“篮球”的上下文,这样便可以使“篮球”的词向量带有语义信息了。
最开始使用神经网络得到词的分布式表示的是03年的NNLM模型(本站对其进行过总结),之后Google开发出了训练词向量的工具Word2Vec并进行开源,然后针对不能表示同义词等的问题,又出现了ELMO、GPT等,之后发展出了BERT及BERT的家族。我们逐步开始词向量的学习吧。