在上一节中,咱们给出了一个梯度降低的数学定义。在这节中,咱们将更直观地感觉一下这个算法是作什么的以及梯度降低算法的更新过程有什么意义。 算法
这个是咱们上一节所讲的梯度降低算法。让咱们先简单回顾一下。函数
接下来咱们将主要讲这两部分分别是干什么的以及为何要将这两部分放到一块儿。学习
为了更好的理解,咱们先举一个较为简单的例子。如今假设咱们的最小化函数只有一个参数,即代价函数为J(θ1)。θ1是一个实数,因此咱们能够画出来一个曲线图。咱们看一下梯度降低算法在这个函数中起什么做用。spa
假设函数以下图所示。3d
如今咱们取一个点θ1,想象一下在这个函数上从这个点出发,那么梯度降低要作的就是不断地更新θ1(经过公式来更新)。blog
在这个例子中,求导的目的其实就是求这个红色切线。如上图所示,显然这个切线的斜率是大于0的,那么θ1减去一个大于0的数后(α也是大于0的),θ1减少,它会向左移动,显然,咱们往这个方向移动是正确的。数学
如今,咱们取另一个θ1的值。此时这个倒数项对应下图的红线的斜率。咱们能够看到这条直线向下倾斜,因此它的斜率小于0。那么θ1加上一个大于0的数后(α也是大于0的),θ1增长,它会向右移动,显然,咱们往这个方向移动是正确的。im
经过这个例子,咱们能很直观地看到这个导数项的意义。接下来,咱们将研究α究竟有什么做用。咱们先来看一下若是α太大或者过小会出现什么样的状况。d3
(1)若是α过小时,咱们更新的时候用的就是一个很小的系数。那么咱们每次迈出的的步子都是很是小的。若是咱们的学习速率过小,结果就是咱们只能一点点地挪动。这会致使咱们须要走很是多步才能够到达最低点。因此,若是α过小,那么降低的速度很是慢。margin
(2)那么若是α太大,那么梯度降低可能会越过最低点,甚至可能没法收敛或者发散。假设咱们如今的点离最小值比较近,但由于此时α太大,那么咱们会迈出很大的一步。那么此时会致使咱们的代价函数变得更糟。结果,咱们会发现,咱们离最低点愈来愈远了。
那么如今有一个问题。若是θ1已经处在一个局部最优势,你认为下一步梯度降低会怎样?
如图所示,此时θ1在一个局部最优势了,咱们会发现此时切线的斜率为0,那么更新以后的θ1其实与更新以前的θ1是同样的。至关于梯度降低法更新其实什么都没有作,他并无改变参数值,这也正是咱们想要的。由于它使咱们的解始终保持在局部最优势。这也说明了即便学习速率α保持不变,梯度降低法也能够收敛到局部最低点的缘由。(?如何更好理解)
咱们再来看一个例子。有一个代价函数J(θ),咱们想要求它的局部最小值。 首先初始化个人梯度降低算法,在那个品红色的点初始化,若是我更新一步梯度降低,也许它会带我到这个点,由于这个点的导数是至关陡的。
如今,咱们在这个绿色的点,若是我再更新一步,你会发现个人导数,也即斜率,是没那么陡的。随着我接近最低点,个人导数愈来愈接近零,因此,梯度降低一步后,新的导数会变小一点点。而后我想再梯度降低一步,在这个绿点,我天然会用一个稍微跟刚才在那个品红点时比再小一点的一步,到了新的红色点,更接近全局最低点了,所以这点的导数会比在绿点时更小。因此,我再进行一步梯度降低时,个人导数项是更小的,𝜃1更新的幅度就会更小。因此随着梯度降低法的运行,你移动的幅度会自动变得愈来愈小,直到最终移动幅度很是小,你会发现,已经收敛到局部极小值。
回顾一下,在梯度降低法中,根据定义在局部最低时导数等于零,因此当咱们接近局部最低时,导数值会自动变得愈来愈小,因此梯度降低将自动采起较小的幅度,这就是梯度降低的作法。因此实际上没有必要再另外减少α。