Page 14 - 《软件学报》2024年第4期
P. 14

1592                                                       软件学报  2024 年第 35 卷第 4 期

         3    基于多样性和真实性的任务生成方法

             本节详细介绍本文提出的基于多样性和真实性的任务生成方法 DATG. DATG 的主要目的是通过生成多样
         且符合真实分布训练任务,  缓解基于元学习的小样本学习方法在训练任务有限情况下泛化能力差的问题.

         3.1   多样性任务生成
             •   随机任务 Mixup
             为了生成新的任务,  一种最简单的方法是从已有任务中随机选取两个任务进行 Mixup,  比如 MLTI                          [25] 就采
                                                                 s
                                                                              s
                                                                              ,
                                                                  ,
         用了随机任务 Mixup 的策略.  具体来说,  先随机构造一对任务                i  = { i q } 和  j  = { q j  } ,  假设模型 f 有 L
                                                                              j
                                                                 i
                                                           0
                                                                 S
                                   l
                                              l
                                        X
         层,  样本 X 第 l 层的隐表示为 H =       l f  ( )(0≤ ≤  L S ) ,  其中,  H =X,  L 表示所有任务共享的层数.  在基于梯度
                                      θ
                                                                                 S
                                       S
         的方法中,  只有部分层是共享的(即 L <L).  在基于度量的方法中,  所有层都是共享的(即 L =L).  然后,  再随机
                                                                              ( ),l
                                                                         ( ),l
         选择要进行 Mixup 的层 l,  并分别对支持集样本和查询集样本第 l 层的隐表示 (H                  i sq  ,H  sq  ) 进行线性组合来生
                                                                              j
         成新任务中的支持集样本和查询集样本,  具体生成公式如下:
                                 H   cr , s l  =  l  H i  , s l  +  (1 l  −  )H  j , s l   ,H cr , ql  =  l  H i  , ql  +  (1 l  −  )H  j , ql     (3)
         其中,  l∈[0,1]是从贝塔分布 Beta(a,β)采样得到的.  由于在基于元学习的小样本分类方法中,  样本的标签在不
         同任务中是不共享的,  也就是说同一个类的样本在第 i 个任务中的类标为 1,  在第 j 个任务中类标可能是 2.  因
         此,  在进行任务 Mixup 时只考虑特征之间的线性组合,  不用对标签进行线性组合.  也就是说,  不论线性组合系
         数l是多少,  只需要保证由相同两个类别线性组合得到的样本属于同一类即可.  比如任务 1 中有 c 1 ,c 2 ,c 3 这 3 个
         类,  任务 2 中有 c 4 ,c 5 ,c 6 这 3 个类,  在生成新任务时,  我们分别将 c 1 ,c 4 ,c 2 ,c 6 和 c 3 ,c 7 中的隐层表示进行线性组合,
         生成新的 3 个类的样本,  类别并没有实际含义.
             •   簇间任务 Mixup
             虽然随机任务 Mixup 可以生成新的任务,  但是其多样性可能不够.  如图 1(a)所示:  假设训练任务服从正态
         分布,  通过随机采样的方式我们得到的任务大都来自正态分布的中心位置,  通过对这些任务进行线性组合,
         生成的任务也集中在中心附近,  缺乏多样性,  不能很好地泛化到处于边缘分布的任务上.  为此,  我们提出了一
         种簇间任务 Mixup 策略,  该策略可以有效地提高生成任务的多样性.  具体来说,  簇间任务 Mixup 策略在进行
         任务 Mixup 时先对所有的基类进行聚类,  将不同的类别分成不同的簇,  从不同簇中选取任务间,  按照公式(3)
         进行 Mixup.  本文简单地将所有类别分为 2 簇.  如图 1(b)所示:  在原始正态分布中,  处于中心位置的任务通过
         聚类可能被分到不同的簇中,  我们认为,  每个簇的任务都服从一个更瘦高的正态分布.  由于分簇后每个分布
         中的任务数量减少,  在原始分布中处于边缘位置的任务在瘦高的分布中被采样到的概率更大,  因此在进行簇
         间任务 Mixup 时,  生成的任务会更加多样.
             此外,  基于簇间任务 Mixup 的策略可以在一定程度上减弱虚假相关性的学习,  进一步提高模型的泛化性
         能.  我们认为,  通过聚类可以发现一些和类别高度相关的簇信息.  为了方便说明,  我们用手写数字进行直观展
         示.  如图 3(a)所示: 0 和 3 这两个类的所有图片的背景都是紫色的, 5 和 7 这两个类的所有图片的背景都是橙色
         的,  通过聚类,  我们可以把 0 和 3 聚为一簇, 5 和 7 聚为一类.  然后,  我们只在簇间进行任务 Mixup.  如图 3(b)
         所示:  先分别在各自的簇内构造任务(如原任务 1 和原任务 2),  然后对来自不同簇的任务进行 Mixup,  生成新
         的任务.  通过改变线性组合的系数l,  可以生成不同的任务.  比如图中生成 3 组不同任务,  不同任务中相同数
         字的背景颜色是不同的,  在这样的任务上学习,  可以避免学习与类别伪相关的颜色属性,  进而提高模型的泛
         化性能.
   9   10   11   12   13   14   15   16   17   18   19