【轻量级网络】华为诺亚:VanillaNet

0. 前言

随着人工智能芯片的发展,神经网络推理速度的瓶颈不再是FLOPs或参数量,因为现代GPU可以很容易地进行计算能力较强的并行计算。相比之下,神经网络复杂的设计和较大的深度阻碍了它们的速度。在此背景下,华为诺亚提出了极简网络架构VanillaNet,在ImageNet数据集上,深度为6的网络即可取得76.36%的精度,深度达到13时便能取得83.1%的精度!

1. 网络结构

在这里插入图片描述
深度为6的VanillaNet结构如上图所示,一共包括三个部分:

  • stem部分:一个4×4卷积 + 激活层
  • body部分:由3个卷积模块组成,每个卷积模块由“1×1卷积+MaxPool+激活层”构成
  • head部分:由“1×1卷积 + 激活 + 1×1卷积”组成

虽然VanillaNet的体系结构简单且相对较浅,但其微弱的非线性限制了其性能,因此,作者们从训练策略和激活函数这两个角度来解决该问题。

2. VanillaNet非线性表达能力增强策略

2.1 深度训练

简单来说,就是将激活函数 A ( x ) A(x) A(x)替换为 A ′ ( x ) A^{\prime}(x) A(x),如下式:
在这里插入图片描述
其中, λ = e E \lambda= \frac{e}{E} λ=Ee e e e表示当前epoch, E E E表示总epoch数。因此,在训练开始时, λ = 0 \lambda=0 λ=0,此时 A ′ ( x ) = A ( x ) A^{\prime}(x)=A(x) A(x)=A(x),网络具有很强的非线性;当训练结束时, λ = 1 \lambda=1 λ=1,此时 A ′ ( x ) = x A^{\prime}(x)=x A(x)=x,意味着两个卷积层中间没有激活函数,满足线性条件,可以通过重参数化转换为单个卷积层,从而减小网络深度。

2.2 扩展激活函数

改善神经网络非线性表达能力的方法有两种:叠加非线性激活层或增加每个激活层的非线性,而现有网络的趋势是选择前者,当并行计算能力过剩时,会导致较高的延迟。提高网络非线性的一个直接思想是堆,激活函数的连续叠加是深度网络的关键思想。在VanillaNet中,作者们独辟蹊径,转向并行地堆叠激活函数,如下式:
在这里插入图片描述
其中, n n n为并行激活函数的数量, a i a_i ai b i b_i bi分别为尺度因子和偏执,以避免简单地累加。为进一步丰富表达能力,参考BNET,作者为其引入了全局信息学习能力,此时激活函数表示如下:
在这里插入图片描述
这部分建议直接看代码,实现起来就是relu激活后接depthwise卷积,padding设置为并行激活的数量 n n n

3. 总结

如果能够将深度训练和重参数化合理地结合起来,就是模型压缩利器,大有文章可做,挖个坑~

4. 参考

VanillaNet: the Power of Minimalism in Deep Learning

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值