Word Embedding & Neighbor Embedding

Word Embedding 前言

在word embedding出现前,one-hot方法十分常用,但是one-hot虽然可以表示一个词,但是词的内在含义,两个词是否接近,我们并不能得知。进一步,可以对词进行分类,例如:cat,dog,bird可以分为一类。但是这样同样存在问题,两个类别之间可能会有一些联系,但是因为分类,两个类别之间的联系我们也无法表示。因此,我们需要word embedding。
简言之,就是将多实体映射到同一个高维空间中,并且我们期望高维空间中,相似的实体他们的距离会比较接近,也就是它们的余弦相似度接近1。而毫无关联,相聚较远的实体,它们的距离相应地也较远。
可以想象,将这个高维空间映射到二维平面上,会出现一个个相似实体的簇。

原理

基本思想

词的含义可以通过词的上下文得到。可以分为以下两种:

  • Count based
    • 主要利用词的共现,即出现频率来使得相似的词更加接近。
  • Prediction based
    • word2vec

Prediction-based 方法

目标是训练一个网络,给前一个词来预测下一个词出现是谁,输入是一个one-hot,输出是一个softmax的结果,即下一个词的几率。那么第一个隐藏层的的结果就可以拿来作为每个词的隐向量,即word embedding。

共享参数
因为,根据一个词来预测下一个词这样的任务,及时对于人来说也较为困难,因此,我们可以考虑根据多个词来预测下一个词。这样我们网络的输入就是多个词,但是这输入的多个词应该是共享权重的。设想如果用wi2w_i-2wi1w_i-1来预测wiw_i,如果两个权重不同的话,当wi2w_i-2wi1w_i-1是同一个词,这样同一个词就对应了两个不同的word embedding。
此外,通过共享参数可以极大减少参数量,因为我们词表可能很大。

共享参数共享参数

两种变体:

  • Continuous bag of word model (CBOW)
    用上下文预测中间词
  • Skip-gram
    用中间词预测上下文

Neighbor Embedding

###前言
非线性的降维
Manifold Learning
数据点是高维空间的manifold,原本分布是二维的但是被扭曲的放到一个高维空间中。可以想象一个地球,从太空看地球是一个三维的球形,但是在很近的距离看地面是一个二维平面。

高维空间示意图高维空间示意图

在高维空间中直接计算距离,有时候是失效的。
而manifold learning的目的就是把塞在高维空间的低维数据点展开、摊平。
降维示意图降维示意图

降维后,就可以直接计算距离判断两个点是否相似,进而使用一些传统的聚类算法。

Locally Linear Embedding (LLE)

wijw_{ij}表示xix^ixjx^j的相关性,我们需要找到一组wijw_{ij}使得下列式子最小。
ixijwijxj2 \sum_i{||x^i-\sum_jw_{ij}x^j||_2}
再将w_{ij}固定住,寻找一组z^i使得下式最小化。
izijwijzj2 \sum_i{||z^i-\sum_jw_{ij}z^j||_2}

降低维度示意图降低维度示意图

T-distributed Stochastc Neighbor Embedding(t-SNE)

t-SNE针对前面方法存在问题,即之前方法都使得相似的数据点更相近,但是忽视了不同数据的距离应该更远。这就使得虽然我们达到了降维的目的,但是数据之间是没有什么区别的。
t-SNE适用于结果展示,可视化效果好。

t-SNE首先分别计算原始数据对和降维后数据对之间相似度。

示意图示意图

我们期望找一组z使得这两个分布越接近越好
L=iKL(P(xi)Q(zi)) L=\sum_iKL(P(*|x^i)||Q(*|z^i))

Similarity Measure
SNE
S(xi,xj)=exp(xixj2) S'(x^i,x^j) =exp(-||x^i-x^j||_2)

t-SNE:
S(zi,zj)=11+zizj2 S'(z^i,z^j)=\frac{1}{1+||z^i-z^j||_2}
这样的相似度度量可以使得原来不相似度的点距离更远。