深度学习:卷积神经网络详细指南

简介: 深度学习:卷积神经网络详细指南

深度学习:全连接神经网络是如何变成卷积神经网络的?

全连接神经网络

全连接网络原理简述

我们举一个例子,假设房子的价格为y,那么他的地点x1与面积x2都与体制有关我们设定公式:

image.png

假设我们让这个模型训练了n轮,得到了最优解,权重系数$w_1$=0.3,$w_2=0.7$,我们就可以相对的认为地点与面积对房价的影响程度不同。而在实际场景中,有很多因素都影响房价,也就是说权重系数的维度会很大,以单层神经网络为例,如下图:
在这里插入图片描述
观测值的每一个维度xi都对应了一个权重系数wi,权重大小就代表了这个维度的xi对最后结果的贡献程度。

全连接网络处理图像的弊端

现在,我们的数据从结构化的表格数据转换成了图片,我们把数据换成图像,我们的想法是能不能跟上面的情况一样,找到一些特征,配备一些权重,就可以预测或者分类了。
首先我们想到的是给图像的像素点做flatten,当图片很小的时候,全连接神经网络还依旧能work,假设图片的尺寸是224*224的黑白图像,那么需要的参数数量就是50176,这样来看,训练的代价会非常大,如果类别也不多,很大可能会出现过拟合的情况,我们还不如直接One-hot。

卷积神经网络

卷积的奥义

直接对像素点flatten的方式走不通,我们就想换一种方式来提取特征,于是,就有了卷积这种提取图像特征的方式,卷积运算的公式在信号处理中被定义为:在这里插入图片描述
fx就是我们的输入,gx就表示卷积核,它有多种含义,在深度学习中理解为在特定卷积核的作用下提取某一个局部特征,如下图:
在这里插入图片描述
这两个卷积核分别提取了竖直方向的局部特征与水平方向局部特征。
下面我们介绍它是如何在图片上提取特征的,为了方便计算,我们以channel =1 的黑白图像举,下面是一张9*9的字母x图像:
在这里插入图片描述

卷积核选用3*3的卷积核:在这里插入图片描述
这个卷积核与图像中x的斜边很像,为了显示明显效果,我们先来用这个卷积核与图中这蓝色框内的区域做卷积运算。(*表示卷积运算)
我们让对应的元素相乘在相加,运算过程如下:

请添加图片描述

我们在来计算卷积核与黄框进行卷积运算:
在这里插入图片描述
我们发现,黄色框的结果要比蓝色框的结果大10倍,这个值越大,卷积核在这个框内提取到的某个特定的特征就越“多”。
而蓝色框里面的特征就不是卷积核所要提取的特征,所以他的值相对较小。
卷积核对图像提取特征后,图像的尺寸会缩小,计算公式图下:
image.png

上图图像为9*9,他的输出尺寸就是:

image.png

下图还做了均值处理:
在这里插入图片描述

单层卷积神经网络

卷积核的参数就是之前介绍的全连接网络的权重系数w,但是连接于计算的方式略有不同,可以看做卷积神经网络是特殊的全连接网络,如下图:在这里插入图片描述
这是一张识别是否为鸟的神经网络,我们直接了解到卷积核可以提取某个局部特征,因为他在网络中是w权重系数,我们通过训练找到最优化的权重系数,我们就可以相对的得到提取鸟类特征的卷积核(如上图鸟嘴、眼睛、爪子)。
我们刚才了解到卷积核可以提取某个局部区域的特征,他的好处在于可以获得空间上的信息,而对全部像素点做flatten就会缺少空间信息。

权重共享

改为卷积核提取特征的的第二个好处就是权重系数要比之前的少很多,比如说鸟嘴这个特征他可以出现在图像的任何位置,所以我用提取鸟嘴特征的卷积从图像的左上角从左到右,从上到下,扫过整张图像,就可以知道是否存在这个特征(这也就是所谓的权重共享,用同一个卷积核在整个图像区域都走一遍)。这样看来,提取黑白图片的某一个特征就只需要一个特定的33卷积核(也就是权重系数w)和一个偏置系数b,总共10个参数,假设3232的图像总共有5个特征,我们用卷积就只需要50个参数,而全连接层就需要1024个参数。如果是彩色图像,卷积核的channel数就要*3。

Padding(填充法)

上面我们讲述,图像在卷积核的作用下会让图像的尺寸缩小,如果我们想训练特别深的网络,比如网络100层,采用3 3的卷积核,图像尺寸3232,那么在16层后,图像的尺寸就没了。
图像在被卷积核作用时,还有可能会丢失边缘像素
在这里插入图片描述

于是我们引入了padding操作,他的作用就是在卷积运算前在图像外围补上一圈数值,一般数值为0。
于是我们的输出尺寸计算公式就发生了变化:
image.png

图像为99,卷积核为33,padding补了一圈0,他的输出尺寸就是:

image.png

请添加图片描述

Sride(步长)

假设我们的网络层数为100层,而图像为10241024,那么即使不做padding,在33卷积核的作用下,经过100层网络后,图像还是824*824之大,如果网络层数太大,可能会造成梯度消失,梯度爆炸、过拟合等一系列问题。
于是,就有了步长这一概念:卷积核的步长度代表提取的精度,步长越大,精度越小。默认每次步长为1,步长增大,可以减少计算量,减少时间。
上图的步长为默认的1,下图步长为2:
请添加图片描述

Pooling(池化)

卷积操作后,我们得到了一张张有着不同值的feature map,尽管数据量比原图少了很多,但还是过于庞大,因此接下来的池化操作就可以发挥作用了,它最大的目标就是减少数据量,但是过度池化也会损失掉一些特征从而减少精度,他也有抑制过拟合的作用。

池化分为两种,Max Pooling 最大池化、Average Pooling平均池化。顾名思义,最大池化就是取最大值,平均池化就是取平均值。

拿最大池化举例:选择池化尺寸为2x2,因为选定一个2x2的窗口,在其内选出最大值更新进新的feature map。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
最终得到池化后的feature map。可明显发现数据量减少了很多。

因为最大池化保留了每一个小块内的最大值,所以它相当于保留了这一块最佳匹配结果(因为值越接近1表示匹配越好)。这也就意味着它不会具体关注窗口内到底是哪一个地方匹配了,而只关注是不是有某个地方匹配上了。这也就能够看出,CNN能够发现图像中是否具有某种特征,而不用在意到底在哪里具有这种特征。这也就能够帮助解决之前提到的计算机逐一像素匹配的死板做法。

目录
相关文章
|
1天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
15 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
1天前
|
机器学习/深度学习 算法 自动驾驶
深度学习的奥秘:探索神经网络的魔法
【9月更文挑战第18天】本文将带领读者深入理解深度学习背后的科学原理,通过直观的例子和简单的语言解释复杂的技术概念。我们将一起探讨如何通过构建神经网络模型来模拟人脑的工作方式,并了解这一领域如何影响我们的日常生活。
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
23 7
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第16天】本文将深入浅出地介绍卷积神经网络(CNN)的基本概念、结构和工作原理,同时通过一个实际的代码示例来展示如何在Python中使用Keras库构建一个简单的CNN模型进行图像识别。我们将看到,即使是初学者也能够通过简单的步骤实现深度学习的强大功能,进而探索其在复杂数据集上的应用潜力。
|
4天前
|
机器学习/深度学习 自动驾驶 搜索推荐
深度学习之探索神经网络、感知器与损失函数
在当今的数字化时代,深度学习作为一种强大的机器学习技术,正在迅速改变着我们的生活方式。无论是智能推荐系统、自动驾驶车辆还是语音识别应用,深度学习都在背后默默地发挥作用。
13 1
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种结合粒子群优化(PSO)与分组卷积神经网络(GroupCNN)的时间序列预测算法。该算法通过PSO寻找最优网络结构和超参数,提高预测准确性与效率。软件基于MATLAB 2022a,提供完整代码及详细中文注释,并附带操作步骤视频。分组卷积有效降低了计算成本,而PSO则智能调整网络参数。此方法特别适用于金融市场预测和天气预报等场景。
|
6天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第13天】本文将深入浅出地介绍卷积神经网络(CNN)的基本原理,并探讨其在图像识别领域的应用。通过实例演示如何利用Python和TensorFlow框架实现一个简单的CNN模型,我们将一步步从理论到实践,揭示CNN如何改变现代图像处理技术的面貌。无论你是深度学习新手还是希望深化理解,这篇文章都将为你提供价值。
|
11天前
|
机器学习/深度学习 自然语言处理 自动驾驶
CNN的魅力:探索卷积神经网络的无限可能
卷积神经网络(Convolutional Neural Networks, CNN)作为人工智能的重要分支,在图像识别、自然语言处理、医疗诊断及自动驾驶等领域展现了卓越性能。本文将介绍CNN的起源、独特优势及其广泛应用,并通过具体代码示例展示如何使用TensorFlow和Keras构建和训练CNN模型。
|
11天前
|
机器学习/深度学习 数据采集 数据可视化
深度学习实践:构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类
本文详细介绍如何使用PyTorch构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行图像分类。从数据预处理、模型定义到训练过程及结果可视化,文章全面展示了深度学习项目的全流程。通过实际操作,读者可以深入了解CNN在图像分类任务中的应用,并掌握PyTorch的基本使用方法。希望本文为您的深度学习项目提供有价值的参考与启示。
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出卷积神经网络(CNN)的奥秘
【9月更文挑战第3天】在人工智能的浪潮中,卷积神经网络(CNN)无疑是最耀眼的明星之一。本文将通过浅显易懂的语言,带你一探CNN的核心原理和应用实例。从图像处理到自然语言处理,CNN如何改变我们对数据的解读方式?让我们一起走进CNN的世界,探索它的魅力所在。