Unsupervised Learning: Neighbor Embedding
PCA和Word Embedding介绍了线性降维的思想,而Neighbor Embedding要介绍的是非线性的降维。
Manifold Learning
有的时候,样本点的分布可能是在高维空间里的一个流行(Manifold),也就是说,样本点其实是分布在低维空间里面,只是被扭曲地塞到了一个高维空间里。地球的表面就是一个流行(Manifold),它是一个二维的平面,但是被塞到了一个三维空间里。
而Manifold Learning要做的就是把这个S型曲面降维展开,把塞在高维空间里的低维空间摊平,此时使用欧氏距离就可以描述样本点之间的相似程度。
Locally Linear Embedding
其中一种解法就是:局部线性嵌入LLE。
对于一个点
x
i
x^i
xi,我们找出他K个邻居
x
j
x^j
xj。
w
i
j
w_{ij}
wij表示
x
i
x^i
xi和
x
j
x^j
xj之间的
w
e
i
g
h
t
weight
weight,要最小化下面的公式。
接着就可以把
x
x
xdimension reduction成
z
z
z了。但是,
z
i
z^i
zi和
z
j
z^j
zj之间的
w
e
i
g
h
t
weight
weight也是
w
i
j
w_{ij}
wij。
注意,K不能太大太小。
Laplacian Eigenmaps
另一种方法叫拉普拉斯特征映射,Laplacian Eigenmaps。
之前在semi-supervised learning有提到smoothness assumption,即我们仅知道两点之间的欧氏距离是不够的,还需要观察两个点在high density区域下的距离。
如果两个点在high density的区域里比较近,那才算是真正的接近。
我们依据某些规则把样本点建立graph,那么smoothness的距离就可以使用graph中连接两个点路径上的edges数来近似。
注意,
z
z
z的取值必须加上限制:
z
1
,
z
2
,
.
.
z
N
z^1,z^2,..z^N
z1,z2,..zN的线性组合必须占据整个
R
M
R^M
RM空间。
t-SNE
前面的方法只假设了相邻的点要接近,却没有假设不相近的点要分开。
这就会导致依旧无法区分不同class的现象。
因此,要使用t-SNE。
t-SNE也是要做一个从
x
x
x到
z
z
z的降维。我们希望两者的分布越接近越好,因此用KL散度来定义Loss Function。
要注意的是,t-SNE在降维前后计算相似度的方法是不一样的。
S
(
x
i
,
x
j
)
=
e
−
∣
∣
x
i
−
x
j
∣
∣
2
S(x^i,x^j)=e^{-||x^i-x^j||_2}
S(xi,xj)=e−∣∣xi−xj∣∣2
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
这是因为:
- 如果原先两个点距离( Δ x \Delta x Δx)比较近,则降维转换之后,它们的相似度( Δ y \Delta y Δy)依旧是比较接近的
- 如果原先两个点距离( Δ x \Delta x Δx)比较远,则降维转换之后,它们的相似度( Δ y \Delta y Δy)会被拉得更远