![深度学习入门与实践](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=1739274242-LAbvkdnuTy9UHzrXlPChAUikusEusIsu-0-b91bd05ee3f7da859e08f93955912a13)
图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=1739274242-GC6BZ0SZpqAD74SvRM6POTV4NeeU2fxW-0-3526fea7df3943a0ff84d6c0c4ae43a4)
图2-6 代价函数的凸函数形式
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/19_10.jpg?sign=1739274242-2rCif1qbku26slvLY8S1xYDX2u58M1gP-0-b516e8450a6685b29912aa3611590296)
图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=1739274242-35tV6X5kl7r9Lba4FNrxDrIwmiInFsSg-0-3774433ba937a740ef380fdac5e1cdf8)
图2-8 代价函数初始化参数(初始化点在最小值位置)
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_02.jpg?sign=1739274242-jgir4NpW8VVm55cIhfX3K0zES60xhnBI-0-59c6b5f720ca9010e3c90012eb9c97b4)
图2-9 代价函数初始化参数(初始化点在随机位置)
2.朝最陡的下坡方向走一步,不断地迭代
朝最陡的下坡方向走一步,如图2-10所示,走到了图中第二个点处。
可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图2-10所示,经过两次迭代走到第三个点处。
3.直到走到全局最优解或者接近全局最优解的地方
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_03.jpg?sign=1739274242-4it5z83yox4U6o7Bt6jtCfDhBuZTLKhs-0-7f8fc0794e12a1084c908705922ea951)
图2-10 代价函数梯度下降法的迭代过程
通过以上的三个步骤可以找到全局最优解,也就是代价函数(成本函数)J(w,b)这个凸函数的最小值点。
假定代价函数(成本函数)J(w)只有一个参数w,即用一维曲线代替多维曲线,这样可以更好地画出图像,如图2-11所示。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_04.jpg?sign=1739274242-O08uKsHDCtTLWvhhlvBZcfwu477Hp6NE-0-bf0b08cc32a9982e99c68ba6f2975002)
图2-11 一个参数的代价函数
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/20_05.jpg?sign=1739274242-PCkmCzCqcEfH1THq3IAIfibYfZtljKWf-0-9b97d90aa01995c22be2988d7dee9ba9)
迭代就是不断重复做上述的公式。
式中,=表示更新参数;α表示学习率,用来控制步长,即向下走一步的长度。就是函数J(w)对w求导。在代码中会使用dw表示这个结果。对于导数更加形象化的理解就是斜率,该点的导数就是这个点相切于J(w)的小三角形的高除以宽。假设以如图2-12中的点为初始化点,该点处的斜率的符号是正的,即
,所以接下来会向左走一步。
整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点,如图2-13所示。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/21_02.jpg?sign=1739274242-ohqOdjZ64lsV9McLf5pp4sF7XgZCQitt-0-05cdcdb0f9d571c47a3e946f93fe42aa)
图2-12 一个参数的代价函数1
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/21_03.jpg?sign=1739274242-ilE9gxfmxhYQRIwcTjIDoXr2mOJ6T5H8-0-909c80fabb54d6131770024262c78220)
图2-13 一个参数的代价函数2
假设以如图2-13中的点为初始化点,该点处的斜率的符号是负的,即,所以接下来会向右走一步。整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走。
逻辑回归的代价函数(成本函数)含有两个参数。
![](https://epubservercos.yuewen.com/16CB17/27166333304546406/epubprivate/OEBPS/Images/21_05.jpg?sign=1739274242-2ClRCRyTt16cndbiEfii4MdRY45nbBQb-0-30c6e5a915aaf611e778b16e24f69ae0)
式中,∂为求偏导符号;就是函数J(w,b)对w求偏导,在代码中会使用dw表示这个结果;
就是函数J(w,b)对b求偏导,在代码中会使用db表示这个结果,小写字母d用于表示求导数,即函数只有一个参数,偏导数符号∂用于表示求偏导,即函数含有两个以上的参数。