深度学习调参技巧总结

文章目录

  • 深度学习调参技巧总结
    • 1.寻找合适的学习率
    • 2.优化算法选择
    • 3.模型对不同超参数的敏感性
    • 4.训练技巧
    • 参考

深度学习调参技巧总结

1.寻找合适的学习率

学习率(Learning Rate, LR)是机器学习模型训练中极其重要的超参数。它直接影响模型的收敛速度和最终的性能表现。由于不同的模型规模、batch-size、优化方法和数据集的差异,最合适的学习率值往往是不确定的,因此很难仅凭经验确定最佳学习率。解决方法是通过训练过程中的动态调整,不断探索和寻找适合当前模型状态的学习率,以确保高效且稳定的模型优化。

  • 采用较大的batch-size,只要不超出显存就可以。
  • 越大的batch-size使用越大的学习率,反之亦然。

2.优化算法选择

不同的优化算法按理说适合不同的任务,但在实际应用中常用的还是 Adam 和 SGD+Momentum

Adam 可以解决许多奇怪的问题(例如 loss 降不下去时,换成 Adam 往往会迅速改善),但也可能引发一些意想不到的问题(例如,单词词频差异较大时,即使当前 batch 中没有某个单词,它的词向量也会被更新;或者在与 L2 正则结合时产生复杂效果)。使用 Adam 时需要谨慎,一旦出现问题,可以尝试各种改进版 Adam(如 MaskedAdam、AdamW 等)来应对。不过,一些博客指出,虽然 Adam 收敛快,但其泛化能力不如 SGD,想要取得更优结果可能需要精细调参 SGD。Adam 和 Adadelta 在小数据集上的效果不如 SGD。虽然 SGD 的收敛速度较慢,但最终的收敛结果通常更好。如果使用 SGD,可以从较大的学习率(如 1.0 或 0.1)开始,定期在验证集上检查 cost,如果不再下降,则将学习率减半。我看到过很多论文采用这种策略,自己实验的效果也很不错。当然,也可以先用自适应优化器(如 Ada 系列)进行初期训练,接近收敛时再切换到 SGD,这样也能带来提升。有研究表明,Adadelta 在分类问题上表现较好,而 Adam 则更适合生成任务。虽然 Adam 收敛更快,但得到的解往往不如 SGD+Momentum 稳定,如果不急于求成,选择 SGD 可能是更好的选择。Adam 不需要频繁调整学习率,而 SGD 则需要更多时间来调节学习率和初始权重

3.模型对不同超参数的敏感性

常用的超参数优化方法有:手动优化、网格搜索、随机搜索、由粗到细、贝叶斯优化。

img

4.训练技巧

  • Dropout 对小数据防止过拟合有很好的效果,值一般设为0.5。
  • Adam 不需要频繁调整学习率,而 SGD 则需要更多时间来调节学习率和初始权重。
  • 小数据集上 Dropout+SGD 效果提升都非常明显,因此可能的话,建议一定要尝试一下。
  • 除了gate之类的地方,需要把输出限制成0-1之外,尽量不要用sigmoid激活函数。可以用tanh或者relu之类的激活函数。
  • 超参上,learning rate 最重要,推荐了解 cosine learning rate 和 cyclic learning rate,其次是 batchsize 和 weight decay。当模型还不错的时候,就可以试着做数据增广和改损失函数锦上添花了。

参考

  • 极市:深度学习调参有哪些技巧?
  • 机器之心:2020年深度学习调参技巧合集
  • 深度学习调优指南中文版

😃😃😃

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——排序(2)

数据结构——排序(2) 文章目录 数据结构——排序(2)前言:1.快速排序(非递归版本)基本步骤:代码实现 2.归并排序算法思想:核心步骤:代码实现:特征总结: 3.计数排序(非比较…

【深度学习系统】Lecture 2 - ML Refresher / Softmax Regression

一、问题的理解方式 首先,什么是数据驱动的编程?面对经典的MNIST数据集识别任务,传统的编程思维和数据驱动的编程思维有何不同? 传统编程思维: 通常从明确的问题定义和具体的算法开始。对于 MNIST 数据集识别任务&a…

AI时代的神器,解锁 PPT 制作新体验--分享使用经验

背景&#xff1a;探讨人们在使用AI工具时&#xff0c;最喜欢的和认为最好用的工具是哪些&#xff0c;展示AI技术的实际应用和影响。 说明&#xff1a;本文分析的AI技术的实际应用是制作PPT的AI工具。>>快速访问本文的AI工具<< 你好&#xff0c;我是三桥君 你有没有…

网络抓包06 - Socket抓包

TCP thread {val socket Socket("xx.xxx.xxx.xx", 8888)socket.soTimeout 3000val os socket.getOutputStream()Log.e("Socket", "class name ${os::class.java.canonicalName}")os.write(0x00)}运行代码&#xff0c;得知 OutputStream 是 S…

Python 工具库每日推荐 【sqlparse】

文章目录 引言SQL解析工具的重要性今日推荐:sqlparse工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:SQL查询分析器案例分析高级特性自定义格式化处理多个语句扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Python工具库每日推荐 专…

文件的读写、FileStream

//现在在desktop\10.13文件夹下的读写文件,由上知空空如也。 if (File.Exists(@"C:\Users\11442\Desktop\10.13\FILE.txt")) { File.Delete(@"C:\Users\11442\Desktop\10.13\FILE.txt"); File.Create(@"C:\Users\11442\Desktop\10.13\FIL…

(IOS)VMware虚拟机上安装win10系统(超详细)

简介 虚拟机是一种软件实现的计算机系统&#xff0c;可以在现有的操作系统平台上运行一个或多个虚拟的操作系统。它通过在主机操作系统上创建一个虚拟的硬件平台&#xff0c;并在其上运行一个完整的操作系统&#xff0c;来模拟一个真实的物理计算机。虚拟机可以提供一种隔离的…

多线程代码案例

案例一.单例模式 单例模式是一种设计模式;类似于棋谱,有固定套路,针对一些特定场景可以给出一些比较好的解决方案; 只要按照设计模式来写代码,就可以保证代码不会太差,保证了代码的下限; --------------------------------------------------------------------------------…

接口测试面试题含答案

1、解释一下正向和逆向测试。 正向测试&#xff1a;针对接口设计预期的功能和行为&#xff0c;验证接口是否按照预期工作。 逆向测试&#xff1a;针对错误输入、不合理的条件或非预期的使用方式&#xff0c;验证接口是否能够适当地处理这些情况并提供合理的错误处理。 2、什…

Windows11下 安装 Docker部分疑难杂症(Unexpecter WSL error)

装了大半天Docker desktop终于装好了&#xff0c;网上有的主流教程就不复述了&#xff0c;主要说一下网上没有的教程。 以下是遇到的问题&#xff1a; 首先&#xff0c;启用或关闭Windows确保里面与虚拟机有关的几个都要选上 没有Hyper-V参考此文 但是我这里都勾选了&#x…

Unity/VS 消除不想要的黄色警告

方法一&#xff1a;单个消除 在要关闭的代码前一行写上#pragma warning disable 警告代码编码 在要关闭代码行下面一行写上#pragma warning restore 警告代码编码 精准的关闭指定地方引起的代码警告&#xff0c;不会过滤掉无辜的代码 #pragma warning disable 0162,1634HandleL…

react实现实时计时的最简方式

js中时间的处理&#xff0c;不借助于moment/dayjs这样的工具库&#xff0c;原生获取格式化的时间&#xff0c;最简单的实现方式可以参考下面这样。 实现效果 代码实现 封装hooks import { useState, useEffect } from "react";export function useCountTime() {c…

C语言笔记 14

函数原型 函数的先后关系 我们把自己定义的函数isPrime()写在main函数上面 是因为C的编译器自上而下顺序分析你的代码&#xff0c;在看到isPrime的时候&#xff0c;它需要知道isPrime()的样子——也就是isPrime()要几个参数&#xff0c;每个参数的类型如何&#xff0c;返回什么…

图解C#高级教程(五):枚举器和迭代器

本章主要介绍 C# 当中枚举器、可枚举类型以及迭代器相关的知识。 文章目录 1. 枚举器和可枚举类型2. IEnumerator 和 IEnumerable 接口2.1 IEnumerator 接口2.2 IEnumerable 接口 3. 泛型枚举接口4. 迭代器4.1 使用迭代器创建枚举器4.2 使用迭代器创建可枚举类4.3 迭代器作为属…

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态&#xff0c;对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码&#xff0c;发现web-view是给绝对定…

IP地址与CDN提升网络速度

视频流媒体、在线游戏、或是电商购物&#xff0c;互联网在我们的工作生活中愈加不可或缺&#xff0c;人们对于网络的加载速度要求也越来越严苛。而IP地址与CDN的协同工作&#xff0c;对于互联网速度增加与稳定起这重大的作用。 一、CDN的工作原理 CDN是由分布在全球各地的服务…

基于JAVA+SpringBoot+Vue的旅游管理系统

基于JAVASpringBootVue的旅游管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄…

使用XML实现MyBatis的基础操作

目录 前言 1.准备工作 1.1⽂件配置 1.2添加 mapper 接⼝ 2.增删改查操作 2.1增(Insert) 2.2删(Delete) 2.3改(Update) 2.4查(Select) 前言 接下来我们会使用的数据表如下&#xff1a; 对应的实体类为&#xff1a;UserInfo 所有的准备工作都在如下文章。 MyBatis 操作…

【论文速看】DL最新进展20241015-目标检测、图像超分

目录 【目标检测】【图像超分】 【目标检测】 [ECCV2024] LaMI-DETR: Open-Vocabulary Detection with Language Model Instruction 论文链接&#xff1a;https://arxiv.org/pdf/2407.11335 代码链接&#xff1a;https://github.com/eternaldolphin/LaMI-DETR 现有方法通过利…

Android ImageView scaleType使用

目录 一、src设置图片资源 二、scaleType设置图片缩放类型 三、scaleType具体表现 matrix&#xff1a; fitXY: fitStart&#xff1a; fitCenter&#xff1a; fitEnd: Center&#xff1a; centerCrop: centerInside&#xff1a; 控制ImageView和图片的大小保持一致…