0%
看B站吴恩达老师有关人工智能网课的记录03
梯度下降
- 假设我们一个线性回归问题已经得到代价函数J, 通过梯度下降算法能够最小化这个代价函数
- 梯度下降不仅能够运用与线性回归的代价函数上, 它能最小化任意函数J
梯度下降原理:
- 假设我们有一个函数J(x1, x2), 此函数不一定是代价函数, 参数的个数可以是任意个.
- 我们想得到minJ(x1, x2)时, x1, x2的值
解决方法:
- 给定x1, x2的初始值, 通常都为0
- 然后不断改变x1, x2的值, 使得J(x1, x2)不断减小, 直到找到J(x1, x2)的最小值或者局部最小值
注意:
- 初始值选定的不同, 可能得到的局部最优解不同
梯度下降公式:
- Xj := Xj - α((dJ(X0, X1))/dXj) (for j = 0 and j =1)
- α: 被称为学习率, 用来控制梯度下降时,下降的跨度
- 过小: 下降速度过慢, 需要很多步计算才能达到最优解
- 过大: 下降速度过快, 可能越过最低点, 甚至可能无法收敛甚至发散
- (dJ(X0, X1))/dXj: J(X0, X1)对Xj求偏导数(类似斜率), 用来控制Xj变化的方向(增加还是减少)
- 一次梯度下降的算法会同时更新X0和X1, 不能先更新其中一个, 再更新另一个
- 当已经到达最优解时, 梯度下降算法不会改变Xj的值(导数项为0), 所以也可收敛到局部最低点
- 梯度下降算法会随着接近最优解而变缓, 因为导数(斜率)在不断减小, 所以没有必要再减小α