我的人工智能之旅——梯度下降vs正规方程法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daihuimaozideren/article/details/81136637

本文将涉及以下知识点

(1)特征缩放

(2)均值归一化

(3)正规方程

优化梯度下降算法

在上一篇博文中,我们了解了梯度下降算法,它为解决线性回归问题提供了思路。但梯度下降的迭代推算过程,较为耗时。简单地说,整个算法是一个不断尝试收敛的过程。如果能够降低算法的尝试次数,以及每次迭代的算法复杂度,那么,便能更高效的解决线性回归问题。

影响梯度下降算法收敛速度的因素很多,例如样本集合大小,特种向量中某一元素的取值范围远大于其它元素,学习速率等。

样本集合越大,算法推算出的假设函数越精确。因此,不能通过减少样本来提高算法的运算速度,这将付出降低精确度的代价。

所以,只能在其它干扰因素上找突破口。

特征缩放

还以房价预估为例,假设特征向量由面积x_1,楼层x_2,房龄x_3,房间数量x_4组成。取值范围依次为,面积x_1:30~200m^2,楼层x_2:1~35层,房龄x_3:1~70年,房间数量x_4:1~6间。由于面积x_1的取值范围较其三者都大,因此,在相同学习速率下,对面积x_1做偏导数的次数远高于其它三者。同样的问题,对于楼层x_2和房龄x_3也存在。

为了使得迭代次数(求偏导数的次数)更加均衡,提出了特征缩放(feature scaling)的概念。即,用\frac{x_i}{x_i_{max}-x_i_{min}}替代原有x_i

在特征缩放的过程中,为了让特征的取值范围更加规范化,即规定在-0.5~0.5内,进而提出了均值归一化(mean normalization)的概念,即用\frac{x_i-\bar{x}}{x_i_{max}-x_i_{min}}替代\frac{x_i}{x_i_{max}-x_i_{min}}

学习率

在代价函数中,学习率也是一个重要的参数。学习率的大小,影响迭代幅度。学习率偏小时,迭代次数多。学习率偏大时,迭代次数少,但有可能造成不收敛的情况。那么如何选择一个合适的学习率呢?其实,也是通过多次尝试获取最佳学习率。

通常,我们选定一个学习率后,会画出代价函数J(A^T)与迭代次数n的关系图。一个较为合适的学习率,对应的代价函数与迭代次数的关系图应该是收敛的。如下图。

若所画关系图未出现收敛,则说明学习率偏大。可以在保证收敛的前提下,尽量提升学习率,以减少迭代次数。

综上,虽然可以通过运用特征缩放和调节学习率的方式,提高梯度下降方法的收敛速度。但梯度下降方法还是摆脱不了“迭代”、“尝试”的口实。那么有没有方法,可以一次性得到代价函数的最小值呢?

正规方程法

我们还是以房价预估为例。x_0默认为1,x_1,x_2,x_3分别代表楼层,房龄,房间数量。房价为y,且假设房价与特征向量间存在线性关系,a_0+a_1x_1+a_2x_2+a_3x_3=y

若,样本集合大小为m,则

\begin{bmatrix} 1&x_1_1&x_1_2&x_1_3\\ 1&x_2_1&x_2_2&x_2_3\\ ..&..&..&..\\ 1&x_m_1&x_m_2&x_m_3 \end{bmatrix} \begin{bmatrix} a_0\\ a_1\\ a_2\\ a_3 \end{bmatrix} =\begin{bmatrix} y_1\\ y_2\\ ..\\ y_m\\ \end{bmatrix}

X=\begin{bmatrix} 1&x_1_1&x_1_2&x_1_3\\ 1&x_2_1&x_2_2&x_2_3\\ ..&..&..&..\\ 1&x_m_1&x_m_2&x_m_3 \end{bmatrix}A=\begin{bmatrix} a_0\\ a_1\\ a_2\\ a_3 \end{bmatrix}Y=\begin{bmatrix} y_1\\ y_2\\ ..\\ y_m\\ \end{bmatrix}

XA=Y

X^{T}XA=X^{T}Y

此时,X^{T}X为方阵,存在逆矩阵(注:也可能不存在,但MATLAB或OCTAVE会算出伪逆矩阵,因此,此处暂时认为,方阵都存在逆矩阵)。

因此,(X^{T}X)^{-1}X^{T}XA=(X^{T}X)^{-1}X^{T}Y

EA=(X^{T}X)^{-1}X^{T}Y,其中E为单位矩阵

因此,A=(X^{T}X)^{-1}X^{T}Y

有了这个推算结果,我们可以在MATLAB或OCTAVE中调用算法,得出相应的A。

对比与选择

与梯度下降算法相比,正规方程法不需要选择学习率,不需要迭代,更不需要画代价函数J(A^T)与迭代次数n的关系图,证明学习率对于收敛的影响。这使得正规方程法似乎有着压倒性的优势。但正规方程法,也存在缺陷。

当特征向量中的特征数量较大时(即X的列数n较大时),正规方程的时间复杂度为O(n^3),因此,会非常耗时,速度不一定比梯度下降快。那么n多大算大呢?推荐值为10000,但仁者见仁,还得看硬件性能。

猜你喜欢

转载自blog.csdn.net/daihuimaozideren/article/details/81136637
今日推荐