机器学习:self-paced 和 fine-tuning

文章转载自:
原文链接:https://blog.csdn.net/weixin_42137700/article/details/82107208
原文链接:https://blog.csdn.net/bear_kai/article/details/77771127

fine-tuning

    在实践中,由于数据集不够大,很少有人从头开始训练网络。常见的做法是使用预训练的网络(例如在ImageNet上训练的分类1000类的网络)来重新fine-tuning(也叫微调),或者当做特征提取器。

以下是常见的两类迁移学习场景:

1 卷积网络当做特征提取器。使用在ImageNet上预训练的网络,去掉最后的全连接层,剩余部分当做特征提取器(例如AlexNet在最后分类器前,是4096维的特征向量)。这样提取的特征叫做CNN codes。得到这样的特征后,可以使用线性分类器(Liner SVM、Softmax等)来分类图像。

2 Fine-tuning卷积网络。替换掉网络的输入层(数据),使用新的数据继续训练。Fine-tune时可以选择fine-tune全部层或部分层。通常,前面的层提取的是图像的通用特征(generic features)(例如边缘检测,色彩检测),这些特征对许多任务都有用。后面的层提取的是与特定类别有关的特征,因此fine-tune时常常只需要Fine-tuning后面的层。

1、预训练模型

在ImageNet上训练一个网络,即使使用多GPU也要花费很长时间。因此人们通常共享他们预训练好的网络,这样有利于其他人再去使用。例如,Caffe有预训练好的网络地址Model Zoo。

2、何时以及如何Fine-tune

    决定如何使用迁移学习的因素有很多,这是最重要的只有两个:新数据集的大小、以及新数据和原数据集的相似程度。有一点一定记住:网络前几层学到的是通用特征,后面几层学到的是与类别相关的特征。这里有使用的四个场景:

1、新数据集比较小且和原数据集相似。因为新数据集比较小,如果fine-tune可能会过拟合;又因为新旧数据集类似,我们期望他们高层特征类似,可以使用预训练网络当做特征提取器,用提取的特征训练线性分类器。

2、新数据集大且和原数据集相似。因为新数据集足够大,可以fine-tune整个网络。

3、新数据集小且和原数据集不相似。新数据集小,最好不要fine-tune,和原数据集不类似,最好也不使用高层特征。这时可是使用前面层的特征来训练SVM分类器。

4、新数据集大且和原数据集不相似。因为新数据集足够大,可以重新训练。但是实践中fine-tune预训练模型还是有益的。新数据集足够大,可以fine-tine整个网络。

3、实践建议

    预训练模型的限制。使用预训练模型,受限于其网络架构。例如,你不能随意从预训练模型取出卷积层。但是因为参数共享,可以输入任意大小图像;卷积层和池化层对输入数据大小没有要求(只要步长stride fit),其输出大小和属于大小相关;全连接层对输入大小没有要求,输出大小固定。

    学习率。与重新训练相比,fine-tune要使用更小的学习率。因为训练好的网络模型权重已经平滑,我们不希望太快扭曲(distort)它们(尤其是当随机初始化线性分类器来分类预训练模型提取的特征时)。

自步学习-Self-paced Learning

1. 自步学习

现有机器学习方法都需要解决非凸优化问题,例如学习感知机或深度置信网,传统的优化方法在避免非凸优化问题陷入较差局部解时,往往采用多次随机初始化方式训练模型,然后选择其中效果最好的初始化结果构建模型。然而这种方法过于adhoc,而且计算代价过高。课程学习和自步学习最开始就是作为解决非凸优化问题而提出的。Bengio教授在2009年ICML上提出课程学习,而自步学习则是在课程学习的基础上,由Koller教授团队在2010年NIPS上将该思想建立为具有理论基础的数学表达形式。课程学习和自步学习的核心思想是通过模拟人的认知机理,首先学习简单的、普适性的知识结构,然后逐渐增加难度,过渡到学习更复杂、更专业化的知识。
在这里插入图片描述
    课程学习是对于特定问题而言,根据先验知识或启示赋予样本不同的学习特性或学习先后顺序。例如:大学课程中一般会设定先学习线性代数,然后再学习高等数学,这其中是根据先验知识对知识学习顺序的指定(instructor driven);在自然语言处理中,如果我们人为指定数据输入顺序按照短句——长句、简单句——复杂句的方式也可视为是利用课程学习训练模型的一种体现。相对于课程学习,自步学习则是对于已学习获得的模型而言,赋予样本不同的学习难易程度(easiness or confidance)。例如:我们完成9年义务教育准备高考复习时,会做一本习题书《5年高考-3年模拟》。假设,我们做第一遍试题时仅会做简单的加减乘除,复杂的微积分都做错。随着不断的重复做模拟试题以及比对正确答案,我们可以逐渐答对复杂的高等数学问题。这个过程可以认为是自学习过程(student-driven),而线性代数在该过程被认为是简单样本,相对地,高等数学则被认为是复杂样本,每次刷题的过程对应为已学习获得的模型。
    在机器学习研究中,我们自然也可以将学习对象(数据、特征、概念等)按其对学习目标的难易程度,从易到难开展学习,以这种方式让机器完成复杂的学习与推理任务。自步学习研究的关键是假设样本的选择并不是随机的,或是在一次迭代中全部纳入训练过程中,而是通过一种由简到难的有意义的方式进行选择的。自步学习中从简单到复杂的样本选择过程是指,简单样本可以理解为具有较小的损失(smaller loss)或较大似然函数值(likelihood)的样本,复杂的样本具有较大损失(larger loss)的样本。

2、自步学习和其他方法区别

    机器学习方法中也存在相关方法用于选择样本,例如:主动学习(active learning)和协同训练(co-training)。自步学习与二者的区别在于自步学习中所有样本的标签是完全存在的,在每次迭代过程中,我们可以通过计算预测值和标签的差别来选择置信度高的样本。而主动学习和协同训练往往应用于半监督学习框架,其中主动学习倾向于选择当前模型下确定性或置信度低的样本,而协同训练则是从无标签数据中选择分类器认为置信度可能高的样本,选择的样本并没有标签,无法断定估计结果是否准确。相比之下,自步学习则是选择预测值与真实值接近的、即分类器可以分辨的置信度真的高的样本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值