【论文阅读】Self-Paced Curriculum Learning

论文下载
代码
Supplementary Materials
bib:

bash 复制代码
@INPROCEEDINGS{,
	 title		= {Self-Paced Curriculum Learning},
	 author	    = {Lu Jiang and Deyu Meng and Qian Zhao and Shiguang Shan and Alexander Hauptmann},
	 booktitle	= {AAAI},
	 year		= {2015},
	 pages      = {2694--2700}
}

1. 摘要

Curriculum learning (CL) or self-paced learning (SPL) represents a recently proposed learning regime inspired by the learning process of humans and animals that gradually proceeds from easy to more complex samples in training.
The two methods share a similar conceptual learning paradigm, but differ in specific learning schemes.
In CL, the curriculum is predetermined by prior knowledge, and remain fixed thereafter.
Therefore, this type of method heavily relies on the quality of prior knowledge while ignoring feedback about the learner.
In SPL, the curriculum is dynamically determined to adjust to the learning pace of the leaner.
However, SPL is unable to deal with prior knowledge, rendering it prone to overfitting.
In this paper, we discover the missing link between CL and SPL, and propose a unified framework named self-paced curriculum leaning (SPCL).
SPCL is formulated as a concise optimization problem that takes into account both prior knowledge known before training and the learning progress during training.
In comparison to human education, SPCL is analogous to "instructor-student-collaborative" learning mode, as opposed to "instructor-driven" in CL or "student-driven" in SPL.
Empirically, we show that the advantage of SPCL on two tasks.
课程学习(CL)或自定进度学习(SPL)代表了最近提出的一种学习制度,其灵感来自人类和动物的学习过程,在训练中逐渐从简单到更复杂的样本进行。 这两种方法具有相似的概念学习范式,但具体的学习方案有所不同。 在 CL 中,课程是由先验知识预先确定的,并且此后保持固定。 因此,这种方法严重依赖先验知识的质量,而忽略了学习者的反馈。 在 SPL 中,课程是动态确定的,以适应学习者的学习节奏。 然而,SPL 无法处理先验知识,因此容易出现过度拟合。 在本文中,我们发现了 CL 和 SPL 之间缺失的联系,并提出了一个名为自定进度课程学习(SPCL)的统一框架。 SPCL 被表述为一个简洁的优化问题,它考虑了训练前已知的先验知识和训练期间的学习进度。 与人类教育相比,SPCL类似于"师生协作"的学习模式,而不是CL中的"教师驱动"或SPL中的"学生驱动"。 根据经验,我们展示了 SPCL 在两项任务上的优势。

Note:

  1. 课程学习依赖于课程先验,在许多场景中,课程先验一般都是缺失的。这种方法严重依赖于先验知识的质量,而忽略了学习者的反馈,相当于是老师主导。
  2. 自步学习中课程是动态确定的,以适应学习者节奏。其中,动态确定只是按照loss的高低当作是样本的难易,无法处理额外加入的知识先验。

2. 算法描述

2.1. 自步学习

min ⁡ w , v ∈ 0 , 1 n E ( w , v ; λ ) = ∑ i = 1 n v i L ( y i , f ( x i , w ) ) − λ ∥ v ∥ 1 (1) \min_{\mathbf{w}, \mathbf{v} \in0, 1^n}\mathbb{E}(\mathbf{w}, \mathbf{v};\lambda) = \sum_{i=1}^n{v_iL(y_i, f(x_i,\mathbf{w}))} - \lambda\|\mathbf{v}\|_1 \tag{1} w,v∈0,1nminE(w,v;λ)=i=1∑nviL(yi,f(xi,w))−λ∥v∥1(1)

等式1应该就是自步学习中最经典的形式了。其中,对于自步正则 − ∥ v ∥ 1 -\|\mathbf{v}\|_1 −∥v∥1是可以替换的,有很多的类型,这个是最经典的hard型(非0即1)。对于等式1的求解可以采用ACS (Alternative Convex Search)。

  1. 固定 w \mathbf{w} w,求解 v \mathbf{v} v。存在闭式解 v ∗ = v 1 ∗ , ... , v n ∗ \mathbf{v}^* = v_1\^\*, \\dots, v_n\^\* v∗=v1∗,...,vn∗,
    v i ∗ = { 1 , L ( y i , f ( x i , w ) ) < λ ; 0 , otherwise. v_i^* = \begin{cases} 1, & L(y_i, f(x_i, \mathbf{w})) < \lambda;\\ 0, &\text{otherwise.}\\ \end{cases} vi∗={1,0,L(yi,f(xi,w))<λ;otherwise.
  2. 固定 v \mathbf{v} v,用梯度下降法(也可以用其他优化方法)求解 w \mathbf{w} w。

存在的弊端:

However, since the learning is completely dominated by the training loss, the learning may be prone to overfitting. Moreover, it provides no way to incorporate prior guidance in learning. To the best of our knowledge, there has been no studies to incorporate prior knowledge into SPL, nor to analyze the relation between CL and SPL.

2.1. 自步课程学习

自步课程学习想要打造一种师生协同的学习范式,其中,同时考虑训练前已知的先验知识和训练期间学到的知识。

Self-paced Curriculum Learning:

3. 实验

复制代码
from scipy.optimize import minimize
import numpy as np

# samples
id = np.array(['a', 'b', 'c', 'd', 'e', 'f'])
myloss = np.array([0.1, 0.2, 0.4, 0.6, 0.5, 0.3]).reshape([-1, 1])
print("####### input loss ######")
print(myloss)

# 4) calculate curriculum constraints
# A = matrix(0, nrow=length(id), ncol=1)
# curriculum constraints matrix
A = np.zeros([len(id), 1])
A[:, 0] = np.array([0.1, 0.0, 0.4, 0.3, 0.5, 1.0])
# A[:, 0] = np.array([2.3, 2.2, 2.1, 2.0, 1.7, 1.5])
print("####### A matrix ######")
print("A: ", A)
c = 1.0
# c = 6.0

# 5) optimize v with modality constraint (A)
# v0 = replicate(length(id),0)
v0 = np.repeat(0, len(id))
print("v0: ", v0)
# a small constant for optmization accuracy
tolerance = 1e-7
print("tolerance: ", tolerance)

# tolerance = 0
# parameter in self-paced learning
lambda_var = 0.8333

# paramaters
u1 = -1 * A  # -Av >= -c	i.e.	Av <= c

# c1 = -1 * c - tolerance  # -Av >= -c	i.e.	Av <= c
c1 = c + tolerance

# 三个约束
# v 大于等于 0
# v 小于等于 1
# A^T \times V <= c
# inequality means that it is to be non-negative.
cons = ({'type': 'ineq', 'fun': lambda v: v @ u1 + c1})


# 定义目标函数
def objective_function(v):
    obj = v @ myloss - lambda_var * np.sum(v)
    return obj


# 定义目标函数的梯度
def objective_gradient(v):
    grads = myloss - lambda_var
    return grads


# 设置bounds
# bounds = tuple([(-tolerance, 1 + tolerance) for i in range(len(v0))])
bounds = tuple([(0, 1) for i in range(len(v0))])
# x0 = np.zeros([len(id)])
# res_SLSQP = minimize(objective_function, v0, method='SLSQP', jac=objective_gradient, constraints=cons, bounds=bounds)


# res = minimize(objective_function, v0, method='SLSQP', constraints=cons, bounds=bounds)
print("###res_SLSQP###")
res_SLSQP = minimize(objective_function, v0, method='SLSQP', jac=objective_gradient, constraints=cons, bounds=bounds,
                     options={"maxiter": 100, "disp": True})
print('最小值:', res_SLSQP.fun)
print('最优解:', res_SLSQP.x)
print('迭代终止是否成功:', res_SLSQP.success)
print('迭代终止原因:', res_SLSQP.message)
print("最终解是否满足先验课程知识: ", res_SLSQP.x @ u1 + c1 >= 0)

print("###COBYLA###")
res_COBYLA = minimize(objective_function, v0, method='COBYLA', jac=objective_gradient, constraints=cons, bounds=bounds,
                      options={"maxiter": 100, "disp": True})
print('最小值:', res_COBYLA.fun)
print('最优解:', res_COBYLA.x)
print('迭代终止是否成功:', res_COBYLA.success)
print('迭代终止原因:', res_COBYLA.message)
print("最终解是否满足先验课程知识: ", res_COBYLA.x @ u1 + c1 >= 0)

# v_2 = np.array([1, 1, 1, 0.88, 0.47, 0])
v_2 = np.array([1, 0.91, 0.10, 0.00, 0.00, 1.00])
print('论文最优解:', v_2)
print("论文最小值:", objective_function(v_2))
print("论文最终解是否满足先验课程知识: ", v_2 @ u1 + c1 >= 0)
相关推荐
STLearner16 小时前
ICML 2026 | 时间序列(Time Series)论文总结【基础模型,生成,分类,异常检测,插补,表示学习和分析等】
论文阅读·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
lally.1 天前
Last-Vit论文阅读
论文阅读
cqbzcsq18 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
凌晨一点的秃头猪18 天前
论文阅读 GTI(Graph-based Tree Index): 面向高维空间最近邻搜索的动态图-树混合索引结构
论文阅读
有Li18 天前
PTCMIL:基于提示 token 聚类的全切片图像多实例学习分析文献速递/多模态医学影像最新进展
论文阅读·学习·数据挖掘·聚类·文献·医学生
大模型最新论文速读18 天前
06-16 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
墨绿色的摆渡人19 天前
论文笔记(一百三十七)Learning Dual-Arm Push and Grasp Synergy in Dense Clutter
arm开发·论文阅读
Chunyyyen19 天前
【第四十九周】论文阅读
论文阅读
Biomamba生信基地19 天前
NC | 单细胞分析揭示头颈部癌早期转移过程中潜在的免疫逃逸机制(R语言版本)
论文阅读·生物信息学·单细胞rna测序
大模型最新论文速读19 天前
06-15 · LLM 最新论文速览
论文阅读·人工智能·深度学习·自然语言处理