我们可以通过将每个输入值都设置在大致相同的范围内来加快梯度下降的速度。这是因为θ在小范围内会迅速下降,而在大范围内会缓慢下降,因此当变量非常不均匀时,会无效率地振荡到最佳状态。
防止这种情况的方法是修改输入变量的范围,以使它们都大致相同。理想情况下:
−
1
≤
x
(
i
)
≤
1
-1 \leq x(i) \leq 1
−1≤x(i)≤1
−
0.5
≤
x
(
i
)
≤
0.5
-0.5 \leq x_{(i)} \leq 0.5
−0.5≤x(i)≤0.5
这些不是确切的要求;我们只是试图加快速度。目标是使所有输入变量大致进入这些范围之一,给出或取几个。
有助于此的两种技术是特征缩放和均值归一化。特征缩放涉及将输入值除以输入变量的范围(即最大值减去最小值),从而得到的新范围仅为1。平均归一化涉及从输入值的平均值中减去输入变量的平均值。输入变量导致输入变量的新平均值仅为零。要实现这两种技术,请按照以下公式调整输入值:
x
i
:
=
x
i
−
μ
i
s
i
x_{i}:=\frac{x_{i}-\mu_{i}}{s_{i}}
xi:=sixi−μi
例如,代表房价范围为100至2000,平均值为1000,那么,
x
i
:
=
price
−
1000
1900
.
x_{i}:=\frac{\text { price }-1000}{1900} \text { . }
xi:=1900 price −1000 .
*
梯度下降提供了一种最小化J的方法。让我们讨论这样做的第二种方法,这一次显式地执行最小化,而不求助于迭代算法。在“正态方程”方法中,我们将通过明确地针对θj取导数并将其设置为零来最小化J。这使我们无需迭代即可找到最佳theta。正态方程公式如下:
θ
=
(
X
⊤
˘
X
)
−
1
X
⊤
¨
y
¨
\theta=\left(X^{\breve{\top}} X\right)^{-1} X^{\ddot{\top}} \ddot{y}
θ=(X⊤˘X)−1X⊤¨y¨
以下是梯度下降与正太方程方程的比较:
利用正态方程,计算反演具有复杂性。因此,如果我们具有大量特征,则正常方程将变慢。实际上,当n超过10,000时,可能是从正常解转到迭代过程的好时机。