zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

(《机器学习》完整版系列)第13章 半监督学习——13.5 基于分歧的方法(多学习器间的差异、协同训练算法)

2023-09-11 14:14:53 时间

这里的分歧是指多学习器间的差异,如,不同视图、不同算法、不同数据采样、不同参数设置等等,而不仅指标记的分歧。
此类方法的典型代表有协同训练算法

基于分歧的方法

基于分歧的方法的典型代表有协同训练算法【西瓜书图13.6】,我们重点来理解一下该算法:

(1)多视图表示:如,电影片断=<音频片断,视频片断>,假定只考虑这两视图,则样本 x i = < x i 1 , x i 2 > \boldsymbol{x}_i=<\boldsymbol{x}_i^1,\boldsymbol{x}_i^2> xi=<xi1,xi2>(上标为视图编号),这时,有标记的样本 ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi,yi)变为 ( < x i 1 , x i 2 > , y i ) (<\boldsymbol{x}_i^1,\boldsymbol{x}_i^2>,y_i) (<xi1,xi2>,yi),则有标记的样本集为: D l = { ( < x i 1 , x i 2 > , y i ) } i = 1 l D_l=\{(<\boldsymbol{x}_i^1,\boldsymbol{x}_i^2>,y_i)\}_{i=1}^l Dl={(<xi1,xi2>,yi)}i=1l,将其分拆为
D l 1 = { ( x i 1 , y i ) ∣ ( < x i 1 , x i 2 > , y i ) ∈ D l } i = 1 l D l 2 = { ( x i 2 , y i ) ∣ ( < x i 1 , x i 2 > , y i ) ∈ D l } i = 1 l \begin{align*} D_l^1=\{(\boldsymbol{x}_i^1,y_i)|(<\boldsymbol{x}_i^1,\boldsymbol{x}_i^2>,y_i)\in D_l\}_{i=1}^l \\ D_l^2=\{(\boldsymbol{x}_i^2,y_i)|(<\boldsymbol{x}_i^1,\boldsymbol{x}_i^2>,y_i)\in D_l\}_{i=1}^l \end{align*} Dl1={(xi1,yi)(<xi1,xi2>,yi)Dl}i=1lDl2={(xi2,yi)(<xi1,xi2>,yi)Dl}i=1l
这两个式子即为第3至5句,之所以用一个循环,是为了方便推广到 k k k个视图情况(若为 k k k视图,其任一视图记为 j j j时,则其他的 k − 1 k-1 k1个视图分别为 ( j + i ) % k   ,   ( i = 1 , 2 , ⋯   , ( k − 1 ) ) (j+i)\%k\,,\, (i=1,2,\cdots,(k-1)) (j+i)%k,(i=1,2,,(k1)))。

同样,也可对未标记的数据集 D u D_u Du进行分拆。
基于两个视图,容易想到训练两个对应的学习器,但这样的两个学习器各自独立,没有交互,达不到“相互学习”的目的。

(2)假定有大量的未标记的样本,我们逐步拿出 D u D_u Du中的样本,使得学习循序渐进地进行。

(I)先拿出 D u D_u Du的一个子集 D s , ∣ D s ∣ = s D_s,|D_s|=s Ds,Ds=s,并依两视图分拆为 D s 1 D_s^1 Ds1 D s 2 D_s^2 Ds2,虽然,基于 D l 1 ∪ D s 1 D_l^1\cup D_s^1 Dl1Ds1 D l 2 ∪ D s 2 D_l^2\cup D_s^2 Dl2Ds2可以分别训练出这两视图的学习器,但我们不这样做,而是考虑交替训练,以便相互学习。 我们以图13.3 )及其中的编号进行说明:
图13.3 交替学习

图13.3 交替学习
  1. 设已训练出视图1的学习器 h 1 h_1 h1(初始时为 h 1 = L ( D l 1 ) h_1=\mathfrak{L} (D_l^1) h1=L(Dl1)(有监督学习)),它有对应的置信度判别函数,也可以是分类器本身充当置信度判别函数,如,以函数符号进行分类时,则函数值的绝对值即为置信度。 绝对值越大则分类预测越可信(越有把握)。 将 h 1 h_1 h1作用于视图1的未标记样本集 D s 1 D_s^1 Ds1(对 D s 1 D_s^1 Ds1中的样本进行预测并给出预测的置信度);

  2. 依置信度从高到低排序后,可选出 p p p个置信度高的预测正例(伪正例),选出 n n n个置信度高的预测反例(伪反例),其中, p , n p,n p,n为超参且 p + n ≪ s p+n \ll s p+ns,得到伪正例集 D p 1 D_p^1 Dp1和伪反例集 D n 1 D_n^1 Dn1。 图中简记为伪例集 D p n 1 = D p 1 ∪ D n 1 D_{pn}^1=D_p^1\cup D_n^1 Dpn1=Dp1Dn1

  3. 根据前述分拆规则,用视图1的伪例集 D p n 1 D_{pn}^1 Dpn1对应出视图2的伪例集 D ~ p n 2 \tilde{D} _{pn}^2 D~pn2

  4. 训练视图2的学习器 h 2 h_2 h2,这时训练的基础除了有标记的样本集 D l 2 D_l^2 Dl2之外,还有伪标记集 D ~ p n 2 \tilde{D} _{pn}^2 D~pn2,由于我们是依置信度判别函数选出置信度排前的(置信度高),故我们将它“当成”实际标记,以 D l 2 ∪ D ~ p n 2 D_l^2\cup \tilde{D} _{pn}^2 Dl2D~pn2作为样例集,进行有监督学习训练出视图2上的学习器 h 2 h_2 h2

  5. D s D_s Ds中剔除掉已经使用 D ~ p n 2 \tilde{D} _{pn}^2 D~pn2所对应的样本,仍记为 D s D_s Ds,视图2的学习器 h 2 h_2 h2作用于 D s D_s Ds D s 2 D_s^2 Ds2(与第1步对称);

  6. 依置信度选出伪例集 D p n 2 = D p 2 ∪ D n 2 D_{pn}^2=D_p^2\cup D_n^2 Dpn2=Dp2Dn2(与第2步对称);

  7. 用视图2的伪例集 D p n 2 D_{pn}^2 Dpn2对应出视图1的伪例集 D ~ p n 1 \tilde{D} _{pn}^1 D~pn1(与第3步对称);

  8. D l 1 ∪ D ~ p n 1 D_l^1\cup \tilde{D} _{pn}^1 Dl1D~pn1作为样例集,进行有监督学习,训练出视图1上的学习器 h 1 h_1 h1,在 D s D_s Ds中剔除掉已经使用 D ~ p n 1 \tilde{D} _{pn}^1 D~pn1所对应的样本,仍记为 D s D_s Ds,完成本轮交替学习。

( II)图中虚线框中过程表示:经过上述第1至8步完成了一轮交替训练(第4步训练视图2的学习器 h 2 h_2 h2,第8步训练视图2的学习器 h 1 h_1 h1),这时 D s D_s Ds中的样本由于两次剔除而减少,从而需要补充样本,图左上角所示,

D s : = D s ⋃ { 从 D u 中抽取 2 n + 2 p 个样本 } D u : = D u ∖ { 已抽取的 2 n + 2 p 个样本 } \begin{align*} D_s:&=D_s\bigcup \{\text{从$D_u$中抽取$2n+2p$个样本}\} \\ D_u:&=D_u\setminus \{\text{已抽取的$2n+2p$个样本}\} \end{align*} Ds:Du:=Ds{Du中抽取2n+2p个样本}=Du{已抽取的2n+2p个样本}

补充样本后,又可以应用上述第1至8步进行下一轮交替训练,如此交替地训练 h 1 h_1 h1 h 2 h_2 h2,直至用完 D u D_u Du中的样本。 这即是协同训练算法。

本文为原创,您可以:

  • 点赞(支持博主)
  • 收藏(待以后看)
  • 转发(他考研或学习,正需要)
  • 评论(或讨论)
  • 引用(支持原创)
  • 不侵权

上一篇:13.4 正则式框架(标记传播算法迭代式的另一个推导)
下一篇:13.6 半监督聚类(k均值算法+约束)