这篇文章旨在介绍自步学习的基本概念及最基础的算法原理。

我们先看自步学习的定义,在了解自步学习之前,有必要看一看什么是课程学习:

-2009年Bengio教授在ICML上提出课程学习。

-课程学习是通过模拟人的认知机理,首先学习简单的、普适性的知识结构,然后逐渐增加难度,过渡到学习更复杂、更专业化的知识。

而自步学习在课程学习上进行了改进:

-Koller教授在2010年NIPS上给出了自步学习的数学表达。

两者的最主要区别是:

-课程学习:根据先验知识赋予样本学习先后顺序。

如同在学习数学课程时,根据课本封面的信息(先验知识)从小学低年级到高年级进行学习。

-自步学习:学习算法在每一步迭代中决定下一步学习样本。

举同样的例子来说,就像是把所有的数学课课本同时给了右边的小朋友,而小朋友会根据课本内容的难易程度判断(和实际情况不一定相同)来一本一本的学习。(先学一本他认为最简单的,再学一本他认为次简单的...

算法原理:

首先需要明确的是,在下面的讨论中,我们认为:

–简单样本可以理解为具有较小损失(smaller loss)的样本。
–复杂样本可以理解为具有较大损失(larger loss)的样本。

贴两张自己画的比较丑的原理流程图来说明:

在线性回归问题中,蓝色的圆圈代表在本次迭代中未被选择的样本点;红色圆圈代表在本次迭代中被选择的样本点;红色直线代表每次调整后的模型。

回忆自步学习的概念:样本的选择在自步学习中并不是随机的,或是在一次迭代中全部纳入训练过程中,而是通过一种由简到难的有意义的方式进行选择的。

那么,选择简单的样本,也就是选择损失小的样本,也就是在线性回归问题中,和模型间距离近的样本。

上图显示了选择样本——>调整模型的过程。

而在调整完模型之后,再次选择损失相对较小的样本,然后调整模型,不断进行这样的迭代。如下图所示:

在橘色框里可以看出,最后仍有和模型直线相距甚远损失非常大的样本(我们认为很有可能是噪声点或异常值)没有进入任何一次迭代中,这就很robust(算法特点)了。

公式推导:

首先我们来看传统的机器学习方法:

这里argmin的意思是:求使得括号内值最小的w值。

那么自步学习呢?

之前也说过了,自步学习在每次迭代过程中倾向于从所有样本中选择具有很小的训练误差的样本,然后更新模型参数。

所以,在每次迭代过程中,并不是所有的样本都能够被选择(想一想蓝色和红色的圆圈)。

因此,自步学习在传统机器学习目标函数中引入二分变量vi(1/0),用于表征每个样本是否被选择(若未被选择,则vi=0,就可以不在求和公式中考虑此样本),其目标函数可以改为:

那么,看到这个公式,我们可以很明显的发现问题,这个公式的目的是找到能使得求和项最小的w和vi,什么时候求和项最小呢?损失值是不为负数的,故所有的vi都为0时,求和项最小。但这也相当于没有选择任何的样本,肯定是不对的。

为了解决这个问题,更新了模型:

这个公式的意思就很明显了,当f>1的时候,f-1>0,vi取0则求和项较小。

当f<=1,f-1<=0,vi取1则求和项较小。这样,就可以解决vi取值的问题了,用线性回归的图来描述的话:

选取了在两条橘色线内的红色圆圈(和模型相比损失较小的样本)。此外,红线代表模型,即公式中的f。模型y=ax+b的a和b即为公式中的待优化参数w。

那么这时的问题就是模型无法调节,每次都选择f<=1的样本。所以这时候非常自然的调整一下两条橘色线的间隔,让算法更灵活自然:引入系数K,随着迭代次数的增加,我们逐渐减小K的值,当K值趋近于0时,越来越多的样本被选择。

现在两条橘色线的间隔就是2/K啦,这也就是最终的推导公式。

最后贴一下原始论文给的伪代码:

其中, λ=1/k 且满足:

自步学习(Self-paced Learning)相关推荐

  1. 【学习排序】 Learning to Rank中Pointwise关于PRank算法源码实现

    最近终于忙完了Learning to Rank的作业,同时也学到了很多东西.我准备写几篇相关的文章简单讲述自己对它的理解和认识.第一篇准备讲述的就是Learning to Rank中Pointwise ...

  2. 【深度学习(deep learning)】花书第10章 序列建模:循环和递归网络 读书笔记

    [深度学习(deep learning)]花书第10章 序列建模:循环和递归网络 读书笔记 第10章 序列建模:循环和递归网络 [深度学习(deep learning)]花书第10章 序列建模:循环和 ...

  3. 强化学习-把元学习(Meta Learning)一点一点讲给你听

    目录 0 Write on the front 1 What is meta learning? 2 Meta Learning 2.1 Define a set of learning algori ...

  4. 网络表示学习Network Representation Learning/Embedding

    网络表示学习Network Representation Learning/Embedding 网络表示学习相关资料 网络表示学习(network representation learning,NR ...

  5. 深度学习(Deep Learning)从零基础达到入门级水平

    本文标签:   机器学习 TensorFlow Google机器智能 人工智能 无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序 ...

  6. 学习笔记|强化学习(Reinforcement Learning, RL)——让AlphaGo进化得比人类更强

    文章目录 1. 题外话:人类棋手的最后赞礼 2. 强化学习概述 2.1 强化学习的目标也是要找一个Function 2.2 强化学习的三个基本步骤 2.2.1 定义一个function 2.2.2 定 ...

  7. 浅聊对比学习(Contrastive Learning)

    作者丨parasol@知乎 (已授权) 来源丨https://zhuanlan.zhihu.com/p/521614413 编辑丨极市平台 导读 本文通过解读对比学习的经典论文和综述,介绍对比学习的概 ...

  8. 【深度学习(deep learning)】花书第12章 应用 读书笔记

    [深度学习(deep learning)]花书第12章 应用 读书笔记 第12章 应用 [深度学习(deep learning)]花书第12章 应用 读书笔记 前言 一.大规模深度学习 1.快速的CP ...

  9. 一步一步学习iOS 摘记

    本文参考<一步一步学习iOS6编程>书籍, 下载链接: http://download.csdn.net/detail/u012605629/8788505 第一部分:Hello Worl ...

  10. 强化学习(Reinforcement learning)综述

    文章目录 Reinforcement learning 综述 强化学习的分类 环境(Model-free,Model-based) Based(Policy-Based RL & Value- ...

最新文章

  1. 基于SSVEP-EOG的混合BCI用于机械臂控制
  2. Ucloud 文件上传
  3. linux的crontab监控,通过crontab自动监测与管理表空间
  4. VS Code 连接远程服务器运行 Jupyter Notebook
  5. python人脸照片分类_Python OpenCV 人脸识别(一)
  6. P3345-[ZJOI2015]幻想乡战略游戏【点分树,RMQ】
  7. Apollo进阶课程㊴丨Apollo安装过程概述
  8. java 静态类的实现_[Java教程]Javascript 静态类的实现
  9. C语言基础教程之头文件
  10. cent os7 安装nginx1.16.1
  11. 微服务设计 10 大反模式和陷阱!
  12. 游戏服务器之生成Dump文件
  13. 【已解决】 c8812在eclipse上调试打不出log来?求帮助如何解决?!!!
  14. 加密算法实现数据通讯
  15. 拉普拉斯变换学习笔记
  16. 酷狗显示服务器失败怎么回事,酷狗音乐上传音乐失败怎么回事
  17. 情景分析是什么?我们该如何去理解这个概念?
  18. linux r的数据是存在,R语言通过loess去除某个变量对数据的影响
  19. PCF8591详解(蓝桥杯单片机模块(IIC总线))
  20. 谈谈区块链入门技能(二):以太坊区块链浏览器如何使用?

热门文章

  1. HDU4622- Reincarnation(后缀自动机)
  2. Egret 使用自定义皮肤
  3. eNSP和HCL兼容共存问题
  4. 如何利用Swagger生成统一格式的Responses
  5. MySQL 之 The definition of table 'p' prevents operation UPDATE on table 'post'.
  6. Xbox360自制系统GOD包安装教程
  7. 计算机网络本地连接,电脑本地连接受限制或无连接怎么办
  8. net core 微服务 快速开发框架 Viper 初体验
  9. rtl8201以太网卡调试
  10. 网络服务(5)——usb网卡名称修改(RK3399 Ubuntu)