【机器学习笔记】3. 梯度下降法

机器学习系列-第 3 篇


作者注:机器学习系列是本人在学习机器学习相关内容时产生的笔记,希望也能对您有所帮助。值得注意的是,作者作为初学者,表述难免有误或不全面,望多批评指正。
如有任何问题,欢迎您随时与我联系:Hauyu.Chen@Gmail.com

版权声明:本文由 Hov 所有,发布于 http://chenhy.com ,转载请注明出处。



0 前言

上一篇讲到了线性回归,提到了代价函数(Cost Function)的概念,我们知道我们的目标是找到合适的 θ0、θ1 使得代价函数 J(θ0,θ1) 最小。
但是,若漫无目的地设定 θ0、θ1 的值, J(θ0,θ1) 可能会有无数的结果。
那我们要怎么更快地找到 J(θ0,θ1) 的最小值呢?
本文将介绍一种重要的优化算法,Gradient Descent(梯度下降法)。


1 什么是梯度?

在讲解梯度下降法之前,我们必须先了解梯度的概念。
梯度是高等数学中的概念,梯度的指向即为函数增长最快的方向。同理,梯度的反方向即为函数下降最快的方向。
现在你知道为什么梯度下降法是优化算法了吧?它能使我们的代价函数下降的最快!


2 原理

下图为代价函数的三维图形,分别以 θ0、θ1 为 X、Y 轴,以 J(θ0,θ1) 为 Z 轴。求解代价函数最小值的过程可看作是寻找“一座座山坡”中的最低点,因为在“山底”时 J(θ0,θ1)最小。

假定我们随机站在某个山坡上,每次往某个方向向下走一步,怎么走才能最快到山底?这也就是梯度下降法所要解决的,沿着梯度方向最小化 J(θ0,θ1) 。

  1. 确定向下一步的步伐大小,称之为 Learning Rate ;
  2. 任取 θ0,θ1 (随机站在某个山坡);
  3. 沿着梯度的反方向,走一个步伐大小,更新 θ0、θ1 ,此时 J(θ0,θ1) 变小;
  4. 重复步骤3,当下降的高度小于某个定义的值(已经到山底),则停止下降。


3 算法

  • 优化目标:J(θ0,θ1)

  • 优化参数:θ0、θ1

根据梯度下降法原理,可设计算法如下:

图注:

  1. 蓝色方框: J(θ0,θ1) 的梯度(下降的方向),注意前面的负号,即梯度的反方向
  2. 红色方框:下降步伐的大小(Learning Rate)
  3. j=0和1,即同步更新 θ0、θ1
  4. convergence 为终止条件


4 Feature Scaling(特征缩减)

Feature Scaling可应用于梯度下降法中,用于加快梯度下降的执行速度。

常用的方法是 Mean Normalization ,通过将各Feature的值标准化,使得其取值范围在(-1,1),特征缩减公式如下:

注:μi 表示所有特征的平均值,Si 是特征中最大值与最小值的差(max-min)

举个栗子:
x(i) 表示 price(房价)这个特征,训练集中所有 price 的范围是100到2000,平均值为1000,则 price 特征缩减如下:


5 特性

  1. 因为初始点 (θ0,θ1) 的选择是随机的,所以不同的初始点 (θ0,θ1) 会得到不同的最小值,因此梯度下降法求得的是局部最小值;
  2. 下降的过程中,越接近最小值,下降的速度越慢(因为坡度越来越小了);
  3. 下降步伐 的选择尤为重要,正确的下降步伐应该使代价函数 J(θ0,θ1) 变小。注意:太小的话,则下降的速度会很慢;太大的话,有可能会出现 J(θ0,θ1) 反而变大的情况(overshoot minimum),出现“之字型”(如下图)。
    所以不能太大也不能太小。


6 结语

至此,我们已经知道我们的第一个优化算法梯度下降法。通过上一篇提到的线性回归结合本篇的梯度下降法,我们已经可以实现一个简单的机器学习程序。

下篇将讲解多元线性回归。


 
comments powered by Disqus