Semi-supervised Learning
Semi-supervised Learning 是 半监督学习 的意思。他是指用于训练的数据有一部分是有标签的,一部分数据是无标签的,同时使用这两部分数据进行学习。你可能会有一些疑问,为什么要使用没有标签的数据?没有标签的数据怎么能用来训练?对于第一个问题,是因为现在的机器学习方法大多都是数据驱动的方法,数据的量很大程度上会决定我们训练出的模型的好坏,但是提升数据量又是件不容易的事情,但是需要注意的是获取大量数据其实不难,难的是获取大量有标签的数据。比如图片分类的问题,我们现在有大量的摄像头安装在各种设备上,让他们不停的拍就能得到大量的图片,这是件很容易的事。所以如果这些无标签的数据也能对训练模型产生帮助,那么将是很好的,所以这就是半监督学习存在的意义。但是并不是所有问题都是能够通过使用一些无标签数据来提升有标签数据训练出的模型的,这就来到了第二个问题,没有标签的数据对训练模型有啥用?让我们来看下图这个例子,蓝色的点是标签为猫的数据,橙色是标签为狗的,如果只用有便签数据我们可能训练出的决策边界是竖着的那条红线。但是如果考虑无标签的数据,一种直觉告诉我们,可能斜着的那条红线会有更好的表现,置于会不会真的有更好的表现呢?其实这就取决于你对整个数据分布的假设符不符合实际了。接下来来看有哪些半监督学习的方法。

Semi-supervised Learning for Generative Model
在前面分类的那节课上我们学习过生成模型,他的理念就是训练出每个类别的样本的分布函数,然后使用贝叶斯公式计算一个新的样本属于每个类的概率,最后取概率最大的结果为最终的分类结果。训练的过程就是去用训练集数据求分布函数,采用的方法是极大似然估计。那么在用这种方法进行半监督学习的时候,能够有效提升模型效果的直观上的原因是如下图所示,使用有标签的数据训练出的分布如实线所示,如果数据的分布如图中所示,那么直观上的感受会感觉虚线的分布可能会更适应实际中的数据。所以我们可以使用无标签的数据来改变我们原来训练出的分布函数。

训练的步骤
首先我们不考虑为什么要这么做,只是来看看他是怎么做的。以下是训练的步骤:
第一步:初始化参数,随机生成 θ = { μ 1 、 μ 2 、 Σ 、 P ( C 1 ) 、 P ( C 2 ) } \theta=\{\mu^1、\mu^2、\Sigma、P(C_1)、P(C_2)\} θ={ μ1、μ2、Σ、P(C1)、P(C2)}
第二步:计算每个无标签数据的后验概率 P θ ( C 1 ∣ x u ) P_\theta(C_1|x^u) Pθ(C1∣xu) ,即在参数为 θ \theta θ 条件下每个无标签数据属于每一类的概率
第三步:使用以下公式更新 θ \theta θ
P ( C 1 ) = N 1 + ∑ x u P ( C 1 ∣ x u ) N P ( C 2 ) = 1 − P ( C 1 ) μ 1 = 1 N 1 ∑ x r ∈ C 1 x r + 1 ∑ x u P ( C 1 ∣ x u ) ∑ x u P ( C 1 ∣ x u ) x u μ 2 = 1 N 2 ∑ x r ∈ C 2 x r + 1 ∑ x u P ( C 2 ∣ x u ) ∑ x u P ( C 2 ∣ x u ) x u Σ = ⋯ \begin{aligned} P(C_1) &= \frac {N_1+\sum_{x^u}P(C_1|x^u)} {N} \\ P(C_2) &= 1-P(C_1) \\ \mu^1 &= \frac {1} {N_1} \sum_{x^r \in C_1}x^r+\frac {1} {\sum_{x^u}P(C_1|x^u)} \sum_{x^u} P(C_1|x^u)x^u \\ \mu^2 &= \frac {1} {N_2} \sum_{x^r \in C_2}x^r+\frac {1} {\sum_{x^u}P(C_2|x^u)} \sum_{x^u} P(C_2|x^u)x^u \\ \Sigma&= \cdots \end{aligned} P(C1)P(C2)μ1μ2Σ=NN1+∑xuP(C1∣xu)=1−P(C1)=N11xr∈C1∑x