deeplearning.ai学习笔记:第一课第四周

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdknight_happy/article/details/85077086

1 深层神经网络

在这里插入图片描述
参数:
W [ l ] R n l × n l 1 W^{[l]} \in R^{n_l \times n_{l-1}}
b [ l ] R n l × 1 b^{[l]} \in R^{n_l \times 1}
d W [ l ] R n l × n l 1 dW^{[l]} \in R^{n_l \times n_{l-1}}
d b [ l ] R n l × 1 db^{[l]} \in R^{n_l \times 1}

Z [ l ] R n l × m Z^{[l]} \in R^{n_l \times m}
A [ l ] R n l × m A^{[l]} \in R^{n_l \times m}
d Z [ l ] R n l × m dZ^{[l]} \in R^{n_l \times m}
d A [ l ] R n l × m dA^{[l]} \in R^{n_l \times m}

深度学习块:

在这里插入图片描述

前向运算:
输入: Z [ l ] Z^{[l]} , W [ l ] W^{[l]} , b [ l ] b^{[l]}
输出: A [ l ] A^{[l]}

Z [ l ] = W [ l ] A [ l 1 ] + b [ l ] Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]}
A [ l ] = g [ l ] ( Z [ l ] ) A^{[l]} = g^{[l]}(Z^{[l]})

输出是 A [ l ] A^{[l]} ,但是 Z [ l ] Z^{[l]} 要暂存起来以便进行反向运算的梯度计算。

反向运算:
输入: d A [ l ] dA^{[l]} 和缓存的 Z [ l ] Z^{[l]}
输出: d A [ l 1 ] dA^{[l-1]} , d W [ l ] dW^{[l]} , d b [ l ] db^{[l]}
d Z [ l ] = d A [ l ] g [ l ] ( Z [ l ] ) dZ^{[l]} = dA^{[l]}*{g^{[l]}}^{'}(Z^{[l]})
d W [ l ] = 1 m d Z [ l ] A [ l 1 ] T dW^{[l]} = \frac{1}{m}dZ^{[l]}{A^{[l-1]}}^T
d b [ l ] = 1 m n p . s u m ( d Z [ l ] , a x i s = 1 , k e e p d i m s = T r u e ) db^{[l]} = \frac{1}{m}np.sum(dZ^{[l]},axis=1,keepdims=True)
d A [ l 1 ] = W [ l ] T d Z [ l ] dA^{[l-1]}={W^{[l]}}^TdZ^{[l]}

深度学习网络:
在这里插入图片描述
前向运算:

X = A [ 0 ] X = A^{[0]}

f o r   l   i n    1 , . . . , L : for~l~in~~1,...,L:
     Z [ l ] = W [ l ] A [ l 1 ] + b [ l ] ~~~~Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]}
     A [ l ] = g [ l ] ( Z [ l ] ) ~~~~A^{[l]} = g^{[l]}(Z^{[l]})

反向运算:
反向运算的输入是损失函数对 a [ L ] a^{[L]} ,也就是 y ^ \hat{y} 的导数。之所以有 1 m \frac{1}{m} ,是因为m个样本均与各个神经元的参数进行了乘积/相加运算。

f o r   l   i n    L , . . . , 1 : for~l~in~~L,...,1:
     d Z [ l ] = d A [ l ] g [ l ] ( Z [ l ] ) ~~~~dZ^{[l]} = dA^{[l]}*{g^{[l]}}^{'}(Z^{[l]})
     d W [ l ] = 1 m d Z [ l ] A [ l 1 ] T ~~~~dW^{[l]} = \frac{1}{m}dZ^{[l]}{A^{[l-1]}}^T
     d b [ l ] = 1 m n p . s u m ( d Z [ l ] , a x i s = 1 , k e e p d i m s = T r u e ) ~~~~db^{[l]} = \frac{1}{m}np.sum(dZ^{[l]},axis=1,keepdims=True)
     d A [ l 1 ] = W [ l ] T d Z [ l ] ~~~~dA^{[l-1]}={W^{[l]}}^TdZ^{[l]}

2 为什么使用深度表示?

在这里插入图片描述深层网络,浅层神经元在进行类似边缘检测的功能,比如每一个神经元在检测指定的边缘;中间层的神经元在进行类似部件检测的功能,比如检测人脸的鼻子、嘴巴等五官区域;深层的神经元在进行人脸局部的检测。这样特征逐步由简单向复杂进行汇聚组合,就实现了人脸检测功能。

理论解释:
在这里插入图片描述能够使用小的深层网络表示的函数,若使用浅层网络进行表示,需要的隐藏神经元个数需要进行指数级的扩充。也就是说使用深层网络,那么每一层的神经元个数很有限,也可以表示很复杂的函数,也就是神经网络具有强大的函数拟合能力。

3 参数 vs. 超参数

参数: W [ l ] W^{[l]} , b [ l ] b^{[l]}

超参数:控制参数的参数
学习率 learning_rate
隐藏层数量
隐藏层单元数
激活函数的选择
迭代次数
动量值
mini batch的大小
正则化系数

因为超参数的选择决定了最终的参数,因此称之为超参数。

尝试不同的超参数进行实验,根据训练模型的效果选择超参数。

深度学习训练过程高度依赖于经验和试错。

深度学习和大脑的关联并不大。

4 作业

本周作业完整复习了神经网络的前向计算和反向传播过程,需要认真去实现下。

猜你喜欢

转载自blog.csdn.net/cdknight_happy/article/details/85077086