2.2 定义任务
在完成实际任务的过程中,需要明确对任务的定义。许多任务很简单,举例说明,给出一些猫和狗的图片,对它们进行分类,分为猫的图片和狗的图片这两类,这是一个简单的任务。在任务中,我们需要了解数据的含义、数据的分布规律、对模型的假设要求、模型的选择、目标函数、优化算法等,这样才是一个能够完成的任务。
小样本图片分类任务是元学习中经常研究的一类任务,需要完成的新图片分类任务中只包括训练集中没有的图片类别,而且每个类别下的图片数目很少,没法用大量有标注数据来重新训练深度学习模型。在小样本图片分类任务中,好的分类器(Classifier)需达到以下要求:
(1)在新任务即新类别的图片分类上,具有好的分类精度。例如,新类别下的图片张数较少,少于6张,这就是小样本图片分类的新任务,需要在少量的图片上训练,即可学会对新类别图片的分类。
(2)在新任务的数据集上训练过之后,分类器在过去训练过的图片数据集上的精度不会下降。
(3)好的分类器可以快速在新任务上给出图片分类的结果,这是分类器的推理过程,在实际应用中,希望分类器推理的速度快且精度高。
在小样本图片分类任务上,适应了新任务的模型,在旧任务上的精度会降低。针对这种现象,有以下两种解决问题的思路:
(1)存储处理旧任务的模型,这样即使适应了新任务的模型,在旧任务上精度下降也没关系,在旧任务上使用存储的旧模型就可以。
(2)要求唯一的大模型即使适应了新任务,在旧任务上的精度也不降低,这样的要求会使模型更复杂,通过训练不同的任务,计算出一个十分复杂的普适模型。
实际中的任务可能抽象且复杂,不容易用模型来描述。这时,需要将复杂任务进行分解,提出合理的假设,用模型来完成复杂任务的子任务,然后将模型拼装起来,完成复杂任务。复杂任务中包含许多目标,需要同时优化不同的目标函数。复杂任务中也会包含许多自由度,可以调控更多行动的实体,可以控制更多参数,解决问题的方案往往不唯一,方案也会很灵活。复杂任务的完成依赖于综合多种学习方法,例如,元学习、强化学习、博弈论、因果推理、集成学习等。
复杂任务的简化往往需要将复杂任务分解为一些简单的子任务,下面举例说明。
(1)一些任务中存在完成任务的自然逻辑。如在炒菜之前需要先洗菜,在学习概率论之前需要学习微积分,在完成一项任务之后,才能为另一项任务的开始提供必要的输入,这就需要明确完成任务的流程和流程中的节点,在一个节点的任务完成之后,才能开始下一项任务,这是一种采用流程对任务进行划分的方法。
(2)有些任务可以并行完成。例如,在比赛赛季中,许多比赛可以同时进行,以在众多队伍中决出进入决赛的队伍,这样的任务划分方法像是树状的,每个层都有许多分支,可以并行进行,然后再汇总起来,为下一个任务提供必要的输入。
(3)还可以用图来表示任务的划分。图的结构中包括任务之间的依赖关系,有向图可以表示类似树状的结构,无向图可以表示任务之间的相关性。除了这些之外,收集到的试验数据包含了试验设计的思想,因此分析这样的数据任务时,还需要考虑试验设计中的假设。
在遇到新的复杂任务时,不仅要更新子任务模型的结构和参数,而且要更新复杂任务划分为简单子任务的模型。用流水线形式、树或者图等来对复杂任务进行分解时,需要更新相应的流水线、树和图模型。
2.2.1 元学习任务的定义
在对元学习模型进行训练时,使用的是元训练数据集和元测试数据集,而这些数据集都是任务的集合,一个任务包含一个普通的训练集和一个测试集。这里给出的对元学习任务的数学定义来自Chelsea Finn等人的MAML论文[2],任务的定义包括三个组成部分:
(1)输入数据的概率分布。
(2)数据分类标签的似然函数。
(3)用来训练数据模型的损失函数,以及损失函数中用来描述任务特性和任务共性的参数。
任务的这三个组成部分对应元学习模型中的部件设计。例如,一般需要对高维的输入数据进行降维处理,常用CNN或者ResNet进行特征提取,而对高维输入数据的有效降维则依赖输入数据的概率分布,要求提取的特征向量既保留高维输入数据中必需的信息,又满足元学习模型中对任务共性表示的要求。数据分类标签的似然函数一般是分类问题中常用的Softmax函数,有时会在Softmax函数中引入超参数,为数据分类提供更多的灵活性。损失函数决定了参数优化的方法,可求导的损失函数可以用随机梯度下降法进行优化求解,不可求导的损失函数可以用遗传演化算法进行优化求解,这决定了相应的元学习模型的部件选取。因此,任务的定义和构造对于后续元学习模型中部件的设计非常重要,是很重要的一步,一般仍然采用化繁为简的思路来完成复杂任务。
2.2.2 元强化学习任务的定义
强化学习指的是在任务中考虑学习器与环境的交互,在交互中学习器学会了从环境中获得奖励,渐渐地,学习器可以根据学会的奖励函数来选择奖励最大化的行动策略。即使这种奖励是服从随机分布的,只要给出的学习数据集足够大,学习器也仍然能学会复杂的期望奖励最大化的行动策略。在强化学习中考虑多步决策、学习器拥有的决策集合、行动策略的集合、不同行动轨迹带来的收益分布等,强化学习模型的输入和输出更加多元化。这里给出的强化学习任务的数学定义来自Chelsea Finn教授的MAML论文[2],强化学习任务基于马尔可夫决策过程(Markov Decision Process,MDP),强化学习任务的定义包括五个部分:
(1)所有状态的集合。
(2)所有行动的集合。
(3)每个时间节点处初始状态的概率分布。
(4)状态之间转变的过程。
(5)基于状态和行动的奖励函数。
其他参数还包括对未来奖励折现的折现因子、最早时间节点处原始状态的概率分布、时间轴上的期限,两个时间节点之间的轨迹包括所有的状态和该状态下采取过的行动,行动策略是从状态到行动的映射,给出行动的方针。因此,在定义一个强化学习任务时,需要显式地给出期限内时间轴上所有重要的时间节点,每个时间节点处的状态空间,该状态空间相应的行动空间,该时间点处的初始状态的概率分布,基于上个时间点的状态和行动的状态转化概率分布,该时间点处基于状态和行动的奖励函数。
强化学习任务考虑的元素主要来自学习器和环境之间的交互,学习器之间的竞争与合作,以及时间序列上重要节点之间的相互作用。考虑的因素越多,强化学习任务中的部件越多,相应的元强化学习模型设计越复杂,任务来源于对数据的精准表达。
2.2.3 任务分解
实际生活中遇到的问题常常需要结合许多机器学习方法来综合进行解决,需要将复杂任务分解成许多可以建模处理的子任务,再根据子任务的特点选择合适的模型,最终通过子任务学习器的沟通组合解决复杂问题。
一般的任务分解是根据正常的逻辑进行的,例如,将任务分解为可达成可控制的步骤,或者将任务的分解画成一张有向或无向图。通过算法进行任务分解可以通过无监督学习来实现。计划划分(Plan Parsing)是Anthony Barrett和Daniel Weld在1994年的论文“Task-Decomposition via Plan Parsing”[3]中提出的,大多数的任务分解都使用了任务的计划纲要,在计划纲要中记录了部分有序任务集(Partially Ordered Sets of Task)和行为原语(Primitive Actions),行为原语包含行为和效果,大多数的任务分解采用自上而下的任务缩减(Task Reduction)方法,根据计划纲要使用任务网络和行动来代替任务,直到只剩下行动。与将任务分解为行动的方法不同,计划划分是一种自下而上的方法,生成最小的任务,使用增量解析算法,识别符合计划纲要的行为原语并将其加入任务中,筛除不能解析的行为片段。
P.E.Utgoff和D.J.Stracuzzi于2002年在论文“Many-Layered Learning”[4]中提出,通过在线算法来构建一个具有很多知识层的网络,将流式数据中一系列的概念和功能组合成一个多层的知识网络,复杂的知识来自简单知识层的组合,通过简单知识网络的在线增量学习,形成不断积累知识的网络,知识网络通过组合知识层形成具有独立功能的知识模块,这些模块的组合实现了复杂的任务。
Kyriacos Shiarlis等作者于2018年在论文“TACO: Learning Task Decomposition via Temporal Alignment for Control”[5]中提出任务分解算法TACO,所有的示例学习任务(Learning from Demonstration,LfD)算法都需要将复杂的真实任务分解为简单子任务,通过子任务内和子任务之间相应子策略的重复使用,可以使用不同层级的训练数据来训练同一个子策略,然后将结果进行组合来形成新的子策略。任务分解往往和域知识(Domain Knowledge)与时序分割(Temporal Segmentation)有关,而TACO和域知识无关,且TACO只是基于每个示例学习任务中给出的子任务顺序,TACO根据任务分解来将不同层级的训练数据和子策略匹配起来,这样训练有利于提高模型的泛化能力。机器人领域用到大量示例学习任务,例如,机器臂的控制任务、强化学习、模仿学习,任务分解方法的使用可以减少对数据标注的工作量,同时保证模型达到同样好的效果。
Sungryull Sohn等作者于2020年在论文“Meta Reinforcement Learning with Autonomous Inference of Subtask Dependencies”[6]中使用了包含任务分解的元强化学习模型,复杂任务中的子任务图描述了子任务之间的相互依赖关系,而且子任务图在遇到新任务时需要快速更新参数并且进行推断,只有很少的子任务和收益的产生有关,完成子任务之后才会产生收益,在遇到新任务时,这个模型会同时更新强化学习中的策略和子任务图中的参数推断。引入子任务图后将复杂任务化繁为简,有利于元强化模型快速准确地适应新任务,并且使得元强化模型可以完成更加复杂的任务。