文章目录

  • 一、模型结构优化
    • 1.1 基于深度和参数量
    • 1.2 基于宽度和多尺度
    • 1.3 基于残差连接
    • 1.4 基于不规则卷积
    • 1.5 基于注意力机制
    • 1.6 基于Transformer
    • 1.7 优化示例
  • 二、模型性能优化
    • 2.1 量化
    • 2.2 剪枝
    • 2.3 知识蒸馏
  • 三、模型训练优化
    • 3.1 数据处理
    • 3.2 超参数
    • 3.3 损失函数
  • 四、模型自动搜索
    • 4.1 搜索空间
    • 4.2 搜索策略
    • 4.3 常用工具分享

一、模型结构优化

1.1 基于深度和参数量

从LeNet5到AlexNet,再到VGGNet,主要以卷积、池化、全链接构成,层数不断加深,参数不断增多。

1.2 基于宽度和多尺度

Inception系列相较于VGGNet,参数量更少,精度更高,得益于Inception Module的多尺度设计和特征融合思想,以宽度取胜。

1.3 基于残差连接

1.4 基于不规则卷积

不规则卷积的引入,不仅可以让采样视野大于常规卷积,还可以自由调节感受野的形状,适应更加灵活的目标尺度,例如 可变形卷积 deformable convolutional networks

1.5 基于注意力机制

注意力机制(attention)的引入,基本思想就是让系统学会注意力 – 关注重点信息,同时忽略无关信息。包括空间域注意力、通道域注意力、层域注意力、混合域注意力等

1.6 基于Transformer

CV领域新范式,目前基于Transformer的CV模型已经成为了新的SOTA。Transformer关注全局信息,能建模更加长距离依赖关系,避免了CNN中存在的归纳偏好问题,但复杂度较高。

1.7 优化示例


二、模型性能优化

2.1 量化

在另一方面,如果我们能够将浮点型存储的模型转化为8bit甚至4bit、2bit存储时,不仅模型所占空间大幅度减小,计算量也会降低。所以在实际工程应用中,量化(Quantization)是很常见的做法。

2.2 剪枝

许多论文和实验证明,我们经常使用的神经网络模型都是过参数化的,即一个训练好的模型,其内部许多参数都是冗余的,如果能够使用适当的方法将这些参数删除掉,对模型的最终结果是几乎没有影响的。而剪枝(Pruning)就是很好的的例子。

2.3 知识蒸馏

剪枝和量化都是从模型速度和存储方面来进行性能优化的,也就是说他们可以降低模型计算量,却无法提高模型精度。那么如何能够直接使用一个很小的网络,得到更好的精度,就显得十分重要,这时知识蒸馏(Knowledge Distilling)就起到了关键作用。

目前知识蒸馏的方法大致可以分为以下三种

  • Response based distillation:教师模型对学生模型的输出进行监督

    最早的知识蒸馏算法 KD,由 Hinton 提出,训练的损失函数中除了 gt loss 之外,还引入了学生模型与教师模型输出的 KL 散度,最终精度超过单纯使用 gt loss 训练的精度。这里需要注意的是,在训练的时候,需要首先训练得到一个更大的教师模型,来指导学生模型的训练过程。(PaddleClas基于此提出了SSLD知识蒸馏法)

  • Feature based distillation:教师模型对学生模型的中间层 feature map 进行监督

    Heo 等人提出了 OverHaul [8], 计算学生模型与教师模型的 feature map distance,作为蒸馏的 loss,在这里使用了学生模型、教师模型的转移,来保证二者的 feature map 可以正常地进行 distance 的计算。(PP-OCRv2基于此方法大幅度提升了识别精度)

  • Relation based distillation:对于不同的样本,使用教师模型和学生模型同时计算样本之间 feature map 的相关性,使得学生模型和教师模型得到的相关性矩阵尽可能一致

    关系知识蒸馏(RKD)迁移教师模型得到的输出结果间的结构化关系给学生模型,不同于之前的只关注个体输出结果,RKD 算法使用两种损失函数:二阶的距离损失(distance-wise)和三阶的角度损失(angle-wise)。在最终计算蒸馏损失函数的时候,同时考虑 KD loss 和 RKD loss。最终精度优于单独使用 KD loss 蒸馏得到的模型精度。

三、模型训练优化

3.1 数据处理

  • 随机裁剪、随机变换宽高比等
  • 高斯模糊、中值模糊、马赛克等
  • 亮度变化、对比度变化、色彩变化等
  • 随机噪声、随机遮挡、复制粘贴等
  • 旋转、平移、翻转、畸变等
  • 大尺度训练或者多尺度训练等

3.2 超参数

  • 学习率调节:比如调节为可变学习率,开始大,然后慢慢减小,或者周期性变换等
  • 规范化参数调节:规范化往往与学习率相关,一般情况下默认规范化参数就可以满足要求
  • 批大小调节:适配自己的算力,选择适中的批大小;或者使用某个框架时,参照其文档或论文说明来做
  • 迭代轮数调节:迭代轮数过多可能过拟合,过少可能欠拟合,需要在训练中摸索经验,找到大致合适的范围,或者采用提前终止策略等

3.3 损失函数

  • 类别损失函数:交叉熵、Focal loss、Center loss等
  • 位置损失函数:L1、L2、Smooth L1、 IoU loss、GIoU loss等
  • 语义分割损失函数:DICE loss、lovasz loss等

四、模型自动搜索

神经网络结构自动搜索流程

​ 神经网络结构自动搜索可以看作是AutoML的一个子领域,简单来说,给定数据集输入和基本配置,它就能够针对该数据集找到最适合的神经网络结构,并且给出最佳的超参数。

4.1 搜索空间

  • 定义了神经架构搜索可能给出的模型。它可以是链式的结构,第n-1层的输出作为第n层的输入,或者也可以是现代化的复杂架构,包括skip connection等。
  • 很多时候,人们都想手动设计外层的架构,在这种情况下,外层的架构是固定的,神经架构搜索只搜索一个网络单元的结构。这种类型的搜索被称为micro-search 或者单元搜素。

4.2 搜索策略

  • 一旦定义好了搜索空间,能不能快速找到最佳模型结构和最佳超参数配置,搜索策略就起到了关键性的作用。目前主流的搜索方法有基于强化学习(RL)、进化算法(EA)等多种方向,基于这些基础算法衍生出来的自动搜索算法现在也是百花齐放。
  • PaddleSlim提供了4种网络结构搜索的方法:基于模拟退火进行网络结构搜索、基于强化学习进行网络结构搜索、基于梯度进行网络结构搜索和Once-For-All

4.3 常用工具分享

  • skimage:图像处理和计算机视觉算法的集合工具包

  • opencv:图像处理和计算机视觉算法的集合工具包

  • imgaug:图像数据增强工具

  • NumPy:科学计算基础软件包,可以存储和处理大型矩阵及其运算,最常用的科学计算库之一

  • SciPy:科学计算核心库,基于NumPy;主要有助于解决线性代数、概率论和积分计算等任务

  • Pandas:提供诸多高级数据结构和分析工具,适用于绝大多数数据类竞赛

  • Scikit-learn:基于NumPy和SciPy的数据处理库,最常见的机器学习和数据挖掘任务算法工具之一

  • Albumentations:图像数据增强工具

  • Augmentor:图像数据增强工具

  • Matplotlib:创建二维图表和图形库,目前很多流行的绘图库都是基于它构建(例如seaborn)

  • VisualDL:飞桨可视化分析工具,拥有丰富的图表和图形,为飞桨训练提供最直观地可视化帮助,进而实现高效模型优化* paddledetection, paddleclas, paddleseg, mmdetection, detectron等:各大平台开源的快速上手的训练框架

CH1-模型训练优化相关推荐

  1. 喜马拉雅基于阿里云机器学习平台PAI-HybridBackend的深度学习模型训练优化实践

    喜马拉雅作者:李超.陶云.许晨昱.胡文俊.张争光.赵云鹏.张玉静 喜马拉雅AI云借助阿里云提供的HybridBackend开源框架,实现了其推荐模型在 GPU 上的高效训练. 业务介绍 推荐场景是喜马 ...

  2. 阿里云PAI-DeepRec CTR 模型性能优化天池大赛——获奖队伍技术分享

    阿里云联合英特尔举办的"创新大师杯"全球AI极客挑战赛--PAI-DeepRec CTR模型性能优化挑战赛已结束 ,此次大赛旨在DeepRec中沉淀CTR模型新的优化思路和优化方向 ...

  3. 模型训练的性能优化方法

    文章翻译自VADIM IRTLAC大佬的文章,用于解决模型训练时显存和速度的优化.原文请

  4. Pytorch模型训练实用教程学习笔记:四、优化器与学习率调整

    前言 最近在重温Pytorch基础,然而Pytorch官方文档的各种API是根据字母排列的,并不适合学习阅读. 于是在gayhub上找到了这样一份教程<Pytorch模型训练实用教程>,写 ...

  5. Kaggle经典数据分析项目:泰坦尼克号生存预测!1. 数据概述与可视化2. 数据预处理3. 模型训练4. 模型优化(调参)

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习 ,不错过 Datawhale干货 作者:陈锴,中山大学,Datawhale成员 最近有很多读者留言,希望 ...

  6. 详谈大模型训练和推理优化技术

    详谈大模型训练和推理优化技术 作者:王嘉宁,转载请注明出处:https://wjn1996.blog.csdn.net/article/details/130764843 ChatGPT于2022年1 ...

  7. 阿里 NIPS 2017 Workshop 论文:基于 TensorFlow 的深度模型训练 GPU 显存优化

    NIPS 2017 在美国长滩举办,场面非常热烈.阿里巴巴一篇介绍深度模型训练 GPU 显存优化的论文<Training Deeper Models by GPU Memory Optimiza ...

  8. PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepS库-减少参数的冗余+优化通信)的简介(四大核心(模型分片/梯度累积/内存优化/分布式训练)、两大优化(非精度/冗余消除))、ZeRO3三个版

    PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepSpeed库-减少参数的冗余+优化通信)的简介(四大核心技术(模型分片/梯度累积/内存优化/分布式训练).两大优化技术(ZeRO-Offloa ...

  9. 【深度】工程师必备—AI模型训练+推理优化+嵌入部署

    文章目录 一 项目展示 二 依赖环境与导读 2.1依赖环境 2.2 本文导读 三 模型训练 3.1 新手也能做对的教学 3.2 高手也爱的黑科技:无损的半精度模型 四 模型优化 4.1 Openvin ...

最新文章

  1. delphi webbrowser 对象不支持_【Python 秘籍】排序不支持原生比较的对象
  2. docker逃逸漏洞复现 cve-2019-5736
  3. 二级专业目录计算机(软件)类,一、二级学科专业目录及名称代码表
  4. python 人脸对比--百度API人脸相似度识别(超简单)
  5. 初学者用什么数位板好,手绘板选择注意什么?
  6. 安装音量控制程序 WINDOWS
  7. 豆瓣电影小程序服务器,微信小程序实战:仿豆瓣电影
  8. 37天熟练掌握百度竞价推广系列视频教程
  9. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容柒哥都给你总结在这儿了...
  10. 《我们终将遇到爱与孤独》
  11. 约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】
  12. vue 兼容IE解决方案, Babel .babelrc
  13. 美媒称俄黑客造成卡塔尔断交潮 俄:啥事都栽给我
  14. 每天杂事一大堆,你应付的过来吗?
  15. 色彩空间与色彩模型 RGB/CMYK/YCbCr/HSB/HSI/HSV
  16. 你做的数据运营,90%都是无用功
  17. c语言输出函数语句,c语言输出语句及格式输出函数介绍
  18. qq飞车与服务器未响应,QQ飞车游戏安装失败系统错误提示问题解决方法_QQ飞车游戏安装失败怎么办_游戏堡...
  19. Dynamics 365 安装Report Authoring Extension时,提示重新启动的问题
  20. 电商平台订单交易数据分析

热门文章

  1. 人像调色效果Lr预设
  2. 使用UTM安装windows7
  3. 思科模拟器 --- 快速生成树协议RSTP配置
  4. 实验十六 matplotlib数据可视化
  5. LOJ2402 [THUPC2017] 天天爱射击 / Shooting 二分查找+主席树
  6. 编程语言的起源和发展
  7. “结巴”中文分词:做最好的 Python 中文分词组件
  8. 斯坦福sr860锁相放大器原理介绍
  9. 2022年电商商家如何用微查宝防止降权号引响店铺权重
  10. Python英文语音识别终极手册