深度网络自适应DCC算法

本文介绍了DCC算法,一种为解决深度网络迁移学习中数据分布差异问题的方法。通过融合微调和MMD,DCC优化源数据与目标数据的特征分布,适用于AlexNet等模型。关键在于最后一层前的MMD损失,有助于改善分类性能。
摘要由CSDN通过智能技术生成

目录

前言

  • DCC算法是用来解决深度网络自适应问题的算法,属于迁移学习与深度学习结合的产物。
  • 从最开始的时候,通过微调(finetune)可以实现一定程度的深度自适应,但是它有一个致命缺点就是无法处理源数据(source)和目标数据(target)分布不一样的情况,然而在现实生活中这种情况的出现是十分频繁的,也就是说,要想进一步拓展迁移学习与深度学习的结合,必须克服这个问题。
  • 有人在2014年提出了DaNN,它作为一个引子,后面人们在此基础上进行了很多改进,DCC是继承其思想的一种方法。
    在这里插入图片描述

正文

  • 本文主要介绍DCC的算法思路,有需要代码介绍的可以参考这篇博文,非常详细:https://blog.csdn.net/weixin_40585997/article/details/110939689,建议看一下,我也是看完代码之后才更加加深了对于DCC的理解。
  • 好,言归正传,下面是DCC的产生背景
    在这里插入图片描述
  • 接着是DCC算法的示意图
    在这里插入图片描述
    意思就是说,拿到源数据(Labeled Images)和目标数据(Unlabeled Images)后,首先它们执行同样的操作,即依次通过前七层神经网络,然后呢,把得到的特征向量执行一个操作,就是求此时两类数据的数据分布差异,通常用MMD来衡量这个差异,并将其加入到最后的Loss中用于优化这个差异,所以说最后的Loss其实是由两部分组成的,一个是源数据经过训练后进行分类的交叉熵损失,还有一部分就是这里MMD求的差异,即:
    在这里插入图片描述
    其实DDC没有作什么特别神奇的事情,它只不过在最接近输出的前一层多计算了一个损失,用于优化源数据和目标数据的数据分布差异,试图克服前面提到的目标数据和源数据由于数据分布差异导致的无法使用finetune的问题。
  • 那为何要在最后一层的前一层加入这个损失呢,为何不能在更前面计算?因为作者使用的是AlexNet网络作为模型,经过试验之后发现在最后一层的前一层加入得到的效果最好。其实这是符合我们认知的,在倒数第二层得到的是最终的特征,前几层都是对于特征的处理,我们当然是要在你处理完特征之后,对于得到的特征进行求损失才最好,这样优化的时候优化的参数就是前七层对于特征的处理过程中的参数,优化它们才能期望得到更小的损失,从而使得目标数据通过前七层后得到的特征和真正的源数据通过前七层后得到的特征的差异更小,不就相当于使源数据和目标数据的数据分布尽可能相同了嘛,然后后面的分类器根据特征分布更新参数,仅可能正确分类,从而降低分类的交叉熵损失。
  • DCC算法貌似并没有那么复杂,更像是一种思想,后面很多算法都是根据这种思想来进行优化的。
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CtrlZ1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值