机器学习入门之无监督学习(二)

引言

本文主要讨论单词嵌入(Word Embedding)。是用在文本上的降维方法。

单词嵌入

喂给机器大量的文章后,它可以自动的把每个不同的词汇都用一个向量来表示。
我们希望机器在用向量来表示词汇后,向量每个维度都代表某种含义。
或者说这些词汇有相似的关系或某种语义,能在这个向量中呈现出来。

机器学习入门之无监督学习(二)

这些来描述词汇的向量我们就称为单词嵌入

一次词汇如果只用一个向量来描述它,最简单的方法就是1-of-N Encoding

就是说,假设英文总共有10万个单词,我们就创建一个10万维度的向量。每次单词我们都用这个10万维的向量表示,但是这个向量只有其中一维是1(代表那个单词出现),其他都是0。

机器学习入门之无监督学习(二)

以5维词汇来举例就是上面的样子。这种表示方法有很多缺点,重要的一个是词汇之间的关系无法表示出来。

怎么办呢,我们对词汇也可以做聚类。

机器学习入门之无监督学习(二)

把动物放到一类;动作放到一类;植物放到一类。但是这样做太粗糙了。
这时我们可以做单词嵌入,在单词嵌入中,每个词汇不是硬归类于某个类别中,而是每个词汇都用一个 Continuous Vector(连续向量?)来描述,其中每个维度都可能代表某种含义。

机器学习入门之无监督学习(二)

我们看这个例子,红线下面的是植物,也可能有其他属性,比如代表不会动的东西;

所以单词嵌入的方式更加精细。
那如何找单词嵌入呢,如何用一个向量来描述这些词汇呢?
基本的概念是每个单词的意思可以从它的上下文看出来。

机器学习入门之无监督学习(二)

假设机器读到了“马英九520宣誓就职”和“蔡英文520宣誓就职”,机器就可以知道马英九和蔡英文有某种相似的关系。

那如何来根据词汇的上下文来得到词的向量呢?

有两种方式:

  • 基于计数的(Count based)
    • 如果两个单词wiw_iwjw_j多次同时出现,那V(wi)V(w_i)(单词wiw_i的向量)和V(wj)V(w_j)的相似度应该要高
  • 基于预测的(Prediction based)
    • 预测接下来要出现哪个词汇

基于预测

机器学习入门之无监督学习(二)
假设你收集到了很多句子,接下来要机器做的事情是给定前面几个词汇,来判断接下来要出现哪个词汇。
机器学习入门之无监督学习(二)

希望找到一个NN,输入“潮水”和“退了”,期望机器输出“就”。可以使用最小化交叉熵的方式,让输出和“就”越接近越好。继续输入“退了”和“就”,期望输出“知道”。

这个东西适用场景似乎不多,可以在成语接龙。其实还可以用在语言模型(Language Modeling)上,
语言模型要做的事是预测一个句子出现的概率。

机器学习入门之无监督学习(二)

比如说想要机器预测出现“wreck a nice beach”这个句子个概率,实际上无法直接预测一个句子出现的概率,估测一个句子出现的概率时,通常会拆成很多小的片段。然后把这些片段分开去计算它的概率。
比如要计算上面那个句子出现的概率,先要计算由“wreck”开头的概率,然后后面接“a”的概率,同时“a”后面接“nice”的概率…。

机器学习入门之无监督学习(二)
也可以用上面的NN来做,这里把“START”也当成一个词汇,把它丢到NN中,看它预测“wreck”的概率是多少,把“wreck”丢里面看它输出“a”的概率是多少…,最后把这些概率都乘起来,就得到了这个句子出现的概率。

语言模型很重要,一般用在机器翻译和语音识别里面。

基于预测的方式是如何运作的呢。

机器学习入门之无监督学习(二)
每个词汇都可以用1-of-N encoding的方式来表示,只有一个维度是1,其他都是0的向量。

机器学习入门之无监督学习(二)

希望把这个向量丢到某个NN中,输出就是接下来出现每个词汇的概率。

机器学习入门之无监督学习(二)
如上,期望wiw_iwi1w_{i-1}之后出现的话,那么希望wiw_i词汇所对应的维度在上面的NN中输出的概率越大越好。

有了这些东西以后,接下来,我们把一个特征向量丢到NN里面去,把这个向量乘上一个矩阵做线性转换(降维)得到一个向量,再经过**函数变成第一个隐藏层的输入。

我们要对每一个词汇取一个向量,把输入的特征向量(每个词汇的1-of-N encoding向量)乘上线性转换后的向量当([z1,z2,][z_1,z_2,\cdots])成表示这个词汇的向量。

机器学习入门之无监督学习(二)
这样相似的词汇就会有相近的向量。

但是这样只看一个词汇来预测下一个词汇,可能是不太够的。

我们希望机器去看比较长的前面的词汇来预测下一个词汇。

机器学习入门之无监督学习(二)
这里假设看了前两个词汇,向量xi2,xi1x_{i-2},x_{i-1}的长度都是V|V|,权重矩阵W1,W2W_1,W_2都是ZXV|Z|X|V|的矩阵,很巨大。
因此,我们这里把W1,W2W_1,W_2共享同样的参数WW,最后如果只考虑前两个词汇的话,计算向量z=W(xi1+xi2)z=W(x_{i-1}+x_{i-2})就简单很多。

机器学习入门之无监督学习(二)

就是说wi2w_{i-2}词汇向量的第一维连到z1z_1的权重和wi1w_{i-1}第一维连到z1z_1的权重是一样的。

同样颜色的连线权重是同样的。这样每个词汇的权重都是固定的。

机器学习入门之无监督学习(二)

看前面词汇预测后面词汇还有一些变种,比如可以预测两个词汇中间的词汇,可以预测某个词汇左右两边的词汇。

参考

1.李宏毅机器学习