一、常规参数
1.1 epoch
是指所有的训练数据都要跑一遍。假设有6400个样本,在训练过程中,这6400个样本都跑完了才算一个epoch。一般实验需要训练很多个epoch,直到LOSS稳定后才停止。
1.2 batch_size
中文名称是批大小,之前的6400个样本,如果送一个样本进去,就更新一次网络的权重,也就是在线学习。与之对应的,我们可以把一个epoch的数据,分批送进网络,可以加快训练时间。每次送多少进去,就是batch_size,假设把6400个样本,分成50次送进去,那么每一次就要送128个样本进去,即batch_size=128。
1.3 iteration
把一个epoch的所有数据分成了很多批,批数就是iteration,按上面的假设,iteration=50,每经过一个iteration,参数更新一次,可以理解为batch的个数。
样本总数=batch_size * iteration
二、小样本训练参数
2.1 episode
(相当于传统训练中的batch)小样本学习在训练时,会分成很多次训练,每一次都要从所有类中随机选择一些类别来train(不放回抽样)。一个episode,就是一次选择support set和query set类别的过程,即用选择的某几个类训练一次模型,下一个episode,再选择其他几个类训练模型。episode内部由两部分构成:support set和query set。
2.1.1 support set
在构建episode时候,每个episode都会从全量数据中随机选择一些类别,比如C个类别;选定C个类别后,再具体在每个类别中随机选择K个样本,这便构成了support set,这样总共包含C * K个样本。一般而言模型会在这个上面进行一次训练。这样构造出来的任务便是C-way K-shot。
2.1.2 query set
和support set类似,会在剩下的数据集样本中选择D个类(注意这里的类别是从对应的spport set类别选择,D≤C)采样一些样本作为query set,一般而言,模型在support set进行一次训练后,会在query set上求得loss。
2.2 task
一个episode包含一个support set和一个query set,一个episode对应的便是让模型在support set上进行学习后能够在query set上有比较好的预测表现。因此一个episode便对应为一个task。
2.3 meta trainig set
通常而言,根据训练数据的规模大小,可以构建出来多个训练的episode,这些episode便可以称为meta-training set。
2.4 meta test set
因为在meta training set的若干个task(也就是若干个episode)上已经训练好了一个模型,那么希望模型在一些新的task上也能有比较好的表现。因此,meta test set在数据构成上和meta training set完全一致,也包含了support set和query set,基本思想就是希望模型能够基于新任务下的support set,迅速抓住问题的本质,从而能够快速在meta test set中的query set上取得比较好的效果。
三、总结
总体而言,这种类型的meta-learning,其基本单元是一个task,或者是一个episode,和普通的训练方法需要进行区分。下图便是一个5-way 1-shot的图片分类问题,每一行便是一个task,也是训练的episode,在support set中有5个类,每个类有1个样本,在test set有两个类(test set的类别须是对应的training set的子集),每个类一个样本。在测试模型训练效果的时候,便是希望模型能够在meta test set中的task上也能够取得比较好的效果。