0%

人工智能03

看B站吴恩达老师有关人工智能网课的记录03

梯度下降

  • 假设我们一个线性回归问题已经得到代价函数J, 通过梯度下降算法能够最小化这个代价函数
  • 梯度下降不仅能够运用与线性回归的代价函数上, 它能最小化任意函数J

    梯度下降原理:

  1. 假设我们有一个函数J(x1, x2), 此函数不一定是代价函数, 参数的个数可以是任意个.
  2. 我们想得到minJ(x1, x2)时, x1, x2的值

    解决方法:

  3. 给定x1, x2的初始值, 通常都为0
  4. 然后不断改变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), 所以也可收敛到局部最低点
  • 梯度下降算法会随着接近最优解而变缓, 因为导数(斜率)在不断减小, 所以没有必要再减小α