Processing math: 100%

DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络

简介: 一、深层神经网络深层神经网络的符号与浅层的不同,记录如下:用L表示层数,该神经网络L=4n[l]表示第l层的神经元的数量,例如n[1]=n[2]=5,n[3]=3,n[4]=1a[l]表示第\(l...

一、深层神经网络

深层神经网络的符号与浅层的不同,记录如下:

img_679d5288adede0a19866e56414e9e746.png

  • L表示层数,该神经网络L=4
  • n[l]表示第l层的神经元的数量,例如n[1]=n[2]=5,n[3]=3,n[4]=1
  • a[l]表示第l层中的激活函数,a[l]=g[l](z[l])

二、前向和反向传播

1. 第l层的前向传播

输入为 a[l1]
输出为 a[l], cache(z[l])

矢量化表示:
Z[l]=W[l]·A[l1]+b[l]


A[l]=g[l](Z[l])

2. 第l层的反向传播

输入为 da[l]
输出为 da[l1],dW[l],db[l]

计算细节:
dz[l]=da[l]g[l](z[l])


dw[l]=dz[l]a[l1]

db[l]=dz[l]

da[l1]=w[l]T·dz[l]

dz[l]=w[l+1]Tdz[l+1]g[l](z[l])

矢量化表示:
dZ[l]=dA[l]g[l](z[l])


dw[l]=1mdz[l]·A[l1]T

db[l]=1mnp.sum(dz[l],axis=1,keepdim=True)

dA[l1]=w[l]T·dz[l]

3. 总结

前向传播示例

img_c7252797ddfc84c5d62dd26495625292.png

反向传播

img_c3def0befe7b0ed65c0d23eb84796e13.png
更清晰的表示:

img_fbd66aebb71987a1cd48418947df764a.png

三、深层网络中的前向传播

img_cb1fd92ce511a9b52f7e4a76d916df0b.png

四、核对矩阵的维数

这节的内容主要是告诉我们如何知道自己在设计神经网络模型的时候各个参数的维度是否正确的方法。其实我自己在写代码的时候都得这样做才能有信心继续往下敲键盘,2333。

img_679d5288adede0a19866e56414e9e746.png
还是以这个神经网络为例,各层神经网络节点数为n[0]=3,n[1]=n[2]=5,n[3]=3,n[4]=1

先确定W[1]的维度:
已知Z[1]=W[1]·X+b[1],很容易知道Z[1]R5×1,XR3×1,b[1]其实不用计算就知道其维度与Z是相同的,即b[1]R5×1。根据矩阵内积计算公式可以确定W[1]R5×3
其他层同理,不再赘述。

五、为什么使用深层表示

为什么要使用深层表示?

This is a good question.
下面就从直观上来理解深层神经网络。

img_56bfa7eb9753fd7673179e840bd14068.png
如上图所示是一个人脸识别的过程,具体的实现步骤如下:

  • 1.通过深层神经网络首先会选取一些边缘信息,例如脸形,眼框,总之是一些边框之类的信息(我自己的理解是之所以先找出边缘信息是为了将要观察的事物与周围环境分割开来),这也就是第一层的作用。

  • 2.找到边缘信息后,开始放大,将信息聚合在一起。例如找到眼睛轮廓信息后,通过往上一层汇聚从而得到眼睛的信息;同理通过汇聚脸的轮廓信息得到脸颊信息等等

  • 3.在第二步的基础上将各个局部信息(眼睛、眉毛……)汇聚成一张人脸,最终达到人脸识别的效果。

六、搭建深层神经网络块

img_0ab7f203496eb1a100478db5240c5068.png
上图表示单个神经元的前向和反向传播算法过程。

  • 前向
    输入a[l1],经过计算g[l](w[l]·a[l1]+b[l])得到a[l]

  • 反向
    计算da[l],然后反向作为输入,经过一系列微分运算得到dw[l],db[l](用来更新权重和偏差),以及上一层的da[l1]

推广到整个深层神经网络就如下图所示:

img_36562d5d40b5ac0ea080f8008dc86703.png

祭上神图:

img_4c267f329c42fac366ccbc5b7881bce0.png

七、参数 vs 超参数

  • 参数
    常见的参数即为W[1],b[1],W[2],b[2]

  • 超参数
    • learning_rate: α
    • iterations(迭代次数)
    • hidden layer (隐藏层数量L)
    • hidden units (隐藏层神经元数量n[l])
    • 激活函数的选择
    • minibatch size
    • 几种正则化的方法
    • momentum(动力、动量)后面会提到

八、这和大脑有什么关系

主要就是说神经网络和人的大脑运行机理貌似很相似,blabla。。。







MARSGGBO原创





2017-9-2



目录
打赏
0
0
0
0
11
分享
相关文章
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
66 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
129 16
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式
RT-DETR改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式
69 11
RT-DETR改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
1660 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
YOLOv11改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式
YOLOv11改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式
109 0
YOLOv11改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
163 0
探索AI的奥秘:深度学习与神经网络
【9月更文挑战第11天】本文将深入探讨人工智能的核心领域——深度学习,以及其背后的神经网络技术。我们将从基础理论出发,逐步深入到实践应用,揭示这一领域的神秘面纱。无论你是AI领域的初学者,还是有一定基础的开发者,都能在这篇文章中获得新的启示和理解。让我们一起踏上这场探索之旅,揭开AI的神秘面纱,体验深度学习的魅力。
深入骨髓的解析:Python中神经网络如何学会‘思考’,解锁AI新纪元
【9月更文挑战第11天】随着科技的发展,人工智能(AI)成为推动社会进步的关键力量,而神经网络作为AI的核心,正以其强大的学习和模式识别能力开启AI新纪元。本文将探讨Python中神经网络的工作原理,并通过示例代码展示其“思考”过程。神经网络模仿生物神经系统,通过加权连接传递信息并优化输出。Python凭借其丰富的科学计算库如TensorFlow和PyTorch,成为神经网络研究的首选语言。
77 1
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
Python爬虫入门指南探索AI的无限可能:深度学习与神经网络的魅力
【8月更文挑战第27天】本文将带你走进Python爬虫的世界,从基础的爬虫概念到实战操作,你将学会如何利用Python进行网页数据的抓取。我们将一起探索requests库和BeautifulSoup库的使用,以及反爬策略的应对方法。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往数据抓取世界的大门。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等