预训练模型相关整理

news2024/10/6 8:28:16

1、怎么使用预训练网络?

使用预训练网络有两种方法:特征提取(feature extraction)和微调模型(fine-tuning)。

1、特征提取


特征提取是使用之前网络学到的表示来从新样本中提取出有趣的特征。然后将这些特征输入一个新的分类器,从头开始训练。

用于图像分类的卷积神经网络包含两部分:首先是一系列池化层和卷积层,最后是一个密集连接分类器。第一部分叫作模型的卷积(convolutional base)。对于卷积神经网络而言,特征提取就是取出之前训练好的网络的卷积基,在上面运行新数据,然后在输出上面训练一个新的分类器。如图一所示:卷积基不变,改变分类器
图一:卷积基不变,改变分类器

 

为什么只使用预训练模型的卷积基?


原因在于卷积基学到的表示可能更加通用,因此更适合重复使用。分类器学到的表示必然是针对于模型训练的类别,其中仅包含某个类别出现在整张图像中的概率信息,因此预训练模型密集连接层的特征在很大程度上是无用的。

如何进行特征提取(两种方法实现)


1、在你的数据集上运行卷积基,将输出保存成硬盘中的 Numpy 数组,然后用这个数据作为输入,输入到独立的密集连接分类器中(与本书第一部分介绍的分类器类似)。
优点:速度快,计算代价低,因为对于每个输入图像只需运行一次卷积基。
缺点:不允许你使用数据增强。


2、在顶部添加 Dense 层来扩展已有模型(即 conv_base),并在输入数据上端到端地运行整个模型。
优点:可以使用数据增强。
缺点:计算代价高,因为每个输入图像进入模型时都会经过卷积基。
注意:第二种方法要“冻结”卷积基,冻结(freeze)一个或多个层是指在训练过程中保持其权重不变。如果不这么做,那么卷积基之前学到的表示将会在训练过程中被修改。因为其上添加的 Dense 层是随机初始化的,所以非常大的权重更新将会在网络中传播,对之前学到的表示造成很大破坏。

2、微调模型

模型微调(fine-tuning)与特征提取互为补充。对于用于特征提取的冻结的模型基,微调是指将其顶部的几层“解冻”,并将这解冻的几层和新增加的部联合训练。之所以叫作微调,是因为它只是略微调整了所复用模型中更加抽象的表示,以便让这些表示与手头的问题更加相关。
在这里插入图片描述

 只有上面的分类器已经训练好了,才能微调卷积基的顶部几层。如果分类器没有训练好,那么训练期间通过网络传播的误差信号会特别大,微调的几层之前学到的表示都会被破坏。因此,微调网络的步骤如下。
(1) 在已经训练好的基网络(base network)上添加自定义网络。
(2) 冻结基网络。
(3) 训练所添加的部分。
(4) 解冻基网络的一些层。
(5) 联合训练解冻的这些层和添加的部分。
 

为什么不微调更多层?为什么不微调整个卷积基?


(1)卷积基中更靠底部的层编码的是更加通用的可复用特征,而更靠顶部的层编码的是更专业化的特征。微调这些更专业化的特征更加有用,因为它们需要在你的新问题上改变用途。微调更靠底部的层,得到的回报会更少。
(2)训练的参数越多,过拟合的风险越大。卷积基有 1500 万个参数,所以在你的小型数据集上训练这么多参数是有风险的。

来自博客:采用预训练模型来训练新的模型_胜寒君的博客-CSDN博客

2、预训练会提高模型的鲁棒性和不确定性

来自文章:Using Pre-Training Can Improve Model Robustness and Uncertainty

链接:https://arxiv.org/pdf/1901.09960.pdf

《Rethinking ImageNet pre-training》这篇论文指出从头开始(train from scratch)的预训练经常产生和引入预训练模型一样的效果。我们展示尽管预训练可能不会提高传统分类测度上的表现,但是它能够提高模型的鲁棒性和不确定性估计。通过adversarial examples, label corruption, class imbalance, out-of-distribution detection, and confidence calibration 一系列实验,我们证明了预训练的作用和任务特殊方法的补偿影响。

3、How transferable are features in deep neural networks?

《How transferable are features in deep neural networks?》

模型的第一层参数和Gabor filters的参数非常相似,即模型在一开始也要完成一些常规模型的的图像检测过程,第一层(或前几层)的特征并不是特定于某一数据集或某一任务,而是通用特征,他们适用于许多数据集和普遍任务,在较深的(最后几层)模型层,特征会从通用特征逐渐转化为与任务和数据集紧密相关的特征。

1.背景和动机


本文全篇通过实验说明神经网络的可迁移性,通篇没有一个公式,但是却是2014年NIPS的oral presentation。

本文实验使用12年ImageNet大赛的冠军模型AlexNet进行了一系列关于网络各个层级上的可迁移性的实验。因为CNN在提取特征时,前面几层学习到的都是边边角角,线条这样的可以泛化的特征,而随着层级上升,慢慢地特征变得specific。那么问题来了,当我们打算迁移这些层次的时候,怎么知道哪些层可以不动,哪些层是specific的呢?

这个问题对于理解神经网络以及迁移学习很有意义,也是此论文的研究点。下面来看看

2.简介


本文通过实验说明结果,在ImageNet的1000个类中,作者将其分成2份(A与B),每份包含500个类,这里是随机分的。然后分别针对A和B份,分别训练一个AlexNet网络。关于AlexNet的结构就不多说了,一共8层,前面5层是卷积层,后面3层是FC层。作者分别对n=1~7进行了实验,

举个例子:比如n=3,那么AnB就是说在一个新的AlexNet上,前三层采用A网络的前三层并且将其frozen,后5层随机初始化,然后在B数据上去训练。

那么BnB就是用B网络的前三层frozen,剩下的5层初始化,然后在B上实验。

而AnB+是指使用A网络的前三层,后5层随机初始化,但是不做frozen,整个网络拿来做BP训练。

围绕着神经网络的可迁移性,作者设计了两大方面的实验:

迁移A网络的某n层到B(AnB)   vs  固定B网络的某n层(BnB)
权重初始化与迁移表现


3.实验结果


我们来分析下结果:先看蓝色的BnB和BnB+   

对于BnB而言,原来训练好的B模型的前两层直接拿来就可以用,而且不需要调整,不会对精度造成影响。从3层开始有点下降,到了第4~5层,模型精度开始下降,然而到了6-7层,模型精度又奇迹般地回升了!这是为什么呢?

作者说明如下:对于一开始精度下降的4~5层,确实是到了这一步,feature变得specific了,但是都是从B数据训练来的,就算4~5层的特征specific,那不也是数据B的特征吗?为什么会下降呢?作者认为:中间连续层之间存在一定的相互适应调整关系,这种关系是复杂而又脆弱的,这种关系不能够仅仅通过上层学习到,所以在3层开始,我们固定底层,导致网络无法进行上下之间的相互适应调整,使得3层之后的层无法进行很好地协调而学习到相对于task很specific的特征,使得精度开始下降。而到了6~7层,精度又回升了,这是因为网络一共就8层,你把6层都固定住了,基本上整个特征学习也被固定住了,因此精度和原来的B不会相差太多。因此作者认为:神经网络中间特征层的连续协调关系要强于最顶和最下层的,这是之前文献所没有注意到的。

对于BnB+来说,模型精度没有什么变化,说明finetune对模型没有损失,并且训练时间还可减少,对训练有促进作用。

我们重点看下AnB和AnB+

对AnB来说,直接将网络的前两层迁移到B,固定住,貌似对精度不会有什么影响,这说明AlexNet的前两层学习的特征是很基础,很泛化的,因此可以直接从A迁移到B而不损失精度。到了4~5层,精度开始大幅下降,而到了6~7层,精度出现小小上升然后又下降,这是为什么呢?根据BnB的结论,我们认为这种下降由两个因素导致:

中间层之间具有相互适应协调的依赖关系
特征太specific了,导致迁移到B上特征不适用
而在4~5层,是第一个因素占主导作用,使得模型在固定了前面4~5层后,之后的层无法学习进行上下层的相互协调,无法学习到针对B数据很specific的特征。而在6~7层,则是第二个因素起作用,此时整个网络差不多都被固定住了,模型提取的特征就和A差不多,自然无法在B上适用。因此中间出现一个过渡,然后又下降的情况。

再看AnB+,加入了finetune之后的模型,在任何时候表现都很好,甚至比base B的表现还好,这又一次说明finetune对模型有很好的促进作用

4.结论


虽然该论文并没有提出一个创新方法,但是通过实验得到了以下几个结论,对以后的深度学习和深度迁移学习都有着非常高的指导意义(杨强教授非常赞赏该论文的工作):

  • 神经网络的前3层基本都是general feature,进行迁移的效果会比较好;
  • 深度迁移网络中加入fine-tune,效果会提升比较大,可能会比原网络效果还好;
  • Fine-tune可以比较好地克服数据之间的差异性;
  • 深度迁移网络要比随机初始化权重效果好;
  • 网络层数的迁移可以加速网络的学习和优化。

文章来源:https://blog.csdn.net/hx14301009/article/details/82713371

4、DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition

本篇文章提出问题:2012年Alexnet的出现使用CNN进行特征提取在多个视觉上取得了很好的效果,那么利用CNN提取的特征是否可以应用到其他数据集上,另外CNN的性能随着网络的深度如何变化?能否定量或定性地说明这两个问题?

为了验证特征泛化能力,使用起始层到中间的某层的网络作为特征提取,使用t-sne算法进行了可视化,可视化结果如下:

5、Big Transfer (BiT):General Visual Representation Learning

Key points:预训练+微调模式;上游预训练;下游迁移;更通用的视觉表征学习;BiT-HyperRule

对于预训练+微调模式的迁移学习来说,更有效的结果分为两种:1、在某一类下游任务中取得优秀的性能。2、能够完成尽可能多的下游任务,且都能够取得较为良好的成绩。

对于BiT来说,属于第二个,在近20个数据集上完成较好的结果,并且最关键的是,BiT在迁移的过程使用的是固定(相同)的处理方法,从而更能说明其具有较好的普适性。
 

没有太看懂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/743007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解Linux网络——内核是如何发送网络包的

文章目录 一、相关实际问题二、网络包发送过程总览三、网卡启动准备四、数据从用户进程到网卡的详细过程1)系统调用实现2)传输层处理1. 传输层拷贝2. 传输层发送 3)网络层发送处理4)邻居子系统5)网络设备子系统6&#…

【微信小程序创作之路】- 小程常用页面样式

【微信小程序创作之路】- 小程常用页面样式 第四章 微信小程序用页面样式 文章目录 【微信小程序创作之路】- 小程常用页面样式前言一、总体样式--全局样式and局部样式1.全局样式2.局部样式 二、Flex布局🍉🍉🍉rpx单位 三、样式导入四、常用…

unpkg 与 npm 的基本介绍

目录 定义 特点 原理 使用 npm安装流程 npm install npm update registry 区别 总结 定义 UNPKG是一个基于npm registry 的静态资源 CDN 服务,它可以快速获取和使用任何JavaScript包,无需安装任何软件或包。UNPKG可以从NPM仓库中获取任何包&am…

不受环境干扰,这套声学全息方案实现了虚实交互

一谈到全息显示,大家默认想到的就是光学全息方案,比如需要将光投射到某样东西上,比如视网膜,或是烟雾等介质上,才能成像。市面上一些常见的2D、3D全息方案,如全息风扇、Voxon全息系统等等,分别采…

【STM32MP135】修复10.1寸屏显示异色问题,添加极性配置

文件路径:u-boot-stm32mp-v2021.10-stm32mp1-r1/drivers/video/stm32/stm32_ltdc.c

代码随想录算法训练营第17期第14天 | 理论基础 、递归遍历、迭代遍历、统一迭代

理论基础 种类 满二叉树、完全二叉树、二叉搜索树 满二叉树 如果一颗二叉树只有度为0的节点和度为2的节点,并且度为0的节点都在同一层 完全二叉树 在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并…

Android Java代码与JNI交互 引用类型转换(五)

🔥 Android Studio 版本 🔥 🔥 Java中基础数据类型对应Native的数据类型 🔥 * Java中基础数据类型对应Native中的数据类型* |Java |Native |* |boolean |jboolean |* |byte |jbyte |* |short |jshort |* |int |jint |* |long…

c++编写消消乐游戏

#include <SFML/Graphics.hpp> #include <SFML/Audio.hpp> #include <time.h> using namespace sf;#define GAME_ROWS_COUNT 8 #define GAME_COLS_COUNT 8int ts 57; // 每一个游戏小方块区域的大小bool isMoving false; bool isSwap false;// 相邻位置…

springboot基于协同过滤算法商品推荐系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器&…

MybatisPlus中的save方法和insert方法区别

insert方法时直接插入一条数据&#xff0c;需要手动设置每个字段的值&#xff0c;例如&#xff1a; save方法首先会先判断该数据是否已经存在于数据库中&#xff0c;如果存在则更新数据&#xff0c;如果不存在则插入数据。使用save方法时&#xff0c;需要先设置主键值&#xff…

41.RocketMQ之高频面试题大全

消息重复消费 影响消息正常发送和消费的重要原因是网络的不确定性。 引起重复消费的原因 ACK 正常情况下在consumer真正消费完消息后应该发送ack&#xff0c;通知broker该消息已正常消费&#xff0c;从queue中剔除。当ack因为网络原因无法发送到broker&#xff0c;broker会认为…

【单片机】msp430f5529 万年历,数字时钟,矩阵键盘修改时间,7针OLED显示,内部温度读取

文章目录 功能实物图原理图一些程序片段矩阵键盘内部温度读取将年月日转为星期 功能 1 显示万年历&#xff0c;利用内部RTC模块 2 按键修改时间 3 显示芯片内部的温度数值 实物图 原理图 一些程序片段 矩阵键盘 https://qq742971636.blog.csdn.net/article/details/1316505…

Vue3 + TS + Element-Plus 封装Tree组件 《亲测可用》

前期回顾 Vite Vue3 Ts 《企业级项目》二次封装 el-table、el-pagination、el-tooltip、el-dialog_vue后台管理系统需要二次封装的组件有哪些_彩色之外的博客-CSDN博客封装的功能有哪些&#xff1f;分页、表格排序、文字居中、溢出隐藏、操作列、开关、宽、最小宽、type类型…

【Vue H5项目实战】从0到1的自助点餐系统—— 搭建脚手架(Vue3.2 + Vite + TS + Vant + Pinia + Node.js)

前言 H5 项目基于 Web 技术&#xff0c;可以在智能手机、平板电脑等移动设备上的浏览器中运行&#xff0c;无需下载和安装任何应用程序&#xff0c;且H5 项目的代码和资源可以集中在服务器端进行管理&#xff0c;只需更新服务器上的代码&#xff0c;即可让所有顾客访问到最新的…

6.2Java EE——Spring的入门程序

下面通过一个简单的入门程序演示Spring框架的使用&#xff0c;要求在控制台打印“张三&#xff0c;欢迎来到Spring”&#xff0c;实现步骤具体如下。 1、在IDEA中创建名称为chapter06的Maven项目&#xff0c;然后在pom.xml文件中加载需使用到的Spring四个基础包以及Spring依赖…

【域渗透篇】渗透域环境下的windows7与2008-r2

目录 前言 域环境搭建测试 主机发现&&端口服务扫描&&漏洞脚本扫描 主机发现 全端口扫描 漏洞脚本扫描 永恒之蓝获取shell 主机信息收集 查看当前所在域及当前域用户 找到域控制器 收集域成员的IP msf后渗透阶段 Hashdump获取本地密码信息 破解ha…

cesium学习文档

文章目录 1. 简易的cesium安装依赖修改 vite.config.js申请token创建简单的cesium 2. 修改查看器3. 修改摄像头4. 设置纽约城市模型5. 划分城市区域并且着色6. 地图标记显示7. 实现无人机巡城 1. 简易的cesium 安装依赖 yarn add -D cesium vite vite-plugin-cesium修改 vite…

Openlayers实战:小物块运动轨迹动画

Openlayers地图在做轨迹的时候,除了标注各个位置点,连线,还经常会用到轨迹动画。 本实战就是这样示例,一个物块在轨迹上移动。其实质是用setInterval,每个一小段时间,重新计算定位一下小物块位置,整体串起来就是在移动。 效果图 源代码 /* * @Author: 大剑师兰特(xia…

TextMining Day3 基于信息抽取的文本挖掘

TextMining Day3 基于信息抽取的文本挖掘 1. 简介2. 背景:文本挖掘与信息提取3. 数据挖掘与信息提取相结合3.1 DISCOTEX系统3.2 评价 4. 使用挖掘规则改进IE4.1 算法4.2 评价 7. 结论 1. 简介 图1:基于IE&#xff08;信息抽取&#xff09;的文本挖掘框架概述 本文报告了计算机…

stm32 使用CubeIDE 移植RTX5

STM32 使用st的官方开发环境 cubeide &#xff08;eclipse gcc&#xff09;移植 cmsis rtos2 RTX5 实时操作系统 这套环境的主要优势是免费。cubeide免费使用。RTX5 免商业版税&#xff08;已从原keil中剥离出来&#xff0c;现在完全开源免费&#xff09;。 一&#xff0c;环…