[深度学习论文笔记][ICLRW 17] Learning What Data to Learn

来源:互联网 发布:mac重复文件清理器 编辑:程序博客网 时间:2024/04/30 06:54

[ICLRW 17] Learning What Data to Learn

Yang Fan, Fei Tian, Tao Qin, Jiang Bian, Tie-Yan Liu

from MSRA and USTC

paper link

Intuition:

这篇文章属于使用Bootstrap提升模型训练性能、加快模型训练速度的研究范畴。相类似的比较出名的工作有Curriculum Learning (ICML 09), self-peaced learning (NIPS 10)和最近的OHEM (CVPR 16)。这篇文章的大致思路是:设计一个训练数据的过滤器(Neural Data Filter, NDF)插入到网络输出层之前,在训练的过程中动态筛除一部分对训练益处不大的数据,从而减少训练数据量。NDF是基于增强学习的模型。

这篇文章以模型使用SGD优化为背景。即这篇文章讨论的NDF设计是针对SGD的。

Neural Data Filter:

1. 对NDF的描述

NDF是一个增强学习模型。NDF的基本工作流程是:给定当前训练中的网络的状态和当前mini-batch数据的状态s,输出一组动作a
a是一个0,1向量,它的维度和mini-batch的大小相同,每个元素代表了mini-batch中对应的数据是否应该被剔除。
具体对s来说,它总共有三个大部分:数据特征、当前模型特征、数据与模型关联特征。这些特征是通过人工定义(包括参考相关工作)得到的。详细来说,数据特征包括当前数据的label值、句子与语料特征(对文本模型)、图像梯度直方图(对图像模型)。模型特征包括当前迭代次数、历史平均训练loss和验证集精度。数据与模型关联特征则包括当前数据的loss、当前数据的预测概率向量以及当前预测概率中的margin(正确类的概率与置信度次高的错误类概率的差距)。这些特征通过可学习函数整合在一起,记作f(s)

2. 如何训练得到NDF,如何使用NDF

总体的训练步骤如下图所示:

image

简单来说,思路是使用一部分少量数据来训练模型,作为NDF的陪练。通过这一步骤得到可以使用的NDF,之后就可以把它运用到正常训练模型的过程中了。

下面详细描述下训练NDF本身的细节。可以将训练NDF视作训练参数为Θ的二分类模型,模型的预测概率可写作:
Pθ(a|s)=aσ(θf(s)+b)+(1a)(1σ(θf(s)+b))
其中σ(.)是Sigmoid函数,b是偏置, Θ={θ,b}

训练过程中使用到了人为设计的反馈,记作sa的一个函数R(a,s)。这篇文章使用了网络在一个held-out验证集上的预测精度作为反馈vt,是一个将不同迭代t时得到的反馈rt相融合起来的变量: vt=rt+γrt+1+...+γTtrT

将优化目标写出,有:

J(Θ)=EPΘ(a|s)[R(a,s)]

通过使用一种Monte-Carlo policy gradient algorithm可以将参数Θ的梯度写出:

Θ=Tt=1EPΘ(a1:T|s)[ΘlogP(at|st)R(at,st)]=Tt=1ΘlogP(at|st)vt

这样就可以优化NDF了。详细的算法描述如下图所示:
image

Experiments:

这篇文章进行了三组对比试验,对应于不同的训练模型和数据库(MLP+MNIST, CNN+Cifar10, RNN+IMDB)。对比的数据选择模型选取了self-paced larning、无选择的SGD和随机筛除数据的SGD。这里仅展示MLP+MNIST的实验结果,其它实验结果可详细文章。可以看到NDF可以加速模型收敛速度并提高训练模型的质量。
image

0 0
原创粉丝点击