![深度学习入门与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/404/47755404/b_47755404.jpg)
2.4 梯度下降法
在测试集上,通过最小化代价函数(成本函数)J(w,b)来训练参数w和b,
梯度下降如下:
逻辑回归:,
代价函数
如图2-5所示,在第二行给出和之前一样的逻辑回归算法的代价函数(成本函数)梯度下降法的形象化说明。
在这个图中,横轴表示空间参数w和b,在实践中,w可以是更高的维度,但是为了更好地绘图,定义w和b,都是单一实数,代价函数(成本函数)J(w,b)是在水平轴w和b上的曲面,因此曲面的高度就是J(w,b)在某一点的函数值。所做的就是找到使得代价函数(成本函数)J(w,b)函数值为最小值时对应的参数w和b。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/19_08.jpg?sign=1739174020-0v6TaykRglMmywwA5sLVMtGITCFRWrAl-0-10bc899029f54be68841ee52bf164e04)
图2-5 代价函数梯度下降法
如图2-6所示,代价函数(成本函数)J(w,b)是一个凸函数,像一个大碗一样。
如图2-7所示,与图2-6有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数(成本函数)J(w,b)的特性,故必须定义代价函数(成本函数)J(w,b)为凸函数。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/19_09.jpg?sign=1739174020-upmDXhrizJLJLozc4vhJA67AYOjYSYSV-0-4d6e47f646f74c9f662dcbf1fe5a4852)
图2-6 代价函数的凸函数形式
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/19_10.jpg?sign=1739174020-6gdhnz1EhgT3Kcu2ENfaD00jX2ygYZlU-0-28cbbfb535b7951a5b51f1c127daadd3)
图2-7 代价函数的非凸形式(局部最小值)
1.初始化w和b
可以用如图2-8所示的点来初始化参数w和b,也可以采用随机初始化的方法。对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,所无论在哪里初始化,应该达到同一点或大致相同的点。
以如图2-9所示的点的坐标来初始化参数w和b。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_01.jpg?sign=1739174020-k2odqE9hsezBIhQSRF9fl4Z5TnOiwBY2-0-1f138bbaccf59ffae94b4a8e0370f899)
图2-8 代价函数初始化参数(初始化点在最小值位置)
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_02.jpg?sign=1739174020-ZBhS4waNGXFIgYWuJxd80VhdzuRyPtwL-0-70fa27a75e97ee5742c88c385651d686)
图2-9 代价函数初始化参数(初始化点在随机位置)
2.朝最陡的下坡方向走一步,不断地迭代
朝最陡的下坡方向走一步,如图2-10所示,走到了图中第二个点处。
可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图2-10所示,经过两次迭代走到第三个点处。
3.直到走到全局最优解或者接近全局最优解的地方
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_03.jpg?sign=1739174020-JaK3Zm4s4Nwd6sILkDR6PrrnIgFj2Ow0-0-a0e2ab5ac92bc33c1e17aa916a50cbee)
图2-10 代价函数梯度下降法的迭代过程
通过以上的三个步骤可以找到全局最优解,也就是代价函数(成本函数)J(w,b)这个凸函数的最小值点。
假定代价函数(成本函数)J(w)只有一个参数w,即用一维曲线代替多维曲线,这样可以更好地画出图像,如图2-11所示。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_04.jpg?sign=1739174020-AOcsIA124kuJaBTgcEcqArHQWnY92lNR-0-0463ab0912fd01206121e0aba10026f7)
图2-11 一个参数的代价函数
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_05.jpg?sign=1739174020-Hs5SEFdm1iAWpeFCHmm5kM8fU8wG8ZdN-0-f1e8b69375990d624890795c869c2b8b)
迭代就是不断重复做上述的公式。
式中,=表示更新参数;α表示学习率,用来控制步长,即向下走一步的长度。就是函数J(w)对w求导。在代码中会使用dw表示这个结果。对于导数更加形象化的理解就是斜率,该点的导数就是这个点相切于J(w)的小三角形的高除以宽。假设以如图2-12中的点为初始化点,该点处的斜率的符号是正的,即
,所以接下来会向左走一步。
整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点,如图2-13所示。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/21_02.jpg?sign=1739174020-StUVSqzfh1LzrREyrvdqQWnv1tUTzK0Z-0-4657dad83ed58353a3a696d5f3963bdb)
图2-12 一个参数的代价函数1
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/21_03.jpg?sign=1739174020-m9MM01s9YN2Y2FN4hyJ200EkiDqRWxvH-0-4ab1a57a049a9ecaf3467cefaafa692b)
图2-13 一个参数的代价函数2
假设以如图2-13中的点为初始化点,该点处的斜率的符号是负的,即,所以接下来会向右走一步。整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走。
逻辑回归的代价函数(成本函数)含有两个参数。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/21_05.jpg?sign=1739174020-esko7AfrVqBh9irXXyYFEjH58WP2Kw6s-0-81f71f075ab84b9ba9aa1b14f189342f)
式中,∂为求偏导符号;就是函数J(w,b)对w求偏导,在代码中会使用dw表示这个结果;
就是函数J(w,b)对b求偏导,在代码中会使用db表示这个结果,小写字母d用于表示求导数,即函数只有一个参数,偏导数符号∂用于表示求偏导,即函数含有两个以上的参数。