Kernel Continual Learning
核终生学习,文章将核连续学习描述为一个变分推理问题,其中包含一个随机傅里叶基作为潜变量。从每个任务的核心集推断出随机傅里叶基上的变分后验分布。通过这种方式,能够生成特定于每个任务的更多信息内核,更重要的是,可以减少核心集的大小以实现更紧凑的内存,从而实现基于情景记忆的更高效的连续学习。对四个基准的广泛评估证明了内核用于持续学习的有效性和前景。
本文的核心思想就是对每个任务的训练集保存一小部分,通过这一小部分核心数据集(论文中称为coreset)可以估计整个训练集样本的分布,通过coreset生成一个核(与核岭回归中的核),最后每个任务会有一个核,那么可以通过这个核构建核岭回归非参数分类器对特征层结果进行分类。这样就做到了用最少的数据进行终身学习。
如下图所示:每个任务的数据集分为两部分,少的一部分(coreset,粉红色的)保留在M中作为核的生成数据,可以看见M逐渐变大。每个任务都会有一个核矩阵,关键就是通过这个核矩阵可以构建核岭回归分类器。这就是本文的核心思想。下图的h是特征提取器,f是一个网络层,目的是提取数据集的分布情况,然后生成随机傅里叶基W,通过随机傅里叶基可以得到核函数生成核矩阵K. 下面这个图的功能就是上文所述,那么接下来就要介绍每一部分的详细过程。

首先,作者介绍了核岭回归的公式如下所示(不知道核岭回归的同学自行学习),这里唯一不同就是拿特征层的输出做核岭回归而不是直接拿数据做核岭回归,所以 ψ(x) 是特征提取网络,将输入数据做一个特征提取。

通过对上面这个损失函数求偏导并令为0,可以求出参数w,有了参数就能做预测,下面的这个公式我将前面的w划掉了。我觉得作者是不是写错了?这个是预测函数 f ,也就是我们的分类器函数 f,为什么会是参数 w 呢???希望有知道的同学讲解一下!暂且认为作者写错了吧,不影响下面理解。


那么这个 小k 就是我们本文的重点,这个小 k 就是我们的核函数,而(3)中的大K就是核矩阵,就是由我们的核函数求得的。
,Nc的意思是我们的保留的数据集coreset有Nc个样本,那么两两样本做核内积就得到核矩阵K,这时候有人不理解说 不是先前说是特征提取网络吗?怎么又变为核函数里面的映射函数了?我一开始也是这么懵逼,但是后面作者说了一句话让我明白了,其实作者这样写也是没错的,还记得我们的核函数有个叫做 线性核函数的吗?是的,如果直接用特征提取的结果来做内积那么这个核函数就是用的线性核函数。所以作者又说我们可以选择其他核函数,所以本篇文章都在讲这个核函数。个人认为这篇文章写得很烂,绕来绕去的,明明公式都是别的论文copy过来的,感觉作者讲的不好(不是说论文思路不好)。所以只要知道小 k 是我们要求得核函数就行了,不用纠结ψ(x),如果还纠结的话就理解为此ψ(x)非彼ψ(x),他就是映射函数而非特征提取网络。至此,假设我们知道特定任务的核函数,那么就可以做分类了!
为了学习特征提取网络的参数h,我们可以最小化下面的损失函数,其中 x' 就是训练集(去除coreset)里面的样本,y' 是这个样本的标签,那么损失函数就是预测值与标签做交叉熵,这样就能更新特征提取网络参数h,如下:

那么,预测函数(分类器) f 又可以写成矩阵与向量相乘的形式,再做softmax就能够分类了,千万要注意这里的 ψ(X)表示保留集中coreset中样本的特征提取网络的映射,因为目前为止作者假设用的是点积线性核函数,实际上用的核函数是随机傅里叶变换得到的核函数,是把特征提取网络的结果做核函数映射。如果不理解,可以把它想象成 ψ()是对特征提取网络输出的结果做的核函数映射。如下图所示:


到目前为止,我们都是假设知道每个任务特定的核函数来更新特征提取网络的参数,那么下面就介绍如何得到特定任务的核函数:有这么一个理论说,有一个平移不变性正定核函数,如果你已知一个有限正定估计(分布)p(w) ,那么这个分布的傅里叶变换就是这个核函数。

需要解释的是这里的w是随机傅里叶基,我们可以从高斯分布(0,1)里面采样,而b可以从[0,2pi]里面采样,这样我们的核映射函数就能表示为下式(7)所示。

但是这么做就会导致所有的核函数都是一样的,并没有针对不同任务不同核函数,不是coreset驱动的核函数。千万注意,这里的 ψ()不是特征提取网络,而是核函数的映射函数。所以需要针对不同的任务采样到不同的傅里叶基,所以将w视为一个潜在变量。从概率的角度来看,我们希望最大化当前任务t的以下条件似然概率。

引进随机傅里叶基到式(8)中作为一个潜在变量,得到下式:

接下来的推理我觉得我理解的不是很好,所以直接贴上了原文,防止带偏大家:



大概总结一下上面所述的工作,其实上面就是在通过coreset数据估计整个训练集样本的分布,有了分布信息那就可以得到傅里叶基w,也就可以采样做傅里叶变换得到核函数,这里的两个推理网络 f 其实就是三层的全连接神经网络 , 如果你在疑惑为什么通过coreset可以退出数据集分布,那请参考下面这篇论文:Kingma, D. P. and Welling, M. Auto-encoding variational bayes. In International Conference on Learning Representations, 2014 。AVB,变分贝叶斯 。
至此,方法部分已经介绍完了,那接下来就结合模型和方法一起来介绍本文思路。首先我们看下面第一张图,其实一开始已经介绍了,但是结合方法会更加清楚。下图中的 h 就是特征提取网络,f 就是上文中提到的变分贝叶斯里面的推理网络,目的是推理出数据集的分布信息。现在请大家看完下面两个图并先自己认真思考工作原理,看完大家最关注的问题可能就是:1、我们知道 h 网络是共享的会一直更新,那推理网络 f 呢?2、这个模型保留的是coreset信息就行,那为什么不直接保留算出的的核矩阵K?这样就不用保留coreset了。3、为什么需要两个推理网络?(因为博主还没详细看完 AVB 那篇论文,所以这个问题在这里应该找不到答案,希望知道的小伙伴赐教一下)
首先回答第一个问题,推理网络 f 也是共享的,会一直更新。那可能又有问题了,这个特征提取网络共享想得通,因为只要各个任务是图片分类,那么他们要做的同一件事就是特征提取,因为无论是哪一个任务都一样提取特征,比如提取一些纹理信息、颜色信息等等。这个特征提取网络是公共的,各个任务都可以使用的。那么,推理网络 f 可以共享随着任务更新吗?它这样不会导致 f 学习了后面的任务忘了前面的任务推理吗? 答案是并不会,首先我们要明白一点就是 推理网络 f 它的作用就是给一部分数据集推断整个数据集的分布,它与任务无关!!!就是说随着任务的进行,它只会越学越好,因为不同的任务分布推理的工作是一样的,就像前面的特征提取一样。他们都是与任务无关的,所以不会造成什么遗忘,或者学习了后面忘了前面的。
接着是第二个问题,居然有了核矩阵K就能构造分类器了,为什么保留coreset而不直接保留核矩阵K?请看第二张图 红色框起来的部分,其实看上文公式(5)就知道这里核矩阵不是 只要 求一个,而是对于测试样本数据也需要求核矩阵,所以只保留coreset数据集的核矩阵没有用,因为最终还是要 求测试样本的核矩阵,那就还是要用到coreset来构造核函数了。而且,input某个任务的测试数据集,都必须input它的coreset,因为必须求coreset的核矩阵才能做分类,所以必须保留coreset的。
第三个问题在本文貌似找不到答案,有知道的小伙伴可以赐教一下,后面知道了再来补充。综上就是这篇论文的介绍了,能力有限,有错误烦请指出!



浙公网安备 33010602011771号