如果我们在卷积层之后执行最大池化,是否需要非线性激活函数?

人工智能 深度学习 卷积神经网络 激活函数 汇集 最大池化
2021-11-05 16:05:17

如果卷积层的结果通过滑动窗口max函数,如max-pooling,本身就是非线性的,是否需要使用非线性激活函数(ReLU、LeakyReLU、Sigmoid等)?那么平均池化呢?

1个回答

让我们首先回顾一下为什么计算两个或多个数字之间的最大值的函数,z=max(x1,x2), 不是线性函数。

线性函数定义为y=f(x)=ax+b, 所以y随着线性增加x. 视觉上,f对应于一条直线(或超平面,在 2 个或更多输入变量的情况下)。

如果z不对应这样的直线(或超平面),那么它不能是线性函数(根据定义)。

x1=1然后让x2[0,2]. 然后z=max(x1,x2)=x1对所有人x2[0,1]. 换句话说,对于子范围x2[0,1], 之间的最大值x1x2是一个常数函数(一条水平线在x1=1)。但是,对于子范围x2[1,2],z相当于x2, 那是,z随着线性增加x2. 鉴于 max 在特殊情况下不是线性函数,因此通常也不能是线性函数。

这是两个数字之间最大值的图(用Wolfram Alpha计算)(因此它显然是两个变量的函数,因此图是 3D 的)。

在此处输入图像描述

请注意,在此图中,两个变量,xy, 可以线性增加,而不是固定其中一个变量(我只是用来给您一个简单且希望直观的示例,即最大值不是线性函数)。

在卷积网络的情况下,虽然最大池化是一种非线性操作,但它主要用于降低输入的维数,从而减少过拟合和计算量。在任何情况下,最大池化都不会对输入元素进行非线性变换

平均函数是线性函数,因为它随输入线性增加。这是两个数字之间的平均值图,这显然是一个超平面。

在此处输入图像描述

在卷积网络的情况下,平均池化也用于降低维度。

为了更直接地回答您的问题,非线性通常按元素应用,但是最大池化和平均池化都不能做到这一点(即使您使用1×1窗口,即你根本不下采样)。

尽管如此,在卷积操作之后不一定需要非线性激活函数(如果使用最大池化),但性能会比使用非线性激活更差,如系统评估论文中所述CNN 在 ImageNet 上的进步(图 2)。