毕业设计之「神经网络与深度学习概述」(二)

简介: 首先,来说一下卷积的概念,从数学角度来看,可以简单的认为卷积是一种数学运算,在通信领域,卷积也被应用在滤波上,因此通常将卷积和滤波同等看待,卷积核也经常被称为滤波器。

卷积神经网络基础


01 - 相关基础概念


首先,来说一下卷积的概念,从数学角度来看,可以简单的认为卷积是一种数学运算,在通信领域,卷积也被应用在滤波上,因此通常将卷积和滤波同等看待,卷积核也经常被称为滤波器。


接下来通过一个例子说明卷积运算的具体操作:


【注】:动态演示参考如下网址:http://www.shipudong.com/2020/03/24/bi-ye-she-ji-nei-rong-bu-chong/


微信图片_20220611003858.gif

图3.9卷积操作演示



上述图中,输入图像大小为7*7*3,卷积核大小为3*3*3,且有两个卷积核,故最终经卷积操作之后的特征图(output volume)有两个。以第一个卷积核运算为例进行讲解,且图中步长(stride=2):


微信图片_20220611003906.png


各参数的计算方式(为了方便标记,用a来表示矩阵,i、j表示行和列):


微信图片_20220611003910.png


计算方法就是:将输入数据(取与卷积核相同大小)与分别与第一个卷积核、第二个卷积核进行卷积运算,且步长为2在输入数据上移动,其余具体计算过程不再赘述。



02 - 局部感知野


在前述文章中,我们讨论了简单的神经网络,并且知道对于全连接神经网络,它的每个神经元都与前一层的所有神经元进行连接,这种连接方式很容易造成一个不可避免的问题就是:一旦隐藏层层数增加,会带来大量的参数,最终造成无法训练,因此在本节中引入局部感知野的概念。


引入局部感知野的目的就是为了减少参数量,对于一张图片,无论是灰度图还是彩色图,我们一般认为局部像素周围的联系比较紧密(简单理解为:某一像素点及其周围的像素点差别不大),而像素点之间距离相差越远,联系越弱。所以没有必要获取到整张图片所有的信息,只需要利用局部感知野的概念获取局部的信息,并在更高层对这些信息进行综合,也可以得到全局的信息。相比全连接神经网络的方式,采用局部感知野的概念之后,参数量大大降低。



03 - 参数共享


在第二小节中我们引入了局部感知野的概念来帮助我们减少参数量,但是经过局部感知野之后,所剩余参数量还是较多,对于模型的学习训练还是非常艰难的,因此再引入参数共享的概念,对于输入图像的每一个节点,没有必要用不同的卷积核去进行卷积运算,再通过各个局部感知野连接的区域内,我们可以使用相同的参数和权值,这就是所谓的参数共享,经过局部感知野和参数共享两大优化方法,此时神经网络中的参数就可以很容易的进行训练学习了。



04 - 多卷积核


对于复杂的输入数据,通过卷积操作想要提取的特征类肯定不止一种,因此我们必须通过多个不同功能的卷积核来进行卷积操作。通过图3.9中的例子我们可以知道,图中输入数据是RGB彩色图,其中有3个通道(channel=3),且有两个卷积核,最后经卷积操作之后所得的特征图也有2个。


经过上面的介绍,可以知道多卷积核概念的引入是为了帮助我们提取更加复杂图像的特征,本质上还是本文上述所讲内容的一个应用。



05 - 池化


首先,来讨论一个例子,对于一张500*500的图片,用100个卷积核来提取图像的不同特征,卷积核大小为3*3,步长为1,并且默认不再图像周围做填充,根据公式 计算得到(W=500,F=3,p=0,s=1)经卷积之后的图像大小为498*498,总结一下,100个卷积核可以得到100个大小为498*498的图片,即24800400(498*498*100)的卷积特征向量,对如此量级的特征个数去进行分类,我们很容易造成过拟合现象的发生,因此我们在本小节中引入池化的概念。


池化的原理就是根据相邻元素具有相似性,因此可以将相邻元素进行合并,从而大幅的减少特征个数。池化中包括平均池化和最大池化操作,在我们本论文的案例中,我们使用的是最大池化操作,其过程是:将输入数据经过池化操作,并只保留池化区域中最大的一个值,其余均被忽略掉。


06 - 多层卷积


本节关于多层卷积概念的引入等同于前述章节中对于多卷积核概念的引入,以人脸识别的例子为例,我们需要提取人脸的各种特征,包括眉毛、鼻子、嘴巴、酒窝等,这些还属于较为高级的特征,对于机器来说,我们需要继续寻找更为低级的特征来供机器进行学习,为此为了对一个物体进行特征提取我们需要多层的卷积操作,并且通常我们还会在每一个卷积层后面加上非线性函数(ReLU,本论文的例子中关于对AlexNet模型的介绍,在每一层后面都使用了ReLU)。



07 - 池化层和卷积层的反向传播


在前述小节中,我们了解过反向传播的概念,并且知道首先通过前向计算我们可以得到各个节点的激活函数的值,接着我们从最后一层逐层向前计算残差值,然后根据残差值求出对应偏导数的值,并最后更新网络中的参数(权值w和偏置项b)。


然而,全连接神经网络与卷积神经网络的区别就是:在卷积神经网络中有卷积层和池化层的存在,所以在这两层中肯定会有反向传播的概念。


首先,我们来简单介绍池化层反向传播的概念。上述内容提到过,我们本论文案例中使用的是最大池化操作,我们不讨论此时的前向传播,假设此时经过池化之后的残差值已经从最后一层的反向传播计算得到(我们假设前向计算过程中每一区域的最大值我们已经标注出来了),则池化层(最大池化层)的反向传播就是逐层算出残差值,然后将残差值传递给已标注的最大位置的神经元。


接着我们来介绍卷积层的反向传播残差值的计算,具体公式我们这里不做推导,仅以如何计算为主:


卷积之前的矩阵:


微信图片_20220611003915.png


卷积核矩阵:


微信图片_20220611003919.png

卷积之后的残差值:


微信图片_20220611003923.png


我们现在需要计算卷积之前各个节点的残差:


微信图片_20220611003927.png


其余计算过程我们不再进行计算,最终所得卷积之前各个节点的残差值为:


微信图片_20220611003931.png


计算得出残差值之后,我们就可以根据公式更新卷积核的参数。


TensorFlow 2.0版本中的卷积神经网络


在本系列推文的TensorFlow 2.0 概述中,我们TensorFlow 2.0版本中的一些API及其基础知识有了一定的了解,在本小节中论文将介绍一下在本文中所涉及的两个案例中所用到的关于卷积神经网络中的一些API。


模型搭建层的核心代码如下所示:


model = tf.keras.models.Sequential([
  tf.keras.layers.Conv2D(input_shape = (28,28,1),filters = 32,kernel_size = 5,strides = 1,padding = "same",activation = "relu"),  # 28*28
  tf.keras.layers.MaxPool2D(pool_size = 2,strides = 2,padding = 'same'),  # 14*14
  tf.keras.layers.Conv2D(64,5,strides=1,padding='same',activation='relu'),  # 14*14
  tf.keras.layers.MaxPool2D(2,2,'same'),  # 7*7
  tf.keras.layers.Conv2D(64,5,strides=1,padding='same',activation='relu'), # 7*7
  tf.keras.layers.MaxPool2D(2,2,'same'), # 3*3
  tf.keras.layers.Flatten(),  # 64*3*3
  tf.keras.layers.Dense(1024,activation='relu'),
  tf.keras.layers.Dropout(0.5),
  tf.keras.layers.Dense(10,activation = 'softmax'),
])


上述代码中,我们通过Sequential来顺序构建模型,通过高阶APItf.keras.layers来搭建每一层需要的网络。如下是TensorFlow 2.0版本官网对于各API 的介绍:


微信图片_20220611003936.png

图3.10 相关API操作



相关文章
|
1天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
16 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
2天前
|
机器学习/深度学习 算法 自动驾驶
深度学习的奥秘:探索神经网络的魔法
【9月更文挑战第18天】本文将带领读者深入理解深度学习背后的科学原理,通过直观的例子和简单的语言解释复杂的技术概念。我们将一起探讨如何通过构建神经网络模型来模拟人脑的工作方式,并了解这一领域如何影响我们的日常生活。
|
6天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
23 7
|
4天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第16天】本文将深入浅出地介绍卷积神经网络(CNN)的基本概念、结构和工作原理,同时通过一个实际的代码示例来展示如何在Python中使用Keras库构建一个简单的CNN模型进行图像识别。我们将看到,即使是初学者也能够通过简单的步骤实现深度学习的强大功能,进而探索其在复杂数据集上的应用潜力。
|
5天前
|
机器学习/深度学习 自动驾驶 搜索推荐
深度学习之探索神经网络、感知器与损失函数
在当今的数字化时代,深度学习作为一种强大的机器学习技术,正在迅速改变着我们的生活方式。无论是智能推荐系统、自动驾驶车辆还是语音识别应用,深度学习都在背后默默地发挥作用。
13 1
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:深度学习与神经网络
【9月更文挑战第11天】本文将深入探讨人工智能的核心领域——深度学习,以及其背后的神经网络技术。我们将从基础理论出发,逐步深入到实践应用,揭示这一领域的神秘面纱。无论你是AI领域的初学者,还是有一定基础的开发者,都能在这篇文章中获得新的启示和理解。让我们一起踏上这场探索之旅,揭开AI的神秘面纱,体验深度学习的魅力。
|
7天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第13天】本文将深入浅出地介绍卷积神经网络(CNN)的基本原理,并探讨其在图像识别领域的应用。通过实例演示如何利用Python和TensorFlow框架实现一个简单的CNN模型,我们将一步步从理论到实践,揭示CNN如何改变现代图像处理技术的面貌。无论你是深度学习新手还是希望深化理解,这篇文章都将为你提供价值。
|
2天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的突破与应用
本文深入探讨了深度学习技术在图像识别领域的前沿进展、核心原理、广泛应用以及面临的伦理挑战和未来发展趋势。首先,概述了深度学习如何利用人工神经网络模拟人脑处理信息的方式,实现对图像数据的高效识别和分类。随后,详细介绍了卷积神经网络(CNN)等关键技术在提升图像识别准确性中的作用,并通过具体实例展示了深度学习在医疗影像分析、自动驾驶、面部识别等多个领域的成功应用。此外,文章还讨论了数据隐私、算法偏见等伦理问题,并展望了量子计算与深度学习融合等未来发展方向,强调了技术创新与社会责任并重的重要性。
|
2天前
|
机器学习/深度学习 供应链 算法
深度学习在图像识别中的应用
本文将深入探讨深度学习在图像识别领域的应用,从基本原理到实际案例,全面解析这一技术如何改变我们的生活。我们将介绍什么是深度学习,以及它在图像识别中的具体应用方式和成果。
21 2
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习与计算机视觉的结合:技术趋势与应用
深度学习与计算机视觉的结合:技术趋势与应用
29 9