深度学习06-logistic回归的梯度下降法

1. 梯度下降法

    设成本函数J(w,b),激活函数为sigmoid函数(参见神经网络基础02-Logistic回归),有以下成本函数:

我们的目标是要想找到函数J(w,b)的最小值,进而需要找到w,b的参数。但是这个参数如何找到呢?答案是:梯度下降法。

函数J(w,b)在空间坐标系统的函数图如下:

深度学习06-logistic回归的梯度下降法_第1张图片

先初始化一个值J(w,b),每次寻找梯度(导数)最大的值往下走,经过多次迭代,可以达到或接近最小值(全局最优)的点。这就是梯度下降法(通俗一点就是函数找最大的导数来走,循环多次,直到最接近函数最小的点)

注意,这里的初始值可以是图像内任意一点,方便计算,可以使用原点来作为初始值。

梯度下降在凸函数中是很黄很暴力的方法,稳定实用。但是非凸函数中,此方法就不适用了,目前非凸函数的算法有待研究。


2. logisti回归的梯度下降法

    2. 1 单个样本

已知函数如下图,L(a,y)为logistic函数:

深度学习06-logistic回归的梯度下降法_第2张图片
图1

偏导数流向图如下,

深度学习06-logistic回归的梯度下降法_第3张图片
图2

x1 x2为特征向量, 此时需要变化w1 w2 b来让L(a,y)函数最小化损失,进而需要L(a,b)对w1 w2 b求导,那么我们应该怎么计算呢?(请参照神经网络05-计算图原理(正向反向传播)中第2节)。

根据上节课得知,想要计算dw1 dw2 db,则需要先计算da ,然后计算 dz,最后再来计算dw1 dw2 db

通过微积分公式可以得到以下计算公式(不计算过程不重要,重要的是记住公式就行了。。。):

da = -y/a + (1-y)/(1-a)

dz = a -y

dw1 = x1*dz

dw2 = x2*dz

db = dz

最后再迭代更新w1的值,公式如下:@为学习率

w1 := w1 -@dw1

w2 = w2 -@dw2

b = b - @db

这样便完成了单个样本的梯度下降(x1 x2只输入了一次)。

    2.2 m个样本的梯度回归

       单个样本的梯度回归目的是不断的寻找w1 w2 和b“一步”最佳值,如果有m个样本,则需要迭代m次。伪代码如下:   

for i in range(m): //迭代m次

    //迭代w1并不断更新w1的值

    //迭代w2并不断更新w2的值

深度学习06-logistic回归的梯度下降法_第4张图片
迭代过程

你可能感兴趣的:(深度学习06-logistic回归的梯度下降法)