【算法笔记】CNN Convolutional Neural Network (卷积神经网络)

本文深入解析了卷积神经网络(CNN)的结构与工作原理,包括卷积层、池化层、ReLU层、全连接层和Dropout层的作用及训练方法。同时,文章对比了CNN与传统神经网络的区别。

1. 先皮一会

久仰CNN的大名,进入新闻界,加入美国有线电视新闻网,成为一个跑得飞快的记者一直是我的梦想。但是,平庸的才能无法让我成为一名空间移动系的法师,现在只能努力成为一名精神系人偶师。
话说前两天实验验收,把CNN和RNN搞混了orz,太尴尬了orz,所以现在怎么说也得把他们的概念弄清楚。

2. 算法的作用

输入:一张图片(长x宽x空间维度(RGB,Spatial Dimensions))
输出:这张图片属于不同特定分类的概率(比如:80% 是猫、15% 是狗、5% 是鸟)。

3. 总体结构

原始图像->若干卷积层->若干非线性层->若干池化->全连接层

4. 详细描述

4.1 卷积层(Convolutional Layer)

嫖来一张图片

卷积层的输入: 可以是原始图像,也可以是其他卷积层的结果,也可以是池化,非线性层的结果。
卷积层的基本操作: 是使用某特定长宽深的卷积核【Kernel,又称过滤器(filter),神经元(neuron)】与输入矩阵中的某一部分逐项相乘再一同相加,当作一个新的元素。然后向右一格,执行同样的操作。
卷积层为什么要这么干: 卷积核划过整片矩阵之后,得到的新矩阵,称之为激活映射(activation Map),如果矩阵中某个区域有这个卷积核想要识别的特征,激活映射上对应的值会特别高,以此反映出这个图片上存在某种特征,比如直线,U型线,等等低级特征。经过多个卷积层之后,低级特征可以组合起来表达某些高级特征。

4.2 池化(Pooling)

池化输入: 卷积层或者非线性层的结果
池化基本操作: 一般有平均池化,最大池化。可以在周围补0,也可以不补。注意,池化的步长与池化矩阵边长相等
池化操作的目的:

池化层还有其他选择,比如平均池化(average pooling)和 L2-norm 池化 。
这一层背后的直观推理是:
一旦我们知道了原始输入(这里会有一个高激活值)中一个特定的特征,它与其它特征的相对位置就比它的绝对位置更重要。

这一层大幅减小了输入卷的空间维度(长度和宽度改变了,但深度没变)。这到达了两个主要目的。
第一个是权重参数的数目减少到了75%,因此降低了计算成本。
第二是它可以控制过拟合(overfitting)。这个术语是指一个模型与训练样本太过匹配了,以至于用于验证和检测组时无法产生出好的结果。出现过拟合的表现是一个模型在训练集能达到 100% 或 99% 的准确度,而在测试数据上却只有50%。

作者:机器之心
链接: https://www.zhihu.com/question/52668301/answer/131573702
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上面的说法比较清楚,简单来说,池化的作用是降低计算复杂度,防止过拟合

4.3 ReLU

                                      f(x) = max(0,x)

这一层将所有的负激活变成0,增加了模型乃至整个神经网络的非线性特征,而不会影响卷积层感受野

4.4 全连接层

全连接层输入: 其他层的输出,是一个有厚度(空间维度)的矩阵
全连接层的操作: 暂时不清楚
全连接层的目的: 其他操作的结果依然是一个矩阵或者许多矩阵, 全连接层就是要把这些矩阵映射到一个向量,这个向量的维度就是该分类器待选分类项目数,向量的不同值代表分类为该项的概率。

4.5 DropOut

如今,Dropout 层在神经网络有了非常明确的功能。上一节,我们讨论了经过训练后的过拟合问题:训练之后,神经网络的权重与训练样本太过匹配以至于在处理新样本的时候表现平平。
Dropout 的概念在本质上非常简单。Dropout 层将「丢弃(drop out)」该层中一个随机的激活参数集,即在前向通过(forward pass)中将这些激活参数集设置为 0。
简单如斯。既然如此,这些简单而且似乎不必要且有些反常的过程的好处是什么?
在某种程度上,这种机制强制网络变得更加冗余。
这里的意思是:该网络将能够为特定的样本提供合适的分类或输出,即使一些激活参数被丢弃。此机制将保证神经网络不会对训练样本「过于匹配」,这将帮助缓解过拟合问题。另外,Dropout 层只能在训练中使用,而不能用于测试过程,这是很重要的一点。

作者:机器之心
链接: https://www.zhihu.com/question/52668301/answer/131573702
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

震惊

4.6 训练方法

CNN的训练方法,与传统神经网络相同,都是反向传播算法,其基础原理在吴恩达老师的视频课上讲得比较清楚,但在CNN上的具体数学实现,并不清楚。

4.7 与传统神经网络的区别&遗留的问题

传统神经网络,不同层级之间都是全连接的,如果各个层级维度很高,那么转移矩阵就会巨大。
而CNN,假如我们把图片矩阵重新排列成一维向量,可以发现,每次只有向量中的一部分参与了卷积运算,一次大的全连接被拆分成了多个小的部分连接运算。
在这里插入图片描述
留有的问题:
池化是怎么帮助矩阵稳定的?
全连接层的具体原理
训练,CNN反向传播的数学原理

### 卷积神经网络CNN)的概念、原理与应用 卷积神经网络Convolutional Neural Networks,CNNs)是一种专门用于处理具有网格状拓扑结构数据的深度学习模型[^1]。它在图像识别、语音识别等领域取得了显著的成果,其设计灵感来源于生物学中的视觉系统,能够模拟人类视觉处理信息的方式[^2]。 #### CNN 的核心概念 CNN 的主要特点是通过卷积层和池化层等操作从输入数据中提取特征,并将这些特征用于分类或回归任务。卷积层通过一系列可学习的卷积核(滤波器)来检测局部特征,例如边缘、纹理等[^3]。池化层则用于降低特征图的空间尺寸,从而减少计算量并增强模型的鲁棒性[^3]。 #### CNN 的工作原理 CNN 的基本架构通常包括以下几个关键部分: 1. **卷积层**:卷积层是 CNN 的核心组件之一,负责提取输入数据的局部特征。每个卷积核可以看作是一个小型的特征探测器,通过滑动窗口的方式对输入进行扫描,生成一个特征图(Feature Map)。这些特征图捕捉了输入数据的不同模式。 2. **激活函数**:为了引入非线性特性,卷积层后通常会接一个激活函数,如 ReLU(Rectified Linear Unit),以确保模型能够学习复杂的映射关系。 3. **池化层**:池化层的作用是对特征图进行降采样,从而减少数据的维度,同时保留最重要的特征信息。常见的池化方法包括最大池化(Max Pooling)和平均池化(Average Pooling)[^3]。 4. **全连接层**:经过多层卷积和池化操作后,最终的特征图会被展平并输入到全连接层中,用于完成具体的分类或回归任务[^2]。 #### CNN 的典型应用 CNN 在多个领域中得到了广泛的应用,以下是几个典型的例子: - **图像分类**:CNN 是图像分类任务的核心技术,例如 AlexNet、VGG、ResNet 等经典网络结构都在 ImageNet 数据集上取得了突破性的性能[^1]。 - **目标检测**:基于 CNN 的目标检测框架,如 Faster R-CNN、YOLO 和 SSD,能够在图像中精确定位并分类多个对象。 - **图像生成**:生成对抗网络(GANs)结合 CNN 可以生成高质量的合成图像,广泛应用于艺术创作、数据增强等领域。 - **医学影像分析**:CNN 在医学影像分析中表现优异,例如通过分析 X 光片或 MRI 图像来辅助诊断疾病。 ```python # 一个简单的 CNN 模型示例(使用 TensorFlow/Keras) from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)), MaxPooling2D(pool_size=(2, 2)), Conv2D(64, (3, 3), activation='relu'), MaxPooling2D(pool_size=(2, 2)), Flatten(), Dense(128, activation='relu'), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值