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

简介: 一、深层神经网络深层神经网络的符号与浅层的不同,记录如下:用\(L\)表示层数,该神经网络\(L=4\)\(n^{[l]}\)表示第\(l\)层的神经元的数量,例如\(n^{[1]}=n^{[2]}=5,n^{[3]}=3,n^{[4]}=1\)\(a^{[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^{[l-1]}\)
输出为 \(a^{[l]}\), cache(\(z^{[l]}\))

矢量化表示:
\[Z^{[l]}=W^{[l]}·A^{[l-1]}+b^{[l]}\]
\[A^{[l]}=g^{[l]}(Z^{[l]})\]

2. 第\(l\)层的反向传播

输入为 \(da^{[l]}\)
输出为 \(da^{[l-1]},dW^{[l]},db^{[l]}\)

计算细节:
\[dz^{[l]}=da^{[l]}*g^{[l]'}(z^{[l]})\]
\[dw^{[l]}=dz^{[l]}*a^{[l-1]}\]
\[db^{[l]}=dz^{[l]}\]
\[da^{[l-1]}=w^{[l]^T}·dz^{[l]}\]
\[dz^{[l]}=w^{[l+1]^T}dz^{[l+1]}*g^{[l]'}(z^{[l]})\]

矢量化表示:
\[dZ^{[l]}=dA^{[l]}*g^{[l]'}(z^{[l]})\]
\[dw^{[l]}=\frac{1}{m}dz^{[l]}·A^{[l-1]^T}\]
\[db^{[l]}=\frac{1}{m}np.sum(dz^{[l]},axis=1,keepdim=True)\]
\[dA^{[l-1]}=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]}∈R^{5×1},X∈R^{3×1}\),\(b^{[1]}\)其实不用计算就知道其维度与\(Z\)是相同的,即\(b^{[1]}∈R^{5×1}\)。根据矩阵内积计算公式可以确定\(W^{[1]}∈R^{5×3}\)
其他层同理,不再赘述。

五、为什么使用深层表示

为什么要使用深层表示?

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

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

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

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

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

六、搭建深层神经网络块

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

  • 前向
    输入\(a^{[l-1]}\),经过计算\(g^{[l]}(w^{[l]}·a^{[l-1]}+b^{[l]})\)得到\(a^{[l]}\)

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

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

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



目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 安全
构建未来:AI驱动的自适应网络安全防御系统
【2月更文挑战第15天】 在数字化时代,网络安全已成为全球关注的焦点。传统的安全防御手段在面对日益复杂的网络威胁时显得捉襟见肘。本文将探讨如何利用人工智能(AI)技术构建一个自适应的网络安全防御系统。该系统能够实时分析网络流量,自动识别和响应潜在威胁,从而提供一种更加动态和灵活的安全保护机制。通过深度学习算法的不断进化,这种系统能够预测和适应新型攻击模式,显著提高防御效率和准确性。
|
3月前
|
机器学习/深度学习 人工智能 安全
【AI 现况分析】AI在网络安全领域中的应用
【1月更文挑战第27天】【AI 现况分析】AI在网络安全领域中的应用
|
8天前
|
机器学习/深度学习 算法 PyTorch
fast.ai 深度学习笔记(三)(3)
fast.ai 深度学习笔记(三)(3)
24 0
|
8天前
|
机器学习/深度学习 PyTorch 算法框架/工具
fast.ai 深度学习笔记(三)(1)
fast.ai 深度学习笔记(三)(1)
25 0
|
8天前
|
机器学习/深度学习 固态存储 Python
fast.ai 深度学习笔记(四)(2)
fast.ai 深度学习笔记(四)
44 3
fast.ai 深度学习笔记(四)(2)
|
8天前
|
机器学习/深度学习 算法框架/工具 PyTorch
fast.ai 深度学习笔记(五)(4)
fast.ai 深度学习笔记(五)
63 3
fast.ai 深度学习笔记(五)(4)
|
机器学习/深度学习 自然语言处理 Web App开发
fast.ai 深度学习笔记(五)(3)
fast.ai 深度学习笔记(五)
109 2
fast.ai 深度学习笔记(五)(3)
|
8天前
|
机器学习/深度学习 API 调度
fast.ai 深度学习笔记(六)(3)
fast.ai 深度学习笔记(六)
77 6
fast.ai 深度学习笔记(六)(3)
|
机器学习/深度学习 计算机视觉 存储
fast.ai 深度学习笔记(七)(4)
fast.ai 深度学习笔记(七)
81 8
fast.ai 深度学习笔记(七)(4)
|
8天前
|
机器学习/深度学习 自然语言处理 搜索推荐
fast.ai 深度学习笔记(二)(3)
fast.ai 深度学习笔记(二)
84 2
fast.ai 深度学习笔记(二)(3)