AI面试题:什么是fine-tuning?

开课吧开课吧锤锤2021-02-25 18:12

点赞
有用
分享分享

    常人对于人工智能的理解,第一想法就是电影中的终结者之类的机器人,其实我们生活中的人工智能还没有那么高级,比如手机上的地图软件导航、声音识别、商品推荐、好友推荐、垃圾邮件过滤器这些简单的弱人工智能。在人工智能行业,包含了汽车、手机等众多业务。

    每天一份人工智能面试题,帮助自己的技术提升。今天的问题是什么是fine-tuning?

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

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

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

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

    预训练模型

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

    何时以及如何Fine-tune

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

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

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

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

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

    实践建议

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

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

    更多参考

    1、CNNFeaturesoff-the-shelf:anAstoundingBaselineforRecognition基于ImageNet预训练模型提取特征训练SVM分类器,陈述了几个最优结果。

    2、DeCAF2013年报告了类似发现。这篇论文使用的框架接口为Python,实现是caffe的c++。

    3、Howtransferablearefeaturesindeepneuralnetworks?详细介绍了迁移学习,包括一些大学发现的layerco-adaptations。

    以上就是本次人工智能题的解析,想要快速学会人工面试面试的所有资料吗?那就赶紧点击下方图片免费领取。

AI

    一份资料,带你领略所有大厂的面试题,大厂的大门为您敞开,高薪,好待遇不在是梦。

有用
分享