深度学习笔记之CNN(卷积神经网络)基础

简介:

 卷积神经网络(ConvolutionalNeural Networks,简称CNN)提出于20世纪60年代,由Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现。

      CNN是目前深度学习最大的一个流派,其应用优点在于避免了对图像的复杂前期预处理,可以直接处理原始图像。CNN核心在于“卷积”,传统机器学习中LBP、HOG等特征都可以看作是卷积的一种特殊形式,“卷积”以不同的参数来描述不同的抽象程度特征,更接近于原始图像的“特征抽象”。

                

 

        如上图所示,利用一个滑动窗口(卷积核)对原始图像区域进行“筛选”,将对应像素相乘,再累加( I*K),就得到了一个像素的卷积结果。可以说卷积就像一个筛子,按照一定规则(借助卷积核“乘累加”)对原始图像再加工(实际是一个积分),公式可以描述为:

              

     

    来看一个典型的CNN实例,对于分辨率为28*28的图片处理过程:

        

        其中Conv为卷积层(采用5*5的卷积核,Step为1),实现数据特征提取;Pool为池化层,也称为降采样(Sample),实现数据降维;FC为全连接层,通过一定规则的计算(也可能为卷积计算)得到结果。

 

 

        我们把卷积层、池化层等中间层统一称为隐层。接下来深入了解每个层的含义来加深对CNN的理解。

 

            

 

 

 

 

•   卷积层与权值共享

        按照生物学神经元数据处理机制,每个神经元需要与前一层连接,用于特征提取,如下图所示,假设神经元数量为100万,那么对于100万像素的图像将建立1012个连接,这里面的权值的数量是非常大的。

              
 

 

        那么如何解决大量的权值计算(参数爆炸)问题呢?大开一下脑洞,我们做两个假设:

        1)减少每个神经元(对应隐层像素)的作用范围,比如设为10*10,仅和局部的100个像素建立局部连接;

              参数简化: 100(连接权值)*1M(神经元个数)

        2)所有神经元采用同一组权值进行计算,对应CNN就是用同一个卷积核去卷积图像,这就是权值共享

              参数简化: 100(权值)

        没错,我们只需要100个参数就建立了两层之间的连接,这靠谱吗?相信第一点很好理解,每个神经元是独立工作的,问题在于第二点,权值共享 这个玩笑开的确实有点大。

        事实上从生物学上解释,神经元确实是分类的,有的对边缘敏感,有的对亮度敏感,还有的感应颜色,每一类神经元的参数是近似一致的。

        想通了吗?关键就在于“分类”,每一类神经元对应一组权值,怕种类不够?

        那就用100个卷积核来描述100种神经元

        对于上面的例子,不同的卷积核如右图所示,我们得到最终的参数个数:

        参数简化: 100(权值)*100(卷积核)

        我们用1万个权值的卷积计算,近似模拟了神经元的处理过程,这个数量级的参数对于计算机来讲并不算多,特别是对于卷积这种已经能够做GPU并行计算的方法,这就是卷积的魅力。

 

 

 

•   池化

        池化(降采样)较为容易理解,获取一个区域内的典型特征,比如n*n像素范围的像素最大值或平均值,其意义在于能够对输入进行抽象描述,对特征进行降维。

          

 

        一般来讲,对于输入的池化区域都是分块处理的,与卷积的区别在于块之间一般不重叠,这样就保证了信息能够更快的抽象,抽象的价值在于提取里面的“显著特征”,而忽略“细节特征”。

常用的两种池化方法:

        1)最大值池化,应用最多,能够有效减少卷积层带来的均值偏差,对纹理特征的适应较好;

        2)平均值池化,对卷积结果进一步平滑,纹理和边缘特征容易丢失,但能有效避免噪声。

 

 

 

•   激活层

        神经网络真正的代表作出场了,在第一节已做过专题讲解,激活层 真正反映了神经元的工作机制,可以说是神经网络的精髓。

        在CNN中被广泛采用的ReLU函数有效解决了梯度扩散问题,你可以不必太在意“稀疏”,你可以忘掉“逐层预训练”,总结一句话那就是“激活函数的一小步,深度学习的一大步”。

        激活层一般添加在卷积层或者池化层之后,没有明确的位置定义,一般对于简单的网络来讲,激活层通常可以不添加。

 

 

 

 

•   Dropout层

        这个问题的提出源于神经网络的另一个大缺陷-“过拟合”,对应于前面导致“梯度扩散”问题的欠拟合。

常规解决“过拟合”问题的方法是模型平均,通过训练多个网络进行加权组合来进行规避,这样带来的问题是更大的计算量。

        Dropout方法最早由Hinton大神提出,针对一次训练过程,网络中的神经元节点按照一定的概率进行权值更新,也就是说,神经元有可能仅保留权值参数,下一个训练过程再更新。

        按照一定的随机策略,使每一次训练的神经元并不相同,也就是说神经元节点轮流工作,这种随机过程又向人脑前进了一步。

            

 

        每一次的Dropout相当于对网络做了一次简化(如上图所示),仅简化后的网络节点参与权值更新,整个训练过程中多次Dropout,每个节点都参与了训练和学习,当然偶尔也“翘个班”,过程很简单,为什么能得到好的效果呢?我们来分析一下:

        1)“天天大鱼大肉,顿顿鲍鱼龙虾”,偶尔吃个方便面吧,想想都嘚瑟,这个小调剂的效果出奇的好;

        2)班上一共20个学生,老师每次选择回答问题的都是那几个优秀的学生,Dropout避免了训练结果对某些节点的强依赖(权重过大);

      作者倾向于从遗传学的角度来进行解释,不同的基因组合方式能提高对于环境的适应能力,“优胜劣汰”的进化概率更高。

3)Dropout也可以理解为一种平均模型,区别在于,通过在多Step之间进行平均代替多个模型的组合。

        不管从哪个角度进行理解,Dropout本身都是直观有效的,这里面虽然没有严谨的数学公式推导,但源于生物学的直观理解,以及大量的实验足以证明。

        就好像有人问我深度学习为什么会有这么好的效果,为什么就能有效收敛?什么理论避免陷入局部最大值?我们对于某些问题的认知仅仅在这个层面上而已,有时候不需要纠结,能解决问题就可以了,至于其背后隐晦的林林种种,So What?

 

 

 

•   全连接层

        全连接层直观理解为简化的数据计算,其意义在于求解,对于网络本身的贡献值是比较低的,大多数情况下,全连接层放在网络最后面,有时也会被省略,这里不做过多解释,大家看到的时候能知道干什么的就行了。

 

 

•   回归层

        回归层理论上不属于CNN的一部分,当然也有人将其合并到网络,或者说也可以看作是全连接层的一部分,anyway,我们只是在这里将过程穿起来而已。

        回归是个比较熟悉的概念,前面讲过的逻辑回归、高斯回归等都属于回归,说白了回归就是对特征进行分类,可以分两类,也可以分多类。

        回归的作用也只是分类而已,你可以用最简单的SVM分类器进行分类,也可以采用复杂的多类划分,比如Softmax。Softmax是逻辑回归模型在多分类问题上的推广,本质上是将一个P维向量映射成另一个K维向量,其公式描述为:

                        

        得到对应的类别代表的概率,这个概率正是我们要的分类结果。



本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6972966.html,如需转载请自行联系原作者

相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB2022a开发,提供无水印算法运行效果预览及核心程序(含详细中文注释与操作视频)。通过结合时间卷积神经网络(TCN)和遗传算法(GA),实现复杂非线性时间序列的高精度预测。TCN利用因果卷积层与残差连接提取时间特征,GA优化超参数(如卷积核大小、层数等),显著提升模型性能。项目涵盖理论概述、程序代码及完整实现流程,适用于金融、气象、工业等领域的时间序列预测任务。
|
2月前
|
机器学习/深度学习 算法 JavaScript
基于GA遗传优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于遗传算法优化的时间卷积神经网络(TCN)用于时间序列预测的方法。算法运行于 Matlab2022a,完整程序无水印,附带核心代码、中文注释及操作视频。TCN通过因果卷积层与残差连接学习时间序列复杂特征,但其性能依赖超参数设置。遗传算法通过对种群迭代优化,确定最佳超参数组合,提升预测精度。此方法适用于金融、气象等领域,实现更准确可靠的未来趋势预测。
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
160 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
2月前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
3月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
198 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
3月前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB 2022a实现时间序列预测,采用CNN-GRU-SAM网络结构,结合鲸鱼优化算法(WOA)优化网络参数。核心代码含操作视频,运行效果无水印。算法通过卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征,全连接层整合输出。数据预处理后,使用WOA迭代优化,最终输出最优预测结果。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB 2022a实现了一种结合遗传算法(GA)优化的时间卷积神经网络(TCN)时间序列预测算法。通过GA全局搜索能力优化TCN超参数(如卷积核大小、层数等),显著提升模型性能,优于传统GA遗传优化TCN方法。项目提供完整代码(含详细中文注释)及操作视频,运行后无水印效果预览。 核心内容包括:1) 时间序列预测理论概述;2) TCN结构(因果卷积层与残差连接);3) GA优化流程(染色体编码、适应度评估等)。最终模型在金融、气象等领域具备广泛应用价值,可实现更精准可靠的预测结果。
|
3月前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
|
2月前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本内容介绍了一种基于CNN-LSTM-SAM网络与鲸鱼优化算法(WOA)的时间序列预测方法。算法运行于Matlab2022a,完整程序无水印并附带中文注释及操作视频。核心流程包括数据归一化、种群初始化、适应度计算及参数更新,最终输出最优网络参数完成预测。CNN层提取局部特征,LSTM层捕捉长期依赖关系,自注意力机制聚焦全局特性,全连接层整合特征输出结果,适用于复杂非线性时间序列预测任务。

热门文章

最新文章