神经网络入门篇:详解搭建神经网络块(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来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
随机推荐
- XSS--labs通关记录
XSS--labs通关记录 level 1(无过滤) 查看网页源代码 <!DOCTYPE html><!--STATUS OK--><html> <head& ...
- 【pandas小技巧】--数据转置
所谓数据转置,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理. pandas中DataFrame的转置非常简单,每个DataFrame对象 ...
- ChatGPT赋能低代码开发:打造智能应用的双重引擎
摘要:本文摘自葡萄城低代码产品活字格的资深用户(格友超哥)所撰写的文章:<惊叹表现!活字格+ChatGPT:低代码开发智能应用的巨大潜力>. ChatGPT的functions函数使用方 ...
- qBittorrent如何运行脚本 BT实现自动改名并方便Jellyfin的搜刮器
qBittorrent如何运行脚本 BT实现自动改名并方便Jellyfin的搜刮器 很多影视网站下载的视频名字大概是为了规避监测,命名非常奇葩,比如:z灼f流,y骨y等等.如果你使用了Jellyfin ...
- 淘宝详情api接口的使用说明
淘宝详情API接口是一种可以用来获取淘宝商品详细信息的服务,包括图片.标题.价格.销量.评论等数据.下面是淘宝详情API接口的使用说明: 1.关于申请API接口权限: 在使用淘宝详情API接口前,需要 ...
- sublime运行php文件
sublime 运行 php 文件 使用 sublime 打开一个php文件 然后 Tools -> Build System -> New Build System 将以上打开的文件内容 ...
- 深信服 9-15笔试 C卷
深信服 9-15笔试 C卷 15题填空,4道编程 填空 填空比较基础,考察了数据结构(队列,二叉树),和简单编程,二进制等. 1.1 2 3 4 5 入队,然后队首弹出,6 7 8 9 10 入队,然 ...
- 「ceoi 2009」harbingers
link. 朴素 dp 大约就是 \(f_x=f_y+v_x\times(d_x-d_y)+s_x\),\(y\) 是 \(x\) 的祖先.这个式子可以斜率优化,在以 \(d_y\) 为横坐标,\(f ...
- Springboot简单功能示例-3 实现基本登录验证
springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot hutool-all 非常好的常用java工具库 ...
- Modbus动态链接库供多语言使用 | Go
Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...