🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学!
⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!
💡往期推荐:
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
【机器学习基础】DBSCAN
【机器学习基础】支持向量机
【机器学习基础】集成学习
【机器学习 & 深度学习】神经网络简述
💡本期内容:卷积神经网络最常用于分析视觉图像,并广泛应用于计算机视觉、自然语言处理等领域。卷积神经网络仿造生物的视知觉(visual perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求。
文章目录
- 0 前言
- 1 卷积神经网络的层级结构
- 2 卷积
- 2.1 步长和填充
- 2.2 卷积的作用
- 2.2.1 用卷积层代替全连接层
- 2.2.2 多个卷积核
- 3 池化
- 3.1 池化层的结构
- 3.2 池化层的作用
- 3.3 池化层的参数选择
- 4 常见的卷积神经网络
0 前言
上一篇文章我们介绍了人工神经网络,神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。
这一篇文章我们来了解一下更加神奇的卷积神经网络
1 卷积神经网络的层级结构
- 普通神经网络
- 卷积神经网络
卷积神经网络是一种前馈神经网络,受生物学上感受野(Receptive Field)的机制而提出的。在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。
上图给出了经典的卷积神经网络各个层级结构
上图中CNN要做的事情是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:如果是车 那是什么车
- CONV:卷积计算层,线性乘积 求和。
- RELU:激励层,上文2.2节中有提到:ReLU是激活函数的一种。
- POOL:池化层,简言之,即取区域平均或最大。
- FC:全连接层
2 卷积
在泛函分析中,卷积、旋积或褶积是通过两个函数f和g生成第三个函数的一种数学运算。
在深度学习中, 对图像和滤波矩阵做内积的操作就是卷积。
- 卷积经常用在信号处理中,用于计算信号的延迟累积。
- 假设一个信号发生器每个时刻t产生一个信号xt ,其信息的衰减率为wk ,即在k−1个时间步长后,信息为原来的wk 倍
- 时刻t收到的信号yt 为当前时刻产生的信息和以前时刻延迟信息的叠加。
- 举个例子
给定一个输入信号序列𝑥和滤波器𝑤,卷积的输出为:(Filter: [-1,0,1])
- 不同的滤波器来提取信号序列中的不同特征
2.1 步长和填充
步长是指感受野窗口每次移动的长度单位,对于2D输入来说,分为沿𝑥(向右)方向和𝑦(向下)方向的移动长度。步长会影响到输出特征图的尺寸,步长越大,输出的特征图尺寸越小,反之亦然。步长的选择需要根据实际任务需求和数据特点来决定,通常情况下,步长为1或2。
填充是指在输入高和宽的两侧填充元素(通常是0元素),以增加输出的特征图尺寸。填充的作用是控制输出特征图的尺寸,同时可以使得卷积神经网络具有更强的平移不变性。通过填充,可以在输入特征图上增加一些额外的信息,使得卷积神经网络能够更好地处理数据。
- 卷积的结果按输出长度不同可以分为三类:
窄卷积:步长 𝑇 = 1 ,两端不补零 𝑃 = 0 ,卷积后输出长度为 𝑀 − 𝐾 + 1
宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 = 𝐾 − 1 ,卷积后输出长度 𝑀 + 𝐾 − 1
等宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 =(𝐾 − 1)/2 ,卷积后输出长度 𝑀
在早期的文献中,卷积一般默认为窄卷积。而目前的文献中,卷积一般默认为等宽卷积。
2.2 卷积的作用
2.2.1 用卷积层代替全连接层
- 局部感知:卷积层可以使得神经网络能够更好地感知局部特征,这对于图像、语音等局部特征较为丰富的任务非常有利。而全连接层则无法实现局部感知,因为它会将每个神经元与输入数据中的每个元素相连,导致计算量和参数数量都非常大。
- 参数共享:卷积层中的卷积核可以在整个输入数据上共享参数,这样不仅可以减少参数量,还可以提高模型的泛化能力。而全连接层则没有参数共享的特点。
- 平移不变性:由于卷积层可以对输入数据进行局部感知和平移不变性处理,因此它可以使得神经网络对于输入数据的平移变化具有更好的鲁棒性。而全连接层则不具备这种平移不变性的特点。
- 特征提取:卷积层可以通过逐渐增加感受野的大小来提取不同尺度的特征,这对于一些需要多尺度特征的任务非常有利。而全连接层则无法实现多尺度特征的提取。
2.2.2 多个卷积核
-
在卷积神经网络中,多个卷积核的作用是提取输入数据的多种局部特征。每个卷积核都可以从输入数据中提取出特定的特征,例如边缘、角点、纹理等。通过使用多个卷积核,可以同时学习多个特征,并在输出层中将这些特征结合起来进行分类或回归。
-
卷积核的作用类似于滤波器,可以对输入数据进行滤波操作,提取出局部特征。在卷积神经网络中,卷积核的大小和数量可以根据任务需求和数据特点进行选择和调整。通常情况下,卷积核的大小为3x3或5x5,数量可以从几十到几百不等。
-
使用多个卷积核可以增加神经网络的非线性表达能力,使得神经网络能够更好地学习和模拟复杂的特征。同时,多个卷积核还可以提高网络的泛化能力,使得神经网络对于不同的数据分布更加鲁棒。
3 池化
卷积层虽然可以显著减少连接的个数,但是每一个特征图的神经元个数并没有显著减少。
池化层是卷积神经网络中的一种重要层,用于降低输入数据的空间维度,减少参数数量,提高模型的计算效率。
3.1 池化层的结构
池化层通常位于卷积层之后,通过对输入数据的降采样来减小数据的空间尺寸。
池化层的操作可以分为两种:最大池化和平均池化。最大池化是从输入数据中选取固定大小的区域,取该区域中的最大值作为输出;平均池化则是计算固定大小区域的平均值作为输出。
3.2 池化层的作用
- 降低维度:通过减小数据的空间尺寸,池化层可以降低输入数据的维度,减少计算量和参数数量,提高模型的计算效率。
- 提高平移不变性:由于池化层的操作是针对固定大小的区域进行的,因此它可以对输入数据进行下采样,使得神经网络对于输入数据的平移变化具有更好的鲁棒性。
- 特征提取和降噪:池化层可以提取输入数据中的重要特征和降低噪声干扰。通过减小数据的空间尺寸,可以将一些不重要的细节信息过滤掉,保留重要的特征信息。
3.3 池化层的参数选择
- 池化窗口的大小:池化窗口的大小决定了降采样的程度和输出的特征图尺寸。通常情况下,池化窗口的大小为2x2或3x3,但具体选择需要根据任务需求和数据特点进行决定。
- 步长(stride):步长决定了池化操作的移动速度,即每次池化操作的间隔。步长越大,输出的特征图尺寸越小,反之亦然。步长的选择也需要根据实际情况进行决定。
- 填充(padding):填充是在输入数据的周围添加额外的元素(通常是0),以保持输出特征图的尺寸与输入数据一致。填充可以控制输出特征图的尺寸,但同时也会增加计算量和参数数量。
4 常见的卷积神经网络
- LeNet-5
LeNet-5 是一个非常成功的神经网络模型。
基于 LeNet-5 的手写数字识别系统在 90 年代被美国很多银行使用,用来识别支票上面的手写数字。
- AlexNet
2012 ILSVRC winner(top 5 error of 16% compared to runner-up with 26% error)
第一个现代深度卷积网络模型
首次使用了很多现代深度卷积网络的一些技术方法
使用GPU进行并行训练,采用了ReLU作为非线性激活函数,使用Dropout防止过拟合,使用数据增强
5个卷积层、3个汇聚层和3个全连接层