Semi-supervise
和supervised learning 的区别:有 unlabelled data(无output,且远大于labelled data)
为什么要用semi-supervised?
1:labelled data少
2:和人类的学习原理类似
Semi-supervise准确率很大程度由假设的unlabelled的结果是否一致决定
transductive learning(转换式学习):unlabelled data就作为test data
inductive(归纳学习):和transductive相反,unlabelled data不作为test data
常常伴随假设
加入unlabelled data后,P(c1)分子得加上unlabelled的条件概率和
在初始化时,用labeled的数据来估测全部的类别
似然估计的计算
Low-density separation(低密度划分):分类有明确的界限:low-density,即中间空着的位置(说人话:啥也没有的地方就是分界线)
self-training
优势:不用假设,就是自己训练自己
先用label data得到一个model,然后再用这个model,得到unlabelled数据的output(伪标签),将其加入到labelled data中,不断的迭代训练model
regression不能用self-training,因为伪标签数据对model不会产生影响,为什么呀?
主要是因为regression是由training data得到的一条拟合的曲线,伪标签是由regression函数得到的,那必然也在这个函数上,那加不加入伪标签到training data,影响也不大
self-training是一种比较经典的semi-supervised方法,和GM模型类似,但self-training用的是hard-label(非黑即白),而后者用的是soft-label(可能是黑也可能是白,gm模型算的是概率)
hard-level得出的概率,如果大于50%,就代表为class 1
soft-level,得出是得到每一个class的概率
基于熵的正则化
是self-training的进阶版,不同于self-training是hard-label,熵的正则化是soft-label
概率要集中在一个class中,分散就不太好啦
熵就是去描述概率分布是否集中:
越集中,熵越小,因为如果集中,概率为1,代入公式后,熵为0
重新设计loss function,对于unlabelled data,加入熵
补充一点svm知识:
svm就是要找一条直线将两个class分出来,其中这条直线距离两个class都有最大间隙
semi-svm:每一次会将unlabel 数据变为其中class,不断的枚举,不断的划分这条直线,直到找到一条直线距离margin最大,且error最少
smoothness assumption
有点近朱者赤近墨者黑的意思,来一探究竟
先做一个假设:
1:x(input)分布不均匀
2:如果x1,x2,在分布集中且相似的情况下,y1(output),y2看作是一样
会不会好奇为什么叫 “smoothness assumption”呢?
看下图,如果单看最左边的2和右边的2和3,会发现最左边的2和3类似,与2 的相似度不高,但通过不断的演化,如同曲线的smooth变化,就会发现最左边的2,其实和2类似
smoothness代表的是一个不断演化的过程
在不同学科的文件分类中,很有效
cluster and label
划分范围,并打上标签
graph-based approach
在图中,两个点相连就代表是一个class
比如在网页分类中,两个网页相互调用,那就有联系,可以连在一起、论文之间的引用
可以用k nearest neighbor方法来连两个点
k nearest neighbor就是选相似度最近的k个点连在一起
计算相似度的函数
会不断的传递
计算一下两个图的smoothness,利用下边的公式
smoothness 越小,越好,越smoothness
公式的变形
L为图拉普拉斯
W是边上的权重值
D是对称矩阵,值为W的每一行的和
loss function加一个smoothness,相当于正则项