李宏毅ML lecture-12 Semi-supervised Learning
半监督学习指的就是我们拿到的data一部分有label一部分没有label.
有label的data当然就可以直接做监督学习,那没有label的data应该如何处理呢?
在机器学习领域中,我们所使用的方法可以分为判别式模型(Discriminative Model)和生成式模型(Generative Model).这里就简单说一下区别:判别式模型的model是一个概率分布,我们要学习的是这个概率分布的参数,我们给定一个输入,输出是一个概率分布,完全建立在贝叶斯概率的理论基础之上;判别式模型的model是一个函数,我们学习的就是这个函数的参数,我们给定一个输入,输出是一个确定的值.
半监督学习针对这两种模型都有不同的方法.
生成式模型
在生成式模型中我们使用的半监督学习方法主要就是EM算法.
EM算法
EM算法在RPML中大量出现:
⼀种优雅的并且强⼤的寻找带有潜在变量的模型的最大似然解的方法被称为期望最⼤化
算法( expectation-maximization algorithm ),或者 EM 算法( Dempster et al., 1977; McLachlan and Krishnan, 1997 )。
在RPML中使用EM算法的重要性在于变量中存在隐变量.
例如我们估计人群的身高,人群的年龄,性别,地域都是隐变量.会决定我们生成式模型的准确性.
其实我们在半监督学习中,没有label的data也可以用相似的想法去理解EM算法.
参考
https://www.cis.upenn.edu/~mkearns/papers/em-kmeans.pdf
判别式模型
Low-density Separation
低维度可分离,李宏毅老师是这样描述这个概念的:“非黑即白”.
非黑即白指的不是二分类问题,他描述的是一种状态,指的是分类问题中每一种sample之间有显著的差异.拥有这样性质的data可以用Low-density Separation这样的概念表示.具体可以使用下面描述的这几种方法.
self-training
在判别式模型中,我们就换了一个方法叫做自学习.这个方法也极其简单:
- 用已有数据训练一个模型
- 把没有label的数据投进去,把label吐出来
- 选择一些这样的data和label再次训练模型
不断迭代2,3步,达到收敛
自学习方法只能用于分类问题.
下面这个图说明如果model是神经网络,我们要使用hard label,如果soft label是不起作用的.
Entropy-based Regularization
如果每次都选hard label,是不是会使精度下降,这里对unlabelled data引入熵(entropy),让entropy越小越好,所以修改loss function,可以的达到这个效果.
这个回归问题就可以叫做基于熵的正则化.
SVM
还没学了,学了再写.
参考
https://www.cs.cornell.edu/people/tj/publications/joachims_99c.pdf
Smoothness Assumption
平滑性假设是对低维度可分离的一种延申.弘毅老师用近朱者赤,近墨者黑这种哲理表示.
当我们遇到低维度不可分离的数据时候用上述的方法所得到的模型往往性能很差.这时候我们就考虑时候存在一个高维度可以使这样的数据可分.如何寻找这样的高维度呢?就引入了"平滑性假设"的概念.
如果数据是低维度可分离的,那么在低维度空间,例如2维或者3维.我们直觉的把聚集在一起的数据分为一类.如果数据是低维度不可分离,假设在高维度可分,那么我们也是把高维度聚集在一起的数据分为一类.
但是高维不可想象,如何寻找一种可观测的低维空间的联系可以把数据在高维空间聚集在一起呢?平滑性假设做的就是这样的事情.
平滑性假设就是说在低维空间可以通过一种联系连在一起的数据,在高维空间是聚集在一起的,是可分离的.
通过例子解释一下:
1 地铁站
我们把地铁线连接到的站分为一类.
昆阳和新埔地理空间隔得很远,但是之间有这个蓝色的地铁,这个地铁就可以把他们聚为一类.
中山和西门地理空间隔得很近,但是没有地铁把他们连起来*(你换乘就不算啦)*,所以他们不是一类.
2. 数据图
这个和上面的就很像,我们直接就把数据分为三类.依靠的就是每一类数据是有联系的.
x
2
x_2
x2和
x
1
x_1
x1远但是一类,
x
2
x_2
x2和
x
3
x_3
x3近但不是一类.
3.手写数字识别
4.人脸识别
有中间的图是一个人,没有就不是
Cluster and then Label
使用所有数据做聚类,聚为若干类之后,根据已有标签给类别分类.
Graph-based Approach
平滑性假设的方法:基于图
靠近的连起来
能连起来的一个图,也就是一个类
靠的近需要有多近呢?
用高斯径向基函数可以描述
下面两个图说明数据要足够多才能达到最优.
数据缺失导致分了四类,实际上两类.
衡量分类的准确性
在神经网络中,我们可以给任意层加上平滑性假设
图这个实在写不动了,先放着.
Better Representation
根据数据的内在逻辑,直接分类.这个简直就是维度打击
啥意思???
就是说我们根据某个算法生成四组数据.
拿到数据后如何分类呢?
我们直接研究研究算法就行了,不去找数据的关系.就可以把这些数据直接分类.
李宏毅ML lecture-13 unsupervised Learning Principle Component Analysis
这个课呢讲解无监督学习中的两大类,数据降维和生成模型.
数据降维先专注于线性降维.
聚类(Clustering)
K-means
HAC
数据降维(Dimension Reduction)
数据降维直观上看这张图就能知道,高维空间中的特点可以在低维空间表示.
再举例来说,一张数字图片大小为
28
×
28
28\times28
28×28,但是表示数字的信息的像素点是很少的.
一张3的图片,经过旋转之后,还是3,但是计算机得到的是另外4张图片.
而这4张图片可以用一个仿射变换矩阵得到,这样数据得到了压缩.
如何做降维呢?
第一种方法叫Feature selection:把没有用的维度去掉
第2种就是PCA
PCA(Principal Component Analysis)
PCA就是一个线性函数,输入一个高维向量输出一个低维向量.
这里引用了Bishop 对于PCA的定义.
再补充一个大佬的博客
PCA的做法就蕴含在定义中.
先找
w
1
w_1
w1,使得
z
1
z_1
z1的方差最大:
再找
w
2
w_2
w2,使得
z
2
z_2
z2的方差最大,同时保证
w
2
w_2
w2与先找到的
w
1
w_1
w1垂直,以此类推,找到所有的
w
i
w_i
wi.所以最终的
W
W
W是一个正交矩阵(Orthogonal matrix):
在大佬的博客中,其实就说的非常清楚了:
PCA降维到k维,这个k就是一个超参数,是需要自己决定的.下图中的M既是k.
下面的推导需要注意:
(
a
⋅
b
)
(a \cdot b)
(a⋅b)表示内积
(
a
b
)
(ab)
(ab)表示矩阵乘积
下面推导后的结果就是:
让投影后方差最大等价于让
(
w
1
)
T
S
w
1
(w^1)^TSw^1
(w1)TSw1最大.
S
S
S是数据的协方差矩阵
同时规定
∣
∣
w
1
∣
∣
2
=
(
w
1
)
T
w
1
=
1
||w^1||_2=(w^1)^Tw^1=1
∣∣w1∣∣2=(w1)Tw1=1作为限定条件
这个条件就可以用拉格朗日乘数法带入,找到
w
1
w^1
w1
如果对推导有困难,可以先看后面的PRML中的特征向量和拉格朗日乘数法.
基于特征值分解协方差矩阵实现PCA算法
因为 S S S是数据的协方差矩阵,所有具有一些性质:
- S S S是对称的(Symmetric)
- S S S是半正定矩阵(Positive-semidefinite): 设 S S S为实对称矩阵,若对于每个非零实向量 X X X,都有 X T S X ≥ 0 X^TSX\ge 0 XTSX≥0,则称A为半正定矩阵,称 X T S X X^TSX XTSX为半正定二次型。
- S S S的特征值(eigenvalues)都是非负的
- eigenvector是特征向量
通过推导得到结论:
计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。
下图为k=1:
下图为k=2:
求偏导得到红色框公式:
左乘
(
w
1
)
T
(w^1)^T
(w1)T推导得
β
=
0
\beta=0
β=0
红色框公式带入
β
=
0
\beta=0
β=0得黄色框公式
所以
w
2
w^2
w2是特征向量
因为最大的特征值对应的特征向量是
w
1
w^1
w1
所以为了使
(
w
2
)
T
S
w
2
(w^2)^TSw^2
(w2)TSw2最大
w
2
w^2
w2就是第二大特征值对应的特征向量
C
o
v
(
z
)
=
D
Cov(z)=D
Cov(z)=D对角矩阵(diagonal matrix)
特征向量
拉格朗日乘数法
基于SVD分解协方差矩阵实现PCA算法
假设在MNIST上的数字都是由不同的笔画组成,每一个数字可以看作是笔画的线性组合.
我们提取的笔画数远远小于像素数,就完成了数据降维.
在定义中一个digit由component线性组成,再加一个digit的平均
digit:
x
x
x
digits的平均:
x
ˉ
\bar x
xˉ
component线性组成:
x
^
\hat x
x^
x
ˉ
\bar x
xˉ和
x
x
x是已知的,目标就是最小化
x
−
x
ˉ
x-\bar x
x−xˉ与
x
^
\hat x
x^之间的重构误差(reconstruction error)
PCA通过神经网络实现
注意这时候
W
W
W不能保证是正交矩阵
PCA在数据可视化的例子
- http://140.112.21.35:2880/~tlkagk/pokemon/pca.html
- The code is modified from http://jkunst.com/r/pokemon-visualize-em-all/
Weakness of PCA
- 无监督的
- 线性的
PCA的扩展
- http://4.bp.blogspot.com/_sHcZHRnxlLE/S9EpFXYjfvI/AAAAAAAABZ0/_oEQiaR3WVM/s640/dimensionality+reduction.jpg
- https://lvdmaaten.github.io/publications/papers/TR_Dimensionality_Reduction_Review_2009.pdf
矩阵分解(Matrix Factorization)
https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf