【技术综述】深度学习新手如何开始合适的“调参”任务

深度学习调参技巧总结 本文章参考:写给新手炼丹师:2021版调参上分手册 寻找合适的学习率 学习率是一个非常重要的超参数,在面对不同规模的网络、不同batch-size、不同优化方式,不同数据集,甚至可能不同时间段训练的合适值都不确定。我们唯一可以做的是在训练中不断寻找最合适当前状态的学习率。比如利用fastai中的lr_find()函数寻找合适的学习率。 how do you find a good learning rate 如何找到好的学习率 Cyclical Learning Rates for Training N 阅读详情

640?wx_fmt=jpeg

言有三

毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人

作者 | 言有三

编辑 | 言有三

深度学习工程师被称为“炼丹工程师”,自然是因为在日常工作中需要各种各样的调参工作。虽然因为Google的研究使得AutoML这两年大热,但是对于大部分人来说,还没有机器玩得起AutoML,而且手动调参数也是一门必备的技能。

试问:连调试参数都要交给电脑了,就你那三脚猫的python语言基础和弱不禁风的数学基础,端得起一碗高薪的饭吗!

1

任务选择

要学习调试参数,必须有一个比较好的任务,它一定是要有一定的难度,但是不能太难。它能体现出不同参数的差异,但又不能太敏感。

这里我给大家选了一个任务,细粒度图像分类,方法选择双线性网络,参考git链接

https://github.com/gy20073/compact_bilinear_pooling。

所谓细粒度图像分类,就是要将不同子类区分,通常来说,有不同种类的猫,不同种类的花等等,这里我们选择了一个公开数据集,选择的数据集为Caltech-UCSD Birds-200-2011,它包括200类鸟,共11788张图片,每一个类约60个样本,图片的分辨率大小不等,长度都在400分辨率左右。

将数据集均匀分为训练集和测试集,各10597和1192张图。

640?wx_fmt=png

它的任务就是要区分上面的鸟,特点就是有效的信息只存在于很细小的局部区域中。关于分类任务,更多的信息请关注我们上一篇文章,图像分类绝对不是一个简单的任务,请重视。

【技术综述】你真的了解图像分类吗?

话不多说,开始吧。

2

开始调参

深度学习参数真的太多了,这个参数不是说神经元的参数,而是说用于训练网络的参数。

640?wx_fmt=jpeg

上图只是展示了其中一些比较重要的参数,实际上随便数数20个以上是没有问题的。咱们时间机器有限不可能所有的都调试,今天就来调试其中的几个最重要的,迁移学习,分辨率以及正则项。

2.1 迁移学习

如果你想快速训练好一个任务,那么请从迁移学习开始,不要从头开始训练,尤其是新手。


一个好的初始化太重要了,迁移学习就是给你提供了一个绝佳的初始化。

咱们这个任务是非常难的,因为类别多,数据少,而且类内方差很大,所以我们开始进行迁移学习的时候,不妨保守一点,只学习全连接层。

640?wx_fmt=png

注意这个任务的最后几层如上,分别是一个双线性网络层和两个归一化层,一个全连接层,训练参数如下,完整的网络配置请参照git。

test_iter: 300

test_interval: 600

display: 100

max_iter: 60000

 

lr_policy: "multistep"

base_lr: 0.1

gamma: 0.25

stepvalue: 20000

stepvalue: 30000

stepvalue: 40000

stepvalue: 50000

 

momentum: 0.9

weight_decay: 0

snapshot: 10000

snapshot_prefix: "snapshot/ft_last_layer"

net: "ft_last_layer.prototxt"

iter_size: 4

经过了60000次迭代后,查看下训练的准确率迭代曲线和损失迭代曲线如下

640?wx_fmt=png

640?wx_fmt=png

可以看出,网络发生了过拟合,这也是在预料之中,因为训练集中每一类的图像只有60张左右,而数据增强只做了随机裁剪,而且是在全图经过了缩放之后的裁剪操作。

最后,我们对数据集进行了测试,准确率为74.5%。

我们再放开所有网络层进行学习,具体配置如下

test_iter: 300

test_interval: 100

display: 100

max_iter: 20000

lr_policy: "fixed"

base_lr: 0.001

momentum: 0.9

weight_decay: 0.0005

snapshot: 10000

snapshot_prefix: "snapshot/ft_all"

net: "ft_all.prototxt"

结果如下

640?wx_fmt=png

640?wx_fmt=png

可以看到,损失继续降低,同时精度也继续提升,20000次迭代后准确率从74.5%提升到86.8%。当然,模型仍然是过拟合的,这是因为样本数据集是在太小,只有增加数据集,实验更多的数据增强方法才能更好的解决这个问题。

关于数据集和数据增强方法,请查看往期文章。

【数据】深度学习从“数据集”开始

[综述类] 一文道尽深度学习中的数据增强方法(上)

【技术综述】深度学习中的数据增强(下)

那可不可以直接对所有层进行学习呢,没问题,可以收敛的。

640?wx_fmt=png

640?wx_fmt=png

但是效果就要差一些了,最终只能到0.79。


那不用双线性模型,直接使用分类模型如何?我的实验结果是很差,惨不忍睹,这里就不放出来了,而且非常难调参。


从这一次的调参至少可以得到一个结论,迁移学习是很重要的,妥妥的提升性能。而且其中的技巧非常多,只能多去练手了,看文章是学不到的。

2.2 输入输出分辨率

如果你的模型没毛病,但是效果始终不好,不如提高分辨率,当然这意味着更大的计算量。

通常来说,更大的输入分辨率总是可以取得更好的效果,尤其是对于检测和分割等任务。在我们这个任务中,还可以调整双线性网络的输出特征维度大小,这可以认为是输出维度,也可能是一个比较关键的参数。

所以我们同时对输入分辨率和双线性网络的输出层的维度进行一系列实验,输入尺度分别选用448,336,224这3个,输出维度分别选用8192,4096,2048,1024,保持其他参数不变,迭代60000次,测试结果如下:

640?wx_fmt=png

可以看出,图像的分辨率对模型性能的影响非常大,从448降低到224之后,准确率下降将近10%。双线性输出特征层的维度,从8192降低到1024后,只有微小的下降,几乎对性能没有影响,当然这并不意味着其他的任务也是如此,事实上对于图像分割和目标检测任务来说,最后一层卷积输出的特征图大小是最重要的参数。

2.3 正则化因子

当模型在训练集上的表现明显优于测试集的时候,说明发生了过拟合,缓解过拟合最简单的方法是增加数据。当增加数据的方案行不通的时候,可以通过添加L1,L2,dropout等正则化方案,这分别是隐式正则化和显式正则化方法。


在caffe框架中,通过调整Weight_decay来实现,默认使用的是L2正则化方法。Weight_decay是乘在正则化项的因子,这一般可以提高模型的能力,一定程度上缓解模型的过拟合,但是视不同任务而定,我们在前面训练模型的时候没有加正则项。

分别比较weight_decay=0,weight_decay=0.00001, weight_decay=0.001对结果的影响,其中weight_decay=0对应的就是第一个训练的基准模型。

640?wx_fmt=png

没有取得我们预期的效果,可能是wr的参数试的不够多,可能是其他的参数需要调试。

640?wx_fmt=png

640?wx_fmt=png

wr=0.001的时候曲线如上,可以看到模型相比于上面的一些更好的模型,提前收敛了,但是却收敛到了不好的效果,过拟合情况更加严重。

这个时候应该怎么做呢?在数据集不能变的情况下,调节学习率?还是继续调节正则化因子,只有实验结果才能验证了。

除去上面这些参数,还有学习率大小与迭代方法,batch size大小,初始化方法与各种优化方法,数据增强等各种参数,其中有一些参数对结果还是很有影响的,就留着读者自己去调试吧。

更多任务与参数调试,可以参考以前的一篇文章。

如何步入深度学习刷榜第一重境界

最后说一下我的感受,纸上得来终觉浅,绝知此事要躬行,虽然调参数有一定的指导,但是唯有多练手才能熟能生巧。

时间原因,以后我不可能每天产出高质量文章,还请大家耐心等待,另外更多的经历在一对一指导学习“济”划和“稷”划,感兴趣可以了解。

有三AI“【济】划”,从图像基础到深度学习

有三AI“十一月【稷】划”,从调参大法到3D重建

有三AI“十月【稷】划”,从自动驾驶到模型优化

不愿关注公众号,可移步知乎。

640?wx_fmt=png

深度学习网易公开课已经上线,看有三从不一样的视角来解读深度学习,特价2折,仅限今天。

640?wx_fmt=jpeg

xmorient

xmorient

如果想加入我们,后台留言吧

640?wx_fmt=jpeg640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=png

微信

Longlongtogo

640?wx_fmt=png

公众号内容

1 图像基础|2 深度学习|3 行业信息

640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=png

640?wx_fmt=png

有三精选

640?wx_fmt=png

640?wx_fmt=png

往期学员分享

640?wx_fmt=png

640?wx_fmt=png

往期开源框架

640?wx_fmt=png

640?wx_fmt=png

往期行业分析

640?wx_fmt=png

640?wx_fmt=png

往期模型解读

深度学习调参 优化类的参数:学习率(learning rates)、 batch_size、训练代数(epochs)、dropout 模型类的参数:隐含层数(hidden layers)、模型结构的参数(如RNN) 优化类的参数 学习率 Learning Rate 一个好的起点是从0.01尝试起 可选的几个常用值: 0.01 0.001 0.0001 0.00001 0.000001 判断依据是验证集的误差(v... 阅读详情

相关推荐

深度学习模型调参

调参需要结合领域知识(如NLP中序列长度设置)和实验结果不断迭代优化。(Variance)。调参的核心是平衡模型的。

qq_45560461的博客 1280

【调参实战】如何开始你的第一个深度学习调参任务?不妨从图像分类中的学习率入手。...

大家好,欢迎来到专栏《调参实战》,虽然当前自动化调参研究越来越火,但那其实只是换了一些参数来调,对参数的理解和调试在机器学习相关任务中是最基本的素质,在这个专栏中我们会带领大家一步一步...

hacker_long的专栏 1012

深度学习调参有哪些技巧?| 干货

文章的主要内容源于Stanford CS231n Convolutional Neural Networks for Visual Recognition课程里介绍的一些通过可视化手段,调试理解CNN网络的技巧,在该课程的基础上我作了一些沿展阅读,算是把当中的内容进一步丰富系统化了一下。限于时间精力,我也没有能够把里面提到的所有调试技巧全部进行尝试,不过在整理这篇文章的时候,我还是参考了不止一处文献,也结合之前以及最近跟一些朋友的技术交流沟通,对这些方法的有效性我还是有着很强的confidence。

21个深度学习调参技巧,一定要看到最后一个

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自|AI算法与图像处理训练深度神经网络是困难的。它需要知识和经验,以适当的训练和获得一个最优...

小白学视觉 846

超实用!VS Code配置C/C++开发环境全攻略

本文提供了一份详细的VS Code配置C/C++开发环境全攻略。从MinGW-w64编译器的选择与安装,到VS Code核心扩展的配置,再到tasks.json构建任务与launch.json调试环境的设置,手把手指导初学者完成从环境搭建到高效开发与调试的全过程,帮助开发者快速上手C/C++项目。

weixin_28829479的博客 185

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 379

速看!deep learning(rnn、cnn)调参的经验

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自|视觉算法话说三人行,必有我师焉。有哪些deep learning(rnn、cnn)调参的...

小白学视觉 2633

【嵌入式面经】上海 70迈 线上笔试

“关注|点赞|收藏” 福利干货第一时间送达!最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

qq_56921854的博客 1140

CV调参技巧

# 调参技巧 增大batch会降低精度,同时增大学习率 #学习率调节方法(Bold Driver): 学习率调节的基本原则:如果离最优值越远,朝最优值就得移动越多,学习率也就越大; 但是这里有个问题,我们不知道何时离最优值最近,我们也不知道每次迭代过程中离最优值有多远,我们可以采用bold driver方法: #归一化的目的: ...

juanji3798的博客 1411

第六章 汇川技术InoProShop入门之modbusTCP从站协议解读

摘要:ModbusTCP从站协议是Modbus协议在TCP/IP网络上的扩展,作为服务器端被动响应主站请求。它采用MBAP+PDU帧结构,通过IP地址和502端口实现网络通信,支持标准功能码(如读/写寄存器、线圈)。相比传统串行Modbus,具有高速传输、远距离通信优势。从站需解析请求、执行操作并返回响应,同时处理错误校验和并发连接。该协议广泛应用于智能传感器、PLC等工业设备,实现高效可靠的主从数据交互。

zyfucking2010的博客 1439

Vben Admin权限管理全解析:从动态菜单到按钮级控制(附代码示例)

本文全面解析Vben Admin框架的权限管理系统,从动态菜单生成到按钮级细粒度控制,提供完整的实现方案和代码示例。深入探讨基于角色-权限模型的架构设计,分享前后端协作的最佳实践,帮助开发者快速构建安全高效的企业级后台系统。

weixin_30919429的博客 488

11、opencv调参2

opencv

weixin_44986037的博客 724

【碳排放数据集】全球近实时网格化二氧化碳排放数据集GRACED

【碳排放数据集】全球近实时网格化二氧化碳排放数据集GRACED

WW、forever的博客 146

【深度学习】Java DL4J 2024年度技术总结

在当今数字化浪潮中,深度学习作为人工智能领域的核心驱动力,正以前所未有的速度改变着我们的生活和工作方式。从图像识别到自然语言处理,从医疗诊断到金融预测,深度学习的应用场景无处不在,展现出巨大的潜力和价值。Java作为一门广泛应用于企业级开发的编程语言,以其稳定性、可移植性和丰富的类库资源,在软件开发领域占据着重要地位。然而,传统的Java开发在面对深度学习复杂的模型构建和大规模数据处理时,往往显得力不从心。的出现,为Java开发者打开了一扇通往深度学习世界的大门。DL4J是一个专为Java和Scala。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1万+

基于STM32设计的个人健康检测仪(华为云IOT)(191)

本系统采用华为云物联网平台实现数据云端存储与分析,并通过自研手机APP提供远程监控界面,让用户无论身处何地都能及时掌握自身的健康数据,为用户提供个性化的健康管理方案,同时也为医疗机构提供了便捷的数据获取途径,助力实现智能化、精细化的医疗服务。

1679

RK3568 Android14 调试 RTL8211F 千兆以太网 (RGMII)

调试 RTL8211F 的核心在于:确认地址(看电阻贴片情况)和 搞定延时(配置 rgmii-id 或微调 delay 值)。一旦这两点对上了,RK3568 的千兆网络就能稳定运行。希望这篇结合原理图的实战记录能帮到你!

qq_33427070的博客 1651

深度学习调参经验汇总

此篇文章是在原创教程这个栏目下,但实际上是一篇汇总整理文章。相信大家在做深度学习时对调参尤为无奈,经验不足乱调一通,或者参数太多无从下手,我也如此。希望通过此文汇总网上一些调参的经验方法,供大家参考。此文会对网上每一篇调参文章做简练的总结与提炼,以此为此文的组成单元,并附上原文的链接。如果遇到不对的地方,欢迎指正~本文也将不定期更新,最后祝大家调参(炼金)顺利! 有多少人工,就有多少智能!(笑...

贾维斯的小屋 6095

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[转载] 深度学习的综述的综述 (这是一篇献给新手的深度学习综述)

深度学习的综述的综述 知乎:马东什么 算法工程师 这是一篇献给新手的深度学习综述​www.jiqizhixin.com世界顶级AI大神综述深度学习_ITPUB博客​blog.itpub.net 综述永远是入门新领域的最快捷径之一! 2018年下半年an发的一篇综述类文献,好心的机器之心已经翻译好了,我就直接复制下来修改一下表述的错误和补充,作为宝贵资料另外其它资料补充整合进来。 摘要:深度学习是机器学习和人工智能研究的最新趋势之一。它也是当今最流行的科学研究趋势之一。深度学习方法为计算.

u014546828的博客 2881

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

一篇适合新手的深度学习综述

如果你真的想学习人工智能,请不要去网上找那些零零碎碎的教程,真的很难学懂!你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!

Gupao123的博客 828

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习调参基础

深度学习调参基础 1.需要调节的超参数有哪些? 2.什么时候需要调参? 3.如何调参? 3.1过拟合情况调参 3.2欠拟合情况调参 3.3收敛但震荡情况调参 3.4不收敛情况调参 4.调参示例 需要调节的超参数有哪些?和网络结构相关的参数:神经网络的网络层数、不同层的类别和搭建顺序、隐藏层神经元的参数设置、LOSS层的选择、正则化参数;和训练过程相关的参数:网络权重初始化方法、学习率使用策略、迭代次数、Batch的大小、输入数据相关。

自己在学习过程中的总结 3562

献给新手的深度学习综述

文章目录1. 引言2. 相关研究3. 最新进展3.1 深度架构的演变4. 深度学习方法4.1 深度监督学习4.2 深度无监督学习4.3 深度强化学习5. 深度神经网络5.1 深度自编码器5.1.1 变分自编码器5.1.2 多层降噪自编码器5.1.3 变换自编码器5.2 深度卷积神经网络5.2.1 深度最大池化卷积神经网络5.2.2 极深的卷积神经网络5.3 网络中的网络5.4 基于区域的卷积神经网络5.4.1 Fast R-CNN5.4.2 Faster R-CNN5.4.3 Mask R-CNN5.4.4

2401_88244350的博客 1625

深度学习调参最全经验总结

本文结合自身工作和网上诸多炼丹者的经验,按不同模块梳理了有关深度学习调参的大量经验心得。特别地,加黑部分是笔者在实际项目中验证有效的。如有侵权请联系删除,如有错误欢迎评论指出。

rlczddl的博客 8651

【综述】一篇适合新手的深度学习综述

来源:机器之心作者:Matiur Rahman Minar、Jibon Naher这篇综述论文列举出了近年来深度学习的重要研究成果,从方法、架构,以及正则化、优化技术方面进行概述。机器之...

weixin_40920183的博客 525

深度学习调参经验

做dl也有一段时间了,积累了一些经验,也在网上看到一些别人的经验。 为了面试,结合知乎上面的问答,我也总结了一下,欢迎大家补充。知乎 深度学习调参有哪些技巧?一. 初始化 有人用normal初始化cnn的参数,最后acc只能到70%多,仅仅改成xavier,acc可以到98%。二.从理解CNN网络以产生直觉去调参数的角度考虑,应该使用可视化 可视化(知乎用户 杨军)1.Visualize Laye...

Xwei1226的博客 9029

写给新手的深度学习综述,收藏了

点击“开发者技术前线”,选择“星标????”13:21 在看|星标|留言, 真爱选自arXiv作者:Matiur Rahman Minar、Jibon Naher机器之心编译这篇综述论文列举出了近年来深度学习的重要研究成果,从方法、架构,以及正则化、优化技术方面进行概述。机器之心认为,这篇综述对于刚入门的深度学习新手是一份不错的参考资料,在形成基本学术界图景、指导文献查找等方面都能提供帮助。论...

开发者技术前线-DevolperFront 669

新手炼丹师的调参内经——深度学习涨点技巧总结

新手炼丹师的调参内经——涨点技巧总结 训练神经网络的过程就像是一个炼丹的过程,各位炼丹师们除了要设计一个好的丹方(Contribution),配置好的炼丹炉(GPU Server),当然这其中也不能够忽略对火候(Tricks)的掌控。就像一个一品丹药,由九品炼药师和五品炼药师分别在相同的炼丹炉里面炼制,炼制出来的成丹效果肯定也是天差地别,而导致这种差别的最主要原因就是两位炼药师之间经验的差别。设计一个好的丹方这没有什么好说的,就是各位炼药师多读paper,再充分发挥自己的想象力,不断试错,最终成功的过程。

PyBigStar的博客 1万+
上一篇: 【学习求职必备】百度AI和它的7大AI黑科技
下一篇: 【学习求职必备】认真认识一下世界末日那年成立的“华为诺亚方舟实验室”...
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值