MobileNet v2 核心总结
MobileNet v2 若干理论解释
在MobileNet v2结构中,由两个基本结构,一种是plain类型的Linear Bottlenecks;另外一种是残差类型的Inverted residuals
在可视化之前,先说说,为啥要这样做?这里引用了论文中的两个猜想:
- If the manifold of interest remains non-zero volume after ReLU transformation, it corresponds to a linear transformation.
- ReLU is capable of preserving complete information about the input manifold, but only if the input manifold lies in a low-dimensional subspace of the input space
这里解释一个词manifold of interest,作者将 w×h×c w × h × c 的一个feature map 理解成特征图上的一个点由c维特征!而manifold of interest表示对于我们分类或者识别任务的有用的特征,显然要提高分类识别精度,则manifold of interest需要分布在这c维特征空间或其子空间中!这是manifold of interest想要表达的意思。
此外,再来说说激活函数在深度网络特征表达上起了什么作用?这里作者以ReLU为例。
如上图,最左边是输入到ReLU的特征,后面几张图都是,通过
Y=ReLU(wx+b)
Y
=
R
e
L
U
(
w
x
+
b
)
的结果,可以理解为不同全连接神经网络,从图中可以看到,当输出的维度比较低时,输入信息实际上是损失比较大的,但是当输出维度比较高时,输入信息能够保留下来
因此,作者得出了两个结论:
(1)激活函数ReLU能够导致,输入信息的丢失;
(2)如果将输出维度提高的话,采用ReLU之后,信息丢失比较少。
在文中,作者是这样解释的:
when ReLU collapses the channel, it inevitably loses information in that channel. However if we have lots of channels, and there is a a structure in the activation manifold that information might still be preserved in the other channels.
意思就是,采用ReLU激活函数不可避免的导致输入信息的流逝,但是当我们有很多维特征,某一特征经过ReLU的时候,丢失了。但是,相同的特征可能保留在其他维度!
因此,我们在搭建网络的时候,怎么采用呢?(怎么采用文章中提出的两个猜想)
首先借鉴猜想2,假设输入特征图中包含了,分类识别所需的所有特征分布(manifold of interest)在输入的c个维度中。因此,我们首先将输入维度进行拓展,拓展成
t timesc
t
t
i
m
e
s
c
个维度(t为拓展系数,大于1)(显然,这里有点像机器学习中的核函数),因此,分类识别所需的所有特征分布在
t timesc
t
t
i
m
e
s
c
的子空间中,这时候,采用ReLU激活函数能够保留输入的特征。
然后借鉴猜想1,通过ReLU激活函数之后,特征的维度依然是 t timesc t t i m e s c 这个时候缩小其特征维度变成 c′ c ′ ,相当于对manifold of interest进行了维度压缩,当然这些特征都是非0的,因此,按照猜想1,ReLU对非0的特征相当于做了一个线性的映射,因此,就可以去掉ReLU激活函数。
但是还有一个问题就是,对特征图进行维度扩展,势必真的计算量,这里就采用了将一个普通的卷积操作分为depthwise convolution和pointwise convolution减少权值和计算量,其基本结构如下图所示:
再来说,Inverted residuals结构,其实就是为了方便网络反向传播,而加上的Skip Connection结构,其本质还是一样的!不过就是,正常的残差结构都是在Blockneck减少特征维度,而这里增加特征维度,道理和前面一样的!
可视化
plain Linear Block
Inverted residuals