Hi,大家好,我是半亩花海。接着上次的最小二乘法继续更新《白话机器学习的数学》这本书的学习笔记,在此分享最速下降法(梯度下降法)这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目,欢迎大家交流学习!
目录
一、最速下降法概述
二、案例分析
1. 设置问题
2. 定义模型
3. 最速下降法
一、最速下降法概述
最速下降法是梯度下降法的一种更具体实现形式,它的原理是:在每次迭代搜索中选择合适的步长 ,沿着梯度的反方向,总可以找到一个 ,使得目标函数值能够得到最大程度的减少,最终在这个方向 取到最小值,即。
二、案例分析
在上一节中,我们要让 越来越小,不过一边随意修改 的值,一边计算 并与之前的值相比较的做法实在是太麻烦了。所以我们要使用前面简单提到过的微分来求它。
微分是计算变化的快慢程度时使用的方法。我们在学微分的时候,应该对一个概念比较熟悉,那就是增减表。
1. 设置问题
我们简单举一个例子,比如有一个表达式为 的二次函数,如下图所示。可以看出,当 时,出现最小值是 。
将 展开,有 ,再对函数进行微分,结果如下:
为了写出增减表,我们看一下导数的符号(只要看 2x−2 的符号就行):
由上表可以看出,在 x < 1 时,g(x) 的图形向右下方延伸,反之当 x > 1 时,g(x) 的图形向右上方延伸,换句话说就是从左下方开始延伸的。
比如在 x = 3 这一点,如下图所示,为了使 g(x)的值变小,我们需要向左移动 x,也就是必须减小 x。同理,如果是在另一侧的 x = −1 这一点,如下图所示,为了使 g(x) 的值变小,我们需要向右移动 x,也就是必须增加 x。
2. 定义模型
从上面两个例子可以总结出,我们可以根据导数的符号来决定移动 x 的方向。要向与导数的符号相反的方向移动 x, 就会自然而然地沿着最小值的方向前进了,即自动更新参数。
上述内容用表达式展示出来,如下式。这也被称为最速下降法(或称为梯度下降法)。
其中, 形式即为通过 B 来定义 A。 是学习率(正的常数,读作“伊塔”)。根据学习率的大小(学习率可调节), 到达最小值的更新次数也会发生变化。换种说法就是收敛速度会不同。有时候甚至会出现完全无法收敛,一直发散的情况。
从上述两张图可以看出,如果 较大,那么 会在两个值上跳来跳去,甚至有可能远离最小值,这就是发散状态;而当 较小时,移动量也变小,更新次数就会增加,但是值确实是会朝着收敛方向而去。
3. 最速下降法
在上一节《机器学习 | 回归算法原理——最小二乘法-CSDN博客》中提到目标函数的表达式是:。
这个目标函数 和上述问题中的 同样是开口向上的形状, 所以刚才讨论的内容也同样适用于它。不过这个目标函数中包含 ,而从 这个表达式又可以看出, 拥有 和 两个参数。也就是说这个目标函数 是拥有 和 的双变量函数,所以不能用普通的微分,而要用偏微分。如此一来,更新表达式如下:
我们知道, 中有 ,而 中又有 ,所以我们可以使用复合函数的微分分别去考虑它们。
对上述两个式子进行阶梯性地微分:
先从 u 对 v 微分的地方开始计算,把函数展开后再分别求微分(可以发现,在最后一行,常数与 相抵消了,微分后的表达式变简单了吧? 这就是一开始乘以 的理由。):
下面就是 v 对 进行微分的部分:
接下来,依照复合函数的微分表达式 ,将两个微分的结果相乘,就可以得到对 进行微分的结果了,最后,不要忘了把表达式中的 v 替换回 。
接下来,同理,再算一下对 进行微分的结果:
u 对 v 微分的部分与上述完全相同,所以这次只要计算 v 对 微分的部分即可。
最终 u 对 微分的结果:
所以参数 和 的更新表达式如下:
只要根据这个表达式来更新 和 ,就可以找到正确的一次函数 ,进而得出最终符合图像规律的。此时,我们输入任意的广告费(即横坐标),就可以得到相应的点击量(即纵坐标),于是我们就能根据广告费预测点击量。