←上一篇 ↓↑ 下一篇→
1.10 卷积神经网络示例 回到目录 1.12 总结

为什么使用卷积 (Why Convolutions?)

这是本周最后一节课,我们来分析一下卷积在神经网络中如此受用的原因,然后对如何整合这些卷积,如何通过一个标注过的训练集训练卷积神经网络做个简单概括。和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接,举例说明一下。


假设有一张32×32×3维度的图片,这是上节课的示例,假设用了6个大小为5×5的过滤器,输出维度为28×28×6。32×32×3=3072,28×28×6=4704。我们构建一个神经网络,其中一层含有3072个单元,下一层含有4074个单元,两层中的每个神经元彼此相连,然后计算权重矩阵,它等于4074×3072≈1400万,所以要训练的参数很多。虽然以现在的技术,我们可以用1400多万个参数来训练网络,因为这张32×32×3的图片非常小,训练这么多参数没有问题。如果这是一张1000×1000的图片,权重矩阵会变得非常大。我们看看这个卷积层的参数数量,每个过滤器都是5×5,一个过滤器有25个参数,再加上偏差参数,那么每个过滤器就有26个参数,一共有6个过滤器,所以参数共计156个,参数数量还是很少。

卷积网络映射这么少参数有两个原因:

一是参数共享。观察发现,特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域。也就是说,如果你用一个3×3的过滤器检测垂直边缘,那么图片的左上角区域,以及旁边的各个区域(左边矩阵中蓝色方框标记的部分)都可以使用这个3×3的过滤器。每个特征检测器以及输出都可以在输入图片的不同区域中使用同样的参数,以便提取垂直边缘或其它特征。它不仅适用于边缘特征这样的低阶特征,同样适用于高阶特征,例如提取脸上的眼睛,猫或者其他特征对象。即使减少参数个数,这9个参数同样能计算出16个输出。直观感觉是,一个特征检测器,如垂直边缘检测器用于检测图片左上角区域的特征,这个特征很可能也适用于图片的右下角区域。因此在计算图片左上角和右下角区域时,你不需要添加其它特征检测器。假如有一个这样的数据集,其左上角和右下角可能有不同分布,也有可能稍有不同,但很相似,整张图片共享特征检测器,提取效果也很好。


第二个方法是使用稀疏连接,我来解释下。这个0是通过3×3的卷积计算得到的,它只依赖于这个3×3的输入的单元格,右边这个输出单元(元素0)仅与36个输入特征中9个相连接。而且其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。


再举一个例子,这个输出(右边矩阵中红色标记的元素 30)仅仅依赖于这9个特征(左边矩阵红色方框标记的区域),看上去只有这9个输入特征与输出相连接,其它像素对输出没有任何影响。

神经网络可以通过这两种机制减少参数,以便我们用更小的训练集来训练它,从而预防过度拟合。你们也可能听过,卷积神经网络善于捕捉平移不变。通过观察可以发现,向右移动两个像素,图片中的猫依然清晰可见,因为神经网络的卷积结构使得即使移动几个像素,这张图片依然具有非常相似的特征,应该属于同样的输出标记。实际上,我们用同一个过滤器生成各层中,图片的所有像素值,希望网络通过自动学习变得更加健壮,以便更好地取得所期望的平移不变属性。

这就是卷积或卷积网络在计算机视觉任务中表现良好的原因。


最后,我们把这些层整合起来,看看如何训练这些网络。比如我们要构建一个猫咪检测器,我们有下面这个标记训练集, xxx 表示一张图片, y^\hat{y}y^​ 是二进制标记或某个重要标记。我们选定了一个卷积神经网络,输入图片,增加卷积层和池化层,然后添加全连接层,最后输出一个softmax,即 y^\hat{y}y^​ 。卷积层和全连接层有不同的参数 www 和偏差 bbb ,我们可以用任何参数集合来定义代价函数。一个类似于我们之前讲过的那种代价函数,并随机初始化其参数 www 和 bbb ,代价函数 JJJ 等于神经网络对整个训练集的预测的损失总和再除以 mmm (即 CostJ=1m∑i=1mL(y^(i),y(i))Cost\ J=\frac1m\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)})Cost J=m1​∑i=1m​L(y^​(i),y(i)) )。所以训练神经网络,你要做的就是使用梯度下降法,或其它算法,例如Momentum梯度下降法,含RMSProp或其它因子的梯度下降来优化神经网络中所有参数,以减少代价函数 JJJ 的值。通过上述操作你可以构建一个高效的猫咪检测器或其它检测器。

恭喜你完成了这一周的课程,你已经学习了卷积神经网络的所有基本构造模块,以及如何在高效图片识别系统中整合这些模块。透过本周编程练习,你可以更加具体了解这些概念,试着整合这些构造模块,并用它们解决自己的问题。

下周,我们将继续深入学习卷积神经网络。我曾提到卷积神经网络中有很多超参数,下周,我打算具体展示一些最有效的卷积神经网络示例,你也可以尝试去判断哪些网络架构类型效率更高。人们通常的做法是将别人发现和发表在研究报告上的架构应用于自己的应用程序。下周看过更多具体的示例后,相信你会做的更好。此外,下星期我们也会深入分析卷积神经网络如此高效的原因,同时讲解一些新的计算机视觉应用程序,例如,对象检测和神经风格迁移以及如何利用这些算法创造新的艺术品形式。

课程板书





←上一篇 ↓↑ 下一篇→
1.10 卷积神经网络示例 回到目录 1.12 总结

1.11 为什么使用卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授相关推荐

  1. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  2. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  3. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  4. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  5. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  6. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

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

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

  8. 4.11 一维到三维推广-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 4.10 风格代价函数 回到目录 4.12 总结 一维到三维推广 (1D and 3D Generalizations of Models) 你已经学习了许多关于卷积神经网络 ...

  9. 2.11 计算机视觉现状-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.10 数据扩充 回到目录 2.12 总结 计算机视觉现状 (The State of Computer Vision) 深度学习已经成功地应用于计算机视觉.自然语言处理. ...

  10. 4.1 什么是人脸识别-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 总结 回到目录 4.2 One-Shot 学习 什么是人脸识别 (What is face recognition?) 欢迎来到第四周,即这门课卷积神经网络课程的最 ...

最新文章

  1. 职称计算机证是继续教育的内容吗,豆腐网教你一分钟弄懂继续教育学时认定表及上传注意事项~...
  2. es6 generator_让我们探索一下ES6 Generators
  3. (轉貼) 網路***成詐騙新手法 警方提醒民眾小心 (News)
  4. 2021年春季学期-信号与系统-第八次作业参考答案
  5. 单链表的插入和删除_从0开始的编程之梦——数据结构之单链表的基本运算
  6. python装饰器类-python_类装饰器
  7. 数据库mysql建立索引_为mysql数据库建立索引
  8. SAP OData service的执行是如何从Gateway系统转交到backend系统
  9. c#与access建立连接用作登录_组态王与Access数据库的数据交换
  10. 编程指南_halide编程技术指南(连载一)
  11. java 如何捕获线程中的异常处理_如何捕获Java中另一个线程抛出的异常?
  12. Spring框架----Confinguration和Component-Scan注解
  13. 【图像特征提取1】方向梯度直方图HOG---从理论到实践------附带积分图像的解析
  14. python把dict转成json_Python dict(或对象)与json之间的互相转化
  15. OO第四单元UML作业总结暨OO课程总结
  16. Shortest Prefixes(poj 2001)
  17. 2020年数据库系统工程师上午真题及答案解析
  18. 大数据工程师、数据挖掘师和数据分析师有啥区别
  19. C语言基础知识(学习笔记)
  20. day17-25序列化、python操作CSV/EXCEL/PDF/WORD/PPT文件、爬虫、正则表达式

热门文章

  1. .Net Core添加分布式Session
  2. JMeter和JMeterPlugin 下载安装
  3. 性能测试-Jmeter
  4. HTML big 标签
  5. 2011年9月 成都 腾讯笔试 面试过程(亲身体验,仅供参考娱乐)(一)
  6. 使用Oracle中fileopen命令加载文件时遇到的怪问题(转)
  7. Entity Framework 学习高级篇2—改善EF代码的方法(下)
  8. UA MATH567 高维统计I 概率不等式8 亚指数范数
  9. UA MATH566 统计理论 截断数据
  10. windbg查看SSDT表