0%

Self-paced Curriculum Learning

总结

这篇论文太难懂了,可能是由于数学太差了,我一直无法理解 \(\lim_{\lambda \to 0} v^*_i = 1, \lim_{\lambda \to \infty} v^*_i = 0\) 这个约束在代码里应该怎么实现,此外对于 \(v\) 向量应该也是要约束在 \([0, 1]\),但是这在代码里应该怎么实现?这个向量应该会随着模型更新的,它完全有可能被更新成小于 0,或者大于 1。

暂且不跟进这篇论文了。

前置背景

该论文对 curriculum learning 和 self-paced learning 做了的一点介绍,如果读者对这两个学习制度不了解,可以有选择地读一下这两个的介绍,否则应该看不懂论文中提出的算法。

课程式学习(Curriculum learning,CL)或者自步学习(self-paced learning,SPL)都是最近(一个 2009,一个 2010)被提出的学习制度(learning regime),灵感来源于人类和动物的学习过程,即从简单逐渐到更复杂的策略。其中,二者具有相似的学习范式,但是有着不同的学习计划。Abs

在 CL 中,课程是由先验知识决定的,并且之后保持不变。因此其高度依赖先验知识的依赖,而忽略了对学习者的反馈(博主注:说白了就是课程由教务组制定,之后的课程保持不变,学生学习的好坏取决于教务组的能力。教务组对应于人类标注者(annotator),学生对应于模型)。在 SPL 中,课程式动态决定的,以适应学习者的学习节奏。Abstract Intro CL 和 SPL 主要的差异在于课程的定义不同

课程(curriculum)决定了一系列的训练样本,基本上对应着一群以学习难度升序排序的样本。

CL 的优点是整合不同来源的先验知识的灵活性,缺点是课程的设计已经被决定,于后续的学习无关。SPL 受限于没有将先验知识整合进训练过程,导致它易于过拟合。由于它们各自都有优点,实际上很难判断谁更好。Introduction

这些学习范式已经从经验上被证明有助于避免不良的局部极小值,并取得更好的泛化结果。(作者贴了三篇论文)Introduction

确实。一条样本如果要简单,那么它的优化过程可能相对来说要简单。那么再优化难的样本可能就只需要花更少的时间。博主瞎猜

关于 CL 和 SPL 具体的算法实现,可以阅读对应的论文,此处不再深入。

研究目标

具体问题陈述

作者认为 SPL 无法处理先验知识,容易造成过拟合。论文中,作者发现了 CL 和 SPL 之间缺少的连接,并且提出了一个统一的自步课程学习(self-pace curriculum learning,SPCL)框架。SPCL 是一个简明的优化问题,它既考虑了训练前的先验知识,又考虑了训练中的学习进度。与人类教育相比,SPCL 类似于“师生协作”模式,而不是 CL 的“教师驱动”或者 SPL 的“学生驱动”。Abstract Intro

解决的问题

解决 CL 以及 SPL 的缺点。在一个统一健全的框架中,一个合理的学习范式应该同时考虑先验知识和在训练时学习到的信息。Model and Algorithm

SPCL

SPL

SPL 的优化对象: \[\min_{w, v \in [0, 1]^n} \mathbb{E}(w, v, \lambda) = \sum^n_{i=1} v_i L(y_i, f(x_i, w)) - \lambda \sum^n_{i=1} v_i \tag{1} \]

模型和算法

与 CL 类似,作者假设给定一个由权威根据先验知识定义的课程。我们可以得到以下的公式,该公式可以是同时实现 CL 和 SPL 的要求:

\[\min_{w, v \in [0, 1]^n} \mathbb{E}(w, v, \lambda, \Psi) = \sum^n_{i=1} v_i L(y_i, g(x_i, w)) + f(v; \lambda) \quad s.t. \, v \in \Psi \tag{3} \]

其中 \(v = [v_1, v_2, \cdots, v_n]^T\) 代表样本重要性的权重变量。\(f\) 被称为自步函数,它控制学习计划。\(\Psi\) 是一个可行的区域(博主注:这种说法比较模糊,详见《定义二:课程区域》),编码了一个预定义的课程信息。\(L\) 就是指损失函数。那么一个课程在数学上可以被定义为以下几种类别。

定义一:全序课程

全序课程(Total order curriculum)意味着课程表中的所有课程都呈全序状态。以下为两个名词解释,具体可以百度,此外对于名词“全序”貌似是一个数学上的定义。

  • 课程:即一个样本
  • 全序:即在一个序列中,所有样本呈全序状态。而偏序指的是在一个序列中,所有样本大致呈一定的顺序。

对于一个训练样本 \(X = \{x_i\}^n_{i=1}\),即一个全序课程,可以被表示为一个排序函数: \[\gamma: X \to {1, 2, \cdots, n} \]

其中 \(\gamma(x_i) < \gamma(x_j)\) 代表在训练时 \(x_i\) 应该比 \(x_j\) 更早得被学习。\(\gamma(x_i) = \gamma(x_j)\) 代表对于这两个样本没有特殊的先后关系。

定义二:课程区域

基于样本 \(X = \{x_i\}^n_{i=1}\),给定一个预定义的课程 \(\gamma(\cdot)\) 以及它们对应的权重变量 \(v = [v_1, \cdots, v_n]^T\)\(\Psi\) 被称为课程 \(\gamma\) 可行的区域,当:

  1. \(\Psi\) 是一个非空凸集;
  2. 对于每一个样本对 \(x_i, x_j\),倘若 \(\gamma(x_i) < \gamma(x_j)\),则 \(\lmoustache_{\Psi} v_i dv > \lmoustache_{\Psi} v_j dv\)。其中 \(\lmoustache_{\Psi} v_i dv\) 计算 \(\Psi\)\(v_i\) 的期望值。类似地,如果 \(\gamma(x_i) = \gamma(x_j)\),则 \(\lmoustache_{\Psi} v_i dv = \lmoustache_{\Psi} v_j dv\)

定义三:自步函数

自步函数决定了一个学习协议。对于每一个训练样本及其对应的损失值 \(\mathcal{l} = [\mathcal{l}_1, \cdots, \mathcal{l}_n]^T\),假设 \(v = [v_1, \cdots, v_n]^T\) 代表权重参数向量。\(\lambda\) 控制学习进度(或者模型的“年龄”)。满足以下条件,则 \(f(v; \lambda)\) 被称为自步函数:

  1. \(v \in [0, 1]^n\)\(f(v; \lambda)\) 是凸的。
  2. \(\lim_{\lambda \to 0} v^*_i = 1, \lim_{\lambda \to \infty} v^*_i = 0\)
  3. \(||v||_1 = \sum^n_{i=1} v_i\) 相对于 \(\lambda\) 增加,那么 \(\forall i \in [1, n], \, \lim_{\lambda \to 0} v^*_1 = 0, \, \lim_{\lambda \to \infty} v^*_i = 0\)

其中 \(v^* = \arg\min_{v \in [0,1]^n} \sum v_i \mathcal{l}_i + f(v; \lambda)\)

评估

结论