论文笔记:How transferable are features in deep neural networks? 2014年NIP文章
文章目录
- 一、背景介绍
- 二、方法介绍
- 三、实验论证
- 四、结论
- 五、感想
- 参考文献
一、背景介绍
1.问题介绍: 许多在自然图像上训练的深度神经网络都表现出一个奇怪的共同现象:在第一层,它们学习类似于Gabor过滤器和color blobs的特征。这样的第一层特征似乎并不特定于特定的数据集或任务,而是通用的(论文中简称general),因为它们适用于许多数据集和任务。而最后一层提取到的特征很大程度上取决于选定的数据集和任务(论文中简称specific)。
从上述现象我们便可以假设有这个结论:一定有一个类似于阈值的层数,当少于这个层数便不受任务和数据影响,大于这个层数便受任务和数据影响。
为了研究这个结论,必须要解决以下三个问题:
- 如何度量某一个网络层的general和specific程度。
- 这个阈值时对应的单个层还是多个层。
- 这个阈值发生在大概什么位置:靠近第一层,中间,还是靠近最后一层。
可以看出,第一个问题是关键,合理的量化后剩下两个问题的答案就呼之欲出了。
2.迁移学习: 在迁移学习中,通常在基础数据集和任务上训练基础网络,然后将学习到的特征重新用于或将它们转移到第二个目标网络,以便在目标数据集和任务上进行训练。如果特征是通用的,即适用于基础任务和目标任务,而不是特定于基础任务,则此过程往往会起作用。
通常的迁移学习方法是训练一个基础网络,然后将其前n层复制到目标网络的前n层。然后将目标网络的其余随机初始化并针对目标任务进行训练。在训练目标任务过程中,前n层可以被冻结即不参与训练,或者被微调。
关于选择微调还是冻结往往取决于目标任务的网络参数量和数据集相对大小。如果目标数据集相对基础数据集较小且目标网络参数相对较大,这时往往采用冻结避免欠拟合等。如果目标数据集很大或者目标网络参数量很少,为了避免过拟合,可以使用微调。
3.微调: 简单的说微调就是通常情况下神经网络在训练过程中使用的是随机初始化,但不少模型的结构和一些已经被训练好的模型部分结构相似,这时我们便可以拿训练好的模型的相似结构的模型参数作为待训练模型的初始化。
微调的好处有:
- 能够比随机初始化更快速的收敛
- 能够提高模型性能
4.Gabor过滤器: 表达式比较复杂,可以理解为一种滤波器,可以用来进行图片特征提取。Gabor常被用来作为边缘提取的滤波器。
二、方法介绍
量化general和specific
将在任务A上学习到的一组特征的普遍性定义为这些特征可用于另一个任务B的程度。就是使用迁移学习(冻结)把模型A前几层迁移到模型B上,使用数据集B来训练B,看看此时模型B得到的性能相较于baseline下降多少。
1.模型介绍
模型比较简单,就是几个卷积层加一个全连接层用来进行分类。
上图中A3A、B3B表示使用的是冻结进行迁移,A3A+、B3B+表示使用的是微调。这里比较有意思的设定是B3B和B3B+,这两个模型的基础任务和目标任务都是自己,数据集也一样,我一开始看的时候蒙蒙的,这个模型有啥用?别着急,后面的实验会给出答案。
这里作者在没有进行实验前就给出了一个结论就是当基础任务和目标任务相差太大,迁移性能便会下降。这也就需要分开讨论。同时,由于这是14年的论文(网络还是不是太深),14年之前有人得出结论,随机初始化的模型便具有不错的性能,故这东西也要拿出来进行对比。
三、实验论证
数据集介绍:a.相似数据集取的是ImageNet中100个类各随机选取一半;b.不相似数据集取的是ImageNet中A和B各自取人造实体和自然实体。
1.数据集相似
这个图片上半幅数据没有看懂咋算出来这么多点的,下半幅就比较容易搞懂了。
a.首先看一下深蓝色的BnB结果。按照其网络结构,初始设想必然是认为最终结果必然是深蓝色结果和baseline B(白点)一样,因为毕竟是相同数据集和相同网络。但是结果却不是这样的。作者认为这种性能下降证明原始网络在连续层上包含脆弱的共同适应性特征(co-adapted features),即以复杂或脆弱的方式相互作用的特征,使得这种共同适应不能单独由上层重新学习。梯度下降能够在第一时间内找到一个很好地解决方案,但这是唯一可能的,因为这些层是联合训练(有层被冻结了无法参与训练)的。这就导致优化困难,在中间层尤其严重。随着层数的增加,这种情况就逐渐消失了,毕竟都快接近初始网络B了。
b.再看一下淡蓝色采用微调的BnB+,这个因为都是一起参与训练,便不会有上述脆弱的共同适应性特征,不好优化这个问题了。
c.深红色的AnB是本文采用的量化方法,可以看到当仅冻结前两层模型B的性能比baseline B好一点,可以得出前两层的特征是general。当冻结超过两层后,性能就直线下降。作者解释这个原因是因为(1)和BnB一样,有co-adapted features的原因存在(这时BnB设置的目的就体现出来了)。(2)另一个原因就是因为后面几层是specific的。
然后呢,作者还比较严谨的解释道,虽然有些迁移学习文章介绍冻结能够带来模型性能提升,这个AnB部分实验结果就有点违背了。产生这样的原因是(1)转移成功的程度已经逐层仔细量化,并且(2)这两种独立的影响已经分离,表明每种影响在制度的一部分中占主导地位。
d.浅红色的AnB+的结果有点令人出乎意料,他没有像深红色一样层数高于3层就性能大幅度下降,反而有些提升。在以前,人们可能想要迁移学习到的特征的原因是为了在不过度拟合小目标数据集的情况下进行训练,但这一新实验结果表明,即使目标数据集很大,迁移特征也会提高泛化性能。注意这种性能上的提升并不是因为迭代次数变多(微调增加了迭代次数)了,对比BnB+就可以知道了(这里就体现了为啥要设置BnB+)。
此外,我们可以发现当使用微调时,不能微调的是都少层,模型性能均有较大的提升。这也就说明了微调的可以用来提高模型性能。
2.不相似数据集
这里实验就做的少了,作者仅说了由于数据集不相似导致迁移性能下降。
3.随机初始化权重
这里作者主要像通过实验表明,虽然任务不同导致迁移性能下降,但是随机初始化还是没有迁移学习牛。此外,作者还说明为啥之前有人说随机初始化就可以获取得到不错的性能,是因为他们的baseline过拟合了,即对比实验对象性能没有发挥好(哈哈哈)。
One possible reason this latter result may differ from Jarrett et al. (2009) is because their fully-trained (non-random) networks were overfitting more on the smaller Caltech-101 dataset than ours on the larger ImageNet dataset, making their random filters perform better by comparison.
四、结论
1.如何度量训练好特征层的普适性。
2.微调确实可以提高模型性能。
3.我们在进行迁移学习时(我觉得应该是冻结方式吧)要注意co-adapted features带来的问题。
五、感想
1.感觉这篇论文得到的结论有点和何凯明大神的论文唱反调(并没有)。
2.实验做的太少了,根据一个实验就得出了结论。不知道可不可信,毕竟得到的结论是通用性结论。
3.实验分析的贼到位,有理有据。
4.实验切入点找的好。
参考文献
- 什么是微调
相关文章:

论文笔记:How transferable are features in deep neural networks? 2014年NIP文章
文章目录一、背景介绍二、方法介绍三、实验论证四、结论五、感想参考文献一、背景介绍 1.问题介绍: 许多在自然图像上训练的深度神经网络都表现出一个奇怪的共同现象:在第一层,它们学习类似于Gabor过滤器和color blobs的特征。这样的第一层特…...

python基于flask共享单车系统vue
可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2. 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行…...

C++11 之模板改进
模板的右尖括号 在 c98/03 的泛型编程中,模板实例化有一个很烦琐的地方,那就是连续两个右尖括号(>>)会被编译器解释成右移操作符,而不是模板参数表的结束,所以需要中间加个空格进行分割,…...

Linux - POSIX信号量,基于环形队列的生产者消费者模型
信号量在Linux下,POSIX信号量是一种线程同步机制,用于控制多个线程之间的访问顺序。POSIX信号量可以用于实现线程之间的互斥或者同步。在之前的阻塞队列生产者消费者模型中,阻塞队列是一个共享资源,不管是生产者还是消费者&#x…...

学习Flask之七、大型应用架构
学习Flask之七、大型应用架构 尽管存放在单一脚本的小型网络应用很方便,但是这种应用不能很好的放大。随着应用变得复杂,维护一个大的源文件会出现问题。不像别的网络应用,Flask没有强制的大型项目组织结构。构建应用的方法完全留给开发者。…...

CentOS9下编译FFMPEG源码
克隆...

炼石:八年饮冰难凉热血,初心如磐百炼成钢
炼石成立八周年 八载笃行,踔厉奋发。创立于2015年的炼石,今天迎来了八岁生日,全体员工共同举行了温暖又充满仪式感的周年庆典。过去的2022,是三年疫情的艰难“收官之年”,新的2023,将是数据安全行业成为独…...

Python基本数据类型
Python有六种基本数据类型Number(数字)String(字符串) List(列表) Tuple(元组) Set(集合)Dictionary(字典)String(字符串&…...

【MySQL进阶】 锁
😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...

javascript高级程序设计第四版读书笔记-第五章 基本引用类型
19.如何创建一个指定的本地时间? Dete只能接收时间戳,有两种方法可以将字符串参数变为时间戳,他们是Date隐式调用的, 分别是Date.parse() 创建的是GTM时间,Date.UTC()创建的是本地时间 Date.UTC()方法也返回日期的毫秒表示&#x…...

《爆肝整理》保姆级系列教程python接口自动化(二十一)--unittest简介(详解)
简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unitt…...

【C++的OpenCV】第四课-OpenCV图像常用操作(一):Mat对象深化学习、灰度、ROI
我们开始图像处理的基本操作的了解一、图像对象本身的加深学习1.1 Mat对象和ROI1.1.1 创建一个明确的Mat对象1.1.2 感兴趣的区域ROI二、图像的灰度处理2.1 概念2.2 cvtColor()函数2.3 示例一、图像对象本身的加深学习 1.1 Mat对象和ROI 这是一个技术经验的浅尝,所以…...

Propargyl-PEG1-SS-PEG1-PFP ester,1817735-30-0,炔基应用于生物标记
【中文名称】丙炔-单乙二醇-二硫键-单乙二醇-五氟苯酚酯【英文名称】 Propargyl-PEG1-SS-PEG1-PFP ester【结 构 式】【CAS号】1817735-30-0【分子式】C16H15F5O4S2【分子量】430.4【基团部分】炔基基团【纯度标准】95%【包装规格】1g,5g,10g,…...

产品运营︱用户活跃度低的解决方法
app用户活跃度低,产品拉新变现效率慢,这是运营app时难免会遇到的情况。要想解决这类问题,就要从可能的原因下手,进行产品的优化改进,记录下改变后的关键数据变化,定期做好复盘工作进行调整。 一、app用户量…...

【华为OD机试模拟题】用 C++ 实现 - 求最大数字
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

吉卜力风格水彩画怎么画?
著名的水彩艺术家陈坚曾说:“水彩是用水润调和形成的饱和度极高的艺术画面,在纸上晕染的画面面积、强度等具有许多随意性,天空的颜色乌云密布,都是很随意的,难以模仿。” 是的,水彩画的妙处就在于不确定的…...

Python的类变量和对象变量声明解析
Python的类变量和对象变量声明解析 原文链接:https://www.cnblogs.com/bwangel23/p/4330268.html Python的类和C一样,也都是存在两种类型的变量,类变量和对象变量!前者由类拥有,被所有对象共享,后者由每个…...

#笨鸟先飞 猴博士电路笔记 第一篇 电路基础
第零课 基础知识串联与并联电源电势与电位差第一课 电阻电路的等效变换电压源串联电流源并联电压源和电流源串联电压源和电流源并联电压源转化为电流源电流源转化为电压源Δ-Y等效变换第二课 基尔霍夫定律基尔霍夫电流定律任一结点上流出电流之和等于流入电流之和。受控电流源&…...

快捷式~node.js环境搭建
1、安装包官网下载:Node.js (nodejs.org) 2、安装完成后修改环境变量 在上面已经完成了 node.js 的安装,即使不进行此步骤的环境变量配置也不影响node.js的使用 但是,若不进行环境变量配置,那么在使用命令安装 node.js全局模块 …...

ZooKeeper实现分布式队列、分布式锁和选举详解
提示:本文章非原创,记录一下优秀的干货。 [原创参考]:https://blog.csdn.net/qq_40378034/article/details/117014648 前言 ZooKeeper源码的zookeeper-recipes目录下提供了分布式队列、分布式锁和选举的实现GitHub地址。 本文主要对这几种实…...

【swift】swift quick start
一、常量和变量 常量let,变量var 也可以用于确定数组和字典的不可变和可变 二、数据类型: Int:整数类型,可表示有符号整数或无符号整数,分别使用Int和UInt表示。 Float:单精度浮点数类型,用于…...

浅谈volatile关键字
文章目录1.保证内存可见性2.可见性验证3.原子性验证4.原子性问题解决5.禁止指令重排序6.JMM谈谈你的理解6.1.基本概念6.2.JMM同步规定6.2.1.可见性6.2.2.原子性6.2.3.有序性6.3.Volatile针对指令重排做了啥7.你在哪些地方用过Volatile?volatile是Java提供的轻量级的…...

10 种 Spring事务失效场景
10 种 Spring事务失效场景 1.概述 Spring针对Java Transaction API (JTA)、JDBC、Hibernate和Java Persistence API(JPA)等事务 API,实现了一致的编程模型,而Spring的声明式事务功能更是提供了极其方便的事务配置方式,配合Spring Boot的自动…...

重读《DOOM启世录》
许多游戏开发者都是网瘾少年,抱着对游戏的热爱进入游戏行业,在经历996的加班加点,买房的压力,浮躁同样跟随着我们,我们是否还热爱着自己的事业,我们不是天才,也成不了卡马克,但是我们…...

巧用性格上的差异来组建团队
你好,我是得物 App 交易平台及中间件平台的 Team Leader Alan。 组建团队过程中,你有没有遇到过类似的场景:团队中某些人之间总是互相不对付、气场不合,不管是日常沟通中还是方案对齐,总是会出现面红耳赤的场面。 从…...

Leetcode11. 盛最多水的容器
一、题目描述: 给定一个长度为 nnn 的整数数组 heightheightheight 。有 nnn 条垂线,第 iii 条线的两个端点是 (i,0)(i, 0)(i,0) 和 (i,height[i])(i, height[i])(i,height[i]) 。 找出其中的两条线,使得它们与 xxx 轴共同构成的容器可以容…...

Java笔记026-集合/数组、Collection接口、ArrayList、Vector、LinkedList
集合集合的理解和好处保存多个数据使用的是数组,分析数组的弊端数组1、长度开始必须指定,而且一旦指定,不能更改2、保存的必须为同一类型的元素3、使用数组进行增加/删除元素的示意代码-比较麻烦Person数组扩容示意代码Person[] pers new Pe…...

Hive学习——分桶抽样、侧视图与炸裂函数搭配、hive实现WordCount
目录 一、分桶抽样 1.抽取表中10%的数据 2.抽取表中30%的数据 3.取第一行 4.取第10行 5.数据块抽样 6.tablesample详解 二、UDTF——表生成函数 1.explode()——炸裂函数 2.posexpolde()——只能对array进行炸裂 3.inline()——炸裂结构体数组 三、UDTF与侧视图的搭…...

大数据算法
1. TOP K 算法 有10个⽂件,每个⽂件1G,每个⽂件的每⼀⾏存放的都是⽤户的 query,每个⽂件的 query 都可能重复。要求你按照 query 的频度排序。 方法1: 顺序读取10个⽂件,按照 hash(query)%10 的结果将 query 写⼊到…...

非暴力沟通读书笔记
浅读《非暴力沟通》,本书对于沟通的方式总结成了一个方法论,从13个章节去概述非暴力沟通的方法和重点。其中最重要的是非暴力沟通四要素,观察、感受、需要、请求。同时在沟通中注意观察,投入爱,重视倾听的力量…...