神经网络入门篇:详解搭建神经网络块(Building blocks of deep neural networks)
搭建神经网络块

这是一个层数较少的神经网络,选择其中一层(方框部分),从这一层的计算着手。在第\(l\)层有参数\(W^{[l]}\)和\(b^{[l]}\),正向传播里有输入的激活函数,输入是前一层\(a^{[l-1]}\),输出是\(a^{[l]}\),之前讲过\(z^{[l]} =W^{[l]}a^{[l-1]} +b^{[l]}\),\(a^{[l]} =g^{[l]}(z^{[l]})\),那么这就是如何从输入\(a^{[l-1]}\)走到输出的\(a^{[l]}\)。之后就可以把\(z^{[l]}\)的值缓存起来,在这里也会把这包括在缓存中,因为缓存的\(z^{[i]}\)对以后的正向反向传播的步骤非常有用。
然后是反向步骤或者说反向传播步骤,同样也是第\(l\)层的计算,会需要实现一个函数输入为\(da^{[l]}\),输出\(da^{[l-1]}\)的函数。一个小细节需要注意,输入在这里其实是\(da^{[l]}\)以及所缓存的\(z^{[l]}\)值,之前计算好的\(z^{[l]}\)值,除了输出\(da^{[l-1]}\)的值以外,也需要输出需要的梯度\(dW^{[l]}\)和\(db^{[l]}\),这是为了实现梯度下降学习。
这就是基本的正向步骤的结构,把它成为称为正向函数,类似的在反向步骤中会称为反向函数。总结起来就是,在l层,会有正向函数,输入\(a^{[l-1]}\)并且输出\(a^{[l]}\),为了计算结果需要用\(W^{[l]}\)和\(b^{[l]}\),以及输出到缓存的\(z^{[l]}\)。然后用作反向传播的反向函数,是另一个函数,输入\(da^{[l]}\),输出\(da^{[l-1]}\),就会得到对激活函数的导数,也就是希望的导数值\(da^{[l]}\)。\(a^{[l-1]}\)是会变的,前一层算出的激活函数导数。在这个方块(第二个)里需要\(W^{[l]}\)和\(b^{[l]}\),最后要算的是\(dz^{[l]}\)。然后这个方块(第三个)中,这个反向函数可以计算输出\(dW^{[l]}\)和\(db^{[l]}\)。

然后如果实现了这两个函数(正向和反向),然后神经网络的计算过程会是这样的:

把输入特征\(a^{[0]}\),放入第一层并计算第一层的激活函数,用\(a^{[1]}\)表示,需要\(W^{[1]}\)和\(b^{[1]}\)来计算,之后也缓存\(z^{[l]}\)值。之后喂到第二层,第二层里,需要用到\(W^{[2]}\)和\(b^{[2]}\),会需要计算第二层的激活函数\(a^{[2]}\)。后面几层以此类推,直到最后算出了\(a^{[L]}\),第\(L\)层的最终输出值\(\hat y\)。在这些过程里缓存了所有的\(z\)值,这就是正向传播的步骤。

对反向传播的步骤而言,需要算一系列的反向迭代,就是这样反向计算梯度,需要把\(da^{[L]}\)的值放在这里,然后这个方块会给\({da}^{[L-1]}\)的值,以此类推,直到得到\({da}^{[2]}\)和\({da}^{[1]}\),还可以计算多一个输出值,就是\({da}^{[0]}\),但这其实是的输入特征的导数,并不重要,起码对于训练监督学习的权重不算重要,可以止步于此。反向传播步骤中也会输出\(dW^{[l]}\)和\(db^{[l]}\),这会输出\(dW^{[3]}\)和\(db^{[3]}\)等等。
神经网络的一步训练包含了,从\(a^{[0]}\)开始,也就是 \(x\) 然后经过一系列正向传播计算得到\(\hat y\),之后再用输出值计算这个(第二行最后方块),再实现反向传播。现在就有所有的导数项了,\(W\)也会在每一层被更新为\(W=W-αdW\),\(b\)也一样,\(b=b-αdb\),反向传播就都计算完毕,有所有的导数值,那么这是神经网络一个梯度下降循环。
继续下去之前再补充一个细节,概念上会非常有帮助,那就是把反向函数计算出来的\(z\)值缓存下来。当做编程练习的时候去实现它时,会发现缓存可能很方便,可以迅速得到\(W^{[l]}\)和\(b^{[l]}\)的值,非常方便的一个方法,在编程练习中缓存了\(z\),还有\(W\)和\(b\)对吧?从实现角度上看,认为是一个很方便的方法,可以将参数复制到在计算反向传播时所需要的地方。
现在们见过实现深度神经网络的基本元件,在每一层中有一个正向传播步骤,以及对应的反向传播步骤,以及把信息从一步传递到另一步的缓存。
神经网络入门篇:详解搭建神经网络块(Building blocks of deep neural networks)的更多相关文章
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)
译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...
- Neural Networks and Deep Learning 课程笔记(第四周)深层神经网络(Deep Neural Networks)
1. 深层神经网络(Deep L-layer neural network ) 2. 前向传播和反向传播(Forward and backward propagation) 3. 总结 4. 深层网络 ...
- (十八)整合Nacos组件,环境搭建和入门案例详解
整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- java 日志体系(三)log4j从入门到详解
java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第四周:深层神经网络(Deep Neural Networks)-课程笔记
第四周:深层神经网络(Deep Neural Networks) 4.1 深层神经网络(Deep L-layer neural network) 有一些函数,只有非常深的神经网络能学会,而更浅的模型则 ...
- 吴恩达《深度学习》-课后测验-第一门课 (Neural Networks and Deep Learning)-Week 4 - Key concepts on Deep Neural Networks(第四周 测验 – 深层神经网络)
Week 4 Quiz - Key concepts on Deep Neural Networks(第四周 测验 – 深层神经网络) \1. What is the "cache" ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
随机推荐
- 【python笔记】高阶函数map、filter、reduce
前言 map().reduce().filter()是python的三个高阶函数.所谓高阶函数,指的是将函数作为参数并返回函数作为结果的函数.下面代码的sing_ready只是一个简单高阶函数示例: ...
- 关于3D-AIGC的调研与探讨
0.前言 本文是自己最近在项目上的需要做的一些调研和自己的一些看法,以分享为主. 2D AIGC(文生文.文生图.图生图)在今天大放异彩,产生了许多惊艳的效果,如ChatGPT系列.Imagen.DA ...
- 深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
什么是认证和授权?如何设计一个权限认证框架? 认证和授权是安全验证中的两个重要概念.认证是确认身份的过程,用于建立双方之间的信任关系.只有在认证成功的情况下,双方才可以进行后续的授权操作.授权则是在认 ...
- 万字长文硬核AQS源码分析
阅读本文前,需要储备的知识点如下,点击链接直接跳转. java线程详解 Java不能操作内存?Unsafe了解一下 一文读懂LockSupport AQS简介 AQS即AbstractQueuedSy ...
- Jmeter读取结果文件报错Error loading results file解决方法
最近在项目性能测试过程中,遇到jmeter读取jtl文件出错的问题,如下图所示: 方法一:修改配置文件 将要读取结果文件的组件Configure界面配置都勾选上,默认情况下有些选项没勾选会出错. 第一 ...
- java与es8实战之六:用JSON创建请求对象(比builder pattern更加直观简洁)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<java与es8实战>系 ...
- sqoop1.4.7完全支持Hadoop3.x, Hive3.x Hbase2.x
已经修改好 保存至云盘 自己下载 花了时间的,记得关注我... 链接:https://pan.xunlei.com/s/VNe6P6Tm1A9Q-RG5GByN08rdA1# 提取码:5nke 复制这 ...
- Vue3+vite路由配置优化(自动化导入)
今天在维护优化公司中台项目时,发现路由的文件配置非常多非常乱,只要只中大型项目,都会进入很多的路由页面,规范一点的公司还会吧路由进行模块化导入,但是依然存在很多文件夹的和手动导入的问题. 于是我想到了 ...
- NW排错
fist date VM备份失败时: NW server上(linux): > nsradmin >p type : nsr recover > cd /nsr/logs >n ...
- db-cdc之mysql 深入了解并使用binlog
1.什么是binlog? 2.binlog可以用来干什么? 3.怎么样使用binlog? binlog是记录所有数据库表结构变更(例如CREATE.ALTER TABLE-)以及表数据修改(INSER ...