2.2.4 其他范式
有监督学习、无监督学习和强化学习是机器学习的三种基本范式。除此之外,为了应对复杂多样的应用场景需求,也衍生出了很多其他的学习范式。这些范式在数据的获取方式、学习环境、资源分配、应用需求等方面各不相同,但大多是上述三种基本范式的变形、改进或组合。下面简单介绍几种比较常见的其他范式。
迁移学习(transfer learning)是一种在目标任务数据不足的情况下,充分利用其他学习任务的已有模型,将其强大的特征学习能力迁移到目标任务中的学习算法。迁移学习的本质是通过源域(source domain)知识来辅助学习目标域(target domain)知识。源域(或源任务)数据集被称为源数据集,目标域(或目标任务)数据集被称为目标数据集。在一个机器学习任务里,样本、特征和模型承载了主要的知识,都有可能成为迁移学习的对象。所以根据迁移对象的不同,迁移学习算法又分为样本迁移、特征迁移、模型迁移等不同类别。
●样本迁移 适用于源域和目标域存在一定的类别重叠的情况,目标是通过重用源域样本来提升迁移性能。常用的方法是为源域样本赋予不同的权重,提升源域中有利于目标域任务的样本的权重,同时降低不利于目标域任务的样本的权重,以此来增强模型在目标域任务上的性能。但这类方法通常只在领域间分布差异不大时有效,对于计算机视觉、自然语言处理等任务效果并不理想。
● 特征迁移的应用更为广泛,它适用于源域和目标域特征空间不一致的场景。常见的解决思路有如下两种:(1)从特征空间出发,利用分布距离指标或使用对抗学习,缩小模型提取的源域特征和目标域特征的分布差异;(2)从输入空间着手,将源域数据转换到目标域进行学习,以完成跨领域泛化。这两类解决思路可形式化定义如下:
其中,f=h◦g为任务模型,h为任务头,g为特征编码器,θ为模型参数,L(f(x),y)对应任务损失函数,g(D)为数据集D的样本特征集合,Ldis(·,·)为衡量特征集合分布差异的函数,指导两个域之间的特征对齐。可以看出,方法(1)会增加额外的损失项(Ldis)来约束特征编码器,使其学习到不同领域之间的共同模式;而方法(2)需要首先学习将数据从源域转换到目标域的转换映射Xs→t,比如通过神经网络进行学习,以此来降低域间差异,提升模型泛化能力。
● 除了样本迁移和特征迁移,模型迁移是另一类被广泛研究的迁移方法,它通过找到源域和目标域之间可以共享的模型参数信息,以此最大化利用在源域数据上预训练的模型的知识。在深度学习中,一种常见的模型迁移方法是利用大规模预训练模型对下游任务模型进行初始化,然后以微调(或者添加特定任务模块后再微调)的方式完成预训练模型到下游任务的跨域迁移。模型迁移可形式化表示如下:
其中,g表示预训练特征抽取器,hs和ht分别表示源(预训练)任务和目标任务头,Ls和Lt分别表示源任务和目标任务的损失函数,Ds和Dt分别表示源数据集和目标数据集。实际上,模型迁移的实现方式有很多种,比如可以固定住网络深层结构来更新浅层结构,也可以借助后面要介绍的知识蒸馏技术,让下游任务模型能够学到源域模型中更多的知识。人工智能安全研究非常注重迁移性,例如攻击和防御方法能否迁移到不同的数据集、模型结构、训练方式等;抑或是利用特征迁移技术提升模型的通用防御能力。
在线学习(online learning)是与离线学习相对的概念,指训练数据或者学习任务是在模型的部署使用过程中不断更新或增加的,需要持续优化模型以满足动态增长的需求。前面介绍的很多学习方法都是离线学习方法,即训练数据是预先收集好的。而在线学习要求数据按顺序可用,利用新到来的数据实时地对模型参数进行更新和优化。其中增量学习是一种典型的在线学习范式,它要求模型能够不断地处理现实世界中新产生的数据流。新旧知识之间存在一定的权衡,所以增量学习的难点是如何让模型在吸收新知识的同时能够最大化地保留甚至整合、优化旧知识。
我们将增量发生之前的数据称为旧数据集,定义为,新增加的数据集则定义为。增量学习的优化目标可定义如下:
其中,θ表示模型f的参数,L(f(x),y)为损失函数。可以看出,增量学习的优化目标是让模型能够在新旧两个数据集上的期望损失最小。然而,在增量学习过程中,新旧数据无法同时可见,模型先可见旧数据,后可见新数据,在新数据上进行学习的过程中旧数据又变为不可见或少部分可见,这会导致模型发生灾难性遗忘(catastrophic forgetting)。一般可以通过增加参数约束项、预保存旧数据的少量关键特征(并在增量过程中进行回放)、对模型重要参数进行冻结等方式来解决该问题。
联邦学习(federated learning,FL)是针对数据孤岛现象所提出的一种多方协同学习(collaborative learning)技术。在当今信息时代,数据是宝贵的资源,机器学习(尤其是深度学习)往往需要大量数据来训练高性能的模型。然而在实际场景中,不同的机构虽然都拥有一部分私有数据,但往往由于各种限制无法共享,这就导致个体机构能利用的数据量是非常有限的,难以整合产业优势。这种现象被形象地称为“数据孤岛”,指不同业务系统之间无法协同互通的状态。尽管随着5G通信和物联网技术的快速发展,大量的数据被不断地采集,但是数据孤岛现象日益严重,所带来的问题包括:如何安全共享信息、如何有效利用异构数据、如何快速传输交付、如何定价数据价值等。在数据孤岛问题之下,联邦学习应运而生,它允许各方在不共享数据的情况下可以联合训练一个强大的全局模型。
联邦学习存在多个参与方和一个中心参数服务器,每个参与方有自己的数据和模型,可以进行本地模型训练,各参与方在一定次数的本地训练后将本地模型参数上传至中心服务器,中心服务器在聚合本地参数后更新全局模型,各参与方下载全局模型并继续进行本地训练,以此往复直至全局模型收敛。由于只是共享模型参数(或梯度信息)而不需要共享数据,联邦学习也通常被认作一种“隐私保护”(privacy-preserving)的学习范式。根据各方私有数据的分布类型不同,联邦学习又可以分为横向联邦学习(horizontal federated learning,HFL)和纵向联邦学习(vertical federated learning,VFL)。以一个包含若干行和列的数据表为例,横向联邦中各参与方拥有不同的“数据行”,纵向联邦中各参与方拥有不同的“数据列”。它们共同需要面对的挑战包括:非独立同分布(non-IID)的数据、有限通信带宽、不可靠或有限的设备等。关于联邦学习及其安全问题将会在5.3节和8.5节分别进行详细的介绍。
知识蒸馏(knowledge distillation,KD)是将知识从一个大的教师模型中蒸馏到一个小的学生模型中的学习方法。知识蒸馏在资源受限的移动端部署中具有重要的应用价值,可用于训练服务于图像分类、目标检测、语义分割等任务的高效小模型,甚至在对抗防御中也有重要的应用。蒸馏的核心思想是对齐,通过让学生模型的逻辑或概率输出对齐教师模型以达到知识蒸馏的目的,对齐也可以理解为一种“模仿学习”,因此所有以“对齐”为主的训练方式都可以叫蒸馏。蒸馏得到的学生模型一般比从头训练(training from scratch)具有更好的性能。令学生模型为S,教师模型为T,Lsim表示对两个模型输出的一致性约束,给定数据集,知识蒸馏的优化目标可定义如下:
知识蒸馏技术在数据与模型安全中的很多地方都有涉及。比如,蒸馏技术可以用来从一个已训练的模型中逆向工程原始训练数据,以达到数据窃取的目的。再比如,在模型防御方面,可以通过鲁棒性蒸馏技术将鲁棒性从教师模型迁移到结构更为简单的学生模型,以弥补小模型在鲁棒训练方面的不足。
多任务学习(multi-task learning,MTL)是指通过单个模型完成多个任务的学习范式。有别于单任务学习,多任务学习把多个紧密相关的任务放在一起进行学习,建立任务间的共享表征,从而提高模型在多个任务上的同时泛化能力。单任务学习必须为每个任务训练一个模型,在多任务推理时还需要进行二次组合或相互调用,而多任务学习得到的模型可以同时完成多个任务的推理,有效减少了训练和推理时间。2.2.1节中所介绍的有监督学习就是一种单任务学习,我们在其基础上进行多任务的扩展。定义数据集,它包含m个子任务,多任务学习的目标是在同一个输入上完成多个不同的子任务,如对一张图片同时进行目标检测和图像分割。一种常见的多任务建模方式是使用一个共享表征模型g对输入进行特征编码,进而针对m个不同的任务设计不同的任务头。多任务有监督学习往往要求模型对多个子任务同时进行优化,每个任务对应一个损失函数Li,可以根据学习的难易程度赋予不同的任务以不同的权重。多任务学习的目标可形式化表示如下:
多任务学习的安全性问题是一个尚未充分探索的开放研究领域。在攻击方面,可以探索如何设计能够同时攻击多个任务的通用攻击方法、如何根据一个任务来破坏其他任务等;在防御方面,可以探索能防御多任务攻击的高效防御方法、如何高效利用多任务互补信息来建立更完备的防御框架等。
小样本学习(few-shot learning,FSL)是一种以有监督学习为主,仅依赖少量样本就可以高效学习和泛化的学习方法。人类可以根据已有经验,仅凭少量样本就辨识新的事物,而小样本学习的出现,就是为了让机器也可以拥有类似的能力。小样本学习一般定义为一个C-way-K-shot的任务,C-way指C个类别,K-shot指每个类别包含K个样本。小样本学习涉及三种数据集:训练集、支撑集(support set)和查询集(query set)。任务要求在训练集上训练的模型能够以带C ×K个已知标签的样本作为支撑集,快速准确地学习新的类别概念,并在查询集(测试时由标签未知的数据构成的集合)上具有很好的表现。这种通过少量样本快速学习的能力往往需要模型从更多的数据中获取先验知识,因此,小样本任务往往会提供与测试语义相关但不相同的训练数据,保证标签空间不相交。
解决小样本学习问题最简单的方法是让模型先在训练集上进行充分训练,然后在测试支撑集上进行二次训练,最后在测试查询集上进行性能评测。另一类常见的方法则是引入元学习(meta learning)的思想:让模型学会如何学习(learning to learn)。具体来说,这类方法视训练集上的每一次训练迭代为一次小样本学习过程,仿照测试阶段C-way-K-shot的方式将每个小批量训练数据划分为支撑集和查询集,并确保支撑集包含C×K个样本。我们将每种划分定义为任务Ti,其对应数据集,于是总的训练任务为Ttrain={T1,…,Tn},总的训练集为Dtrain={D1,…,Dn|Di⊂D},并通过如下公式训练模型:
与普通有监督学习任务相比,小样本学习的挑战来源于模型需要在新任务上以很少的训练样本完成学习,并在大量样本上进行测试。因此小样本学习容易对已有数据产生过度依赖,容易受数据投毒、后门攻击等数据相关的攻击威胁。从防御安全的角度来说,目前最为有效的对抗防御手段需要在线构造大量对抗样本进行对抗训练,然而小样本学习在迁移到新任务的过程中每个类别仅有少量标注样本,难以进行大量对抗训练,因此在小样本任务下如何训练对抗鲁棒模型仍是一个充满挑战的问题。
通过前面的介绍可以看出,机器学习范式多种多样,不同学习范式下的数据采集与使用方式、模型训练流程、学习目标、优化算法以及最终模型的部署形式等不尽相同,所面临的安全问题和需要的防御方法也会有一定差异。这也是当前人工智能安全问题多样化的主要原因。虽然目前人工智能安全研究主要围绕有监督学习进行研究,但相信未来这些研究将会扩展到更多样化的学习范式和实际应用场景中。