半监督学习
监督生成模型
supervised generative model
我们都已经看过,supervised generative model,在supervised learning里面有一堆train example,你知道分别是属于class1,class2。你会去估测class1,class2的prior probabilit( P(x|C_i) )以及P(X|C_1)、P(X|C_2)
假设每一个class它的分布都是一个Gaussion distribution,那你会估测说class1是\mu =\mu^1,covariance=\Sigma的Gaussion估测出来的,class2是从\mu =\mu^2,covariance是=\Sigma的Gaussion估测出来的
那现在有了这些prior probability( P(x|C_i) ),有了这些\mu、\Sigma,你就可以估测given一个新的data做classification,然后你就会决定boundary的位置在哪里。
半监督生成模型
Semi-supervised enerative Model
但是今天给了我们一些unlabel data,它就会影响你的决定。举例来说,我们看左边这笔data,我们假设绿色这些使unlabel data,那如果你的\mu 跟variance是\mu ^1,\mu ^2,\Sigma显然是不合理的。今天这个\Sigma应该比较接近圆圈,或者说你在sample的时候有点问题,所以你sample出比较奇怪的distribution。比如说,这两个class label data是比较多的(可能class2是比较多的,所以这边probability是比较大的),总之看这些unlabel data以后,会影响你对probability,\mu,\Sigma的估测,就影响你的probability的式子,就影响了你的decision boundary。
半监督模型
对于实际过程中的做法,我们先讲操作方式,再讲原理。
先初始化参数class1,class2的几率(\mu ^1,\mu ^2,\Sigma),这些值,你可以ramdom或者用已经有label data先估测一个值,得到一组初始化的参数,这些参数统称θ=\left \{P(C_1),P(C_2),μ^1,μ^2, Σ \right \}
- Step1 先计算每一笔unlabel data的 posterior probability,根据现有的\theta计算每一笔unlabel data属于class1的几率,那这个几率算出来是怎么样的是和你的model的值有关的。
- Step2 算出这个几率以后呢,你就可以update你的model,这个update的式子是非常的直觉,这个C_1的probability是怎么算呢,原来的没有unlabel data的时候,你的计算方法可能是:这个N是所有的example,N_1是被标注的C_1example,如果你要算C_1的probability,这件事情太直觉了,如果不考虑unlabel data的话(感觉就是N_1除以N)。
- 但是现在我们要考虑unlabel data,那根据unlabel告诉我们的信息,C_1是出现次数就是所有unlabel data它是C_1posterior probability的和。所有unlabel data而是根据它的posterior probability决定它有百分之多少是属于C_1,有多少是属于C_2,\mu^1怎么算呢,原来不考虑unlabel data时,\mu^1就是把所有C_1的label data都平均起来就结束了。如果今天加上unlabel data的话,其实就是把unlabel data的每一笔datax^u根据它的posterior probability做相乘。如果这个x^u比较偏向class1C^1的话,它对class1的影响就大一点,反之就小一点。(不用解释这是为什么这样,因为这太直觉了)C_2的 probability就是这样的做的\mu^1,\mu^2,\sum也都是这样做的,有了新的model,你就会做step1,有了新的model以后,这个几率就不一样了,这个几率不一样了,在做step2,你的model就不一样了。这样update你的几率,然后就反复反复的下去。理论上这个方法会保证收敛,但是它的初始值跟GD会影响你收敛的结果。