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

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

         率分布在每一个类别上趋于平均分布.  对于开放类样本而言,  若模型输出的概率分布趋于均匀分布,  那么模
         型对这部分样本输出的熵值很大,  进一步增强了模型分类器对于开放类样本不确定性.
             对于公共类别的所有样本 D rc ,  本文希望模型对这部分样本的不确定性显著降低的同时,  还需要对其准确
         内部辨别.  为了识别公共类样本,  本文引入了交叉熵损失对这部分公共类样本进行学习.  样本的伪标签通过
         聚类的方式获得.  参考 SHOT       [43] ,  本文对所有的公共类样本 D rc 进行特征层面的聚类,  并得到所有样本的伪标
         记,  并对这些样本采用自监督的方式进行学习.  值得注意的是,  在可信的公共类样本集合 D rc 中包含一部分可
                                   L
         信的、由专家标注得到的样本 D ,  这部分样本的标记相比于别的样本来说更为可靠,  故本文对这部分样本赋
                                   t
         予更大的权重,  对剩下的公共类样本 D           t PL  赋予偏小的权重:
                                                                      ( )
                               L =  kn  −  E  L∑  K  l  log px −  k  ( ) E  PL∑  K  l α k  log px    (2)
                                                   t
                                                                        t
                                                                      k
                                     t x ∈  t D  k = 1 k  t x ∈  t D  k = 1
         其中,  l k 表示标记向量,  l k 中真实标记处为 1,  其余位置为 0;  α表示对剩余的伪标记的公共类样本赋予的权重,
         α<1.0.
             另外,  为了进一步促进模型对公共类样本的不确定性显著降低,  我们引入了现有的信息最大化损失                                 [43] 来
         促进模型对公共类样本输出的熵值不断减小:
                                             ()log px
                                                                         )
                              L =  im  −  E  t x ∈  D rc ∑  K k = 1  px t  k () E−  t  t x ∈  D rc ∑  K k = 1 KL  ˆ (p k  || q    (3)
                                                                         k
                                            k
         其中,  ˆ p = (1/ )∑  p ( ) x  () k  表示所有公共类样本(数量为 m)第 k 类的样本的平均概率输出的值, q {k=1,…,K} =1/K 表
                     m
                k
         示均匀分布.  公式(3)的第 1 项保证了熵最小化,  在训练过程中可以促进模型对这部分公共类的不确定性显著
         降低,  熵值越来越小,  以此来促进模型分离公共类和开放类.  公式(3)的第 2 项 KL(A||B)损失的目标是希望在学
         习过程中,  分布 A 不断靠近分布 B.  在本文中,  此损失希望模型输出的每一类的概率分布可以趋向均匀分布,
         以防止模型在学习过程中由于过于偏向某些类而对其他类的学习性能显著下降,  即防止退化解问题的出现.
         KL(⋅)作为一个正则化项,  已被大多数域自适应工作采用来防止这一现象.
             联合开放类样本和公共类样本的损失,  整体的训练损失为
                                            L total =L kn +L im +ηL unk                       (4)
         其中, η表示权重.
             •   测试过程
             当模型达到最大训练次数后,  本文利用模型输出的信息熵来进行开放类和公共类区分.  此时,  公共类样
         本的不确定性越来越小,  开放类样本的不确定性越来越大,  故基于设定的平均阈值来区分开放类和公共类样
         本的效果对设定的阈值不敏感.  对于公共类,  直接用模型输出的类别评估公共类的辨别效果.
             综上所述,  LCAL 的核心在于促进开放类和公共类样本的分离.  局部多样性选择的提出,  是为了获取有价
         值的、且更多更全面的阈值模糊样本.  针对不同类型样本的损失也是为了进一步的促进公共类和开放类的分
         离,  交叉熵的引入则保证了公共类样本的辨别能力.  整体的算法流程见算法 1.
             算法 1.  局部一致性主动学习算法.
             输入:  源域模型 h s ,  无标签的目标域数据 D t ,  最大的训练轮次 Epoch,  超参数α, β, η;
             输出:  训练后的目标域模型 h t .
             1:   用源域模型参数初始化目标域模型 h t ;
                 ***第 2.2.1 节探索主动样本点***
             2:   对所有目标域数据的特征进行 K-means 聚类;
             3:   将每个聚簇的类中心看作锚点;
             4:   对锚点按照熵值顺序,  在有限标注下,  让专家为锚点赋予标记,  并将锚点放入主动样本的集合;
             5:   让 epoch=1, iter_num=0;
             6:    While epoch≤E do
             7:     将 cosine 作为度量准则,  计算得到每一个锚点最近的 N 个邻居,  自动赋予邻居和锚点一样的标记,
   75   76   77   78   79   80   81   82   83   84   85