一文掌握深度学习(九)——彻底搞懂神经网络(必看)

这一章是非常重要的一章,因为深度学习就是从动物的神经网络中找到的灵感,网上也有很多神经网络入门的视频和文章,不过大部分都是鱼龙混杂,本文力求用最通俗的语言来帮助大家彻底掌握深度学习的核心——神经网络。

本章要讲解的神经网络为浅层神经网络,深层神经网络咱们后面讲,但是没什么稀奇的,深层神经网络只不过比浅层神经网络多了几层,原理都一样。

回想一下我们之前学习的Logistic回归,它是一个最简单的神经网络,如图:

x1,x2,x3...,xn为一个样本的特征值,w1,w2,w3...,wn为每个特征对应的权重,\Sigma代表的是z=w1*x1+w2*x2+...+wn*xn+b\sigma代表a=\sigma (z),最后输出a,也就是得到的预测值\hat{y}=a

通过最简单的神经网络图,可以看出之前学习的Logistic回归的前向传播就是按照这个图箭头的方向进行的,反向传播按照箭头的反方向进行就可以啦,非常清晰直观,在这里也相当于复习了一遍之前的内容。

下面正式的讲解浅层神经网络,我们以两层的神经网络为例子来细致的分析:

上图就是一个二层的全连接神经网络,可能有的同学会问:“这个图明明是三层,为什么非得说是两层呢?”,因为在深度学习中,计算神经网络的层数,通常不计算输入层,所以上图的层数为二层,那么什么是全连接神经网络呢?顾名思义,全连接意思就是每一个神经元都与上一层的所有神经元相连,这样组成的神经网络为全连接神经网络。

下面来讲解每一个层:

1、输入层

对于二分类问题来说,输入层就是我们要识别的图片,比如我们想判断一张图片里是否有猫咪,那么我们的输入就是这一张图片,我们需要把图片变成像素特征,因为计算机识别的是像素。假设一张图片的大小为28*28,那么把图片变成像素矩阵,大小也是28*28,由于在深度学习中,输入层为列向量,所以要把像素矩阵变成一个列向量,维度为784*1,和上图中的输入层的维度一样。

输入层中的每一个输入都代表着图片中的一个特征,比如说第一个输入x1可能代表猫毛发的纹理,第二个输入x2代表猫的瞳孔等等。

2、隐藏层

隐藏层是把输入层中的特征,组合成更加抽象的特征,比如第一个隐藏层的神经元代表猫的条纹,第二个代表猫的眼睛等等。

计算公式为:

Z^{[1]}=W^{[1]}\times X+b^{[1]}

A^{[1]}=\sigma \left ( Z^{[1]} \right )

这里上标“[1]”代表第一层的意思。

以上使用向量来表示的,假设有m个样本,下面我们检查维度是否正确:

对于Z^{[1]}=W^{[1]]}\times X+b^{[1]},其中Z^{[1]}的维度从上图可以看出为(10,m),W^{[1]}的维度为(10,784),X的维度为(784,m),b^{[1]}的维度为(10,m),计算可知维度正确。

对于A^{[1]}=\sigma \left ( Z^{[1]} \right ),可知A^{[1]}的维度和Z^{[1]}都一样,都是(10,m)。

隐藏层即计算Z也计算A,这点大家要记住。

注意:在A=\sigma \left ( Z \right )中,\sigma是激活函数,为什么要用激活函数呢,因为如果没有激活函数,我们的模型一直是线性的,这样模型太简单,处理不了复杂的问题,所以需要激活函数来使得模型变成非线性,这样才能处理更加复杂的分类问题。

总结:隐藏层就是把输入层的特征提取组合成更加抽象的特征。

3、输出层

输出层就是把隐藏层中得特征组合起来计算预测值,对于二分类来说如果预测值>=0.5,则预测正确,反之预测错误。

公式如下:

Z^{[2]}=W^{[2]}\times A^{[1]}+b^{[2]}

A^{[2]}=\sigma \left ( Z^{[2]} \right )

可以看出,输出层和隐藏层的公式区别在于,Z、W、b、A的层数不一样了,输入从之前的X变成了现在A^{[1]}

因为通过神经网络图不难看出,上一层的输出就是下一层的输入。

维度的计算留给大家了,方法和在隐藏层中计算维度的方法一致。

以上本文章的全部内容,讲解了浅层神经网络的输入层、隐藏层以及输出层,相信大家看完之后会对神经网络有了清晰的认识,咱们下次见。

如果您觉得文章对你有帮助,点个关注不迷路~

以上就是本文的全部内容,获取深度学习资料以及吴恩达老师课程(中文字幕),扫描下方公众号,回复“资料”两字即可获取,祝您学习愉快。

猜你喜欢

转载自blog.csdn.net/qq_38230338/article/details/107682470