美文网首页
2020-09-24 CNN 神经网络结构笔记(一)

2020-09-24 CNN 神经网络结构笔记(一)

作者: 滴答大 | 来源:发表于2020-09-24 11:08 被阅读0次

CNN 的结构

包括 输入层,若干的卷积层+ReLU激活函数,若干的池化层,DNN全连接层,以及最后的用Softmax激活函数的输出层。

用一个彩色的汽车样本的图像识别再从感官上回顾下CNN的结构,要理顺CNN的前向传播算法,重点是输入层的前向传播,卷积层的前向传播以及池化层的前向传播

image.png

1.简化的两层神经网络分析

image.png

1.1.输入层
输入层的元素维度与输入量的特征息息相关
1.2.从输入层到隐藏层

image.png

1.3.从隐藏层到输出层

image.png

结论

通过上述两个线性方程的计算,我们就能得到最终的输出Y了,但:一系列线性方程的运算最终都可以用一个线性方程表示。也就是说,上述两个式子联立后可以用一个线性方程表达。对于两次神经网络是这样,就算网络深度加到100层,也依然是这样。这样的话神经网络就失去了意义。

所以这里要对网络注入灵魂:激活层。

2.激活层

激活层是为矩阵运算的结果添加非线性的。常用的激活函数有三种,分别是
阶跃函数、Sigmoid和ReLU

image.png
激活函数具体是怎么计算的呢?

例:假如经过公式H=X*W1+b1计算得到的H值为:(1,-2,3,-4,7...),那么经过阶跃函数激活层后就会变为(1,0,1,0,1...),经过ReLU激活层之后会变为(1,0,3,0,7...)。

需要注意的是:

每个隐藏层计算(矩阵线性运算)之后,都需要加一层激活层,要不然该层线性计算是没有意义的。

3.输出的正规化 ----- 添加“Softmax”层

输出Y的值可能会是(3,1,0.1,0.5)这样的矩阵,可以找到里边的对应的分类为I,但是这并不直观。我们想让最终的输出为概率,也就是说可以生成像(90%,5%,2%,3%)这样的结果,这样做不仅可以找到最大概率的分类,而且可以知道各个分类计算的概率值。

具体是怎么计算的呢?

简单来说分三步进行:(1)以e为底对所有元素求指数幂;(2)将所有指数幂求和;(3)分别将这些指数幂与该和做商。

公式如下: image.png

这样求出的结果中,所有元素的和一定为1,而每个元素可以代表概率值。我们将使用这个计算公式做输出结果正规化处理的层叫做“Softmax”层

4.如何衡量输出的好坏-----量化

通过Softmax层之后,我们得到了I,II,III和IV这四个类别分别对应的概率。虽然输出的结果可以正确分类,但是与真实结果之间是有差距的,一个优秀的网络对结果的预测要无限接近于100%,为此,我们需要将Softmax输出结果的好坏程度做一个“量化”。

解决方法:

一种直观的是用1减去Softmax输出的概率,比如1-90%=0.1。
更为常用且巧妙的方法是,求对数的负数。如:-log0.9=0.046
可以想见,概率越接近100%,该计算结果值越接近于0,说明结果越准确,该输出叫做“交叉熵损失(Cross Entropy Error)”。
我们训练神经网络的目的,就是尽可能地减少这个“交叉熵损失”。

5.反向传播与参数优化

正向传播(1~4节)
神经网络的传播都是形如Y=WX+b的矩阵运算;为了给矩阵运算加入非线性,需要在隐藏层中加入激活层;输出层结果需要经过Softmax层处理为概率值,并通过交叉熵损失来量化当前网络的优劣。

反向传播
算出交叉熵损失后,就要开始反向传播了。其实反向传播就是一个参数优化的过程,优化对象就是网络中的所有W和b(因为其他所有参数都是确定的)。
神经网络的神奇之处,就在于它可以自动做W和b的优化,在深度学习中,参数的数量有时会上亿,不过其优化的原理和我们这个两层神经网络是一样的。

举例说明原理和过程:

假设我们操纵着一个球型机器行走在沙漠中,我们在机器中操纵着四个旋钮,分别叫做W1,b1,W2,b2。当我们旋转其中的某个旋钮时,球形机器会发生移动,但是旋转旋钮大小和机器运动方向之间的对应关系是不知道的。而我们的目的就是走到沙漠的最低点。
此时我们该怎么办?只能挨个试喽。
如果增大W1后,球向上走了,那就减小W1。
如果增大b1后,球向下走了,那就继续增大b1。
如果增大W2后,球向下走了一大截,那就多增大些W2。
这就是进行参数优化的形象解释(有没有想到求导?)

这个方法叫做梯度下降法。

6.迭代

神经网络需要反复迭代。

如上述例子中,第一次计算得到的概率是90%,交叉熵损失值是0.046;将该损失值反向传播,使W1,b1,W2,b2做相应微调;再做第二次运算,此时的概率可能就会提高到92%,相应地,损失值也会下降,然后再反向传播损失值,微调参数W1,b1,W2,b2。依次类推,损失值越来越小,直到我们满意为止。
此时我们就得到了理想的W1,b1,W2,b2。

此时如果将任意一组坐标作为输入,利用图4或图5的流程,就能得到分类结果。

numpy

Numpy中dot()函数主要功能有两个:向量点积和矩阵乘法
np.reshape():这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数及返回值。

转载于 知乎专栏与信号处理有关的那些东东

相关文章

  • 2020-09-24 CNN 神经网络结构笔记(一)

    CNN 的结构 包括 输入层,若干的卷积层+ReLU激活函数,若干的池化层,DNN全连接层,以及最后的用Softm...

  • 深度学习-卷积神经网络CNN

    一、卷积神经网络结构 卷积神经网络(Convolutional Neural Network,CNN),一般地,C...

  • CNN学习笔记(一)

    一、CNN发展简史  CNN可以有效降低传统神经网络(全连接)的复杂性,常见的网络结构有LeNet、AlexNet...

  • CNN、RNN、DNN的一般解释

    CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别? 转自知乎 科言君...

  • 卷积神经网络

    CNN 一、卷积神经网络结构 1.全连接神经网络 2.卷积神经网络 全连接层存在的问题:数据的形状被“忽视”了例如...

  • 卷积神经网络(CNN)学习笔记

    卷积神经网络(CNN) 1.神经网络结构示意图如下 相比于普通的神经网络,卷积神经网络多了卷积层以及池化层,还增加...

  • 人工智能安全第一次作业

    使Pytorch 训练一个深度学习网络 朱心洲 22151326 网络结构:卷积神经网络(CNN) 使用数据集:...

  • 基于tensorflow搭建一个简单的CNN模型(code)

    我们将要搭建一个简单的卷积神经网络结构去提高手写数字的预测结果精度。 # Introductory CNN Mod...

  • 卷积神经网络是什么?

    卷积神经网络(CNN)属于人工神经网络的一种,它的权重共享的网络结构显著降低了模型的复杂度,减少了权值的数量。卷积...

  • 机器学习 神经网络(3)

    继续分享如何设计图形识别的神经网络结构。在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大...

网友评论

      本文标题:2020-09-24 CNN 神经网络结构笔记(一)

      本文链接:https://www.haomeiwen.com/subject/pgszyktx.html