吴恩达深度学习deeplearning.ai学习笔记(一)4.1~4.8

4.1 深层神经网络

L表示神经网络的层数;

n^{[l]}表示第l层上的单元数量,l=0,1,2,\cdots,Ln^{[0]}=n_x

a^{[l]}表示第l层中的激活函数值,也是第l层输出的函数值,a^{[l]}=g^{[l]}(z^{[l]}),而第l层输入的函数值是a^{[l-1]},神经网络最后的输出\hat{y}=a^{[L]}

w^{[l]}是计算z^{[l]}值的权重;

有些函数只有用非常深层的神经网络才能学习,实际中难以判断,一般最开始可以试试logistic回归,再试试单隐层、双隐层,再将隐层数当作超参数,然后再开发集上评估;

4.2 深层网络中的前向传播

单样本中,普遍规则是:

z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}

a^{[l]}=g^{[l]}(z^{[l]})

而对于m个样本的向量化,普遍规则也长得很像:

Z^{[l]}=w^{[l]}A^{[l-1]}+b^{[l]}

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

\hat{Y}=A^{[L]}=g^{[L]}(Z^{[L]})

这种情况下,必须用for loop去将神经网络的每一层进行计算,无法省略:

for\ l=1\ to\ L:

        Z^{[l]}=w^{[l]}A^{[l-1]}+b^{[l]}

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

4.3 校对矩阵的维数

一些普适性的维度检查标准:

w^{[l]}的维度必须是(n^{[l]},n^{[l-1]})

a^{[l]},z^{[l]},b^{[l]}的维度必须是(n^{[l]},1),即使是多样本下对a^{[l](i)},i=1,2,\cdots,m之类也一样;

Z^{[l]},A^{[l]}的维度必须是(n^{[l]},m),且A^{[0]}=X的维度就是(n^{[0]},m)

da^{[l]}a^{[l]}维度保持一致,dA^{[l]}A^{[l]}维度保持一致,其他都类似;

a^{[l]}=g^{[l]}(z^{[l]})z^{[l]}维度保持一致,A^{[l]}=g^{[l]}(Z^{[l]})Z^{[l]}维度保持一致,其他都类似;

凡是向量化中横向堆排m个样本的那些矩阵,比如X,A^{[l]},Z^{[l]}等,列数一定等于样本数m;

做矩阵乘法必须满足左矩阵列数等于右矩阵行数;

4.4 为什么使用深层显示?

不一定要很大的神经网络,但往往要有足够深的神经网络,即隐藏层得足够多;

例子1:人脸识别

输入一张人脸照片,深度神经网络第一层是一个边缘探测器,也叫特征探测器,值得注意的是,由于要使用卷积神经网络,隐藏单元将不再像之前那样排列,而是像像素一样堆叠成一个矩形:

每一个小方块就是一个隐藏单元,有些试图找水平方向的边缘,有些试图找垂直方向的边缘……第二层将边缘拼在一起,就可以开始检测一些部位,比如眼睛、鼻子、嘴巴……第三层再组合起来就可以开始检测人脸;

边缘检测器针对的都是照片中很小快的面积,面部探测器就要大一些,所以一般会从比较小的细节入手,再一步步扩大到更大更复杂的区域;可以把这种方法称为从简单到复杂的金字塔状表示方法或组成方法;

其他例子:如语音识别中,先从低层次的音调、波形特征入手,再到音位(如cat的发音“CA-”就是一个音位),再到单词,再到词组,再到完整句子;

例子2:电路理论

一些较复杂的函数可以用较小的隐藏单元数但较深的神经网络计算,但如果用较浅的神经网络计算它们,需要成指数级别增长的单元数量才能达到相同的效果;

例如:要计算x_1\ XOR\ x_2\ XOR\ \cdots\ XOR\ x_n

如果采用深层神经网络:

这种树图对应的神经网络深度为o(lnn),因此节点数量或门数量并不会太大;

但如果只能采用单隐层神经网络:

那么这一层的隐藏单元数量也要指数级上升到o(2^n),这是难以承受的;

4.5 搭建深层神经网络块

对第l层的前向传播而言,参数是w^{[l]},b^{[l]},输入a^{[l-1]},经过z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}以及a^{[l]}=g^{[l]}(z^{[l]})的计算后输出a^{[l]};一个细节是,会将计算好的z^{[l]},w^{[l]},b^{[l]}缓存起来,后面在反向传播时直接拿来用;

对第l层的反向传播而言,则是输入da^{[l]},z^{[l]},输出da^{[l-1]},dw^{[l]},db^{[l]}

然后对每一层都更新w,b,比如,对第l层:

w^{[l]}:=w^{[l]}-\alpha dw^{[l]}

b^{[l]}:=b^{[l]}-\alpha db^{[l]}

至此就完成了一个梯度下降循环。

layer\ l

a^{[l-1]}\rightarrow \begin{bmatrix} w^{[l]} & b^{[l]} \end{bmatrix}\rightarrow a^{[l]}

 \wr cache\ z^{[l]}                                                         

da^{[l-1]}\leftarrow \begin{bmatrix} w^{[l]} &b^{[l]} &dz^{[l]} \end{bmatrix}\leftarrow da^{[l]}

      \wr

     dw^{[l]},db^{[l]}

4.6 前向和反向传播

l层的前向传播:输入a^{[l-1]},输出a^{[l]},缓存z^{[l]},w^{[l]},b^{[l]}

单样本公式:z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]},a^{[l]}=g^{[l]}(z^{[l]})

m个样本公式:Z^{[l]}=w^{[l]}A^{[l-1]}+b^{[l]},A^{[l]}=g^{[l]}(Z^{[l]})

l层的反向传播:输入da^{[l]},输出da^{[l-1]},dw^{[l]},db^{[l]}

单样本公式:

dz^{[l]}=da^{[l]}\ast {g^{[l]}}'(z^{[l]})

dw^{[l]}=dz^{[l]}a^{[l-1]T}

db^{[l]}=dz^{[l]}

da^{[l-1]}=w^{[l]T}dz^{[l]}

\because equation\ 1\ and\ 4

\therefore dz^{[l]}=w^{[l+1]T}dz^{[l+1]}\ast {g^{[l]}}'(z^{[l]})

第二个式子老吴在课里甚至写错了,漏了个转置,后面讲维度也有出错过……

m个样本公式:

dZ^{[l]}=dA^{[l]}\ast {g^{[1]}}'(Z^{[l]})

dw^{[l]}=\frac{1}{m}dZ^{[l]}A^{[l-1]T}

db^{[l]}=\frac{1}{m}np.sum(dZ^{[l]},axis=1,keepdims=True)

dA^{[l-1]}=w^{[l]T}dZ^{[l]}

\therefore dZ^{[l]}=w^{[l+1]T}dZ^{[l+1]}\ast {g^{[l]}}'(Z^{[l]})

值得注意的是每一层的权重参数都要更新;

反向传播中最开始的输入是da^{[L]},并且如果在做二元分类,那么输出层只有一个单元并采用\sigma函数激活,有:

da^{[L]}=-\frac{y}{a}+\frac{1-y}{1-a}

dA^{[L]}=(-\frac{y^{(1)}}{a^{(1)}}+\frac{1-y^{(1)}}{1-a^{(1)}})+(-\frac{y^{(2)}}{a^{(2)}}+\frac{1-y^{(2)}}{1-a^{(2)}})+\cdots+(-\frac{y^{(m)}}{a^{(m)}}+\frac{1-y^{(m)}}{1-a^{(m)}})

4.7 参数VS超参数

超参数有:学习率\alpha,梯度下降法的循环次数\#iterations,隐层数L,隐藏单元数n^{[1]},n^{[2]},\cdots,n^{[L]},激活函数的选择;超参数最终控制了参数w^{[1]},b^{[1]},w^{[2]},b^{[2]},\cdots

还有一些超参数后面会学到:momentum,mini batch size,正则化参数……

超参数调优仍然是经验为主,比如调整、尝试不同的学习率看看损失函数有没有下降、发散、收敛,开发新应用必须要有耐心地试、试、试!知道找到最优的超参数,培养自己的直觉。

4.8 这和大脑有什么关系?

过时的类比而已,现在生物学上对神经元依然在进行研究,但目前仍是一个谜,世上没人能说清楚神经元的原理,而神经网络则是学习函数的映射,学从xy的映射;感兴趣可以听老吴采访其他大神的视频,有一个人在做这方面的研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值