梯度有大小有方向,自然也是一个向量。依照梯度的定义,沿着梯度的正、负方向是最容易找到函数的最大值或者最小值的,因为这个方向的函数值变化最快。为求简单,前面的例子是一个简单的二维平面上的函数,对于三维或者更高维度的超平面,道理也是一样的。假如我们的函数定义在三维坐标系中,构成坐标轴的分别是参数 $\theta _ { 0 } , \ \theta _ { 1 }$ 以及函数 $J ( \theta _ { 0 } , \theta _ { 1 } )$ ,会更贴合我们日常身处三维现实世界的空间观。此时,对于函数 $J ( \theta _ { 0 } , \theta _ { 1 } )$ ,在点 $( \theta _ { 0 } , \theta _ { 1 } )$ 沿着正、负梯度向量的方向分别是函数值增大或者减小最快的地方,如图 6-28 所示,要寻找函数最小值,如同在一片凹凸不平的绵延深山中寻找那个地势最低的深谷谷底。
梯度下降算法就好比把我们随机传送到这片深山中的某处位置,我们的目的地是山下的深谷,由于我们并不知道下山的道路,因此决定走一步算一步,在每走到一个新位置的时候,先求得当前位置的梯度,以此作为行进的指导,然后沿着梯度的方向(这是当前位置最陡峭的方向),向下踏出下一步,到达下一个位置后继续求解这个新位置的梯度,再沿着最陡峭最快下山的方向踏出下一步。这样,保持固定的步长幅度,一步步地走下去,一直走到梯度值为零,从任何方向再踏一步都会比现在的位置更高的地方为止,这时就说明我们已经到了谷底了,这个过程可以用图 6-29 来直观表示。
222
第三部分 第三波高潮
○一 图片来源:Andrew Ng 的机器学习课程(https://class.coursera.org/ml-006)。