梯度下降
我们现在的目的是让代价函数J达到最小,那么梯度下降就是计算函数
最小值的一种方法。
梯度下降的思想是:我们先随机找一个参数组合,注意是假设函数中的参数,
我们前面所说有2个,但不总是两个,寻找到初始值后,我们寻找下一个让代价
函数下降最多的参数,然后一直寻找,直到找到一个局部最小值,我们如果尝试不同
的参数初始值,那么我们可能会得到不同的局部最小值。
我们可以这样思考一下,假设我们现在在一座山上,我们随机选择一个方向
然后开始下山,如果我们把下山的步子量化,也就是说我们迈的步子的大小
有多大,不可否认的是,只有你的视力不错,你应该总会下降的山中的局部最低。
我们下降了很多次,我们不是一次就到最低处的,所以我们把这种算法称为
批量梯度下降算法
公式如下
其中的a是学习率。
直观的将就是决定你步子迈多大的量。关于上面的偏导数项我这里不会提及。
不过我有一种理解方法,你可以类别物理里的速度与加速度然后思考一下,
或许会有不同的想法。
最后一点:我们更新theta0和theta1时,必须使用未更新前的值,例如你的theta
0已经更新了,那么我们使用theta0未更新前的值,这样保证实现了同步更新。
梯度下降的理解
对于梯度下降的理解,主要的一点是这个偏导数项,视频中吴老师使用了
一个参数进行了演示,这里我不在多说。即便对于多项而言,偏导数达到局部最小值
时的值也会是0,不过对于多元函数而言,贡献这个函数的并不是只有一个变量,而是很
多个,我的意思是说一个未知量停止更新时,其余的未知量也还会更新。
我的理解可能存在错误,如果发现错误我会第一时间回来改正,接下来我将使用
matlab去实现这一算法,并且我们还会学习到泛化的梯度下降算法,并且会有
更多挑战。