袁文翠, 孔雪
(东北石油大学 计算机与信息技术学院, 大庆 163318)
近年来,学术界与工业界越来越擅长训练深度神经网络,由于深层的网络结构使其能从大量有标签的数据中学习到非常准确的输入到输出的映射,无论它们是图像、语句还是标签预测。但是很多情况下带有标签的数据是极难获取的,根据Awesome-Most Cited Deep Learning Papers所公布的深度学习领域最主要的论文统计,超过50%的论文使用了某种形式的迁移学习或预训练。对于资源有限的场景,迁移学习技术的重要性与日俱增。
吴恩达在去年的 NIPS 2016 讲座上提出:“在监督学习之后,迁移学习将引领下一波机器学习技术商业化浪潮。”
迁移学习(transfer Learning)[1]的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。当没有足够的标记数据去训练模型或想训练一个模型去执行一个新的任务时,可以利用迁移学习[2],它能够利用已经存在的相关任务或域中带有标记的数据去处理这些情况。尝试在源域(source domain)中解决源任务(source task)所获得的知识,并将其应用于另外的任务。相比于传统的方法训练模型更加具有广泛的应用价值。传统机器学习[3]与迁移学习的对比图,如图1、图2所示。
图1 传统机器学习训练模型
图2 迁移学习训练模型
在图1中,无论是什么任务,每一次都需要构建一个模型进行学习,但是图2中,通过在源任务中所学习到的w(权重),b(偏向)可以直接迁移到新任务中,不但可以避免过拟合的现象,而且可以节省很多的训练时间。
迁移学习有不同的应用场景,如:有监督到有监督(Fine-tuning 和多任务学习)、有监督到无监督(域对抗学习,零样本学习)、无监督到无监督、无监督到有监督,如图3所示。
图3 迁移学习种类
Fine-tune应用在有监督到有监督的场景中,它的基本思想是将源任务中学习到的知识运用到自己的数据集上,并在自己的数据集上进行参数的调优。若不对源任务中参数的变化进行限制,则很容易在小量调优的数据上发生过拟合的现象。由此产生了两种训练方式:保守训练和层迁移。
2.2.1 保守训练
保守训练会在目标函数上添加类似于L1,L2的正则化向,假设以二次代价函数作为源任务的目标函数,则保守训练中改进的目标函数为:
其中w为源任务中原本的参数值,wi为经过调优后的参数值,在模型学习过程中目的就是最小化目标函数,若参数在调优过程中变化太大,则会受到惩罚。
2.2.2 层迁移
层迁移的基本原理是选择其中一部分参数参与调优,其余部分不变(设置学习率为零),如图4所示。
图4 层迁移
图4中,复用了3层的训练参数,只对一层的参数进行训练,这样就可以很好的避免因参数多数据量小而造成的过拟合现象。
2.2.3 多任务学习(Multitask Learning)
多任务学习[4-5]Fine-tune最大的区别在于,多任务学习需要在满足新任务的同时源任务的准确率不能有太大变化,需同时保证两种任务在一种参数组合下都可以表现出极强的准确性。
域对抗学习[6-7]应用在有监督到无监督的场景下,它由一个特征提取器(Feature extractor)和一个分类器(classifier)所组成,通过对抗学习[8-9]的方式进行训练。分类器与特征提取器相互对抗,直到分类器无法对两类数据进行判别。如图5所示。
图5 域对抗
本章将对上述提到的Fine-tune到域对抗学习进行试验验证。
本实验运用inception-V3作为源任务,训练自己的小数据集(汽车,猫,狗,飞机,沙滩图片各200张运用层迁移的方式训练)。实验结果如下:
images/car.jpg:(car images)
sports car, sport car (score=0.935 07)
convertible (score=0.011 13)
racer, race car, racing car (score=0.008 68)
chain saw, chainsaw (score=0.002 98)
car wheel (score=0.002 76)
images/cat.jpg(cat images)
Egyptian cat (score=0.553 36)
tabby, tabby cat (score=0.257 01)
tiger cat (score=0.082 83)
lynx, catamount (score=0.056 83)
hyena, hyaena (score=0.002 75)
images/dog.jpg(dog images)
Labrador retriever (score=0.951 45)
golden retriever (score=0.020 65)
tennis ball (score=0.003 99)
beagle (score=0.000 93)
saluki, gazelle hound (score=0.000 70)
images/plane.jpg(plane images)
warplane, military plane (score=0.811 14)
wing (score=0.062 60)
aircraft carrier, carrier, flattop, attack eircraft
projectile, missile (score=0.011 36)
missile (score=0.009 72)
images/seaside.jpg(seaside images)
seashore, coast, seacoast, sea-coast (score=0.855 02)
sandbar, sand bar (score=0.087 91)
lakeside, lakeshore (score=0.025 46)
sarong (score=0.007 45)
coral reef (score=0.003 54)
由实验结果可以看出,通过运用层迁移的方法对inception-V3模型进行迁移,最终在小数据集上都得到正确的识别结果。相比于传统的训练方法有效的避免了过拟合的现象,并且训练时间也大大降低。
本次实验用带有标记的MNIST数据集作为源任务,无标签的MNIST-M为目标任务,在此实验中运用域对抗的方式进行训练,实验结果如图6所示。
Source data(MNIST):
Target data(MNIST-M):
图6 实验结果
域对抗希望分类器无法分别源数据和目标数据,从而目标数据就可以当做源数据进行迁移学习。
未进行域对抗学习结果如下:
Source only training
Source (MNIST) accuracy: 0.986 7
Target (MNIST-M) accuracy: 0.480 1
进行域对抗学习后结果如下:
Domain adaptation training
Source (MNIST) accuracy: 0.978 1
Target (MNIST-M) accuracy: 0.718 9
Domain accuracy: 0.665
从上面两个实验结果可以看出在进行域对抗学习后模型的准确率有明显的提升。可视化结果如图7所示。
图7 未进行域对抗学习
进行域对抗学习,如图8所示。
可以看出在没有进行域对抗学习时模型把两个数据集分到了两个区域,说明分类器可以很好的识别出两种数据集,在运用域对抗学习后,分类器已经无法辨认出两个数据集。从而可以成功的进行迁移学习。
图8 进行域对抗学习
虽然现在处于大数据时代,每天互联网上会出现海量的数据,但在新领域中要找到带标签的数据去训练模型是极其困难的,运用迁移学习我们便可以很容易的训练属于我们的小数据集,这对于某些资源缺乏(数据)的企业来说具有非常大的参考意义和利用价值。