前言
本篇主要讲解一个机器学习中很重要但又很基础的概念:梯度下降,经常用于寻找最小值,在近似公式和向量内积的基础上很容易理解
正文
需要解决的问题和思路
首先,梯度下降是为了渐进的寻找最小值,根据书中的例子,如果我们知道了一个函数 z = x^2 + y^2 ,期望知道当 x 和 y 取什么值的时候,z 取值最小
根据之前偏导数学到的概念,z 关于 x 的偏导数为0,z 关于 y 的偏导数为0,是函数取最小值的 必要条件
![8680f320bed2985712655360badcb5b1.png](https://i-blog.csdnimg.cn/blog_migrate/fe9fef4f73483647f38484239a3b5098.jpeg)
求解出来 x=0,y=0,对应图中的最低点
![58065a1934a5fef54d1f1ec7447d57e9.png](https://i-blog.csdnimg.cn/blog_migrate/f56a9e749a1bf3f7e8bdad2de6be0047.jpeg)
这个方程相对计算机来说比较难解,需要首先求出偏导数,再进行多元方程求解过程;
近似公式和向量内积
在了解梯度下降采用的思路前,先复习下近似公式和向量内积
上一篇关于近似公式的博客讲到 Δz 定义如下:
![f621fb6a672f6fbe6f8a14a2019732c8.png](https://i-blog.csdnimg.cn/blog_migrate/08da9e625c01768c333ed4de6b5f35da.jpeg)
根据近似公式可以得到:
![7f8942e42117d1be82cb591d2044e5c2.png](https://i-blog.csdnimg.cn/blog_migrate/6cbbaa295984dc24d7b0dc1df1fb0560.jpeg)
还有其向量形式
![5e955102ac6f4b22f6c664e24ed281ca.png](https://i-blog.csdnimg.cn/blog_migrate/c81741c52064173f09808d9e2847ba29.jpeg)
向量内积就联想到了向量内积的最小值性质,在a,b向量反向的时候,内积最小,同向的时候内积最大
![48fc56c273f2ee469a85c095aab1ac31.png](https://i-blog.csdnimg.cn/blog_migrate/be3be8d5361e459948c15b9baebd94fd.jpeg)
![14491fe718f7ed325b34d0191ff567ff.png](https://i-blog.csdnimg.cn/blog_migrate/b3f016dacbf75f1bdb56f45ad03b2c2e.jpeg)
单独拿出这两个式子可能并不能立马让脑袋里电光火石,那么观察下面这张图,思考一下如果我们在 (x,y)点 让Δz最小,是否意味着 x 变动Δx,y变动Δy之后,函数下降最快 (把Δz相成负的),就越快逼近极值点
![89e729b744a9da21663299476d140254.png](https://i-blog.csdnimg.cn/blog_migrate/d05a68396376e69657ba0dec1d16b1c3.jpeg)
两个向量内积最小,自然是两个向量方向相反的时候,所以就自然而然的推出来二变量函数的梯度下降基本式
![97ef472f89a87b4cff77cc8f9fb2d810.png](https://i-blog.csdnimg.cn/blog_migrate/0af8b65810222d38c0ebea213d8c7219.jpeg)
![f02c0f2cf07a40b4068dffb65bed9cdd.png](https://i-blog.csdnimg.cn/blog_migrate/059b0bed98e8828648f638b2fcf4a7cc.jpeg)
就像是我们在函数的顶部扔了一个小球,每次球运动的时候,都会顺着下降最快的方向运动一定距离,然后停下来重新计算下降最快的运动方向和距离,最后得到的运动轨迹就像R1一般,以最快的方向和位置下降到最低点
![02a9231c099afe8a0de39f2a4a22c696.png](https://i-blog.csdnimg.cn/blog_migrate/f6611762977f5f6d77e17be0ecd21ef7.jpeg)
多变量下的梯度下降法(重点)
上面主要理解了下两个变量的梯度下降法,主要是因为二维或三维图像相对比较好画并且好理解,但是深度学习中,变量维度非常多,所以只是一个或两个变量的梯度下降需要推广到多变量中。
书中的定义如下:
![9b7fe84fb8d5aa483f21488d94f6b132.png](https://i-blog.csdnimg.cn/blog_migrate/47b150a84c2da1543eb9c37834ddc647.jpeg)
其中f在点(x1, x2, …, xn)处的梯度如下图所示
![e18e295f5d49198ecaa238e9baad6603.png](https://i-blog.csdnimg.cn/blog_migrate/bf16af5d9f7fca8e55eb3fdc1fa599c0.jpeg)
所以在深度下降的过程中,只需要算出梯度把每个变量都改变 Δxn,即可逐渐逼近极值
![87f8ddb50fb4a400ab5f54d8a2413aa6.png](https://i-blog.csdnimg.cn/blog_migrate/d0fc76a6987c09805c96d4ffebc641b6.jpeg)
哈密顿算子▽
为了简化表示,书中降到了哈密顿算子▽,其定义如下
![ee0959b27b6ff7831efa15f4044ae107.png](https://i-blog.csdnimg.cn/blog_migrate/ed1d14dd732aea65f6d321d54dda8867.jpeg)
![df7fc746a8e522122add2fd92574f8a1.png](https://i-blog.csdnimg.cn/blog_migrate/ff1739a63bdc9b0fb2d927afd2538020.jpeg)
所以梯度下降公式可以简化的表示为
![0811d7f9fce223d5b69f15548357223d.png](https://i-blog.csdnimg.cn/blog_migrate/56056570d77941ec3503660a5feba644.jpeg)
η的含义
可以看到 η 在式子中是一个大于1的微小常数,会影响每次位移的距离(书中形象的比喻为“步长”)
而这个值如果设置过大,可能就会导致越过极值点(因为每次走的步子太大了),反之可能困在非极值点(因为每次走的步子太小了,跨越不过去),据书中所述,这个参数被称为 学习率 ,目前还没有一个具体的标准,需要不断地尝试从而获取到最优值。
![222292802f1a5155ccdc4650e729df6e.png](https://i-blog.csdnimg.cn/blog_migrate/74388de8696d08f08c5fd9542f835b86.jpeg)
书中还特意说明了下用η代表步长是不严谨的,因为每次运动时,梯度的大小不一样(向量的大小,用根号x1^2+x2^2…xn^2计算),所以如下公式中的η才是步长
![5e9625a963aed4e8a2fda947e1d931b7.png](https://i-blog.csdnimg.cn/blog_migrate/f40b2466b807fb42850858a7b5bf2989.jpeg)
总结
主要介绍了什么是梯度,如何通过让一个函数通过每一点的梯度向量和学习率η趋近于极值,还通过二变量下的梯度下降法推广到适用于神经网络的多变量下的梯度下降法