一、归一化处理的方法
假设输入特征的维度是二维的,对数据进行归一化的过程分为两步,第一步是零均值化,第二步是归一化方差。
step1 零均值化
μ
=
1
m
∑
i
=
1
m
x
(
i
)
\mu=\frac{1}{m}\sum_{i=1}^m x^{(i)}
μ=m1i=1∑mx(i)
x
:
=
x
−
μ
x:=x-\mu
x:=x−μ
step2 归一化方差
σ
2
=
1
m
∑
i
=
1
m
x
(
i
)
∗
∗
2
\sigma^2=\frac{1}{m}\sum_{i=1}^m x^{(i)}**2
σ2=m1i=1∑mx(i)∗∗2
x
/
=
σ
2
x/=\sigma^2
x/=σ2
吴恩达老师这里写的 x − μ σ 2 \frac{x-\mu}{\sigma^2} σ2x−μ,但是我认为应该是 x − μ σ \frac{x-\mu}{\sigma} σx−μ,这样处理后的方差变为1.
二、为什么要归一化?
未归一化之前,代价函数的图像是狭长的,如果想训练达到收敛,需要一个很小的学习率,不断迭代收敛到J的最小值。归一化后的图像可以看到非常工整,不论从哪个点开始,都可以通过梯度下降法很快找到最小值,帮助学习算法运行得更快。
当x1和x2在非常不同的取值范围内,比如一个在0-1,一个在1-1000的范围内,归一化使得范围集中,更好实现梯度下降。