迁移学习和模型的微调
迁移学习
对于新的数据,需要进行分类或者回归时,常用的方法是在以个大的数据集上(ImageNet包含120万张来自1000类别的数据集)进行预训练一个CNN模型,然后用这个预训练好的模型作为特征提取部分,或者网络的初始化权重应用在特定的任务中。
实际应用中,就是在预训练模型的后面接上全连接层,然后用softmax、SVM 或者贝叶斯对网络进行分类,也可以接上几层分类器用来做回归任务。
微调(Fine-tuning)
对于新的数据与原始数据相似度较高时,可以在原始数据训练得到的模型上对新的数据进行微调。
训练的方式为:
- 微调所有层
- 固定网络前几层权重,只微调网络的后面几层,这样做可以有两个原因:
- (1)避免因数据量小造成过拟合现象
- (2)CNN的前几层的特征中包含更多的一般特征(例如,边缘信息,色彩信息等) ,CNN的后面几层更多时提取高层特征也就是语义特征,针对数据而言,不同的数据集后面几层学习的语义特征也是完全不同。
对模型如何进行微调
如何确定应该对新数据集执行哪种类型的迁移学,这是几个因素的函数,但是两个最重要的因素是新数据集的大小(大小),以及它与原始数据集的相似性。
- 新数据集很小,与原始数据集相似 由于数据量很小,会容易过度拟合,微调网络网络不好,因此可以选择冻住前几层,对微调网络的后几层,也可以重新训练网络。
- 新数据集很大,并且与原始数据集相似。由于我们拥有更多数据,因此可以尝试通过整个网络进行微调,则不会过拟合。
- 新数据集很小,但与原始数据集有很大不同。由于数据很小,因此最好只训练线性分类器。由于数据集非常不同,因此最好不要从网络顶部训练分类器,该网络包含更多特定于数据集的功能。取而代之的是,从网络中较早的某个位置进行激活来训练SVM分类器可能会更好。
- 新数据集很大,并且与原始数据集有很大不同。由于数据集非常大,我们可以期望我们有能力从头开始训练网络。但是,实际上,使用来自预训练模型的权重进行初始化通常仍然是有益的。在这种情况下,我们将有足够的数据和信心来调整整个网络。
总结
从上面大致可以看出迁移学习其实就是一种学习得到的知识对另一种知识的学习的影响。迁移学习它可以看作是一种学习体系,关注的核心问题是,如何将之前学习的得到的“知识”运用到其他领域中去。而fine-tune只是迁移学习的一种实现手段。通俗的讲就是,有点像武侠小说中的“吸星大法”将别人修炼好的功力直接吸收过来,然后自己稍微打坐,疏通一下经脉,把吸收过来的工作化为己用。
引用 https://blog.csdn.net/AUTO1993/article/details/78677812?utm_source=blogxgwz5
更多详细介绍
迁移学习和模型的微调相关推荐
- 4个计算机视觉领域用作迁移学习的模型
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|AI公园 导读 使用SOTA的预训练模型来通过迁移学习解决 ...
- 【Pytorch项目实战】之迁移学习:特征提取、微调、特征提取+微调、雾霾清除
文章目录 博主精品专栏导航 迁移学习(Transfer Learning) 方法一:特征提取(Feature Extraction) 方法二:微调(Fine Tuning) (一)实战:基于特征提取的 ...
- 迁移学习xlm-roberta-base模型应用于分类任务
下载模型 加载模型 这里不使用官网推荐的方式 from transformers import AutoTokenizer, AutoModelForMaskedLMtokenizer = AutoT ...
- Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...
- 数据不够怎么训练深度学习模型?不妨试试迁移学习 ——重用神经网络的结构2...
数据不够怎么训练深度学习模型?不妨试试迁移学习 本质就是这个图!pretrained model就是你截取的部分神经网络模型(迁移学习),而nanonet就是你自己加入的网络层. 随着深度学习技术在机 ...
- 平潭迁移库是什么意思_迁移学习》第四章总结---基于模型的迁移学习
基于模型的迁移学习可以简单理解为就是基于模型参数的迁移学习,如何使我们构建的模型可以学习到域之间的通用知识. 1. 基于共享模型成分的迁移学习 在模型中添加先验知识. 1.1 利用高斯过程的迁移学习 ...
- 【迁移学习】深度域自适应网络DANN模型
DANN Domain-Adversarial Training of Neural Networks in Tensorflow 域适配:目标域与源域的数据分布不同但任务相同下的迁移学习. 模型建立 ...
- PyTorch迁移学习
PyTorch迁移学习 实际中,基本没有人会从零开始(随机初始化)训练一个完整的卷积网络,因为相对于网络,很难得到一个足够大的数据集[网络很深, 需要足够大数据集].通常的做法是在一个很大的数据集上进 ...
- 1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习
ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构 本文翻译自ResNet, AlexNet, VGG, Inception: Understanding va ...
最新文章
- 资源 | 2018年值得关注的200场机器学习会议(建议收藏)
- html 点击一行变色,elementui点击table每一行会变色,当有固定列的时候,
- Elasticsearch 的前世今生 【转】
- 类成员_月隐学python第17课
- Docker精华问答 | 数据库为什么不适合放在 Docker 中运行?
- 你应该知道的Python3.6、3.7、3.8新特性 ,赶紧收藏!!
- 【图数据库】Neo4j
- 计算机是怎样跑起来的
- mui点击添加类名_Mui使用jquery并且使用点击跳转新窗口的实例
- pmp第六版一到三章笔记
- r与python交互_Reticulate:R + Python 实现互操作
- mysql 分区表 归档_详解 MySQL 数据库冷数据归档
- 蓝桥杯练习:费解的开关
- Clickhouse MergeTree系列(Replacing、Summing等)表引擎使用说明
- UE4 pbr概念理解
- 2017云栖大会门票转让_2017云栖大会门票多少钱?
- 中国航信2020java校招笔试题_航信校招java笔试题
- python 大智慧股池_跟我从零开始学会大智慧股票池自动交易
- [论文笔记]Vehicle-to-Everything (v2x) Services Supported by LTE-based Systems and 5g
- UWA学堂 | 优化模块
热门文章
- VUE的路由器的总结
- SpringCloud Gateway 重试路由器的过滤器
- 5G学习(四):PRACH专题
- css3 呼吸的莲花_Css实例制作“荷花盛开”代码演示
- 如何使用开源工具「DataEase」制作一个高质量的仪表板
- Jini技术常见问题解答
- 直流输电模型基于pscad仿真软件的3端直流输电模型
- 小程序源码:全网独家小程序版本独立微信社群人脉系统社群空间站最新源码开源+详细教程
- WEBRTC RFC5766-TURN协议
- 实战Nagios NSCA方式监控Linux系统资源使用情况 -- Nagios配置篇 -- 被监控端