文章

04 网络中的网络(Network in Network, NiN)

04 网络中的网络(Network in Network, NiN)

04 网络中的网络(Network in Network, NiN)

1. 核心概念:1×1 卷积的本质

初看 1×1 卷积似乎仅是对单像素点的操作,但在多通道特征图中,它实际上是在通道维度上进行的线性组合。

单通道情况

  • 若输入为单通道图像(例如 6×6×1),1×1 卷积确实等价于对每个像素进行标量乘法,作用有限。
  • 计算公式为:

    \[\text{Output}_{ij} = w \cdot \text{Input}_{ij}\]

    其中 $w$ 是单个权重参数。

多通道情况

  • 当输入具有 $C_{in}$ 个通道时(例如 6×6×32),1×1 卷积核实际上是 1×1×$C_{in}$ 的张量。
  • 它对每个空间位置(i, j)上所有通道的数值进行加权求和。
  • 计算公式为:

    \[\text{Output}_{ijk} = \text{ReLU}(\sum_{c=1}^{C_{in}} W_{kc} \cdot \text{Input}_{ijc} + b_k)\]

    其中:

    • $\text{Input}_{ijc}$ 是输入特征图在 $(i, j)$ 位置、第 $c$ 个通道的值。
    • $W_{kc}$ 是第 $k$ 个滤波器在第 $c$ 个通道上的权重。
    • $b_k$ 是偏置项。
    • $\text{ReLU}$ 是激活函数,引入非线性。

2. 1×1 卷积的三个主要功能

本节课强调了 1×1 卷积在现代 CNN 架构(如 Inception)中的关键作用:

降维(减少计算量)

  • 问题:深层网络中通道数(Channels)往往很大(如 192 或更多),导致后续卷积层的计算量呈平方级增长。
  • 解决方案:使用较少数量的 1×1 滤波器进行压缩。
  • 示例:将 28×28×192 的输入压缩为 28×28×32。

    • 这不仅保留了空间信息,还大幅减少了后续层需要处理的数据量。
    • 此操作被称为“瓶颈层(Bottleneck Layer)”。

升维(增加非线性)

  • 解决方案:若想保持通道数不变或增加,同时引入非线性。
  • 原理:通过堆叠 1×1 卷积层,网络可以学习通道间的复杂依赖关系。即使输入输出通道数相同(如 28×28×192 → 28×28×192),这一过程也相当于在通道维度上应用了多层感知机(MLP)。

引入非线性(Network in Network)

  • 理念:论文《Network in Network》提出,在常规卷积层后使用 1×1 卷积来增加模型的非线性表达能力。
  • 解释:可以将 1×1 卷积理解为在每个像素位置上应用了一个全连接神经网络。它在不增加感受野大小的情况下,增强了特征的组合能力。

3. 总结与应用展望

  • “网络中的网络” :这一概念通过在常规卷积结构中嵌入多层感知机式的结构(即 1×1 卷积),提升了模型的抽象能力。
  • Inception 网络的铺垫:本节课为下一节内容埋下伏笔。在 Inception 模块中,1×1 卷积被广泛用于降维,以解决计算量爆炸的问题,使得深层极宽的网络(如 GoogLeNet)能够被实际训练。

简而言之,1×1 卷积是深度学习中处理通道间信息交互的“瑞士军刀”,它通过简单的数学操作实现了降维、升维和增强非线性的复杂功能。

本文由作者按照 CC BY 4.0 进行授权