文章目录
前言
非监督学习分为两大类:Clustering & Dimension Reduction 和Generation,上节讲的是线性的降维PCA,这节主要是讲非线性降维:TSNE,先从NE讲起。
B站评论提示:非监督学习那里视频的顺序有错,应该是pca,ne,da(Deep Auto Encoder),we,dgm
公式输入请参考:在线Latex公式
流形学习(Manifold Learning)
我们所能观察到的数据实际上是由一个低维流行映射到高维空间的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上这些数据只要比较低的维度就能唯一的表示。所以直观上来讲,一个流形好比是一个
d
d
d维的空间,在一个
m
m
m维的空间中(
m
>
d
m>d
m>d)被扭曲之后的结果。需要注意的是流形并不是一个形状,而是一个空间。常见例子就是地图:
注意:如果在高维空间上,如果距离较小的时候,欧氏距离还是适用的(上图中的小三角形),如果距离较大就不行了(上图中的大三角形)。同样的还有下面的例子(左边)
如果将左边的数据进行降维变成右边的数据,就可以应用欧式距离进行聚类计算(或者监督学习),这样降维的方法有很多,这节课会简单介绍几个,重点介绍TSNE(t-distributed Stochastic Neighbor Embedding)
Locally Linear Embedding (LLE)
假设在空间中点的分布如下图所示,其中有一个点叫做
x
i
x^i
xi
然后选出
x
i
x^i
xi的邻居
x
j
x^j
xj,并找出
x
i
x^i
xi与
x
j
x^j
xj的关系
w
i
j
w_{ij}
wij
w
i
j
w_{ij}
wij要满足以下关系(也可以看做:
x
i
x^i
xi是由
x
j
x^j
xj的linear combination产生的):
接下来降维,从
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不变
老师用了白居易的《长恨歌》中的名句来做比喻:
下图中,降维后的
w
i
j
w_{ij}
wij是已知的,我们要找
z
i
z^i
zi和
z
j
z^j
zj满足橙色框的式子最小
LLE中没有一个明确的function来进行降维(从x变到z),不像上节Auto Encoder一样可以学习到一个encoder NN,可以把新的data point转换到新的维度。
LLE中选取邻居的数量很重要
论文控:Lawrence K. Saul, Sam T. Roweis, “Think Globally, Fit Locally: Unsupervised Learning of Low Dimensional Manifolds”, JMLR, 2013
邻居点不能太多,因为本节开始地球仪的例子里面就提到了,如果点很近的情况下,欧氏距离还是可以用的,点太多,离得太远就不适用了。
Laplacian Eigenmaps
之前的semi supervised 有讲过,在空间中的两个点的距离关系不能单单只看距离,还要看它们之间有没有high density的关系,所以下面的左图中两个点距离不是按红色虚线,而是按蓝色线进行。
之前的semi supervised内容:
Review in semi-supervised learning: If
x
1
x^1
x1 and
x
2
x^2
x2 are close in a high density region,
y
^
1
\hat y^1
y^1 and
y
^
2
\hat y^2
y^2 are probably the same.
其中:
把以上内容应用到unsupervised的task上:
上式中平方应该换成L2 NORM,这里与前面的semi-supervised learning不一样,semi-supervised learning中有一个是有label的,所以不会出现下面的情况:
直接把两个都弄成0,S就最小化了。因此要给z一些条件限制:
M是维度。解出来的z实际上就是Laplacian Eigenvector,又有一个潮名:Spectral clustering: clustering on z
T-distributed Stochastic Neighbor Embedding (t-SNE)
讲了这么久终于到正题了,之前的方法有一些问题,例如:相近的数据会比较接近,但是不同的点并没有规定要分开
COIL-100 数据集是彩色图片集合,包含对 100 个物体从不同角度的拍摄,每隔 5 度拍摄一副图像,每个物体 72 张图像。每张图像大小进行了统一处理为 128x128。
上面右图中的圈圈代表同一个物体从不同角度拍摄的结果。
t-SNE怎么做
当然还是要降维:
Compute similarity between all pairs of x:
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 )}{\sum_{k\neq i}S(x^i,x^k )}
P(xj∣xi)=∑k=iS(xi,xk)S(xi,xj)
同理,对于z来说:
上两个式子的意义在于,降维前和降维后的尺度可能不一样,因此进行归一化都转换为几率后scale就统一了。希望能找到z使得两个分布(
x
i
x^i
xi对于其他点的概率分布和
z
i
z^i
zi对于其他点的概率分布)越接近越好。
如果有很多数据点,t-SNE需要逐个点对其他点的进行运算,similarity运算量较大,因此,一般开始会进行降维。
另外,如果有新的数据点加入,不能直接利用t-SNE进行预测,而是需要重新跑一边所有的数据。因此,t-SNE通常用于visualization,显示高维空间的数据在二维空间上的关系。
t-SNE –Similarity Measure
之前降维讲similarity计算使用的式子是:
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)
这里为什么用exp有说过,exp掉得快,距离远的关系就弱。
SNE中降维后用的计算公式和原来的一样。
t-SNE的Similarity Measure计算公式和原来的不一样。原来很近的点,降维后还是很近,如果原来很远的点,做降维transform后变比较远。这样在可视化的效果会比较好。
MNIST先做PCA后再t-SNE
上图中是类似被子这种对称的形状旋转后的结果。
是数据集中有四个小汽车,比较像所以会叠在一起。
To learn more …
• Locally Linear Embedding (LLE): [Alpaydin, Chapter 6.11]
• Laplacian Eigenmaps: [Alpaydin, Chapter 6.12]
• t-SNE
Laurens van der Maaten, Geoffrey Hinton, “Visualizing Data using t-SNE”, JMLR, 2008
Excellent tutorial: https://github.com/oreillymedia/t-SNE-tutorial