Feature Scaling深入理解
Feature Scaling 可以翻译为特征归一化,或者数据归一化,比如统计学习中,我们一般都会对不同量纲的特征做归一化,深度学习中经常会谈到增加的BN层,LRN层会带来训练收敛速度的提升,等等。问题是,我们为什么需要做Feature Scaling呢?可以不做吗?做Feature Scaling背后的数学意义是什么?
首先,我们来看看下面一个简单的神经元
如果x1的输入值范围在(0,10), 而x2的值输入值范围在(1000, 10000),在模型训练(一般选择梯度下降法)时,需要迭代更新可行解,这个过程中必然少不了计算对权重W(这里是w1, w2)的偏导数。可以看到上图中,对W1的偏导数的计算推导过程,L对W1的偏导数等于x1乘以激活函数对Z的导数, 可以很容易看出,当x1很小是,对应的偏导数也很小,从而更新的速度很慢极端可能是,模型最后训练到一个不太care 神经元x1的状态,即弱化x1的作用,x2的情况刚好相反。实际上,我们不应该差别化我们的输入,而应该让模型学习到一种对某些神经元差别化对待的能力,即权值W的差异化。
所以,一般在机器学习中,会对数据做归一化,特别是当数据的量纲不同,常常数值范围差异很大。减掉均值,然后除以方差(其实就是变成了服从高斯分布)的归一化方法经常被用到,比如深度学习中的Batch Normlization(BN)就是这样一种算法。
欢迎转载,但需要注明出处。沟通交流:wujianping.2006@163.com
(欢迎转载,但必须注明出处。欢迎大家交流:wujianping.2006@163.com)