个人对MobileNet V2的理解

我不准备具体描述MobileNet V2的结构。我只想在论文中寻找一些更加本质的东西,关于普通卷积分解、feature map线性组合以及激活函数的,更加本质的东西。

首先,引入一个概念,layer activation。指的其实就是是卷积层的输出。

我们知道layer activation是有冗余信息的,也就意味着其中所包含的有用信息具有潜在的稀疏性。如果把layer activation看成一个N维空间,这些有用信息就是整个N维空间中的一个manifold,而且manifold的维度小于N。举个例子,三位空间中的一块二维平面,此时的二维平面就是三维空间中的一个manifold。

上述阐述是神经网络稀疏性的基础,我们依据上面的结论对神经网络进行压缩,改进,比如MobileNet V1,还有ResNet中的瓶颈模型,瓶颈模型将高维的输入空间压缩到低维,进行3X3卷积后再线性组合到高维。

那么考虑一个问题,在理想状况下,N维的layer activation被一组1X1卷积核压缩到了M维,而有用信息组成的manifold的维度也是M维,而且理想地,所有的有用信息都被保留了下来,并且占据了M维空间中所有的维度。那么此时,对M维空间进行一个Relu,会发生什么?空间被砍掉了一半,在所有的维度上。可想而知,这有很大的可能性会带来有用信息的丢失,怎么才能不丢失信息?用线性激活。

只用线性激活肯定是不行的,只用线性激活的神经网络等于一个线性变换——不管深度有多深结构有复杂。我们知道,非线性激活如果用在没有冗余的activation上会损失信息,所以自然地,将非线性激活用在有冗余的activation上,将线性激活用在没有冗余的activation上。这样既兼顾了非线性,也避免了信息的丢失。

怎么组织这个网络呢?最粗暴的方法是用一个巨大的模型来确保信息存在冗余,这显然是不可行的。另一个方法是交替冗余和非冗余layer,既能控制模型尺寸,也能确保足够的非线性。这就带来一个问题,我们把残差用在哪?最好的选择是用在非冗余层,因为残差对显存的占用非常巨大,而且冗余和非冗余layer所携带的有用信息是一样多的。那么,自然而然地,答案出来了——MobileNet V2。

你可能感兴趣的:(个人对MobileNet V2的理解)