Unsupervised Learning
- clustering&dimension reduction ——化繁为简:将比较复杂的input转为简单的output
- generation ——无中生有 输入一个random code,画出不一样的output
- 只有function output
1、Clustering
对一堆无label得图片/样本做分类
how many clusters do we need?
1.1 K-means
- 1、给定数据集,给定分类数目k
- 2、初始化k个center点
- 3、将数据集所有得样本堆center做分类,重复大N次
- 4、对center做更新,把所有属于这个分类的样本做平均,得到新的center点
- 5、重复2、3、4,直到收敛
1.2 Hierarchical Agglomerative clustering
- 1、build a tree
- 2、两两计算相似度,merge两个相似度高得样本
- 3、不断计算相似度,merge,直到得到root
- 4、pick a threshold
threshold不同,分类的结果会不同,hac与k-means的差别是对class number的定义。k-means需要自己手动调整。hac通过调整threshold的值来决定class number。
1.3 Distributed representation
将一个特征很多的样本通过给定分类的distribution来做数据降维
dimension reduction
数据在不同维度上的表现不同
example
描述一个digit不需要28x28得dims
找到一个function,output得z得dimension要比input得x药效。
- feature selection
- Principle component analysis(PCA):将function看作linear model,根据很多x将w找出来
PCA
把样本x投影到w上得到了z得数组。可以看作把w当作一个新的特征,让x在这个新的特征上得variance大,则表明每个样本在新特征上的表现不同。就可以用新的特征进行分类。
投影到更多维
w是正交矩阵
how to find w matrix?
通过最大化w找到使z1得方差最大,但保证w1得二范式为作为限定条件
w1是协方差矩阵x得特征向量,对应的最大特征,通过拉格朗日乘子法
- 对w矩阵每个数求偏微分
w2也是协方差矩阵的特征向量,它对应第二大的特征值
λ
2
\lambda^2
λ2
-两个限制条件的拉格朗日
pca——decorrelation
不同dimension之间的covariance是0,即不同特征间的相关性不大
w矩阵向量中乘w1,w1与其他w都是正交的,且w1乘w1的值为1所以最后得到的矩阵为对角线矩阵,且对角线上的值为每一个维度得特征值
pca another point of view
weakness of PCA
- 将数据降维可能会导致两个class的数据被project到一个维度,无法再区分
- pca是linear transformation,无法处理non-linear的数据集
牺牲一部分特征的大小,换取某一个特征的最大值
因为对于每个component得权值范围没有限定,所以每个component不一定是digit得一部分。有一些image可能是通过两个component相减得到
NMF:所有得component得weight都是正的,保证一个图是由若干component叠加而成,保证特征向量也都是正的。
预测问号的值
2、Neighbor Embedding
Manifold learning(流形学习)
Local linear embedding(LLE)
寻找xi和xj的关系:wij
找一组wij,使图中的算式损失最小
当把xi和xjproject到z上,他们的关系wij是不变的 keep wij unchanged
找到一组zj可以与zi满足上述算式最小
Laplacian Eigenmaps
把一些datapoints通过计算相似度连接起来
对于unsupervised learning
在计算smooth S的值时,如果wij很大说明zi和zj相似度大,则他们的距离需要小一些。如果相似度很小,它们的距离怎样都可以。
problem:如果要选s最小,可能zi=zj
所以要对z加以一些限制。
对z做谱聚类,保证z展开后不会再更低纬的空间
T-distributed stochastic Neighbor embedding(t-SNE)
可能类似的点被分到一类,但是不相似的点也还没有分开
使用kl计算x分布和z分布的相似度
目的:找到一组z,使xi对于其他的points的distribution和zi对于其他points的概率之间的kl散度越小越好
常用做visualization
similarity measure
对于SNE方法:
对于xi和xj之间的相似度计算是用rbf做的
对于zi和zj之间计算相似度也用rbf做
如果本身xi和xj距离很近,哪么它们project到z上的相似度很大,距离依然很近。
但如果之前在xi和xj上相似度很低,那么它们到了z上会离得更远。
t-SNE会把每个不同类的数据分化的更远(使用gradient descent训练得到)
3、Deep auto-encoder
encoder和decoder要一起训练
加入deep auto-encoder,它的输出结果会更加符合原输入
Text Retrieval
计算查询词汇与很多文档之间的相似度
similar image search
只在pixel上做欧几里得距离的相似度,很难得到好的结果。
可以将image的pixel输入auto-encoder得到一个降维的code vector。包含了更多的信息
pre-training DNN
用来找到一组比较好的initialization,
在有大量的unlabeled data时可以使用
encoder学习如何把noise过略掉
Auto-encoder for CNN
想要学习一个encoder总要有一个decoder
Unpooling
要记住pooling的时候从哪里取值
unpooling时除了最大值外其他的位置自动补零
其他的方法:直接把maxpooling的值复制n份
Deconvolution
右边的图在外层补0
convolution和deconvolution的weight是相反的