当前位置: 首页 > news >正文

论文笔记: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.模型介绍

模型比较简单,就是几个卷积层加一个全连接层用来进行分类。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QzV6bxum-1677076879845)(C:\Users\21713\AppData\Roaming\Typora\typora-user-images\image-20230222205214738.png)]

上图中A3A、B3B表示使用的是冻结进行迁移,A3A+、B3B+表示使用的是微调。这里比较有意思的设定是B3B和B3B+,这两个模型的基础任务和目标任务都是自己,数据集也一样,我一开始看的时候蒙蒙的,这个模型有啥用?别着急,后面的实验会给出答案。

这里作者在没有进行实验前就给出了一个结论就是当基础任务和目标任务相差太大,迁移性能便会下降。这也就需要分开讨论。同时,由于这是14年的论文(网络还是不是太深),14年之前有人得出结论,随机初始化的模型便具有不错的性能,故这东西也要拿出来进行对比。

三、实验论证

数据集介绍:a.相似数据集取的是ImageNet中100个类各随机选取一半;b.不相似数据集取的是ImageNet中A和B各自取人造实体和自然实体。

1.数据集相似

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存失败,源站可能有防盗链机制,建议将图片保存下来直接上传下上传(iPwfdIHETRsS-1677076879846)(C:\Users\21713\AppData\Roaming\Typora\typora-user-images\image-20230222213922583.png)(C:\Users\21713\AppData\Roaming\Typora\typora-user-images\image-20230222205214738.png)]

这个图片上半幅数据没有看懂咋算出来这么多点的,下半幅就比较容易搞懂了。

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+)。

此外,我们可以发现当使用微调时,不能微调的是都少层,模型性能均有较大的提升。这也就说明了微调的可以用来提高模型性能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yM51OY9e-1677076879846)(C:\Users\21713\AppData\Roaming\Typora\typora-user-images\image-20230222222657426.png)]

2.不相似数据集

这里实验就做的少了,作者仅说了由于数据集不相似导致迁移性能下降。

3.随机初始化权重

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9oTCNAJ-1677076879847)(C:\Users\21713\AppData\Roaming\Typora\typora-user-images\image-20230222223112064.png)]

这里作者主要像通过实验表明,虽然任务不同导致迁移性能下降,但是随机初始化还是没有迁移学习牛。此外,作者还说明为啥之前有人说随机初始化就可以获取得到不错的性能,是因为他们的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.实验切入点找的好。

参考文献

  1. 什么是微调

相关文章:

论文笔记: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&#xff0c…...

产品运营︱用户活跃度低的解决方法

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地址。 本文主要对这几种实…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...