当前位置: 首页 > 科技观察

一篇了解卷积神经网络基础知识的文章,推荐收藏

时间:2023-03-11 23:32:50 科技观察

今天给大家讲讲卷积神经网络,主要包括四个部分:卷积神经网络的历史、全连接层、卷积层和池化层。CNN的英文全称是ConvolutionalNeuralNetwork,原型是LeCun在1998年发明的LeNet网络结构。LeNet网络架构那么神经网络到底是什么?应该说,只要有卷积层,就可以称为卷积神经网络。神经网络的发展史1986:RumelhartandHintonetal.提出了反向传播(BackPropagation)算法。1998年:LeCun在BP神经网络的基础上训练出LeNet网络,标志着CNN的真正面世。2006年:Hinton在他们的SciencePaper中首次提出了深度学习的概念。2012年:其实Hinton在2006年提出深度神经网络之后就受到了很多质疑,但是2012年Hinton的学生AlexKrizhevsky在宿舍里用GPU砸了一个DeepLearning模型,获得了计算机视觉TOP领域的ILSVRC一口气。2012年的冠军,在百万级ImageNet数据集上,大大超越了传统方法,准确率从70%提升到80%。全连接层其实全连接层就是模仿大脑的神经元结构。我们可以看到:输出值=输入值x加权w,累加结果通过激活函数。形式化为:然后我们将神经元按列排列,并在列之间进行全连接,得到一个BP神经网络。BP神经网络算法包括信号正向传播和误差反向传播两个过程。即误差输出的计算是从输入到输出的方向进行的,而权值和阈值的调整是从输出到输入的方向进行的。让我们看一个例子来理解BP神经网络。例子:使用BP神经网络进行数字识别我们得到一张图片,比如上面第一张图片显示0,这张图片是由若干个像素点组成的,每个像素点有RGB的三个通道,然后经过灰度化之后,就变成了第二张图片,然后将灰度图片二值化得到第三张图片。之后我们对图片进行概率处理,比如第一个框中的白色块/所有块=0.2,经过相应的策略处理后第一个值为0.2。以此类推,可以得到上图右边的矩阵。然后我们对这个矩阵进行维度变换和处理,将其变成一个1*n的行向量,这样处理后的形式可以让神经网络更好的进行输入处理。我们知道神经网络是如何输入的,那么到底应该输出什么才能更好的区分数字呢?单热编码!也就是说,每个数字对应一个代码,如果输入1000000000,则判断为数字0,以此类推。现在我们有了输入和输出,我们可以通过神经网络对其进行训练。首先设置输入层神经元个数为25个节点,设置输出层为10个节点,将上面的1*n向量输入到BP神经网络中,然后经过隐藏层最后到输出层onehot编码,输出层通过softmax激活函数,可以得到每个数字出现的概率,从而可以对数字进行识别。卷积层到底是什么?之前的文章中已经提到了,有兴趣的可以直接查看。漫画:卷积神经网络中的卷积核到底是什么?漫画:为什么卷积神经网络适合处理图像数据?干货|卷积神经网络如何开始在讲解卷积层的时候想请教大家一个问题,卷积核越界怎么办?比如下面的:假设我们使用这样一个矩阵,我们使用一个3*3的滑动窗口,步长为2,我们应该如何处理下面的情况呢?我们可以使用Padding将其填充为0,如下图:在进行卷积运算时,卷积运算后矩阵的大小由以下因素决定:输入图像大小W*W滤波器大小F*F像素个数卷积后步长Spadding的P有一个正则矩阵大小,所以我给大家一个通式:N=(W-F+2P)/S+1为什么要有pooling层呢?层?因为现在的输入数据太大,冗余信息很多,那我们就得想办法对图像矩阵进行下采样,对特征图进行稀疏处理,减少数据计算量。下面通过MaxPooling下采样看看什么是池化层。上图红色部分的值是1156,我们用的是MaxPooling,所以取最大值,那么右图红色部分就是max(1,1,5,6)=6,以此类推在。得到降采样结果。和最大下采样类似,也有一个平均下采样层,如下图所示:为了更好的理解和使用池化层,我总结了池化层的三个特点:没有训练参数只会改变特征矩阵w和h,不改变信道。通常,池大小与卷积核的步长相同。今天讲一下卷积神经网络的整体架构,包括神经网络的发展历史、全连接层、卷积层和池化层。谢谢大家阅读~