深度学习 常见优化器

一、基础优化器

  1. 随机梯度下降(SGD)
    • 核心:∇θJ(θ) = η * ∇θJ(θ)
    • 特点:学习率固定,收敛路径震荡大
    • 适用场景:简单凸优化问题
    • 改进方向:动量加速

二、动量系优化器
2. SGD with Momentum
• 公式:v_t = γv_{t-1} + η∇θJ(θ)
• 效果:平滑梯度更新,加速收敛
• 经典参数:γ=0.9(多数场景推荐)

三、自适应学习率家族
3. Adagrad
• 创新:∇θJ(θ)_t = ∇θJ(θ) / (sqrt(ρ) + sqrt(∑g²))
• 特性:自动调节学习率,适合稀疏数据
• 缺陷:学习率单调衰减易过早停止

  1. RMSProp
    • 改进:梯度平方移动平均代替累积和
    • 公式:E[g²]t = 0.9rms_decayE[g²]{t-1} + 0.1*g²
    • 优势:缓解Adagrad学习率衰减问题
    • 默认参数:η=0.001, γ=0.9

  2. Adam
    • 融合:动量 + RMSProp
    • 更新公式:
    m_t = β1*m_{t-1} + (1-β1)g_t
    v_t = β2
    v_{t-1} + (1-β2)g_t²
    θ = θ - η
    (m_t)/(1-β1t)/(v_t/(1-β2t))
    • 优势:计算高效,参数敏感度低
    • 推荐配置:β1=0.9, β2=0.999, η=0.001

四、进阶优化器
6. AdamW(权重衰减正则化)
• 改进:解耦权重衰减与梯度更新
• 效果:提升模型泛化能力,尤其在Transformer架构中表现显著

  1. Nadam(Nesterov-accelerated Adam)
    • 创新:Nesterov动量提前修正梯度
    • 优势:比标准Adam更快收敛3-10%

  2. LAMB(Large Batch Optimization)
    • 适用:大规模mini-batch训练
    • 特征:动态缩放学习率与梯度

五、选择建议矩阵

训练数据模型类型目标推荐优化器
小样本图像分类CNN快速收敛SGD+Momentum
大样本NLP处理Transformer稳定训练AdamW
超大规模深度强化学习多层网络资源效率LAMB
高精度调优计算机视觉ResNet最终性能SGD+Momentum

六、调试技巧

  1. 学习曲线分析:观察loss曲面是否出现震荡(动量不足)或平台期(学习率过低)
  2. 权重初始化验证:对He初始化配合SGD效果更佳
  3. 混合精度训练:结合AMP技术可提升Adam训练速度3-5倍
  4. 渐进式学习率:使用OneCycleLR策略可减少调参次数

七、最新进展
2023年ICML论文提出的AdaBelief优化器,在ImageNet-21k数据集上达到与AdamW相当的分类精度,但参数量减少15%。其核心创新是通过可信区间估计动态调整学习率,值得关注。

需要具体场景的配置建议或某个优化器的数学推导细节,我可以进一步展开说明。建议根据具体任务在Colab上运行对比实验,使用TensorBoard观察不同优化器的loss下降曲线差异。

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

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

相关文章

监控快手关注列表更新以及去视频水印视频

def printData(self):if len(self.UpdateDataList) > 0:self.UpdateDataList sorted(self.UpdateDataList, keylambda x: x[minutes]) # 先更新的在前sucess 0for index, video in enumerate(self.UpdateDataList):minutes video[minutes]if minutes > self.updateIn…

前端 JavaScript 中快速发起多个下载请求时,解决浏览器的并发下载连接限制

为什么会漏掉链接? 当你在前端 JavaScript 中快速发起多个下载请求时,浏览器可能无法同时处理所有请求,导致一些请求被忽略。这通常与浏览器的并发连接限制有关,例如 Chrome 可能限制每秒下载 10 个文件。 如何避免漏掉链接&…

如何修改桌面图标——文件夹图标(Windows 10)

修改文件夹图标 EX:新建文件夹,程序创建文件夹等 修改桌面文件夹图标,打开右键菜单功能项,点击“属性” 在属性窗口页面找到并单击自定义,然后点击“更改图标” 从列表中选择喜欢的图标,或点击浏览选择个…

LiveCommunicationKit OC 实现

一、实现效果: ‌ LiveCommunicationKit‌是苹果公司在iOS 17.4、watchOS 10.4和visionOS 1.1中引入的一个新框架,旨在优化VoIP通话的交互体验。该框架提供了与

基于Bert模型的增量微调3-使用csv文件训练

我们使用weibo评价数据,8分类的csv格式数据集。 一、创建数据集合 使用csv格式的数据作为数据集。 1、创建MydataCSV.py from torch.utils.data import Dataset from datasets import load_datasetclass MyDataset(Dataset):#初始化数据集def __init__(self, s…

flowable新增或修改单个任务的历史变量

简介 场景:对历史任务进行关注,所以需要修改流程历史任务的本地变量 方法包含2个类 1)核心方法,flowable command类:HistoricTaskSingleVariableUpdateCmd 2)执行command类:BpmProcessCommandS…

Netty基础—4.NIO的使用简介一

大纲 1.Buffer缓冲区 2.Channel通道 3.BIO编程 4.伪异步IO编程 5.改造程序以支持长连接 6.NIO三大核心组件 7.NIO服务端的创建流程 8.NIO客户端的创建流程 9.NIO优点总结 10.NIO问题总结 1.Buffer缓冲区 (1)Buffer缓冲区的作用 (2)Buffer缓冲区的4个核心概念 (3)使…

python元组(被捆绑的列表)

元组(tuple) 1.元组一旦形成就不可更改,元组所指向的内存单元中内容不变 定义:定义元组使用小括号,并且使用逗号进行隔开,数据可以是不同的数据类型 定义元组自变量(元素,元素,元素…

输入:0.5元/百万tokens(缓存命中)或2元(未命中) 输出:8元/百万tokens

这句话描述了一种 定价模型,通常用于云计算、API 服务或数据处理服务中,根据资源使用情况(如缓存命中与否)来收费。以下是对这句话的详细解释: 1. 关键术语解释 Tokens:在自然语言处理(NLP&…

计算机视觉算法实战——驾驶员玩手机检测(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 领域简介:玩手机检测的重要性与技术挑战 驾驶员玩手机检测是智能交通安全领域的核心课题。根据NHTSA数据&#xff0…

Java糊涂包(Hutool)的安装教程并进行网络爬虫

Hutool的使用教程 1:在官网下载jar模块文件 Central Repository: cn/hutool/hutool-all/5.8.26https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.8.26/ 下载后缀只用jar的文件 2:复制并到idea当中,右键这个模块点击增加到库 3&…

深度学习项目--基于DenseNet网络的“乳腺癌图像识别”,准确率090%+,pytorch复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 如果说最经典的神经网络,ResNet肯定是一个,从ResNet发布后,很多人做了修改,denseNet网络无疑是最成功的…

优化用户体验:关键 Web 性能指标的获取、分析、优化方法

前言 在当今互联网高速发展的时代用户对于网页的加载速度和响应时间越来越敏感。一个性能表现不佳的网页不仅会影响用户体验,还可能导致用户流失。 因此,了解和优化网页性能指标是每个开发者的必修课。今天我们就来聊聊常见的网页性能指标以及如何获取这…

vs code配置 c/C++

1、下载VSCode Visual Studio Code - Code Editing. Redefined 安装目录可改 勾选创建桌面快捷方式 安装即可 2、汉化VSCode 点击确定 下载MinGW 由于vsCode 只是一个编辑器,他没有自带编译器,所以需要下载一个编译器"MinGW". https://…

Kotlin关键字`when`的详细用法

Kotlin关键字when的详细用法 在Kotlin中,when是一个强大的控制流语句,相当于其他语言中的switch语句,但更加强大且灵活。本文将详细讲解when的用法及其常见场景,并与Java的switch语句进行对比。 一、基本语法 基本的when语法如…

MFCday01、模式对话框

对话框类和应用程序类。 MFC中 Combo Box List Box List Control三种列表控件,日期控件Date Time Picker

接口测试笔记

4、接口测试自动化 接口自动化概述 HttpClient HttpClient开发过程 创建Java工程 新建libs库目录 HttpClient 工具下载及引入 https://hc.apache.org/index.html工程中引入jar包 Get请求 HttpGet方法---发起Get请求 创建HttpClient对象 CloseableHttpClient httpclient …

查找sql中涉及的表名称

import pandas as pd import datetime todaystr(datetime.date.today())filepath/Users/kangyongqing/Documents/kangyq/202303/分析模版/sql表引用提取/ file101试听课明细.txt newfilefile1.title().split(.)[0]with open(filepathfile1,r) as file:contentfile.read().lower…

如何在Ubuntu上构建编译LLVM和ISPC,以及Ubuntu上ISPC的使用方法

之前一直在 Mac 上使用 ISPC,奈何核心/线程太少了。最近想在 Ubuntu 上搞搞,但是 snap 安装的 ISPC不知道为什么只能单核,很奇怪,就想着编译一下,需要 Clang 和 LLVM。但是 Ubuntu 很搞,他的很多软件版本是…

【Spring IOC/AOP】

IOC 参考: Spring基础 - Spring核心之控制反转(IOC) | Java 全栈知识体系 (pdai.tech) 概述: Ioc 即 Inverse of Control (控制反转),是一种设计思想,就是将原本在程序中手动创建对象的控制权&#xff…