AI达人创造营第三课笔记

深度学习模型训练和关键参数调优详解

面向应用场景,从模型选择模型训练超参优化效果展示四个方面进行模型开发。

一、模型选择

从任务类型出发,选择最合适的模型。

1、回归任务

从使用Numpy推导,到使用深度学习框架,一步步走进最简单的回归任务。当人工智能邂逅蓝桥杯算法题,会擦出怎样的火花?https://aistudio.baidu.com/aistudio/projectdetail/1693536

人脸关键点检测 https://aistudio.baidu.com/aistudio/projectdetail/1533049

2、分类任务

基于CIFAR-10数据集实现图像10分类。项目完整代码详见:https://aistudio.baidu.com/aistudio/projectdetail/2134364

3、场景任务

这里说的场景任务是针对某一个特定的场景开发的深度学习任务,相比于回归和分类任务来说,场景任务的难度更高。这里说的场景任务包括但不限于目标检测、图像分割、文本生成、语音合成、强化学习等。

目标检测:基于PaddleX的YOLOv3模型快速实现昆虫检测

人像分割:基于PaddleX核心分割模型 Deeplabv3+Xcetion65 & HRNet_w18_small_v1 实现人像分割

文字识别:基于chinese_ocr_db_crnn_mobile实现文字识别

二、模型训练

1、基本原理

模型训练的基本原理是神经网络梯度下降,详见原生Python和Numpy看模型训练基本原理

2、模型训练通用配置基本原则

  1. 每个输入数据的维度要保持一致,且一定要和模型输入保持一致。
  2. 配置学习率衰减策略时,训练的上限轮数一定要计算正确。
  3. BatchSize不宜过大,太大容易内存溢出,且一般为2次幂。

3、模型训练方式

  • 基于高层API训练模型

通过Model.prepare接口来对训练进行提前的配置准备工作,包括设置模型优化器,Loss计算方法,精度计算方法等。

  • 使用PaddleX训练模型

YOLOv3模型的训练接口示例,函数内置了piecewise学习率衰减策略和momentum优化器。

三、超参优化

1、什么是超参数?

超参数指的是模型外部的配置变量,是不能通过训练的进行来估计其取值不同的,且不同的训练任务往往需要不同的超参数。

超参数不同,最终得到的模型也是不同的。

一般来说,超参数有:学习率迭代次数网络的层数每层神经元的个数等等。

常见的超参数有以下三类:

  1. 网络结构,包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等 .
  2. 优化参数,包括优化方法、学习率、小批量的样本数量等 .
  3. 正则化系数

实践中,当你使⽤神经⽹络解决问题时,寻找好的超参数其实是一件非常困难的事情,对于刚刚接触的同学来说,都是"佛系调优",这也是一开始就"入土"的原因,没有依据的盲目瞎调肯定是不行的。

2、手动调整超参数的四大方法

我们在使用某一网络时,一般是比较好的论文中出现过的,是证明过的,当然也可以直接套用,然后在这个基础上,调参。

可是如果识别的领域不同,比如同样是LeNet网络,在解决手写数字识别时使用的超参数能得到很好的效果,但是在做眼疾识别时,因为数据集的不同,虽然使用同样的超参数,但是效果可能并不理想。

在<< Neural Network and Deep Learning >>这本书中,作者给出⼀些⽤于设定超参数的启发式想法。⽬的是帮读者发展出⼀套工作流来确保很好地设置超参数。这里我把书上的内容总结一下,再结合自己的思考,与大家共同探讨调整超参数的方法论。

不过呢,目前不存在⼀种通用的关于正确策略的共同认知,这也是超参数调节的"玄学"之处。

  • 使用提前停止来确定训练的迭代次数

  • 让学习率从高逐渐降低

  • 宽泛策略

  • 小批量数据(mini-batch)大小不必最优

四、效果展示

1、可视化输入与输出

最直接的方法

import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread(PATH_TO_IMAGE)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img)
plt.show()

2、巧用VisualDL

VisualDL文档:https://ai.baidu.com/ai-doc/AISTUDIO/Dk3e2vxg9#visualdl%E5%B7%A5%E5%85%B7

3、权重可视化

InterpretDL源码:https://github.com/PaddlePaddle/InterpretDL

五、总结

  • 只有搞懂了神经网络工作的基本原理,才能更好地进行超参优化,得到效果更好的模型。
  • 要学会SubClass形式组网,使用套件虽然简单,但可定制化程度较低。
  • 模型训练是本文中最简单的部分,只需要按照文档操作即可,但超参数的选择有很多讲究,超参的好坏往往会影响模型的最终结果
  • 效果展示是一个项目的加分项,可视化可以更好地展示你的工作成果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值