《深度学习500问》正式出版!GitHub星标数超4.2万的火爆之作 | 赠书( 五 )
3.10.2常见正则化方法133
3.10.3图解L1和L2正则化134
3.10.4Dropout具体工作流程135
3.10.5为什么Dropout可以解决过拟合问题137
3.10.6Dropout的缺点
......
4书摘
以下内容摘选本书第10.6.3节“深度网络自适应”
▊基本思路
深度网络的微调可以帮助我们节省训练时间 , 提高学习精度 。 但是微调有它的先天不足:它无法处理训练数据 , 无法测试不同数据的分布情况 。 因为微调的基本假设也是训练数据和测试数据服从相同的数据分布 。 这在迁移学习中是不成立的 。 因此 , 我们需要更进一步 , 针对深度网络开发出更好的方法使之更好地完成迁移学习任务 。
以前面介绍过的数据分布自适应方法为参考 , 许多深度学习方法都设计了自适应层(AdaptationLayer)来完成源域和目标域数据的自适应 。 自适应能够使源域和目标域的数据分布更加接近 , 从而使网络的精度、稳定性更好 。
从上述分析可以得出 , 深度网络的自适应主要完成两部分工作 。
(1)决定哪些层可以自适应 , 这决定了网络的学习程度 。
(2)决定采用什么样的自适应方法(度量准则) , 这决定了网络的泛化能力 。
早期的研究者在2014年环太平洋人工智能大会(PacificRimInternationalConferenceonArtificialIntelligence , PRICAI)上提出了名为DANN(DomainAdaptiveNeuralNetworks)的神经网络[Ghifaryetal. , 2014] 。 DANN的结构异常简单 , 它只由两层神经元——特征层神经元和分类器层神经元组成 。 作者的创新之处在于 , 在特征层后加入MMD适配层 , 用来计算源域和目标域的距离 , 并将其加入网络的损失中进行训练 。 但是 , 由于网络太浅 , 表征能力有限 , 故无法很有效地解决领域自适应问题 。 因此 , 后续的研究者大多都基于其思想进行改进 , 如将浅层网络改为更深层的AlexNet、ResNet、VGG等 , 将MMD换为多核MMD等 。
下面将介绍几种常见的深度网络自适应方法 。
▊基本方法
(1)DDC方法
加州大学伯克利分校的Tzeng等人首先提出了DDC(DeepDomainConfusion)方法来解决深度网络的自适应问题[Tzengetal. , 2014] 。 DDC方法遵循了上面讨论过的基本思路 , 采用了在ImageNet数据集上训练好的AlexNet网络进行自适应学习[Krizhevskyetal. , 2012] 。
下图是DDC方法示意图 。
文章图片
DDC方法固定了AlexNet的前7层 , 在第8层(分类器前一层)上加入了自适应的度量 。 自适应度量方法采用了被广泛使用的MMD准则 。
为什么选择倒数第2层?DDC方法的作者在文章中提到 , 他们经过多次实验 , 在不同的层进行了尝试 , 最终发现在分类器前一层加入自适应可以达到最好的效果 。 这与我们的认知也是相符合的 。 通常来说 , 分类器前一层即特征 , 在特征上加入自适应 , 也正是迁移学习要完成的工作 。
(2)DAN方法
清华大学的龙明盛等人于2015年发表在ICML(InternationConferenceonMachineLearning)上的DAN(DeepAdaptationNetworks)方法对DDC方法进行了几个方面的扩展[Longetal. , 2015a] 。 首先 , 有别于DDC方法只加入一个自适应层 , DAN方法同时加入了3个自适应层(分类器前3层) 。 其次 , DAN方法采用表征能力更好的多核MMD(MK-MMD)度量来代替DDC方法中的单核MMD[Grettonetal. , 2012] 。 最后 , DAN方法将多核MMD的参数学习融入深度网络的训练中 , 并且未额外增加网络的训练时间 。 DAN方法在多个任务上都取得了比DDC方法更好的分类效果 。
为什么适配3层?原来的DDC方法只适配了1层 , 现在DAN方法基于AlexNet网络 , 适配最后3层(第6、7、8层) 。 因为Jason在文献[Yosinskietal. , 2014]中已经提出 , 网络的迁移能力从这3层开始就会有特定的任务倾向 , 所以要着重适配这3层 。 至于别的网络(如GoogLeNet、VGG等)是不是适配这3层就需要通过自己的实验来验证 , 要注意的是DAN方法只关注AlexNet 。 DAN方法示意图如下 。
(3)同时迁移领域和任务的方法
DDC方法的作者Tzeng在2015年扩展了DDC方法 , 提出了领域和任务同时迁移的方法[Tzengetal. , 2015] 。 他提出网络要进行两部分迁移 。
一是域迁移(DomainTransfer) , 尤其指适配边缘分布 , 但没有考虑类别信息 。 域迁移就是在传统深度网络的损失函数上 , 再加一个混淆损失(ConfusionLoss)函数 , 两个损失函数一起计算 。
二是任务迁移(TaskTransfer) , 就是利用类别之间的相似度进行不同任务间的学习 。 举个类别之间相似度的例子:杯子与瓶子更相似 , 而它们与键盘不相似 。
- 背后|《风声》背后那鲜为人知的历史故事!
- 《山河令》温客行最后死了吗?温客行什么身世?
- 如果岁月可回头:白志勇渣男属性显露,景雅是高级绿茶,小美最惨
- 韩国版《神雕侠侣》上线?39岁的她演“小龙女”,定妆照火了!
- 《我就是演员3》章子怡三次包揽冠军导师,蒋欣前男友成最大黑马
- 《原神》x 肯德基新活动公布:买套餐送游戏内礼包和装扮
- 《浪姐2》:23位姐姐共同演绎国风大片,太美了
- 《你是我的城池营垒》白敬亭首演硬汉特警,为了角色练就八块腹肌
- 《长歌行》下月播出!迪丽热巴、吴磊、赵露思将录制“快乐大本营”?
- 《创4》李嘉祥指责赞多 韩佩泉明涵邵明明 网友:这能播吗?