梯度下降(gradient descent)算法是一种非常经典的求极小值的算法,其理论基础是梯度的概念。
先从一个生活中的问题引入梯度下降的概念。
假设在一个夜晚,你处于一座山峰的顶端,你需要从山顶回到山底的营地,由于没有其他的照明设备,你只能不断通过周围的环境来调整自己的方向,比如,你现在所处的位置比前一时刻低那么你处于下降过程中。由于我们都希望能够尽快下山,因此我们会选择一条下降速度最快的路径,也就是沿着梯度下降方向前进。具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。
我们同时可以假设这座山最陡峭的地方是无法通过肉眼立马观察出来的,而是需要一个复杂的工具来测量,同时,这个人此时正好拥有测量出最陡峭方向的能力。所以,此人每走一段距离,都需要一段时间来测量所在位置最陡峭的方向,这是比较耗时的。那么为了尽快到达山底,就要尽可能的减少测量方向的次数。这是一个两难的选择,如果测量的频繁,可以保证下山的方向是绝对正确的,但又非常耗时,如果测量的过少,又有偏离轨道的风险。所以需要找到一个合适的测量方向的频率,来确保下山的方向不错误,同时又不至于耗时太多!
微分
看待微分的意义,可以有不同的角度,最常用的两种是:
- 函数图像中,某点的切线的斜率
-
函数的变化率
几个微分的例子:
上面的例子都是单变量的微分,当一个函数有多个变量的时候,就有了多变量的微分,即分别对每个变量进行求微分
梯度
梯度实际上就是多变量微分的一般化。
下面这个例子:
我们可以看到,梯度就是分别对每个变量进行微分,然后用逗号分割开,梯度是用<>包括起来,说明梯度其实一个向量。
梯度是微积分中一个很重要的概念,之前提到过梯度的意义
- 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
- 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向
这也就说明了为什么我们需要