深层神经网络基础

本次笔记将会记录大致重要的一些知识,偏零碎和基础,毕竟笔主在总结这篇深层神经网络笔记时,已经在学习卷积神经网络还有自主实现代码的阶段了,有缺漏和不甚详细的地方欢迎指出~

搭建深层神经网络块:

 (Ng的字迹确实有点难以捉摸)

这是第l层,上方的方块是前向传播,下面的方块是反向传播。首先前向传播输入上一层的激活值a[l-1],然后利用该层的w[l]和b[l]计算出z[l],然后用激活函数g[l]计算出激活值a[l],同时还用了cache缓存了z[l]的值,以备将来反向传播中使用,这是前向传播中非常重要和使用的技巧。

在下面的反向传播中,输入为上层计算出来的、本层的da[l],然后利用缓存cache和本层参数w[l]和b[l]计算出本层的dw[l]、db[l]、dz[l]和下一层的da[l-1]。

 参数和超参数:

在神经网络中,通常有这些参数:权重w,偏向量b,学习率α,迭代次数iterations,隐藏层数L,每一层的隐藏单元数n[0],n[1],n[2]......n[L],激活函数g。当然还有其他一些参数,在此暂不列举。

超参数是除了权重w和偏向量b的参数,也就是上面的学习率α,迭代次数iterations......激活函数g,因为我们通常可以通过这些超参数决定w和b的值,所以它们被称为超参,而w和b被称为参数。

深层神经网络双向传播公式:
正向传播:

(这里的w已经事先转置过,保证矩阵乘法的合法性)

由于深层神经网络并非是单隐层神经网络那样,因此在正向传播的代码实现中,还要根据超参L(隐藏层数)进行一次for循环遍历整个深层神经网络,然后逐步计算,这和单隐层神经网络是不一样的,正因为单隐层神经网络只有一个隐藏层,因此不需要for循环。

反向传播:

 

 反向传播的导数公式也是和单隐层神经网络的公式差不多,只是单隐层神经网络不需要for循环,而深层神经网络要使用for循环去得到每一层的dz,dw,db。

非线性激活函数的选择:

隐藏层基本上都用ReLU,一效率高,二是都用ReLU可以使我们的for循环体更加简洁,不需要用if特判每一不同的激活函数g。

在最后输出层根据问题的特点,选择需要的激活函数,比如在二分分类上,使用sigmoid反映概率。

核对矩阵的维度:

Ng在搭建神经网络时候,会根据公式反推出目标的矩阵维度,这是一个不错的方法,我以一个例子来说明:

这是一个包含4个隐藏层的神经网络,总层数为5层。输入是一个包含2个元素的向量x,维度是(2,1),输出可以通过第一层的隐藏单元数看出,z的维度是(3, 1),那么w究竟维度是多少呢?根据矩阵乘法的合法性,十分容易推出它的维度是(3, 2)。

 到这里,我们再总结重申一下用到的矩阵的维度:
x:(n_x, 1),n_x是特征数。

w:(n[l],n[l-1]),n[l]和n[l - 1]分别是这层的隐藏单元数和上一层的隐藏单元数。

b:维度同X相同,是(n_x, 1)。

z:可以通过看隐藏单元的个数看出来,维度和x类似,但是有所不同,为(n[l], 1),n[l]为本层的隐藏单元数。

a:由于是通过激活函数激活z而得来,所以维度与z相同。

dw:维度和w相同。

dz:维度和z相同。

db:值为dz,所以维度和dz相同,也和b相同。

da:维度和a相同,也和dz相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值