2.9 Logistic 回归的梯度下降法-深度学习-Stanford吴恩达教授


←上一篇↓↑下一篇→
2.8 计算图的导数计算回到目录2.10 m 个样本的梯度下降

Logistic 回归的梯度下降法 (Logistic Regression Gradient Descent)

本节我们讨论怎样通过计算偏导数来实现逻辑回归的梯度下降算法。它的关键点是几个重要公式,其作用是用来实现逻辑回归中梯度下降算法。但是在本节视频中,我将使用计算图对梯度下降算法进行计算。我必须要承认的是,使用计算图来计算逻辑回归的梯度下降算法有点大材小用了。但是,我认为以这个例子作为开始来讲解,可以使你更好的理解背后的思想。从而在讨论神经网络时,你可以更深刻而全面地理解神经网络。接下来让我们开始学习逻辑回归的梯度下降算法。

假设样本只有两个特征 x 1 x_1 x1 x 2 x_2 x2 ,为了计算 z z z ,我们需要输入参数 w 1 w_1 w1 w 2 w_2 w2 b b b ,除此之外还有特征值 x 1 x_1 x1 x 2 x_2 x2 。因此 z z z 的计算公式为: z = w 1 x 1 + w 2 x 2 + b z=w_1x_1+w_2x_2+b z=w1x1+w2x2+b 回想一下逻辑回归的公式定义如下: y ^ = a = σ ( z ) \hat{y}=a=\sigma(z) y^=a=σ(z) 其中 z = w T + b ,   σ ( z ) = 1 1 + e − z z=w^T+b,\ \sigma(z)=\frac{1}{1+e^{-z}} z=wT+b, σ(z)=1+ez1 损失函数: L ( y ^ ( i ) , y ( i ) ) = − y ( i ) log ⁡ y ^ ( i ) − ( 1 − y ( i ) ) log ⁡ ( 1 − y ^ ( i ) ) L(\hat{y}^{(i)},y^{(i)})=-y^{(i)}\log\hat{y}^{(i)}-(1-y^{(i)})\log(1-\hat{y}^{(i)}) L(y^(i),y(i))=y(i)logy^(i)(1y(i))log(1y^(i)) 代价函数: J ( w , b ) = 1 m ∑ i m L ( y ^ ( i ) , y ( i ) ) J(w,b)=\frac1m\sum_i^mL(\hat{y}^{(i)},y^{(i)}) J(w,b)=m1imL(y^(i),y(i)) 假设现在只考虑单个样本的情况,单个样本的代价函数定义如下: L ( a , y ) = − ( y log ⁡ ( a ) + ( 1 − y ) log ⁡ ( 1 − a ) ) L(a,y)=-(y\log(a)+(1-y)\log(1-a)) L(a,y)=(ylog(a)+(1y)log(1a)) 其中 a a a 是逻辑回归的输出, y y y 是样本的标签值。现在让我们画出表示这个计算的计算图。 这里先复习下梯度下降法, w w w b b b 的修正量可以表达如下:

w : = w − α ∂ J ( w , b ) ∂ w , b : = b − α ∂ J ( w , b ) ∂ b w:=w-\alpha \frac{\partial J(w,b)}{\partial w},\quad b:=b-\alpha \frac{\partial J(w,b)}{\partial b} w:=wαwJ(w,b),b:=bαbJ(w,b)

在这里插入图片描述

如图:在这个公式的外侧画上长方形。然后计算: y ^ = a = σ ( z ) \hat{y}=a=\sigma(z) y^=a=σ(z) 也就是计算图的下一步。最后计算损失函数 L ( a , y ) L(a,y) L(a,y) 。 有了计算图,我就不需要再写出公式了。因此,为了使得逻辑回归中最小化代价函数 L ( a , y ) L(a,y) L(a,y) ,我们需要做的仅仅是修改参数 w w w b b b 的值。前面我们已经讲解了如何在单个训练样本上计算代价函数的前向步骤。现在让我们来讨论通过反向计算出导数。 因为我们想要计算出的代价函数 L ( a , y ) L(a,y) L(a,y) 的导数,首先我们需要反向计算出代价函数 L ( a , y ) L(a,y) L(a,y) 关于 a a a 的导数,在编写代码时,你只需要用 d a da da 来表示 d L ( a , y ) d a \frac{dL(a,y)}{da} dadL(a,y) 。 通过微积分得到: d L ( a , y ) d a = − y / a + ( 1 − y ) / ( 1 − a ) \frac{dL(a,y)}{da}=-y/a+(1-y)/(1-a) dadL(a,y)=y/a+(1y)/(1a) 如果你不熟悉微积分,也不必太担心,我们会列出本课程涉及的所有求导公式。那么如果你非常熟悉微积分,我们鼓励你主动推导前面介绍的代价函数的求导公式,使用微积分直接求出 L ( a , y ) L(a,y) L(a,y) 关于变量 a a a 的导数。如果你不太了解微积分,也不用太担心。现在我们已经计算出 d a da da ,也就是最终输出结果的导数。 现在可以再反向一步,在编写Python代码时,你只需要用 d z dz dz 来表示代价函数 L L L 关于 z z z 的导数 d L d z \frac{dL}{dz} dzdL ,也可以写成 d L ( a , y ) d z \frac{dL(a,y)}{dz} dzdL(a,y) ,这两种写法都是正确的。 d L d z = a − y \frac{dL}{dz}=a-y dzdL=ay 。 因为 d L ( a , y ) d z = d L d z = ( d L d a ) ⋅ ( d a d z ) \frac{dL(a,y)}{dz}=\frac{dL}{dz}=(\frac{dL}{da})\cdot(\frac{da}{dz}) dzdL(a,y)=dzdL=(dadL)(dzda) , 并且 d a d z = a ( ˙ 1 − a ) \frac{da}{dz}=a\dot(1-a) dzda=a(˙1a) , 而 d L d a = ( − y a + ( 1 − y ) ( 1 − a ) ) \frac{dL}{da}=(-\frac ya+\frac{(1-y)}{(1-a)}) dadL=(ay+(1a)(1y)) ,因此将这两项相乘,得到:

d z = d L ( a , y ) d z = d L d z = ( d L d a ) ⋅ ( d a d z ) = ( − y a + ( 1 − y ) ( 1 − a ) ) ⋅ a ( 1 − a ) = a − y dz=\frac{dL(a,y)}{dz}=\frac{dL}{dz}=(\frac{dL}{da})\cdot(\frac{da}{dz})=(-\frac ya+\frac{(1-y)}{(1-a)})\cdot a(1-a)=a-y dz=dzdL(a,y)=dzdL=(dadL)(dzda)=(ay+(1a)(1y))a(1a)=ay

视频中为了简化推导过程,假设 n x n_x nx 这个推导的过程就是我之前提到过的链式法则。如果你对微积分熟悉,放心地去推导整个求导过程,如果不熟悉微积分,你只需要知道 d z = ( a − y ) dz=(a-y) dz=(ay) 已经计算好了。

现在进行最后一步反向推导,也就是计算 w w w b b b 变化对代价函数 L L L 的影响,特别地,可以用: d w 1 = 1 m ∑ i m x 1 ( i ) ( a ( i ) − y ( i ) ) dw_1=\frac1m\sum_i^mx_1^{(i)}(a^{(i)}-y^{(i)}) dw1=m1imx1(i)(a(i)y(i)) d w 2 = 1 m ∑ i m x 2 ( i ) ( a ( i ) − y ( i ) ) dw_2=\frac1m\sum_i^mx_2^{(i)}(a^{(i)}-y^{(i)}) dw2=m1imx2(i)(a(i)y(i)) d b = 1 m ∑ i m ( a ( i ) − y ( i ) ) db=\frac1m\sum_i^m(a^{(i)}-y^{(i)}) db=m1im(a(i)y(i)) 视频中, d w 1 dw_1 dw1 表示 ∂ L ∂ w 1 = x 1 ⋅ d z \frac{\partial L}{\partial w_1}=x_1\cdot dz w1L=x1dz d w 2 dw_2 dw2 表示 ∂ L ∂ w 2 = x 2 ⋅ d z \frac{\partial L}{\partial w_2}=x_2\cdot dz w2L=x2dz d b = d z db = dz db=dz 。 因此,关于单个样本的梯度下降算法,你所需要做的就是如下的事情: 使用公式 d z = ( a − y ) dz=(a-y) dz=(ay) 计算 d z dz dz , 使用 d w 1 = x 1 ⋅ d z dw_1=x_1 \cdot dz dw1=x1dz 计算 d w 1 dw_1 dw1 , 计算 d w 2 = x 2 ⋅ d z dw_2=x_2 \cdot dz dw2=x2dz 计算 d w 2 dw_2 dw2 d b = d z db=dz db=dz 计算 d b db db ,然后: 更新 w 1 = w 1 − α   d w 1 w_1=w_1-\alpha\ dw_1 w1=w1α dw1 , 更新 w 2 = w 2 − α   d w 2 w_2=w_2-\alpha\ dw_2 w2=w2α dw2 , 更新 b = b − α   d b b=b-\alpha\ db b=bα db 。 这就是关于单个样本实例的梯度下降算法中参数更新一次的步骤。

在这里插入图片描述

现在你已经知道了怎样计算导数,并且实现针对单个训练样本的逻辑回归的梯度下降算法。但是,训练逻辑回归模型不仅仅只有一个训练样本,而是有 m m m 个训练样本的整个训练集。因此在下一节视频中,我们将这些思想应用到整个训练样本集中,而不仅仅只是单个样本上。

课程PPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
2.8 计算图的导数计算回到目录2.10 m 个样本的梯度下降

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
logistic回归中,梯度下降是一种常用的优化算,用于最小化损失函数。梯度下降的目标是通过迭代更新模型参数,使得损失函数到最小值。 具体来说,在二项逻辑斯蒂回归中,损失函数通常使用对数似然损失函数。对于每个样本,损失函数的计算可以通过求解负对数似然函数得到。然后,通过计算损失函数对模型参数的偏导数,即梯度,来更新模型参数。 在梯度下降中,每次迭代都会根据当前参数的梯度方向来更新参数。具体的更新规则可以使用学习率来控制每次迭代的步长。通过不断迭代更新参数,最终可以找到损失函数的最小值,从而得到最优的模型参数。 需要注意的是,在logistic回归中,梯度下降可以使用批量梯度下降、随机梯度下降或者小批量梯度下降等不同的变种。每种变种都有其优缺点,选择合适的梯度下降取决于具体的问题和数据集。 总结起来,logistic回归中的梯度下降是一种通过迭代更新模型参数来最小化损失函数的优化算。它是一种常用且有效的方,用于训练logistic回归模型。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [逻辑斯蒂回归以及它的梯度下降](https://blog.csdn.net/Alter__/article/details/109449043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[飞桨机器学习]逻辑回归(六种梯度下降方式)](https://blog.csdn.net/chenqianhe2/article/details/115009758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值