首页 > 其他分享 >李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调

时间:2023-01-15 22:01:45浏览次数:46  
标签:初始化 训练 模型 微调 PyTorch 70 李沐 集上 数据

【李沐老师观点】微调是深度学习,特别是计算机视觉来说,最重要的一种技术。整个深度学习为什么正常WORD?是因为微调的存在。所谓“微调”也称为“Transfer Learning”,即迁移学习,它是影响和改变了计算机视觉的一种重要方法。

李沐老师强调,即使前面所介绍过的一些知识被忘记,但是【微调】是不可被遗忘的,是深度学习最重要的一种技术,必须搞清楚。

一、标注一个数据集代价极高

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调_初始化

理论上,数据集越大越好,越复杂越好。但是,通过对于我们来说,我们希望在大数据集上预先训练好的东西有助于我们在自己的数据集上提高我们的训练速度与精度,而不是重新再训练那个大数据集(一起也训练不起)。其实,人工智能追求的一个重要目标就是,已经训练好大数据集,再训练此领域小数据集时可以【借用】一下,即可轻松实现。

或者说,假设在源数据集(一个比较大的数据集)上已经训练好了一个模型,模型中特征提取的部分对源数据集是有效的,那么它对目标数据集也应该是有效的,这样做是优于随机生成提取特征的。但是,最后一部分是不能直接使用的,因为标号发生了改变,所以最后一部分难以进行重用。

【微调核心思想】在一个比较大的源数据集上训练好的模型中用于特征提取的部分,在目标数据集上提取特征时进行重用。

二、典型神经网络架构回顾

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调_数据集_02


整体来看,几乎所有作分类的神经网络具有上述样子。

三、微调中的权重初始化

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调_数据集_03


如图左边,假设我们已经在源数据集上训练好了一个模型,其中对应的训练各步统称为Pre-train(预训练成的)。那么,如右所示,当我们在目标数据集上重新训练一个模型的时候,我们选择使用与左侧一样架构的模型,例如你使用的是ResNet18,那么我们的训练模型也选择使用ResNet18。

于是,我们在做模型除了最后一层的其他前面所有层的初始化时,我们模型的初始化不再使用随机的初始化,而是从你那边(左边)训练好的模型中对应位置层中复制过来。那么,这样一来,抛开最后一层,前面各层性能应当是已经不错的,但是,我们可以根据自己的需求再对相应的前面中的一些层再行参数调整,称为【微调】。这就是微调的核心思想。

四、训练阶段

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调_数据集_04


【使用更强的正则化】的意思是:如果不使用预训练模型,直接在自己的数据集上正常训练,在时间足够的情况下也是可以从随机初始化训练到完全 fitting 自己的数据集,但是可能会导致 Overfitting ,这是没有必要的,不如对预训练模型进行微调。

使用更小的学习率:已经比较接近最优解了,因此不需要太大的学习率。

源数据集远远复杂于目标数据集,通常微调的效果更好!

【注意】源数据集的类别数、图片数量、样本个数通常是目标数据集的 10 倍或者 100 倍,才能达到很好的微调效果;否则,微调的效果不如直接在目标数据集上进行重新训练。

五、固定住底部的一些层

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调_深度学习_05

六、总结

李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调_深度学习_06

现在,工业界已经迅速应用各类预训练的大型科学实验模型,正是基于本文微调原理。




标签:初始化,训练,模型,微调,PyTorch,70,李沐,集上,数据
From: https://blog.51cto.com/zhuxianzhong/6008904

相关文章

  • 《痞子衡嵌入式半月刊》 第 70 期
    痞子衡嵌入式半月刊:第70期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。本期刊是开源项目(GitHub:Ja......
  • P7060 [NWRRC2014]Alarm Clock
    Alicelikesherdigitalalarmclock.Shesetsthemupeveryevening.LastnightAlicehadadreamaboutherclock.Unfortunately,theonlythingsheisablet......
  • 70. 爬楼梯
    题目链接https://leetcode.cn/problems/climbing-stairs/description/解题思路这是一个典型的动态规划题。记住,任何可以用递归解决的问题,就可以用动态规划解决。动态规......
  • PyTorch图像分类打卡
    本次学习的基本情况概述学习流程参考内容同济子豪兄的开源文档我的打卡内容......
  • 【LeeCode】704. 二分查找
    【题目描述】给定一个 ​​n​​ 个元素有序的(升序)整型数组 ​​nums​​ 和一个目标值 ​​target​​  ,写一个函数搜索 ​​nums​​ 中的 ​​target​​,如果......
  • 20220709|第一次海钓
    ......
  • day3 | 203.移除链表元素、707.设计链表、206.反转链表
    题目链接:203.移除链表元素-力扣(LeetCode)题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val==val 的节点,并返回 新的头节点......
  • “动手学强化学习Pytorch版”笔记
    书籍一:2.3.3梯度:梯度就是对张量中的每个变量都求偏导,求出某点的值,然后将他们按照原先张量的对应顺序写成一个新张量,这个新张量就是原先张量在某点的梯度如:importtor......
  • 安装 VS2008 HRESULT -2147023293 失败解决方法
    我机器系统为Win2003Server,之前安装了Office2010,今天安装VS2008时出现了如下错误信息:[08/31/11,09:30:07]setup.exe:[2]ISetupComponent::Pre......
  • 迅雷 5.8.14.706 收藏版
    迅雷官方网站发布的最后5.8版号是:迅雷5.8.14.706稳定版,这个版应该就是5.9版界面大改前的5.8最终版,算是一个经典版了。这里收藏了5.8.14.706烈火版,放到趣盘仓库......