神经网络图像输入零均值化的作用

本文详细解释了神经网络图像输入为什么要进行零均值化,通过对比归一化和标准化,强调了零均值化在图像数据预处理中的重要性。文章通过分析sigmoid、tanh和ReLU三种激活函数,揭示了零均值化如何避免‘Z型更新’,加速神经网络的收敛速度。特别是对于Sigmoid和ReLU,零均值化对于第一层的收敛至关重要,而tanh函数由于其自身零均值特性,在网络后续层中也有利于收敛。
摘要由CSDN通过智能技术生成

神经网络图像输入零均值化的作用

最近有和同学探讨到为什么CNN在做图像识别相关任务时,对图像需要进行零均值化,CS231N里面有进行讲述,但讲得其实不是很清楚,比较难理解,所以在这里做一下较为详细的说明。

1 归一化、标准化和零均值化基本概念

首先介绍一下归一化(Normalization)、标准化(Standardization)以及零均值化(zero-mean)分别的公式和概念。归一化的公式为
x ∗ = x − x m i n x m a x − x m i n x^*=\frac{x-x_{min}}{x_{max}-x_{min}} x=xmaxxminxxmin
其中 x x x为某个特征的原始值, x m i n x_{min} xmin为该特征在所有样本中的最小值, x m a x x_{max} xmax为该特征在所有样本中的最大值, x ∗ x^* x为经过归一化处理后的特征值。可以看出,通过该公式,某个特征的值会被映射到[0,1]之间,消除量纲对最终结果的影响,使不同的特征具有可比性。

标准化的公式为
x ∗ = x − μ σ x^* = \frac{x-\mu}{\sigma} x=σxμ
其中 x x x为某个特征的原始值, μ \mu μ为该特征在所有样本中的平均值, σ \sigma σ为该特征在所有样本中的标准差, x ∗ x^* x为经过标准化处理后的特征值。即将原值减去均值后除以标准差,使得得到的特征满足均值为0,标准差为1的正态分布。

归一化和标准化都可以消除量纲的影响,使得原本可能分布相差较大的特征对模型有相同权重的影响,在传统机器学习的数据预处理中使用得非常普遍,而具体应该选择归一化还是标准化呢,如果把所有维度的变量一视同仁,在最后计算距离中发挥相同的作用应该选择标准化,如果想保留原始数据中由标准差所反映的潜在权重关系或数据不符合正态分布时应该选择归一化。另外,标准化更适合现代嘈杂大数据场景。

考虑我们对于图像数据做预处理的情况,图像数据的特征实际上是图像上的像素点,比如 224 × 224 × 3 224\times224\times3 224×224×3的图像,一共有150528个像素点,每个像素点也就是一个特征。那么图像的特点就是每个像素点的取值范围都在[0,255]之间,所以不同特征的分布是一样的,不存在量纲的问题,对于模型影响是一样的,所以归一化或标准化是不必要的,而只需要做零均值化。

零均值化在Alexnet论文中是这么说的:“We did not pre-process the images in any other way, except for subtracting the mean activity over the training set from each pixel. ” 即将每个像素的值减去训练集上所有像素值的平均值,比如已计算得所有像素点的平均值为128,所以减去128后,现在的像素值域即为[-128,127],即满足均值为零。而在VGG论文中,关于零均值化是这么说的:"The only preprocessing we do is subtracting the mean RGB value, computed on the training set, from each pixel. ",即对于RGB三通道分开处理,每个通道的像素点减去对应通道所有像素点的平均值。也使得处理后的像素满足均值为零。

我之前预处理的一种做法是对于每个样本的每个通道,取该通道的所有像素的平均值来进行相减,使得每个样本的每个通道满足零均值,但这样会导致一个问题,就是不同样本的像素分布是不一样的,平均值也是不一样的,如果按我那样处理,可能会导致相同的像素值在不同的图像上的处理后的结果是不一样的,那就可能会影响效果了,所以零均值化还是尽量按照之前介绍的两种方法来做。

在这里插入图片描述

图1 原始数据分布、零均值化数据分布、归一化数据分布

2 零均值化的作用

那为什么需要做零均值化呢。在CS231N里的说法是零均值化可以避免“Z型更新”的情况,这样可以加快神经网络的收敛速度。下面将分别以Sigmoid、tanh以及ReLu三个最为经典的激活函数来分别说明。

2.1 sigmoid函数

首先以Sigmoid为激活函数来作为例子。如图2为Sigmoid函数的图像,公式如下:
S i g m o i d ( x ) = 1 1 + e − x Sigmoid(x)=\frac{1}{1+e^{-x}} Sigmoid(x)=1+ex1
在这里插入图片描述

图2 Sigmoid函数图像

可以看出,Sigmoid函数的值域是(0,1)。假设我们对数据不做零均值化,那么对于神经网络第一个隐藏层来讲,输入的数据 X X X就全是正值(因为原始像素数值属于[0,255])。以第一个隐藏层的某一个神经元为例,当进行反向传播算法,梯度从反向到达该神经元时,根据链式法则,对权值w的梯度为全局传过来的梯度乘以激活函数Sigmoid对于w的梯度,即为公式
∂ L ∂ w = ∂ L ∂ f ⋅ ∂ f ∂ w \frac{\partial L}{\partial w}=\frac{\partial L}{\partial f} \cdot \frac{\partial f}{\partial w} wL=fLw

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值