论文地址: https://arxiv.org/abs/1706.00384

论文简介

该论文探讨了一种与模型蒸馏(model distillation)相关却不同的模型---即相互学习(mutual learning)。 蒸馏从一个强大的大型预训练教师网络开始,并向未经训练的小型学生网络进行单向知识转移。 相反,在相互学习中,我们从一群未经训练的学生网络开始,他们同时学习一起解决任务。 具体来说,每个学生网络都有两个的损失函数:一种传统的监督性损失函数,以及一种模仿性的损失函数(mimicry loss),使每个学生的后验概率分布与其他学生的类别概率保持一致。

通过这种方式进行训练,结果表明,在这种基于同伴教学(peer-teaching)的情景中,每个学生的学习都比在传统的监督学习方案中单独学习要好得多。 此外,以这种方式训练的学生网络比来自更大的预训练教师的传统蒸馏训练的学生网络获得更好的结果。论文实验表明,各种网络架构可以从相互学习中受益,并在CIFAR-100识别和Market-1501 ReID 数据集上获得令人信服的结果。

模型设计

损失函数

损失函数 函数设计
传统监督损失函数 softmax + 交叉熵损失函数
模仿性的损失函数 softmax + KL散度函数

[两个网络]

[多个网络]

实验结果

实验网络

Cifar-100 实验

[实验设置]

paras values
optimizer SGD with Nesterov
base lr 0.1
momentum 0.9
batch size 64
epoch 200
note The learning rate dropped by 0.1 every 60 epochs

[实验结果]

[实验结论]

  1. 与独立学习相比, ResNet-32,MobileNet 和 WRN-28-10各种不同网络都在DML提高了性能。
  2. 容量较小的网络(ResNet-32和MobileNet)通常可以从DML获取更大的提升。
  3. 虽然WRN-28-10是一个比MobileNet或ResNet-32大得多的网络,但它仍然受益于与较小的网络一起训练。
  4. 与独立学习相比,使用DML训练一组大型网络(WRN-28-10)仍然是有益的。 因此,与模式蒸馏的传统智慧相反,我们看到一个大型的预训练的教师网络不是必不可少的.

Market-1501 实验结果

[实验设置]

每个MobileNet相互学习DML都以双网络方式中进行训练,并报告两个网络的平均性能

paras values
optimizer Adam
β1/β2 0.5/0.999
base lr 0.0002
momentum 0.9
batch size 16
iterations 100,000

[实验结果]

[实验结论]

可以看到,与独立学习相比, 无论是否在ImageNet上进行预训练,DML极大地提高了MobileNet的性能。还可以看出,用两个MobileNets训练的所提出的DML方法的性能显着优于先前的最先进的深度学习方法。

与模型蒸馏比较

[实验结果]

[实验结论]
Table4 将DML与模型蒸馏进行了比较,其中教师网络(Net1)经过预先训练,并为学生网络(Net2)提供固定的后验概率目标。

  1. 正如预期的那样,与独立学习相比,来自强大的预训练教师网络的常规蒸馏方法确实提高了学生网络的表现(Net1蒸馏Net2)
  2. 与蒸馏相比,DML将两个网络一起训练, 两个网络都得到了改进。这意味着在相互学习的过程中,通过与先验未经训练的学生的互动,教师角色的网络实际上变得比预先训练的教师更好。

相互学习的网络与性能联系

[实验设置]

之前实验研究以2名学生队列为例。在这个实验中,论文研究了DML如何与队列中的更多学生进行互动。图2(a)显示了Market-1501上的结果,其中DML训练增加了MobileNets的群组大小。图中显示了平均mAP以及标准偏差。

[实验结果]

[实验结论]

从图2(a)可以看出,平均单一网络的mAP性能随着DML队列中的网络数量的增加而增加。这表明,与越来越多的同龄人一起学习时,学生的泛化能力得到提高。从标准偏差中我们也可以看到,随着DML网络数量的增加,结果越来越稳定。

训练多个网络时的一种常用技术是将它们组合为一个整体并进行组合预测。在图2(b)中,我们使用与图2(a)相同的模型,但基于整体进行预测, 在整体上(基于所有成员的连锁特征进行匹配)而不是报告每个人的平均预测。从结果我们可以看出,集合预测优于预期的各个网络预测(图2 (b)vs(a).

Deep Mutual Learning的更多相关文章

  1. 【论文阅读】Deep Mutual Learning

    文章:Deep Mutual Learning 出自CVPR2017(18年最佳学生论文) 文章链接:https://arxiv.org/abs/1706.00384 代码链接:https://git ...

  2. Paper | Deep Mutual Learning

    目录 1. 动机详述和方法简介 2. 相关工作 3. 方法 3.1 Formulation 3.2 实现 3.3 弱监督学习 4. 实验 4.1 基本实验 4.2 深入实验 [算法和公式很simple ...

  3. 论文笔记: Mutual Learning to Adapt for Joint Human Parsing and Pose Estimation

    Mutual Learning to Adapt for Joint Human Parsing and Pose Estimation 2018-11-03 09:58:58 Paper: http ...

  4. Deep Residual Learning

    最近在做一个分类的任务,输入为3通道车型图片,输出要求将这些图片对车型进行分类,最后分类类别总共是30个. 开始是试用了实验室师姐的方法采用了VGGNet的模型对车型进行分类,据之前得实验结果是训练后 ...

  5. (转) Playing FPS games with deep reinforcement learning

    Playing FPS games with deep reinforcement learning 博文转自:https://blog.acolyer.org/2016/11/23/playing- ...

  6. (zhuan) Deep Reinforcement Learning Papers

    Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...

  7. Learning Roadmap of Deep Reinforcement Learning

    1. 知乎上关于DQN入门的系列文章 1.1 DQN 从入门到放弃 DQN 从入门到放弃1 DQN与增强学习 DQN 从入门到放弃2 增强学习与MDP DQN 从入门到放弃3 价值函数与Bellman ...

  8. Open source packages on Deep Reinforcement Learning

    智能车 self driving car + 强化学习 reinforcement learning + 神经网络 模拟 https://github.com/MorvanZhou/my_resear ...

  9. (转) Deep Reinforcement Learning: Playing a Racing Game

    Byte Tank Posts Archive Deep Reinforcement Learning: Playing a Racing Game OCT 6TH, 2016 Agent playi ...

随机推荐

  1. centos6.8 搭建postfix/dovecot邮件服务器

    postfix/dovecot邮件服务器 安装配置参考链接  http://www.cnblogs.com/jkklearn/p/7280045.html (domain 为自己域名 xxx.com) ...

  2. git常用命令值stash

    git stash(git储藏)可用于以下情形: 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交.这时就可以考虑git stash. 使用git的时候,我们 ...

  3. 在Asp.Net Core中集成ABP Dapper

    在实际的项目中,除了集成ABP框架的EntityFrameworkCore以外,在有些特定的场景下不可避免地会使用一些SQL查询语句,一方面是由于现在的EntityFrameworkCore2.X有些 ...

  4. Tensorflow模型的格式

    转载:https://cloud.tencent.com/developer/article/1009979 tensorflow模型的格式通常支持多种,主要有CheckPoint(*.ckpt).G ...

  5. C语言博客作业05--指针

    1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 1.2.2 代码累计 2.PTA总分 2.1截图PTA中函数题目集的排名得分 2.2 我的总分: 3.P ...

  6. mock详解

    一.Mock在单元测试中扮演一个什么角色 有时,你需要为单元测试的初始设置准备一些“其他”的代码资源.但这些资源兴许会不可用,不稳定,或者是使用起来太笨重.你可以试着找一些其他的资源替代:或者你可以通 ...

  7. Linux C Socket简单实例与详细注释

    最近做的东西与socket十分紧密,所以很好奇它具体是如何实现的,以前也有了解过,但是又忘记了,于是把它记录下来,以便日后查看. 服务器端:server.c #include <sys/type ...

  8. vivado2016.1下载程序出错:End of startup status: LOW

    现象 使用JTAG下载程序,发现刚开始下载就出现了End of startup status: LOW错误.但能检测到芯片,证明JTAG没烧毁. 流程 前几次下载都没有问题,然后就有问题了. (1)怀 ...

  9. 常规 nginx 代理apache

    nginx: server { server_name www.xx.com xx.com; access_log /data/wwwlogs/www.xx.com_nginx.log combine ...

  10. P1451 求细胞数量

    题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式 输 ...