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

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

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

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

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

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

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

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

我们初始化

J=0,dw1=0,dw2=0,db=0J=0,dw_1=0,dw_2=0,db=0J=0,dw1​=0,dw2​=0,db=0

代码流程:

J=0;dw1=0;dw2=0;db=0;
for i = 1 to mz(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循环是一个小循环遍历 mmm 个训练样本,第二个for循环是一个遍历所有特征的for循环。这个例子中我们只有2个特征,所以 nnn 等于2并且 nxn_xnx​ 等于2。 但如果你有更多特征,你开始编写你的因此 dw1dw_1dw1​ , dw2dw_2dw2​ ,你有相似的计算从 dw3dw_3dw3​ 一直下去到 dwndw_ndwn​ 。所以看来你需要一个for循环遍历所有 nnn 个特征。

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

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

课程PPT




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

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

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

    ←上一篇 ↓↑ 下一篇→ 2.8 计算图的导数计算 回到目录 2.10 m 个样本的梯度下降 Logistic 回归的梯度下降法 (Logistic Regression Gradient Desce ...

  2. 3.9 神经网络的梯度下降法-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.8 激活函数的导数 回到目录 3.10 直观理解反向传播 神经网络的梯度下降法 (Gradient Descent for Neural Networks) 在这个视频中 ...

  3. 2.14 向量化 Logistic 回归的梯度输出-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.13 向量化 Logistic 回归 回到目录 2.15 Python 中的广播 向量化 Logistic 回归的梯度输出 (Vectorizing Logistic R ...

  4. 2.4 梯度下降法-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.3 Logistic 回归损失函数 回到目录 2.5 导数 梯度下降法 (Gradient Descent) 梯度下降法可以做什么? 在你测试集上,通过最小化代价函数(成 ...

  5. 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.9 神经网络的梯度下降法 回到目录 3.11 随机初始化 直观理解反向传播 (Backpropagation Intuition (Optional)) 这个视频主要是推 ...

  6. 10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授

    梯度下降 批量梯度下降法(Batch gradient descent) 拥有了大数据,就意味着,我们的算法模型中得面临一个很大的 m 值.回顾到我们的批量梯度下降法: 重复直到收敛:重复直到收敛:重 ...

  7. 1.3 程序示例--梯度下降-机器学习笔记-斯坦福吴恩达教授

    回归模块 回归模块中提供了批量梯度下降和随机梯度下降两种学习策略来训练模型: # coding: utf-8 # linear_regression/regression.py import nump ...

  8. 1.2 线性回归与梯度下降-机器学习笔记-斯坦福吴恩达教授

    线性回归 首先,我们明确几个常用的数学符号: 特征(feature):xix_ixi​ , 比如,房屋的面积,卧室数量都算房屋的特征 特征向量(输入):xxx ,一套房屋的信息就算一个特征向量,特征向 ...

  9. 2.2 理解 Mini-batch 梯度下降-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.1 Mini-batch 梯度下降 回到目录 2.3 指数加权平均 理解 Mini-batch 梯度下降 (Understanding Mini-batch Gradie ...

最新文章

  1. 字符编码 ansi unicode utf-8 区别
  2. boost::math::catmull_rom用法的测试程序
  3. 字符串之找到字符串的最大无重复字符串子串
  4. Docker 简介 安装
  5. Springboot底层注解(容器功能)
  6. 不能使用泛型的形参创建对象_数据类型之----泛型
  7. 《南溪的目标检测学习笔记》——neck组件的设计笔记
  8. Linux下samba服务搭建
  9. 微信小程序开发之路(3)— 添加一个Button按钮点击事件
  10. python3 sorted()的用法
  11. 努力就有结果,我是如何30岁转行学习软件测试拿到13k的?
  12. C语言sizeof与strlen详解(附大量笔试题题解过程)
  13. 深入分析Kafka架构(三):消费者消费方式、三种分区分配策略、offset维护
  14. Vue3 究竟好在哪里?(和 React Hook 的详细对比)
  15. 各种SQL子查询实例
  16. Ubuntu18.04下的PCL安装(摸爬滚打)
  17. 关键词推广-关键词推广软件
  18. 【Nexus】安装配置与使用
  19. OpenCV安装及其开发环境配置(C++)
  20. linux grub vga,调整ubuntu启动界面vga分辨率的方法

热门文章

  1. 【 随笔 】 财源滚滚
  2. 【面试虐菜】—— JAVA面试题(3)
  3. JQuery中隐式迭代和each的区别(通过反选功能解析)
  4. 奇怪,不能上GOOGLE了...你们也是这样吗?
  5. fedora18 fedora17安装显卡驱动和网卡驱动
  6. UA MATH563 概率论的数学基础 中心极限定理16 Kolmogorov 3-series定理
  7. Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S
  8. 使用Notepad++ 删除非连续的列内容操作实例
  9. 在持续交付阶段中的测试覆盖率(译)
  10. CentOS上Nginx服务器安装phpmyadmin