干货|深度学习中的重参数技巧

作者丨灿视
来源丨灿视学长
编辑丨极市平台

极市导读

本文介绍的重参数技巧主要包含两方面,一种是用于生成模型中的重参数技巧,一种是目前比较火的RepVGG等合并参数的技巧。

重参数技巧的简述

大家好,我是灿视。今天来聊聊重参数技巧~ 现在说的重参数技巧主要是两方面,一种是用于生成模型中的重参数技巧,一种是目前比较火的  等合并参数的技巧。我这里也主要讨论下这两种技巧,简单的分享一下。
水平有限,如有错误,恳请批评指正。欢迎各位关注我们,关注最硬核的计算机视觉算法面经!

生成模型中的重参数技巧
生成模型很多,主要包括如 , 为代表及其一系列变形的生成模型。我们今天主要聊聊 ~
当然,不是我的老乡, 许嵩哈。
抱歉,不是我
今天说到的  长这个样子:
具体的  推导,后面我们会进行详细描述,其中会涉及到变分的东西。今天我们来看下其重参数技巧。
如右边的操作,就是运用了  的技巧。
左边的  方案,即我们从一个分布中,进行采样,来生成一个图片。而由于 , 我们应该从  采样, 但这个采样操作对  和  是不可导的, 导致常规的通过误差反传的梯度下降法 (GD) 不能使用。
而通过 , 我们首先从  上采样 , 然后,  。这样, , 而且, 是编码器网络的输出, 只涉及线性操作,  对神经网络而言只是常数 , 因此, 可 以正常使用梯度下降进行优化。
对于  具体推导的细节以及其损失函数,我们后面会详细进行介绍的。这里我们只是简单介绍下  的重参数技巧。


网络结构中的重参数技巧

我这里主要也给大家分享下,在网络结构中的重参数技巧
  • 卷积层+BN层融合

卷积层公式为:

而BN层公式为:

然后我们将卷积层结果带入到BN公式中:

进一步化简为

这其实就是一个卷积层, 只不过权盖考虑了BN的参数。我们令:

最终的融合结果即为:

  • RepVGG

RepVGG结构示意图
中主要的改进点包括:
  • 在  网络的  块中加入了  和残差分支,相当于把  网络中的精华应用 到  网络中;
  • 模型推理阶段,通过  融合策略将所有的网络层都转换为   * ,便于模型的部署与加速。
  • 网络训练和网络推理阶段使用不同的网络架构,训练阶段更关注精度,推理阶段更关注速度。
Reparameter的操作
上图展示了模型推理阶段的重参数化过程,其实就是一个 OP 融合和 OP 替换的过程。图 A 从结构化的角度展示了整个重参数化流程, 图 B 从模型参数的角度展示了整个重参数化流程。整个重参数化步骤如下所示:
  • 首先通过式3将残差块中的卷积层和BN层进行融合。途中第一个蓝色箭头上方,完成了几组卷积与的融合。包括执行  * +层的融合,图中的黑色矩形框中执行  * +层的融合,图中的黄色矩形框中执行  * (卷积核设置为全1)+层的融合
    融合的公式为:
其中表示转换前的卷积层参数,  表示BN层的均值,  表示BN层的方差,  和  分别表示BN层的尺店因子和偏移因 子, 和b'分别表示融合之后的卷积的权重和偏置。
  • 将融合后的卷积层转换为  * ,即将具体不同卷积核的卷积均转换为具有 * 大小的卷积核的卷积。由于整个残差块中可能包含  * 分支和两种分支。对于  * 分支而言,整个转换过程就是利用 * 的卷积核替换 * 的卷积核,即将 * 卷积核中的数值移动到 * 卷积核的中心点即可;对于分支  而言,该分支并没有改变输入的特征映射的数值,那么我们可以设置一个 * 的卷积核,将所有的个位置处的权重值都设置为1,那么它与输入的特征映射相乘之后,保持了原来的数值。

  • 合并残差分支中的  * 。即将所有分支的权重和偏置叠加起来,从而获得一个融合之后的  * 网络层。

    参考代码:

    def _fuse_bn_tensor(self, branch):
          if branch is None:
              return 0, 0
          if isinstance(branch, nn.Sequential):
              kernel = branch.conv.weight
              running_mean = branch.bn.running_mean
              running_var = branch.bn.running_var
              gamma = branch.bn.weight
              beta = branch.bn.bias
              eps = branch.bn.eps
          else:
              ...
          std = (running_var + eps).sqrt()
          t = (gamma / std).reshape(-1, 1, 1, 1)
          return kernel * t, beta - running_mean * gamma / std

总结

今天给大家分享了两个重参数技巧。一个是用于生成模型中,一个是用于网络结构中。对于生成模型,重参数技巧可以解决条件概率不可积分的问题。对于网络结构中,重参数技巧,可以加速网络的前向部署速度
(0)

相关推荐

  • jenkins学习10-参数化构建(构建git仓库分支)

    前言 当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支. Git Parameter插件 先下载 Git P ...

  • 清华&旷视:让VGG再次伟大!

    CNN经典模型VGG自2014年诞生以来,由于相比于各种多分支架构(如ResNet) 性能不佳,已渐"没落"-- 但来自清华大学和旷视科技等机构的研究人员,他们居然只用3x3卷积和 ...

  • RepVGG:让VGG网络再次变成最优秀的网络

    点击上方"深度学习爱好者",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为 ...

  • 进可暴力提性能,退可无损做压缩:结构重参数化技术综述

    作者丨科技猛兽 编辑丨极市平台 极市导读 结构重参数化技术是一种很巧妙的让模型同时具备"简单"的架构和"优秀"的参数的方法.本文介绍了两篇来自清华大学丁贵广老师 ...

  • 这个线粒体形态学软件,好用还免费

    做细胞研究,怎么能不会线粒体? 线粒体(Mitochondrion)是一种存在于大多数细胞中的由两层膜包被的细胞器,是细胞中制造能量的结构,是细胞进行有氧呼吸的主要场所. 活细胞中线粒体存在融合和裂变 ...

  • YOLObile:面向移动设备的「实时目标检测」算法

    作者提出了一种通过从压缩.编译两个角度,在保证模型准确率的基础上,减小模型的大小,并提升模型在移动设备端的运行速度. 通过所提出的YOLObile framework,将YOLOv4压缩了14倍,准确 ...

  • AI:人工智能概念之机器学习、深度学习中常见关键词、参数等中英文对照(绝对干货)

    AI:人工智能概念之机器学习.深度学习中常见关键词.参数等中英文对照(绝对干货) 导读      本博主基本收集了网上所有有关于ML.DL的中文解释词汇,机器学习.深度学习中常见关键词.参数等中英文对 ...

  • 干货|卷积有多少种?一文读懂深度学习中的各种卷积

    重磅干货,第一时间送达 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又有多少种类吗?研究学者 Kunlun Bai 近日发布一篇介绍深度学习的卷积文章,用浅显易懂的方式介绍了深度学习 ...

  • 深度学习中的知识蒸馏技术(下)

    本文概览: 写在前面: 这是一篇介绍知识蒸馏在推荐系统中应用的文章,关于知识蒸馏理论基础的详细介绍,请看上篇文章: 1. 背景介绍 1.1 简述推荐系统架构 如果从传统角度来看实际的工业推荐系统,粗略 ...

  • 深度学习中的知识蒸馏技术

    本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...

  • 一文概览深度学习中的激活函数

    人工智能算法与Python大数据 致力于提供深度学习.机器学习.人工智能干货文章,为AI人员提供学习路线以及前沿资讯 23篇原创内容 公众号 点上方人工智能算法与Python大数据获取更多干货 在右上 ...

  • 总结 | 一文读懂深度学习中的各种卷积

    仅作学术分,如有侵权,联系删除 转载于 :机器之心,towardsdatascience 如果你听说过深度学习中不同种类的卷积(比如 2D / 3D / 1x1 /转置/扩张(Atrous)/空间可分 ...

  • 透过新视角理解深度学习中的泛化

    文 / Google Research 团队 Hanie Sedghi 和哈佛大学 Preetum Nakkiran 如何理解泛化是深度学习领域尚未解决的基础问题之一.为什么使用有限训练数据集优化模型 ...

  • 使用Numpy进行深度学习中5大反向传播优化算法的性能比较

    OSC开源社区 昨天 以下文章来源于DeepHub IMBA ,作者P**nHub兄弟网站 在本文中,我们将通过计算二次凸函数的最优点来比较主要的深度学习优化算法的性能. 简介 深度学习被称为人工智能 ...

  • 深度学习中的对抗性攻击都有哪些?怎么防御?

    2021-06-10 18:20 深度学习中的对抗性攻击都有哪些?怎么防御? 中国工程院院刊© 本文来自微信公众号:中国工程院院刊(ID:CAE-Engineering),作者:任奎.Tianhang ...