第一篇文章对梯度下降的解释,
初始位置在山上某点,目的位置是山的最低点,那么下山就需要不断的在当前位置找到下山最陡的那条路的'方向‘,然后向这个方向往下走一段路,再重新计算最陡方向,直到到达最低点。
假设我们的预测函数只有一个theta参数,损失函数是一个二次方程:
对应的图像是:
那么对于这个损失函数我们可以使用梯度下降法求损失函数的最小值。或者从数学的角度考虑,对于二次函数秋最值我们的思路是对其求导并将其导数置零。
上面的例子中theta是一个标量(实数),假如theta是一个n维向量呢?
那么损失函数就变成了这样:
()
对于这样的函数,我们仍然考虑求偏导的方法来计算最小值。即分别对每一个theta求偏导,将方程等于零,联立方程组。求出,所有式子同时为零时的向量组theta值。
=
这样逐个解方程在theta很多时是难以计算的,因此我们考虑另一个计算方法。
设有m个训练实例,每个实例有n个特征,则训练实例集为:
其中表示第i个实例第j个特征。
特征参数为:
输出变量为:
故代价函数为:
进行求导,等价于如下的形式:
求导公式:
* 其中第一项:
* 第二项:
该矩阵求导为分母布局下的标量/向量形式:
故有,
* 第三项:
该矩阵求导为分母布局下的标量/向量形式:
故有:
* 第四项:
其中为标量,可看成一个常数。
该矩阵求导为分母布局下的标量/向量形式:
故有:
综上,正规方程为:
最终可得特征参数的表示:
梯度下降与正规方程的比较:
梯度下降
正规方程
需要选择学习率
不需要
需要多次迭代
一次运算得出
当特征数量n大时也能较好适用
需要计算如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为 ,通常来说当n小于10000 时还是可以接受的
适用于各种类型的模型
只适用于线性模型,不适合逻辑回归模型等其他模型
热门工具 换一换