1.4)深度学习笔记------深层神经网络

目录

1)Deep L-layer neural network

2)Forward Propagation in a Deep Network(重点)

3)Getting your matrix dimensions right

4)Building blocks of deep neural networks

5)Forward and Backward Propagation(重点)

6)Parameters vs Hyperparameters

7)Summary


以下笔记是吴恩达老师深度学习课程第一门课第四周的的学习笔记:Deep Neural Networks。笔记参考了黄海广博士的内容,在此表示感谢。 


1)Deep L-layer neural network

目前为止我们学习了只有一个单隐藏层的神经网络的正向传播和反向传播,还有逻辑回归,并且你还学到了向量化,这在随机初始化权重时是很重要。本周所要做的是把这些概念集合起来,就可以实现你自己的深度神经网络。

复习下前三周的课的内容:

1.逻辑回归,结构如下左上图所示。一个隐藏层的神经网络,结构如右上图所示:

神经网络的层数是这么定义的:从左到右,由0开始定义。如上图:含有一个隐藏层的是2层神经网络,2个隐藏层的是3层神经网络,5个隐藏层的是6层神经网络。我们在这里再复习一下神经网络里常见的符号定义。如下图:

  • 总层数 L=4。输入层是第 0 层,输出层是第 L 层;
  • n^{[l]}表示第 l 层包含的单元个数,l=0,1,...,L,下图中n^{[0]}=n_x=3,标识输入特征有3个。n^{[1]}=5,n^{[2]}=5,n^{[3]}=3,n^{[4]}=n^{[L]}=1
  • 第 l 层的输出用a^{[l]}表示,a^{[l]}=g^{[l]}(z^{[l]})W^{[l]}表示 l 层上的权重;

这里写图片描述


2)Forward Propagation in a Deep Network(重点)

现在我们来推导四层神经网络的输出,我们之前已经推导了 2 层神经网络的前向传播,四层神经网路只是在计算上多重复了几次。跟往常一样,我们先来看对其中一个训练样本 x 如何应用前向传播,之后讨论向量化的版本。

第一层:

{​{z}^{[1]}}={​{w}^{[1]}}x+{​{b}^{[1]}}={​{w}^{[1]}}a^{[0]}+{​{b}^{[1]}}

 {​{a}^{[1]}}={​{g}^{[1]}} {({z}^{[1]})}

第二层:

{​{z}^{[2]}}={​{w}^{[2]}}a^{[1]}+{​{b}^{[2]}}

                                                                                        {​{a}^{[2]}}={​{g}^{[2]}} {({z}^{[2]})}                                                                                       

以此类推,第四层:

{​{z}^{[4]}}={​{w}^{[4]}}a^{[3]}+{​{b}^{[4]}}

                                                                                  {​{a}^{[4]}}={​{g}^{[4]}} {({z}^{[4]})}                                                                                 

向量化实现过程可以写成:

{​{Z}^{[l]}}={​{W}^{[l]}}{​{A}^{[l-1]}}+{​{b}^{[l]}}

{​{A}^{[l]}}={​{g}^{[l]}}{({Z}^{[l]})}$ (${​{A}^{[0]}} = X)


3)Getting your matrix dimensions right

当实现深度神经网络的时候,其中一个我(这里指的是吴恩达老师)常用的检查代码是否有错的方法就是拿出一张纸过一遍算法中矩阵的维数。 对于单个训练样本:

w^{[l]} 的维度是 :({​{n}^{[l]}}$, ${​{n}^{[l-1]}})

b^{[l]}的维度是: ({​{n}^{[l]}},1)

{​{z}^{[l]}}$,${​{a}^{[l]}}$: $({​{n}^{[l]}},1)

其中,l=0,1,...,Ln^{[l]},n^{[l-1]}分别表示l,l-1层所包含单元个数。

同时,{​{dw}^{[l]}}$,${​{w}^{[l]}} 维度相同,{​{db}^{[l]}},{​{b}^{[l]}} 维度相同。且 w,b 向量化维度不变 ;但 z,a,x 的维度会向量化后发生变化。

对于m个训练样本,输入矩阵X的维度是(n^{[0]},m),向量化后Z^{[l]},A^{[l]}的维度变为:(n^{[l]},m)。下图中b^{[l]}的维度也发生了变化,不过这是因为在计算中由于Python的广播性质而变化的。


4)Building blocks of deep neural networks

这周的前几个视频和之前几周的视频里,你已经看到过前向反向传播的基础组成部分了,它们也是深度神经网络的重要组成部分,现在我们来用它们建一个深度神经网络。 如下图所示,对于第l层来说:

前向传播:

       输入:a^{[l-1]}

       输出a^{[l]}

       参数:W^{[l]},b^{[l]};缓存变量:z^{[l]}

反向传播:

       输入:da^{[l]}

       输出da^{[l-1]},dW^{[l]},db^{[l]}

       参数:W^{[l]},b^{[l]}

这里写图片描述

刚才这是第l层的流程块图,对于神经网络所有层,整体的流程块图正向传播过程和反向传播过程如下所示:


5)Forward and Backward Propagation(重点)

前面我们学习了构成深度神经网络的基本模块,比如每一层都有前向传播步骤以及一个相反的反向传播步骤,这次视频我们讲讲如何实现这些步骤。

先讲前向传播,输入{a}^{[l-1]},输出是{a}^{[l]},缓存为{z}^{[l]}; 前向传播的步骤可以写成 :

{z}^{[l]}={w}^{[l]}\cdot{a}^{[l-1]}+{b}^{[l]}

{​{a}^{[l]}}={​{g}^{[l]}}\left( {​{z}^{[l]}}\right)

向量化实现过程可以写成:

{Z}^{[l]}={W}^{[l]}\cdot {A}^{[l-1]}+{b}^{[l]}

{A}^{[l]}={g}^{[l]}({Z}^{[l]})

下面讲反向传播的步骤:

  1. d{​{z}^{[l]}}=d{​{a}^{[l]}}*{​{g}^{[l]}}'( {​{z}^{[l]}})
  2. d{​{w}^{[l]}}=d{​{z}^{[l]}}\cdot{​{a}^{[l-1]}}
  3. d{​{b}^{[l]}}=d{​{z}^{[l]}}
  4. d{​{a}^{[l-1]}}={​{w}^{\left[ l \right]T}}\cdot {​{dz}^{[l]}}
  5. d{​{z}^{[l]}}={​{w}^{[l+1]T}}d{​{z}^{[l+1]}}\cdot \text{ }{​{g}^{[l]}}'( {​{z}^{[l]}})

式子(5)由式子(4)带入式子(1)得到,前四个式子就可实现反向函数。

向量化实现过程可以写成:

  1. d{​{Z}^{[l]}}=d{​{A}^{[l]}}*{​{g}^{\left[ l \right]}}'\left({​{Z}^{[l]}} \right)
  2. d{​{W}^{[l]}}=\frac{1}{m}dZ^{[l]}A^{[l-1]T}
  3. d{​{b}^{[l]}}=\frac{1}{m}np.sum(d{​{z}^{[l]}},axis=1,keepdims=True)
  4. d{​{A}^{[l-1]}}={​{W}^{\left[ l \right]T}}.d{​{Z}^{[l]}}

6)Parameters vs Hyperparameters

该部分介绍神经网络中的参数(parameters)和超参数(hyperparameters)的概念。神经网络中的参数就是我们熟悉的W^{[l]}

b^{[l]}。而超参数则是例如学习速率α,训练迭代次数N,神经网络层数L,各层神经元个数n^{[l]},激活函数g(z)等。之所以叫做超参数的原因是它们决定了参数 W^{[l]} 和b^{[l]} 的值。在后面的第二门课我们还将学习其它的超参数,这里先不讨论。

如何设置最优的超参数是一个比较困难的、需要经验知识的问题。通常的做法是选择超参数一定范围内的值,分别代入神经网络进行训练,测试cost function随着迭代次数增加的变化,根据结果选择cost function最小时对应的超参数值。这类似于validation的方法


7)Summary

本节课主要介绍了深层神经网络,是上一节浅层神经网络的拓展和归纳。

  • 首先,我们介绍了建立神经网络模型一些常用的标准的标记符号
  • 然后,用流程块图的方式详细推导正向传播过程和反向传播过程的输入输出和参数表达式
  • 接着,我们介绍了超参数的概念,解释了超参数与参数的区别。

至此,吴恩达老师深度学习专项课程第一门课《神经网络与深度学习》学习结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Struts1工作原理

Struts1工作原理图 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面…

【洛谷 - P1772 】[ZJOI2006]物流运输(dp)

题干: 题目描述 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在&am…

RabbitMQ初识

官方介绍 - 中文 本文环境:ubuntu:20.04 RabbitMQ安装、配置与基本使用 安装RabbitMQ # 简易脚本安装 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash sudo apt-get install rabbitmq-server -y --f…

Apollo进阶课程 ⑦ | 高精地图的采集与生产

目录 1.高精地图采集过程中需要用到的传感器 1.1)GPS 1.2)IMU 1.3)轮速计 2.高精地图采集过程中的制图方案 2.1)方案一 激光雷达 2.2)Camera融合激光雷达 原文链接:Apollo进阶课程 ⑦ | 高精地图的采…

你看不懂的spring原理是因为不知道这几个概念

背景 问题从一杯咖啡开始。 今天我去楼下咖啡机买了一杯「粉黛拿铁」。制作过程中显示: 我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力。咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉…

EasyOcr 安装(linux、docker)、使用(gin、python)

EasyOcr git地址 EasyOCR是一款用python语言编写的OCR第三方库,同时支持GPU和CPU,目前已经支持超过70种语言. 安装(CPU) 注意: 本文是在仅在cpu下使用。如要使用CUDA版本,请在pytorch网站上选择正确的,并关闭此文章。…

Python之Numpy入门实战教程(2):进阶篇之线性代数

Numpy、Pandas、Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程。NumPy是使用Python进行科学计算的基础库。 NumPy以强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。 本文主要介绍Numpy库…

【牛客 - 369F】小D的剑阵(最小割建图,二元关系建图,网络流最小割)

题干: 链接:https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 题目描述 现在你有 n 把灵剑,其中选择第i把灵剑会得到的 wiw_iwi​ 攻击力。 于此同时,还有q个约束,每个约束形如: …

【HDU - 3870】Catch the Theves(平面图转对偶图最短路,网络流最小割)

题干: A group of thieves is approaching a museum in the country of zjsxzy,now they are in city A,and the museum is in city B,where keeps many broken legs of zjsxzy.Luckily,GW learned the conspiracy when he is watching stars and told it to zjsxz…

Apollo进阶课程 ⑧ | 高精地图的格式规范

目录 高精地图规范格式分类 NDS格式规范 Open DRIVE格式规范 原文链接:Apollo进阶课程 ⑧ | 高精地图的格式规范 上周阿波君为大家详细介绍了「Apollo进阶课程⑦高精地图的采集与生产」。 高精地图采集过程中需要用到的传感器有GPS、IMU和轮速计。 无论是哪种传感…

Apollo进阶课程 ⑨ | 业界的高精地图产品

目录 高精地图的格式规范-OpenDRIVE HERE HD LIve Map HERE HD LIVE MAP-MAP COLLECTION HERE HD Live Map-Crowdsourced Update HERE HD Live Map-Learning HERE HD Live Map-Product MobileEye MobileEye-Pillars of Autonomous Driving MobileEye-Map as back-up s…

Apollo进阶课程⑩ | Apollo地图采集方案

目录 TomTom的高精地图和RoadDNA APOLLO地图采集流程 基站搭建 Apollo地图采集硬件方案 地图数据服务平台 原文链接:进阶课程⑩ | Apollo地图采集方案 上周阿波君为大家详细介绍了「Apollo进阶课程⑨业界的高精地图产品」。 出现在课程中的业界制作高精地图的厂…

用Python写Shell

环境 ubuntu: 18.04python: 3.6.9xnosh: 0.11.0 下载 pip3 install xonsh 简单使用 # 开启xonsh xonsh # 下载小工具(也可不下):高亮提示、智能补全 xpip install -U xonsh[full]# 随便下载一个包 pip3 install moneyimport money m1 money.Money(…

Apollo进阶课程⑪ | Apollo地图生产技术

目录 高精地图生产流程 数据采集 数据处理 元素识别 人工验证 全自动数据融合加工 基于深度学习的地图要素识别 人工验证生产 地图成果 原文链接:进阶课程⑪ | Apollo地图生产技术 高精地图是自动驾驶汽车的「千里眼」和「透视镜」。 摄像头、激光雷达、传…

Jenkins初识

Jenkins是啥 官方文档 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。CI(Continuous integration,持续集成…

Apollo进阶课程 ⑫ | Apollo高精地图

目录 Apollo高精地图表征元素 Apollo车道模型 UTM坐标系 84坐标系 Track坐标系 Apollo opDRIVE规范 HDMAP引擎 高精地图在政策方面的挑战 原文链接:进阶课程 ⑫ | Apollo高精地图 高精地图与普通地图不同,高精地图主要服务于自动驾驶车辆&#…

一步步编写操作系统 6 启动bochs

运行bochs 终于安装完成了,虽然这过程中有可能会出现各种各样的问题,但还是值得庆祝的,对Linux不熟的朋友第一次就搞定了这么个硬货,我理解您此时的喜大普奔之情,哈哈,给大家点赞。顺便说一句,…

Apollo技能图谱2.0焕新发布 更新7大能力91个知识点

阿波君 Apollo开发者社区 2月26日 过去的一年里,Apollo发展迅速,向智能交通不断渗透。从2.5到3.5版本,无论控制系统的升级、高清地图的泛用和车路协同技术服务的推进,无不在推动自动驾驶技术从开源向开辟商业化新格局位移。 在开…

一步步编写操作系统 07 开机启动bios

bios是如何苏醒的 bios其实一直睡在某个地方,直到被唤醒……前面热火朝天的说了bios的功能和内存布局,似乎还没说到正题上,bios是如何启动的呢。因为bios是计算机上第一个运行的软件,所以它不可能自己加载自己,由此可…

0.《沉浸式线性代数》:前言

今天介绍一本新书《immersive linear algebra》:世界上第一本具有完全交互式图形的线性代数书。本书目前已经更新完毕。 作者是:JacobStrm,Kallestrm和Tomas Akenine-Mller,全文共包含11个部分:前言和10个正文章节。内…