吴恩达神经网络和深度学习-学习笔记-4-深度网络
符号约定
L:网络的深度(隐藏层+输出层)
n[1]:第一层隐藏层单元数,为5
a[1]:第一层的激活函数,=g[1](z[1])。另外我们认为x=a[0]
前向传播过程
对于单个的输入x:
简单来说,每一层都会执行这两个操作
- z[n] = w[n] * a[n-1] + b[n]
- a[n] = g[n] ( z[n] )
然后,a[n]会作为第n+1层的输入,再重复执行上面两个操作。
对于多个的输入X:
要用到向量化编程
我们额外需要做的是把所有的z和a,按列堆叠起来
之后,每一层都会执行这两个操作
- Z[n] = W[n] * A[n-1] + B[n]
- A[n] = g[n] ( Z[n] )
然后,A[n]会作为第n+1层的输入,再重复执行上面两个操作。
计算矩阵维度
未矢量化编程
首先激活函数a(X也可视为A)的维度直接可以知道。a[0]为x,对应(n[0], 1);之后的a的维度与上一层的输出结果的维度相同。
另外输出z的维度也可以直接知道。行数为隐藏层单元数,列数为1,即(n[n],1)。
有了激活函数a和输出z的维度就可以计算权重w的维度,计算方法就是简单的矩阵相乘的知识,m×n * n×r = m×r
。
偏置b、激活函数a的维度与输出z的维度一致。
总结来说
- w[l] : (n[l],n[l-1])
- b[l] : (n[l],1)
- dw[l] : (n[l],n[l-1])
- db[l] : (n[l],1)
矢量化编程
将不同的单位按列堆叠
按列堆叠改变了A和Z的列数,假设有m个数据堆叠,则A为(n[l-1], m),Z为(n[l], m),另外dA和dZ与A和Z有相同的维度。
而W和B维度保持不变:
- W[l] : (n[l],n[l-1])
- B[l] : (n[l],1)
Python在运算时会将B的维度,通过复制,增加为(n[l], m))
深度网络的作用原理
深度神经网络的这许多隐层中,较早的前几层能学习一些低层次的简单特征(边缘)(something simple)。等到后几层就能把简单的特征结合起来,去探测更加复杂的东西(something complex)。
主要的概念是:
一般会从比较小的细节入手(比如边缘),然后一步步到更大更复杂的区域,在此基础上再组成更复杂的部分。
示例1:图像识别
原理为:每一个小图表示在扫描到这样的图形的时候,该隐藏单元能得到最大的激励。
在网络的前几层,每个隐藏单元去寻找这样较为简单的特征(边缘特征)。
在之后的层中,这些边缘组成面部的不同部分(眼睛、鼻子等),从而检测人脸的不同部分。比如有一个神经元会去寻找眼睛的部分,另外的神经元在寻找鼻子的部分。
最后再把这些部分放到一起,就可以去识别和探测不同的人脸。
注:边缘探测器其实相对来说都是针对图像中非常小块的面积。而面部探测器就会针对一些比较大的区域。
示例2:语音识别
网络的前几层会去先开始试着试探比较低层次的音频波形的一些特征(比如声调是变高了还是变低了或者分辨白噪音)。
然后后面的层把这些波形组合在一起,就能去探测声音的基本单元(音位)。
再后面的层在基本的声音单元的基础上,组合起来去识别音频中的单词,词组以至于整个句子。
正向传播和反向传播的过程
神经网络的一个梯度下降循环。
框里和箭头上的是需要的东西,箭头指向为输出的结果。 有了每层的dW和dB,就可以去根据公式W = W - α * dW
、B = B - α * dB
去更新W和B的值。
另外,吴老师说了一段话:
机器学习里的复杂性和算法的复杂性,是来源于数据本身,而不是代码。
真正神奇的东西不是你写的程序。通常情况下你的代码的不会很长,虽然也不会太简单,但有时当你喂入超多数据后,算法会起作用。
吴恩达神经网络和深度学习-学习笔记-4-深度网络相关推荐
- 吴恩达神经网络与深度学习——深度神经网络
吴恩达神经网络与深度学习--深度神经网络 深度神经网络 符号 前向传播 矩阵维度 m个样本 为什么使用深层表示 搭建深层神经网络块 正向传播和反向传播 前向和反向传播 前向传播 反向传播 参数和超参数 ...
- 吴恩达神经网络和深度学习
[前言] 在学习了深度学习和神经网络之后,为什么我要以博客的形式来做笔记?这CSDN有那么多的优秀文章,我自己写的都比不上 别人的我写的真的有意义吗,为什么我要浪费大量的时间去做这项工作?我相信一句话 ...
- 吴恩达神经网络与深度学习——浅层神经网络
吴恩达神经网络与深度学习--浅层神经网络 神经网络概述 神经网络表示 计算神经网络的输出 m个样本的向量化 for loop 向量化 向量化实现的解释 激活函数 sigmoid tanh函数 ReLu ...
- 吴恩达《Machine Learning》精炼笔记 5:神经网络
作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...
- 吴恩达《Machine Learning》精炼笔记 4:神经网络基础
作者 | Peter 编辑 | AI有道 今天带来第四周课程的笔记:神经网络基础. 非线性假设 神经元和大脑 模型表示 特征和直观理解 多类分类问题 非线性假设Non-linear Hypothese ...
- 吴恩达神经网络1-2-2_图神经网络进行药物发现-第1部分
吴恩达神经网络1-2-2 预测溶解度 (Predicting Solubility) 相关资料 (Related Material) Jupyter Notebook for the article ...
- 吴恩达神经网络1-2-2_图神经网络进行药物发现-第2部分
吴恩达神经网络1-2-2 预测毒性 (Predicting Toxicity) 相关资料 (Related Material) Jupyter Notebook for the article Jup ...
- 吴恩达《Machine Learning》精炼笔记 11:推荐系统
作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...
- 吴恩达《Machine Learning》精炼笔记 10:异常检测
作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...
- 吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现
作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...
最新文章
- 授权服务框架Spring Authorization Server的过滤器链
- tcp/udp socket编程异同
- ITK:设置默认的线程数
- flink shell出现Could not create the DispatcherResourceManagerComponent
- 有关JAVA考试中数据库的题,javaee期末考试题库,用javaEE编写一个题库系统,要怎么做...
- 在Windows上使用beginthreadex替换CreateThread的原因
- linux指令ls -1,linux命令1--ls
- 调试错误:InternalErro(seeabovefortraceback):BlasGEMMlaunchfailed:a.shape=(300,1),b.shape=(1,10),m=300,n=
- LCA+tarjan
- Elasticsearch5.X Centos7安装过程
- (二十三)美萍酒店管理系统:系统维护_系统设置_商品设置_添加类别、添加商品
- 《缠中说禅108课》37:背驰的再分辨
- 逆袭-2014年中电投篮球赛札记_02【转】
- 什么是爬电距离?宽爬电距离光耦为什么越来越受大家青睐?
- 获取秒懂百科视频地址/获取百度百科视频地址
- 推荐系统笔记之关联规则推荐(四)
- html塔防游戏,HTML5 版塔防游戏
- Python判断一个五位数是否为回文数
- 快手2020校园招聘秋招笔试--算法B试卷
- web前端开发,如何提高页面性能优化?
热门文章
- 方正畅听 文字识别自动语音朗读软件
- python post 上传文件_python接口自动化7-post文件上传
- 从今天起开始进一步学习前端
- Web API-document
- 【计算机网络笔记】数据链路层:点对点协议PPP
- 【动态规划】P1018 线性dp:乘积最大
- RTMPDump源代码分析 0: 主要函数调用分析
- 谷歌云 重置_谷歌云游戏平台Stadia公布!支持大作随意畅玩
- Helm 3 完整教程(七):Helm 函数讲解(1)逻辑和流控制函数
- 华为7c手机怎么恢复出厂设置_华为手机越用越卡,恢复出厂设置真有用?别乱来,看完就明白了!...