博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DeepLearning.ai笔记:(1-4)-- 深层神经网络(Deep neural networks)
阅读量:4100 次
发布时间:2019-05-25

本文共 2716 字,大约阅读时间需要 9 分钟。


title: ‘DeepLearning.ai笔记:(1-4)-- 深层神经网络(Deep neural networks)’

id: 2018091316
tags:

  • categories:
  • AI
  • Deep Learning
    date: 2018-09-13 16:54:18

首发于个人博客:,欢迎来访

这一周主要讲了深层的神经网络搭建。

深层神经网络的符号表示

在深层的神经网络中,

  • L L L表示神经网络的层数 L = 4 L = 4 L=4
  • n [ l ] n^{[l]} n[l]表示第 l l l层的神经网络个数
  • W [ l ] : ( n [ l ] , n l − 1 ) W^{[l]}: (n^{[l]},n^{l-1}) W[l]:(n[l],nl1)
  • d W [ l ] : ( n [ l ] , n l − 1 ) dW^{[l]}: (n^{[l]},n^{l-1}) dW[l]:(n[l],nl1)
  • b [ l ] : ( n [ l ] , 1 ) b^{[l]}: (n^{[l]},1) b[l]:(n[l],1)
  • d b [ l ] : ( n [ l ] , 1 ) db^{[l]}: (n^{[l]},1) db[l]:(n[l],1)
  • z [ l ] : ( n [ l ] , 1 ) z^{[l]}:(n^{[l]},1) z[l]:(n[l],1)
  • a [ l ] : ( n [ l ] , 1 ) a^{[l]}:(n^{[l]},1) a[l]:(n[l],1)

前向传播和反向传播

前向传播

input a [ l − 1 ] a^{[l-1]} a[l1]

output a [ l ] , c a c h e ( z [ l ] ) a^{[l]},cache (z^{[l]}) a[l],cache(z[l]) ,其中cache也顺便把 W [ l ] , b [ l ] W^{[l]}, b^{[l]} W[l],b[l]也保存下来了

所以,前向传播的公式可以写作:

Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] Z^{[l]} = W^{[l]} A^{[l-1]} + b^{[l]} Z[l]=W[l]A[l1]+b[l]

A [ l ] = g [ l ] ( Z [ l ] ) A^{[l]} = g^{[l]}(Z^{[l]}) A[l]=g[l](Z[l])

维度

假设有m个样本,那么 Z [ l ] Z^{[l]} Z[l] 维度就是 ( n [ l ] , m ) (n^{[l]}, m) (n[l],m) A [ l ] A^{[l]} A[l]的维度和 Z [ l ] Z^{[l]} Z[l]一样。

那么 $ W^{[l]} A^{[l-1]}$维度就是 ( n [ l ] , n l − 1 ) ∗ ( n [ l − 1 ] , m ) (n^{[l]},n^{l-1}) * (n^{[l-1]},m) (n[l],nl1)(n[l1],m) 也就是 ( n [ l ] , m ) (n^{[l]}, m) (n[l],m),这个时候,还需要加上 b [ l ] b^{[l]} b[l],而 b [ l ] b^{[l]} b[l]本身的维度是 ( n [ l ] , 1 ) (n^{[l]},1) (n[l],1),借助python的广播,扩充到了m个维度。

反向传播

input d a [ l ] da^{[l]} da[l]

output d a [ l − 1 ] , d W [ l ] , d b [ l ] da^{[l-1]} , dW^{[l]} , db^{[l]} da[l1],dW[l],db[l]

公式:

向量化:

正向传播和反向传播如图:

具体过程为,第一层和第二层用Relu函数,第三层输出用sigmoid,这个时候的输出值是 a [ 3 ] a^{[3]} a[3]

而首先进行反向传播的时候先求得 d a [ 3 ] = − y a − 1 − y 1 − a da^{[3]} = - \frac{y}{a} - \frac{1-y}{1-a} da[3]=ay1a1y,然后再包括之前存在cache里面的 z [ 3 ] z^{[3]} z[3],反向传播可以得到 d w [ 3 ] , d b [ 3 ] , d a [ 2 ] dw^{[3]}, db^{[3]},da^{[2]} dw[3],db[3],da[2],然后继续反向,直到得到了 d w [ 1 ] , d b [ 1 ] dw^{[1]},db^{[1]} dw[1],db[1]后,更新一下w,b的参数,然后继续做前向传播、反向传播,不断循环。

Why Deep?

如图直观上感觉,比如第一层,它会先识别出一些边缘信息;第二层则将这些边缘进行整合,得到一些五官信息,如眼睛、嘴巴等;到了第三层,就可以将这些信息整合起来,输出一张人脸了。

如果网络层数不够深的话,可以组合的情况就很少,或者需要类似门电路那样,用单层很多个特征才能得到和深层神经网络类似的效果。

搭建深层神经网络块

和之前说的一样,一个网络块中包含了前向传播和反向传播。

前向输入 a [ l − 1 ] a^{[l-1]} a[l1],经过神经网络的计算, g [ l ] ( w [ l ] a [ l − 1 ] + b [ l ] ) g^{[l]}(w^{[l]}a^{[l-1]} + b^{[l]}) g[l](w[l]a[l1]+b[l])得到 a [ l ] a^{[l]} a[l]

反向传播,输入 d a [ l ] da^{[l]} da[l],再有之前在cache的 z [ l ] z^{[l]} z[l],即可得到 d w [ l ] , d b [ l ] dw^{[l]},db^{[l]} dw[l],db[l]还有上一层的 d a [ l − 1 ] da^{[l-1]} da[l1]

参数与超参数

超参数就是你自己调的,玄学参数:

  • learning_rate
  • iterations
  • L = len(hidden layer)
  • n [ l ] n^{[l]} n[l]
  • activation function
  • mini batch size(最小的计算批)
  • regularization(正则)
  • momentum(动量)

转载地址:http://ierii.baihongyu.com/

你可能感兴趣的文章
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>
存储器管理(二)
查看>>
开局一张图,学一学项目管理神器Maven!
查看>>
Android中的Binder(二)
查看>>
Framework之View的工作原理(一)
查看>>
Web应用架构
查看>>
设计模式之策略模式
查看>>
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
DES加解密
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>