吴恩达老师DeepLearning系列课程最详细学习笔记之15—逻辑回归中的梯度下降

教程是本人学习吴恩达老师DeepLearing系列课程中整理的最为详细的学习笔记。学习视频主要来自B站[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili?,以及DeepLearning官方网站Deep Learning by deeplearning.ai | Coursera。该系列课程总共有180多个,我会将学习笔记陆续分享出来,为有兴趣深度学习的同仁提供便利。再次由衷感谢吴恩达老师的精彩讲解和无私奉献!

特别说明:图片来源于吴恩达老师视频截图。

 

 

 

 附文本:

欢迎回来,在本节我们将讨论怎么样计算偏导数来实现logistic回归的梯度下降法。它的核心关键是,其中有几个重要公式用来实现logistic回归的梯度下降法。但在本节视频中,我们将使用导数流程图来计算梯度。必须承认,用导数流程图来计算logistic回归的梯度下降有点大材小用了。但我认为以这种方式来讲解,可以更好地理解梯度下降,从而在讨论神经网络时,可以更深刻而全面地理解神经网络。接下来开始学习logistic回归的梯度下降法。
 
回想一下logistic回归的公式,现在只需要考虑单个样本的情况。关于该样本的损失函数,其中a是logistic回归的输出,y是样本的基本真值标签值。
 
现在,写出该样本的偏导数流程图。假设样本只有两个特征x_1和x_2。为了计算z,我们需要输入参数w_1、w_2和b,还有样本特征值x_1 x_2。因此,用来计算z的偏导数计算公式,z=w_1 x_1+w_2 x_2+b。然后计算y ̂,即a等于sigma(z)也就是偏导数流程图的下一步。最后计算L(a,y)。
 
因此,在logistic回归中,我们需要做的是变换参数w和b的值,来最小化损失函数。在前面,我们已经前向传播步骤,在单个训练样本上计算损失函数,现在让我们来讨论怎样向后计算偏导数。
要想计算损失函数L的导数,首先我们要向前一步,先计算损失函数的导数。这里有个标记,关于变量a的导数 "\"da\"="  dL(a,y)/da。事实上,如果你熟悉微积分知识,这个结果是"\"da\"="  dL(a,y)/da=(-y)/a+(1-y)/(1-a)。
【补充1:dL(a,y)/da的求导过程:
L(a,y)=-(yloga+(1-y)  log⁡(1-a) )
dL(a,y)/da=-(yloga+(1-y)  log⁡(1-a) )^'=-(y(loga)^'+(1-y) 〖〖(log〗⁡(1-a))〗^' )=-(y/a+(1-y)*1/(1-a)*(1-a)^' )=-(y/a+(1-y)/(1-a)*(-1))=-y/a+(1-y)/(1-a)
注意:loga实际上是〖log_e〗^a,或者写为ln^a,其导数为1/a。】
现在可以再向后一步,计算dz。dz是代码中的变量名,是损失函数关于z的导数。"dz="  dL/dz "="  dL(a,y)/dz=a-y
【补充2:dz的求导过程:
"dz="  dL/dz "="  dL(a,y)/dz=dL/da∙da/dz=(-y/a+(1-y)/(1-a))∙da/dz
根据Sigmoid函数,f(x)=1/(1+e^(-x) ) , 〖f(x)〗^'=f(x)∙(1-f(x))
则da/dz=a*(1-a)
"dz="  dL/da∙da/dz=(-y/a+(1-y)/(1-a))∙a(1-a)=-y(1-a)+(1-y)a=a-y

【补充3:Sigmoid函数求导过程:
Sigmoid函数,f(x)=1/(1+e^(-x) )求导过程:
〖f(x)〗^'=(1/(1+e^(-x) ))^'
〖f(x)〗^'=[(1+e^(-x) )^(-1) ]^'
〖f(x)〗^'=[〖-(1+e^(-x) )〗^(-2) ]∙(1+e^(-x) )^'
〖f(x)〗^'=[〖-(1+e^(-x) )〗^(-2) ]∙(e^(-x) )^'
〖f(x)〗^'=[〖-(1+e^(-x) )〗^(-2) ]∙(e^(-x) )∙(-x)^'
〖f(x)〗^'=[(1+e^(-x) )^(-2) ]∙(e^(-x) )
〖f(x)〗^'=1/(1+e^(-x) )^2 ∙(e^(-x) )
〖f(x)〗^'=1/(1+e^(-x) )∙e^(-x)/(1+e^(-x) )
〖f(x)〗^'=1/(1+e^(-x) )∙(1+e^(-x)-1)/(1+e^(-x) )
〖f(x)〗^'=1/(1+e^(-x) )∙((1+e^(-x))/(1+e^(-x) )-1/(1+e^(-x) ))
〖f(x)〗^'=1/(1+e^(-x) )∙(1-1/(1+e^(-x) ))
〖f(x)〗^'=f(x)∙(1-f(x))

现在向后传播的最后一步,计算看看w和b需要如何变化。
特别地,关于w_1的导数dL/(dw_1 ),写成dw_1,等于x_1∙dz。
dw_1=dL/(dw_1 )=dL/dz∙dz/(dw_1 )=dz∙dz/(dw_1 )=x_1∙dz 
同样,dw_2=x_2∙dz    db=dz。然后更新w_1为w_1减去学习率乘以dw_1。类似地更新w_2,更新b为b减去学习率乘以db。这就是单个样本实例的一次梯度更新步骤。
 
现在,你已经知道了怎样计算导数,并且实现了单个训练样本的logistic回归的梯度下降法。但是训练logistic回归模型,不仅仅只有一个训练样本。而是有m个训练样本的整个训练集,因此在下一个视频中,我们将谈谈这些想法如何应用到整个训练集中。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值