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

迁移学习 - 微调

什么是与训练和微调?

  • 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整参数,直到网络的损失越来越小。在训练的过程中,一开始初始化的参数会不断变化。当你觉得结果很满意的时候,你就可以将训练模型的参数保存下来,以便训练好的模型可以在下次执行类似任务时获得较好的结果。这个过程就是 pre-training。
  • 之后,你又接收到一个类似的图像分类的任务。这时候,你可以直接使用之前保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据结果不断进行一些修改。这时候,你使用的就是一个 pre-trained 模型,而过程就是 fine-tuning。

所以,预训练 就是指预先训练的一个模型或者指预先训练模型的过程;微调就是指将预训练过的模型作用于自己的数据集,并使参数适应自己数据集的过程。

网络架构

一个神经网络一般可以分为两块

  • 特征抽取将原始像素变成容易线性分割的特征
  • 线性分类器来做分类

在这里插入图片描述

微调

在这里插入图片描述

微调中的权重初始化

在这里插入图片描述

训练

是一个目标数据集上的正常训练任务,但使用更强的正则化

  • 使用更小的学习率
  • 使用更少的数据迭代

源数据集远复杂与目标数据,通常微调效果更好。

重用分类器权重

  • 源数据集可能也有目标数据中的部分标号
  • 可以使用预训练好模型分类器中对应标号对应的向量来做初始化

固定一些层

神经网络通常学习有层次的特征表示

  • 低层次的特征更加通用
  • 高层次的特征则更跟数据集相关

可以固定底部一些层参数,不参与更新

  • 更强的正则

总结:

  • 微调通过使用在大数据上得到的预训练好的模型来初始化模型权重来完成提升精度
  • 预训练模型质量很重要
  • 微调通常速度更快、精度更高
http://www.lryc.cn/news/211169.html

相关文章:

  • 09 用户态跟踪:如何使用eBPF排查应用程序?
  • 深入浅出排序算法之堆排序
  • Linux 命令(11)—— tcpdump
  • 8.自定义组件布局和详解Context上下文
  • 几个Web自动化测试框架的比较:Cypress、Selenium和Playwright
  • Android Studio中配置aliyun maven库
  • 记录使用阿里 ARoute 遇到的坑
  • lesson2(补充)关于const成员函数
  • 前端 :用HTML ,JS写一个 双色球彩票中将机制,因为时间不够,加上本人懒没有用CSS美化界面,多包涵
  • 前端页面如何自适应--4种方法
  • 2024王道考研计算机组成原理——总线
  • 【Linux】进程概念(下)
  • 基于Spring Boot的本科生就业质量设计与实现
  • 238. 除自身以外数组的乘积 --力扣 --JAVA
  • 如何判断一个类是线程安全的
  • MyBatis的各种查询功能
  • 【Tomcat】如何在idea上部署一个maven项目?
  • Three.js 材质的 blending
  • 关于pcl 给new出的数据赋值报错问题
  • window11 更改 vscode 插件目录,释放C盘内存
  • 【PyQt学习篇 · ⑥】:QWidget - 事件
  • Vue、jquery和angular之间区别
  • MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(六)
  • 硬件知识积累 RS232 接口
  • 机器人入门(四)—— 创建你的第一个虚拟小车
  • 部署K8S
  • [NSSCTF 2nd] web刷题记录
  • MyBatis获取参数值的两种方式(重点)
  • Cesium弹窗可随地图移动
  • MySQL WITH AS及递归查询