【深度学习】Semi-supervise

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,相当于正则项

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。