2.10 m 个样本的梯度下降-深度学习-Stanford吴恩达教授


←上一篇↓↑下一篇→
2.9 Logistic 回归的梯度下降法回到目录2.11 向量化

m m m 个样本的梯度下降 (Gradient Descent on m m m example)

在之前的视频中,你已经看到如何计算导数,以及应用梯度下降在逻辑回归的一个训练样本上。现在我们想要把它应用在 m m m 个训练样本上。

在这里插入图片描述

首先,让我们时刻记住有关于损失函数 J ( w , b ) J(w,b) J(w,b) 的定义。

J ( w , b ) = 1 m ∑ i = 1 m L ( a ( i ) , y ( i ) ) J(w,b)=\frac 1m \sum_{i=1}^m L(a^{(i)},y^{(i)}) J(w,b)=m1i=1mL(a(i),y(i))

当你的算法输出关于样本 y y y a ( i ) a^{(i)} a(i) a ( i ) a^{(i)} a(i) 是训练样本的预测值,即: σ ( z ( i ) ) = σ ( w T x ( i ) + b ) \sigma(z^{(i)})=\sigma(w^Tx^{(i)}+b) σ(z(i))=σ(wTx(i)+b) 。 所以我们在前面的幻灯中展示的是对于任意单个训练样本,如何计算微分当你只有一个训练样本。因此, d w 1 ,   d w 2 dw_1,\ dw_2 dw1, dw2 d b db db 添上上标 i i i 表示你求得的相应的值。如果你面对的是我们在之前的幻灯中演示的那种情况,但只使用了一个训练样本 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)) 。 现在你知道带有求和的全局代价函数,实际上是1到 m m m 项各个损失的平均。 所以它表明全局代价函数对 w 1 w_1 w1 的微分,对 w 1 w_1 w1 的微分也同样是各项损失对 w 1 w_1 w1 微分的平均。

在这里插入图片描述

但之前我们已经演示了如何计算这项,即之前幻灯中演示的如何对单个训练样本进行计算。所以你真正需要做的是计算这些微分,如我们在之前的训练样本上做的。并且求平均,这会给你全局梯度值,你能够把它直接应用到梯度下降算法中。

所以这里有很多细节,但让我们把这些装进一个具体的算法。同时你需要一起应用的就是逻辑回归和梯度下降。

我们初始化

J = 0 , d w 1 = 0 , d w 2 = 0 , d b = 0 J=0,dw_1=0,dw_2=0,db=0 J=0,dw1=0,dw2=0,db=0

代码流程:

J=0;dw1=0;dw2=0;db=0;
for i = 1 to m
    z(i) = wx(i)+b;
    a(i) = sigmoid(z(i));
    J += -[y(i)log(a(i))+(1-y(i))log(1-a(i));
    dz(i) = a(i)-y(i);
    dw1 += x1(i)dz(i);
    dw2 += x2(i)dz(i);
    db += dz(i);
J/= m;
dw1/= m;
dw2/= m;
db/= m;
w=w-alpha*dw
b=b-alpha*db

幻灯片上只应用了一步梯度下降。因此你需要重复以上内容很多次,以应用多次梯度下降。看起来这些细节似乎很复杂,但目前不要担心太多。希望你明白,当你继续尝试并应用这些在编程作业里,所有这些会变的更加清楚。

但这种计算中有两个缺点,也就是说应用此方法在逻辑回归上你需要编写两个for循环。第一个for循环是一个小循环遍历 m m m 个训练样本,第二个for循环是一个遍历所有特征的for循环。这个例子中我们只有2个特征,所以 n n n 等于2并且 n x n_x nx 等于2。 但如果你有更多特征,你开始编写你的因此 d w 1 dw_1 dw1 d w 2 dw_2 dw2 ,你有相似的计算从 d w 3 dw_3 dw3 一直下去到 d w n dw_n dwn 。所以看来你需要一个for循环遍历所有 n n n 个特征。

当你应用深度学习算法,你会发现在代码中显式地使用for循环使你的算法很低效,同时在深度学习领域会有越来越大的数据集。所以能够应用你的算法且没有显式的for循环会是重要的,并且会帮助你适用于更大的数据集。所以这里有一些叫做向量化技术,它可以允许你的代码摆脱这些显式的for循环。

我想在先于深度学习的时代,也就是深度学习兴起之前,向量化是很棒的。可以使你有时候加速你的运算,但有时候也未必能够。但是在深度学习时代向量化,摆脱for循环已经变得相当重要。因为我们越来越多地训练非常大的数据集,因此你真的需要你的代码变得非常高效。所以在接下来的几个视频中,我们会谈到向量化,以及如何应用向量化而连一个for循环都不使用。所以学习了这些,我希望你有关于如何应用逻辑回归,或是用于逻辑回归的梯度下降,事情会变得更加清晰。当你进行编程练习,但在真正做编程练习之前让我们先谈谈向量化。然后你可以应用全部这些东西,应用一个梯度下降的迭代而不使用任何for循环。

课程PPT

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


←上一篇↓↑下一篇→
2.9 Logistic 回归的梯度下降法回到目录2.11 向量化

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zhao-Jichao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值