《Unsupervised Learning:Neighbor Embedding》
Manifold Learning
Manifold Learning(流行学习)是一种非线性的降维方法。
流行学习认为我们观察到的数据实际上是从低维空间映射到高维空间的。由于数据内部特征的限制,高纬空间的数据表示会存在维度上的冗余,即这些数据可以使用较低维度来进行唯一的表示。(参考博文)
【即数据原本是 x x x维的,但是现实中我们获取到的数据是 y ( y > x ) y(y>x) y(y>x)维的,所以我们收集到的数据实际上是 x x x维数据映射到 y y y维上的结果。所以我们收集到的 y y y维数据是可以通过降维一一映射到原始的 x x x维数据】
举一个例子,我们平时的世界地图是一个 2 2 2维的平面,现在将这个 2 2 2维平面卷成一个球塞到一个圆上就变成了 3 3 3维的地球仪, 2 2 2维的数据就变成了一个流形;当然没塞之前,它也是一个流形,欧式空间是流形的一种特殊情况(流行不是一个形状,而是一个空间)。
流体在局部具有欧式空间的性质,能用欧式距离来进行距离计算。即低维的流行映射到高维流行后,局部数据点之间仍然具有欧式空间的性质。
如在地球以上,某两个比较相近的地点之间距离,可以使用欧式距离来计算;但是这两个地点比较远时,如计算南极和北极的距离,这时候就不能使用欧氏距离来计算了。
所以在流体中,只有较近的样本点欧氏距离才会成立。流行学习要做的事就是利用局部性质对高维流行进行降维。
Locally Linear Embedding (LLE)
Locally Linear Embedding(局部线性嵌入)是无监督非线性降维算法,是流行学习的一种。
假设我们观察到的数据在空间上的分布如下图所示:
我们关注样本点
x
i
x^{i}
xi以及其邻居
x
j
x^j
xj,用
w
i
j
w_{ij}
wij代表
x
i
x^{i}
xi与
x
j
x^{j}
xj之间的关系。
我们假设
x
i
x^{i}
xi可以由它的邻居线性表示,即:
x
i
≈
∑
j
w
i
j
x
j
x^{i}≈\sum\limits_{j}w_{ij}x^j
xi≈j∑wijxj
所以 w i j w_{ij} wij代表邻居组合成 x i x^{i} xi的权重,也代表了 x i x^{i} xi与邻居之间的关系。因此,找点和点之间的关系转换成了找点与点之间的权重。
所以我们需要找一组
w
i
j
w_{ij}
wij,使邻居
x
j
x^j
xj能够最小差距的线性表示出
x
i
x^i
xi;即找到一组
w
i
j
w_{ij}
wij最小化下式:
∑
i
∣
∣
x
i
−
∑
j
w
i
j
x
j
∣
∣
2
∑_i||x^i−∑_jw_{ij}x^j||_2
i∑∣∣xi−j∑wijxj∣∣2
接下来要做的事情就是将 x i x^i xi和 x j x^j xj降维到 z i z^i zi和 z j z^j zj,并且维持关系 w i j w_{ij} wij。
对于低维的 z i z^i zi和 z j z^j zj,我们需要根据 w i j w_{ij} wij来找到 z i z^i zi和 z j z^j zj;若想在低维空间任维持原来的关系,需要找到一组 z i z^i zi和 z j z^j zj,最小化下式:
∑ i ∣ ∣ z i − ∑ j w i j z j ∣ ∣ 2 ∑_i||z^i−∑_jw_{ij}z^j||_2 i∑∣∣zi−j∑wijzj∣∣2
LLE并没有给出明确的降维函数 ,只是给出了降维前后的约束条件。
LLE的实际应用中需要选择邻居的个数 K K K, K K K过大过小都不太好; K K K太大时,就会去维护那些由于空间扭曲才导致距离接近的点之间的关系,但是这些关系我们并不希望在降维后依然存在。
Laplacian Eigenmaps
Laplacian Eigenmaps(拉普拉斯特征映射)也是一种典型的流形学习方法。
仅通过两点之间的欧氏距离去判断两点之间的关系是不够充分的,应该还需要观察两点在高密度区域下的距离;如下图,右边通过密度区域去构建的距离才是两点之间真正的距离。
所以我们可以将数据构建成一张图,在用两点之间的路径长度来近视两点之间的距离。
在这里先回忆一下半监督学习中的Smoothness Assumption的观点:
“相似”的 x x x会有相同的 y ^ \hat{y} y^;即 S m o o t h n e s s A s s u m p t i o n Smoothness\ Assumption Smoothness Assumption假设样本 x x x的分布是不均匀的,如果 x 1 x_1 x1和 x 2 x_2 x2在一个高密度区域很相近的话( x 1 x^1 x1 and x 2 x^2 x2 are close in a high density region),那么 y 1 ^ \hat{y^1} y1^和 y 2 ^ \hat{y^2} y2^是一样的。
且定义图的平滑程度为:
S
=
1
2
∑
i
,
j
w
i
,
j
(
y
i
−
y
j
)
2
=
y
T
L
y
S=\frac{1}{2}\sum_{i,j}w_{i,j}(y^i-y^j)^2=y^TLy
S=21i,j∑wi,j(yi−yj)2=yTLy
对应的损失函数为:
L = ∑ x r C ( y r , y ^ r ) + λ S L=\sum_{x^r}C(y^r,\hat{y}^r)+λS L=xr∑C(yr,y^r)+λS
这里的损失函数前一项希望有标签数据能够准确预测;后一项希望无标签数据不同 c l a s s class class之间的权重能够尽可能的小。
在降维任务中的原则是:
若
x
i
x^i
xi和
x
j
x^j
xj在一个高密度区域很相近(
w
i
j
w_{ij}
wij比较大),那么降维后的
z
i
z^i
zi和
z
j
z^j
zj也应该是相近的;
所以我们要做的事是:找到一组 z i z^i zi和 z j z^j zj最小化下式:
S
=
1
2
∑
i
,
j
w
i
,
j
(
z
i
−
z
j
)
2
S=\frac{1}{2}∑_{i,j}w_{i,j}(z^i−z^j)^2
S=21i,j∑wi,j(zi−zj)2
(这里的
w
i
,
j
w_{i,j}
wi,j表示的不是两点的关系,表示的是两点之间的相似度,即与Smoothness Assumption中的含义一致)
但是,当
z
i
z^i
zi和
z
j
z^j
zj都为0时,就能满足最小化了;那为什么Smoothness Assumption中就不会得到这个结果呢?
因为Smoothness Assumption中的损失函数包含两项,当
z
i
z^i
zi和
z
j
z^j
zj都为0,第一项
∑
x
r
C
(
y
r
,
y
^
r
)
\sum_{x^r}C(y^r,\hat{y}^r)
∑xrC(yr,y^r)就会变得特别大。
所以为了避免
z
i
z^i
zi和
z
j
z^j
zj都为0,需要加上约束条件:
如果降维后的
z
z
z处在
M
M
M维,希望
z
z
z能够占据整个
M
M
M维空间(不存在冗余维度),即
{
z
1
,
z
2
,
…
z
N
}
=
R
M
\{z^1, z^2, … z^N\} = R^M
{z1,z2,…zN}=RM。
而这个 z z z最后的结果就是 G r a p h L a p l a c i a n L Graph\ Laplacian\ L Graph Laplacian L较小特征值所对应的特征向量。这也是这个降维方法被叫做Laplacian Eigenmaps的原因。
T-distributed Stochastic Neighbor Embedding (t-SNE)
T-distributed Stochastic Neighbor Embedding(T分布随机邻域嵌入)是一种非线性降维技术。
LLE和Laplacian Eigenmaps只规定了相邻的点要相近,但没有规定不相近的点要分开。
如下图,是LLE用于手写数据集上的结果;可以看出同类样本点聚集在一起了,但是并没有有效的分开不同类的样本。
而t-SNE规定了相邻的点要相近,也会将不相近的点分开。
使用t-SNE降维,需要计算原始数据
x
x
x上所有
x
i
x^i
xi和
x
j
x^j
xj之间的相似度
S
(
x
i
,
x
j
)
S(x^i,x^j)
S(xi,xj),然后进行归一化:
P
(
x
j
∣
x
i
)
=
S
(
x
i
,
x
j
)
∑
k
≠
i
S
(
x
i
,
x
k
)
P(x^j|x^i)=\frac{S(x^i,x^j)}{∑_{k≠i}S(x^i,x^k)}
P(xj∣xi)=∑k=iS(xi,xk)S(xi,xj)
将
x
x
x降维到
z
z
z之后,也进行计算相似度
S
′
(
x
i
,
x
j
)
S'(x^i,x^j)
S′(xi,xj),然后计算相似度:
Q ( z j ∣ z i ) = S ′ ( z i , z j ) ∑ k ≠ i S ′ ( z i , z k ) Q(z^j|z^i)=\frac{S'(z^i,z^j)}{∑_{k≠i}S'(z^i,z^k)} Q(zj∣zi)=∑k=iS′(zi,zk)S′(zi,zj)
在原始数据 x x x和降维数据上 x x x使用归一化的相似度是为了同一尺度,因为并不知道 x x x和 z z z这两个空间上相似度的范围可能是不一致的;归一化后能将相似度缩小到0-1的范围内。
我们希望降维后的相似度分布 Q ( z j ∣ z i ) Q(z^j|z^i) Q(zj∣zi)和原始数据的相似度分布越接近越好。而衡量分布之间相似度的标准是 K L KL KL散度,所有目标使找到一组 z z z使下式最小化:
L = ∑ i K L ( P ( ∗ ∣ x i ) ∣ ∣ Q ( ∗ ∣ z i ) ) = ∑ i ∑ j P ( x j ∣ x i ) l o g P ( x j ∣ x i ) Q ( z j ∣ z i ) L=∑_iKL(P(∗|x^i)||Q(∗|z^i))=∑_i∑_jP(x^j|x^i)\frac{logP(x^j|x^i)}{Q(z^j|z^i)} L=i∑KL(P(∗∣xi)∣∣Q(∗∣zi))=i∑j∑P(xj∣xi)Q(zj∣zi)logP(xj∣xi)
相似度函数
对降维前的原始数据,一般采用的相似度函数是RBF function:
S
(
x
i
,
x
j
)
=
e
x
p
(
−
‖
x
i
−
x
j
‖
2
)
S(x^i,x^j)=exp(−‖x^i−x^j‖_2)
S(xi,xj)=exp(−‖xi−xj‖2)
有一种方法叫做 S N E SNE SNE,SNE在降维后的空间采用的相似度函数也是RBF function;
而 t − S N E t-SNE t−SNE在降维后的空间采用的相似度函数是:
S ′ ( z i , z j ) = 1 1 + ∣ ∣ z i − z j ∣ ∣ 2 S'(z^i,z^j)=\frac{1}{1+||z^i−z^j||_2} S′(zi,zj)=1+∣∣zi−zj∣∣21
为什么 t − S N E t-SNE t−SNE使用的是这个相似度函数呢?
如下图,横轴代表降维前或者降维后样本数据之间的欧式距离,纵轴代表样本数据的相似度值。
可以看到,若降维前的数据样本(橙色点)的距离比较小,降维后(蓝色点)的距离也会比较小;而降维前的数据样本间的距离比较远的话,降维后的距离就会被拉得很远。
因此 t − S N E t-SNE t−SNE能够将降维前不相近的样本点在降维后拉开距离。
下图是
t
−
S
N
E
t-SNE
t−SNE用于手写数据集上的效果:
t − S N E t-SNE t−SNE需要计算所有样本点之间的相似度,运算量会很大,面对海量数据时效率会比较低;一般做法是先对原始数据使用 P C A PCA PCA降维,在使用 t − S N E t-SNE t−SNE对这个简单降维后的数据进一步降维。
还有, t − S N E t-SNE t−SNE不能够对新的样本点进行降维处理,面对新的样本点,则需要重新进行一次 t − S N E t-SNE t−SNE降维操作。所以 t − S N E t-SNE t−SNE通常不用于训练模型,更适合用在固定数据的可视化上。