迁移学习--预训练微调

目录

1、迁移学习作用

2、迁移学习的途径

3、相关的领域

4、在计算机视觉中的应用

5、迁移学习的办法 

预训练模型 

微调

6、总结


1、迁移学习作用

定义:能在一个任务学习一个模型,然后用来解决相关的别的任务,这样我们在一个地方花的时间,学习的一些知识,研究的一些看法可以在另外一个地方被使用到;

迁移学习实在深度学习出圈的,因为在深度学习中需要训练很多的深层神经网络,需要很多的数据,代价也很高。

2、迁移学习的途径

  • 做好一个模型,将其做成一个特征提取的模块
  1. Word2Vec,在文本上训练一个单层神经网络,在训练好之后,每一个词对应一个特征,然后用这个特征去做别的任务;
  2. Resnet,对图片进行提取特征,然后,用这个特征作为另一个模型的输入,这样假设效果非常好,这样就可以代替人工去提取特征的步骤;
  3. I3D用来对视频提取特征。

  • 在一个相关的任务上训练一个模型,然后,在另一个任务上直接使用
  • 训练好一个模型,然后,在一个新的任务上对其做微调,使模型能更好的适应新的任务

3、相关的领域

  • 半监督学习:利用没有标号的数据,让有标号的数据变得好
  • 在极端的条件下,可以做zero-shot(一个任务有很多的类别但不会告诉你样本)或few-shot learning(一个任务就给你一些样本)
  • Multi-task learning(多任务学习):每一个任务都有它自己的数据,但是数据不是很够,可是任务之间相关,那么可以将所有的数据放在一起,然后同时训练多个任务出来,这样我们洗网能从别的任务之中获益

4、在计算机视觉中的应用

  • 在CV中存在了很多大规模标好的数据集(特别是分类问题,因为标号容易);
  • 在CV的迁移学习,我们是希望存在很多数据的一些应用上比较好的模型,能将它的知识拓展到我们自己的任务上去;
  • 通常你自己任务的数据集会比大数据集(ImageNet)要小很多(一开始不会花太多钱去标注很多的数据,正常是标好了一些看看模型效果怎么样,然后好的话再继续投入进去,这样是一个迭代的过程),然后我们想要快速的迭代,看看能不能用比较大的数据集来将一些学到的东西迁移到我们自己的任务上面去

5、迁移学习的办法 

预训练模型 

 作用:可以将 神经网络分成两块,一块编码器(特征提取器,将原始图片的原始像素转化在一个语义空间汇总可以线性可分的一些特征(浅表示或语义也正表示)),一块解码器(简单的线性分类器,将编码器的表示映射成想要的标号,或者做一些决策);

定义:预训练模型(Pre-train):在一个比较大的数据上训练好的一个模型,会具有一定的泛化能力(放到新模型上或新的数据集上,这个模型还是有效果的)【虽然是用于图片分类但是也可以试试目标检测】

微调

  • 将预训练好的模型用在新任务上叫fine-tuning(微调)【通常在深度学习里面,微调能带来最好的效果,但是也有一定的开销】
  • 微调是怎么做的:在新的任务上构建一个新的模型,新的模型的架构要更预训练的模型的架构是一样的;在找到合适的预训练模型之后要初始化我们的模型(将预训练模型的除了最后一层之外(特征提取器)的权重都复制给我们的模型,最后一层的解码器用的还是随机的权重【因为我们的标号和预训练模型的标号是不一样的】);
  • 具体看例子:在初始化之后,就可以开始学习了,这步跟我们平常的学习没有什么不同的;有一点点小做法是,限制fine-tune后的学习率。因为我们初始的结果已经比较好了,已经在想要解的附近了,限制学习率可以使得我们可以不会走太远【一般是用1e-3】;另外是说不要训练太长的时间;这些做法都是为了缩小搜索空间;限制搜索空间的原因:

========================================================================= 

限制搜索空间的其他方法——固定最底层

  • 神经网络通常有一个层次化的,最底层一般是学习了底层的特征,上层的更与语义相关,所以一般来说底层与上面层没有太多的关系,在换了数据集之后泛化性都很好;
  • 最后一层还是随机初始化学习,然后只对某一些层进行改动,最下面那些层在微调时就不去动了(可以说是学习率为0);
  • 固定住多少层是要根据应用来看的,假设应用与预训练模型差别比较大的话,可以多训练一些层;

========================================================================= 

怎么去找微调模型



  • 首先要去找有没有我们想要的预训练模型,然后是看它是在什么样的数据集上训练好的;
  • 可以去的途径(ModelHub、ModelZoom之类的):
  • Tensorflow Hub: https://tfhub.dev/;(允许用户去提交模型)
  • TIMM(把pytorch上能找到的各种代码实现弄过来): https://github.com/rwightman/pytorch-image-models;(ross 自己维护的一个包【文档不错,模型性能暂时一般般】)
  • TIMM使用代码介绍:

========================================================================= 

fine-tuning的一些应用

  • 在大的数据集上训练好模型再微调到自己的应用上在CV领域上广泛的应用;
  • 新的任务包含 目标检测、语义分割等(图片类似但是目标不一样);
  • 在医疗领域等(同样的任务但是图片大相径庭);
  • 现在的观点是微调加速了收敛(微调让初始的点不再试一个随机的点而是一个离最终的目标比较近的点,使得损失比较平滑),但是不一定可以提升精度(一般不会让精度变低,因为它只是改变初始值而已,跟随机初始化没区别,只要走的足够远也能摆脱初始值的影响);

6、总结

  • 通常我们会在大数据上训练预训练好的模型,这种任务通常是图片分类;
  • 然后在关心的任务上把模型的权重初始化成预训练好的模型的权重,当然最后一层也就是解码器是要随机初始化的;
  • 微调一般用一个小一点的学习率进行细微的调整,这样通常会加速收敛,有时可以提升精度但通常不会变差;(所以通常在CV中是经常被推荐的做法)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习基础知识 register_buffer 与 register_parameter用法分析

深度学习基础知识 register_buffer 与 register_parameter用法分析 1、问题引入2、register_parameter()2.1 作用2.2 用法 3、register_buffer()3.1 作用3.2 用法 1、问题引入 思考问题:定义的weight与bias是否会被保存到网络的参数中,可否在优化器的作用…

想用macbook录制视频?这几个技巧让你事半功倍!

在今天的数字时代,录制视频已经变得非常常见,无论是为了制作内容、演示、教育还是娱乐。如果您是一名macBook用户,您拥有一些强大的工具来满足您的视频录制需求。本文将向您介绍两种macbook录制视频的方法,帮助您更好地录制高质量…

SQL利用Case When Then多条件判断

CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 THEN 结果4 ......... WHEN 条件N THEN 结果N ELSE 结果X END Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN 1 THEN…

东芝Z750的画质真实吗?适合看纪录片吗?

东芝Z750显示的画面更加真实、细腻、有层次感,就感觉电视中的画面像真实世界一般呈现在眼前,东芝电视拥有70余年的原色调校技术,每款产品都有专属的日本调校工程师匠心打造,可以真实还原画面色彩,若是观看类似《航拍中国》这样的旅游记录片时,东芝电视将会营造出万里山河的壮阔…

从0开始学go第五天

gin框架返回JSON package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/json", func(c *gin.Context) {//用map序列化//方法一:用map,后面用接口类型// data : map[string…

利用人工智能做射击游戏辅助(二)AlphaPose环境配置

一、anaconda安装 官网地址:Free Download | AnacondaAnacondas open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.https://www.anaconda.com/download 下载之后下一步就可以&#xff0c…

谷歌云 | 零售行业的生成式 AI:如何跟上步伐并取得领先

【Cloud Ace 是 Google Cloud 全球战略合作伙伴,在亚太地区、欧洲、南北美洲和非洲拥有二十多个办公室。Cloud Ace 在谷歌专业领域认证及专业知识目前排名全球第一位,并连续多次获得 Google Cloud 各类奖项。作为谷歌云托管服务商,我们提供谷…

[Python]图片转字符画——这就是我的表情!!!!!!

背景 偶尔看到一些视频,他们把图片转字符画,平常也没有去关注,今天来捣鼓一下。 研究了一下还超级简单的,都是调用别人写好的框架。 网上也有很多教学。 代码实现 from PIL import Image # 表示字符颜色,由深到浅&am…

Redis 的过期键 | Navicat 技术干货

Redis 是一种高性能的内存数据存储,以其速度和多功能性而闻名。其中一个有用的特性是为键设置过期时间的功能。在 Redis 中,为键设置过期时间对于管理数据和确保过时或临时数据自动从数据库中删除是至关重要的。在本文中,我们将探讨在 redis-…

【AI】深度学习——前馈神经网络——全连接前馈神经网络

文章目录 1.1 全连接前馈神经网络1.1.1 符号说明超参数参数活性值 1.1.2 信息传播公式通用近似定理 1.1.3 神经网络与机器学习结合二分类问题多分类问题 1.1.4 参数学习矩阵求导链式法则更为高效的参数学习反向传播算法目标计算 ∂ z ( l ) ∂ w i j ( l ) \frac{\partial z^{…

应对广告虚假流量,app广告变现该如何风控?

移动广告市场中的虚假流量一直是困扰各移动应用厂商的难题,广告作为app商业化变现最为直接快捷的途径,也引申出了流量作弊与反作弊的纷争。 根据《2021中国异常流量报告》,2021年中国品牌广告市场因异常流量造成的损失约为326亿人民币&#…

用例图 UML从入门到放弃系列之三

1.说明 关于用例图,这篇文章我将直接照搬罗伯特.C.马丁老爷子在《敏捷开发》一书种的第17章,并配上自己的理解,因为这一章写的实在是太精彩了,希望能够分享给大家,共勉。以下是老爷子的原文中文翻译以及豆芽的个人解读…

早安问候语早安心语,别把人生想太难,人生需要鼓励

1、别把人生想的太难,人生需要几分自我的鼓励,不管在什么时候,要有几分信念和信心,生活少不了哭哭笑笑。青山绿水依然在,来来往往人不同,要学会看得惯,还要学会看得开,你内心的平坦是…

【Java学习之道】继承与多态

引言 本文将介绍面向对象编程的核心概念——继承与多态。对于初学者来说,掌握这些基本概念是迈向Java高手的第一步。接下来,让我们一起揭开继承与多态的神秘面纱,感受它们的魅力吧! 一、继承 继承是面向对象编程的一个重要特性…

Linux 文件系统

目录 磁盘文件管理 认识磁盘 抽象认识磁盘 磁盘划分 inode vs 文件名 软硬链接 磁盘文件管理 前面我们说了关于 Linux 文件系统中 “已打开的文件” ,但是在系统中可不光只有已打开的文件,实际上,系统中还存在很多没有打开的文件。 既…

1600*C. Game On Leaves(博弈游戏树)

Problem - 1363C - Codeforces 解析: 我们将目标结点 x 当作树的根,显然,到当 x 的度为 1 的时候,此时行动的人胜利。 我们假设现在的情况为,只剩余三个点,再选择任意一个点,则对方获胜。但是两…

WSL2下的Docker配置和使用

在Windows的Linux子系统(Windows Subsystem for Linux)WSL2中安装、配置和使用 Docker,可以参考官方教程:WSL上的Docker远程容器入门. 重要步骤总结如下: 先决条件 确保你的计算机运行的是 Windows 10(更…

C++11 Qt QFutureWatcher lambda

目录 Lambda 介绍 【QT】Qt之QFutureWatcher 简述 传参: 还可以使用 QProgressDialog 作为阻堵 函数,变成同步; 完成后,关闭; MyQProgressDialog 效果: Lambda 介绍 Lambda 函数也叫匿名函数&…

信创办公–基于WPS的PPT最佳实践系列 (绘制自选图形)

信创办公–基于WPS的PPT最佳实践系列 (绘制自选图形) 目录 应用背景操作步骤1、记忆复制:CTRLD2、微移:CTRL四个方向键 应用背景 如果想将文字转为简单而形象的smartart图形,但是又找不到自己想要的图形,我…

什么是大数据,大数据简介

大数据的概念通俗的说法 大数据,按照我的理解比较通俗易懂的是在数据量很多很大的情况下数据处理速度需要足够快,用我们以前传统意义上的的技术比如关系型数据库mysql没办法处理或者处理起来非常复杂,必须有一些新的处理技术也就是大数据处理…