卷积神经网络|深度学习(李宏毅)(四)

简介: 卷积神经网络|深度学习(李宏毅)(四)

一、 为什么使用CNN处理图片


  • 在图片中有一些比整张图片要小的pattern(比如鸟的图片中鸟的喙就是一个小的pattern),识别这些pattern并不需要看整张图片。


  • 这些小的pattern会出现在图片的不同位置,例如鸟图片中鸟的喙可能出现在左上角也可能出现在中间。


  • 对图片进行降采样(池化)不会改变图片的特征,因此神经网络处理图片所需的参数就会更少。


二、 卷积 v.s. 全连接


  可以将卷积网络看作一种特殊的的全连接网络,每一个卷积核卷积后得到的feature map可以看做一个隐藏层的输出,feature map中的每一个数可以看做这个隐藏层的一个神经元。在这个特殊的全连接网络中隐藏层的每个神经元只会接收上一层的部分输入,而且隐藏层的神经元对应的权重是共享的,在反向传播过程中只需要按照一般的过程进行反向传播,然后再将对应的共享参数取均值即可。具体的过程如下图所示:


QQ图片20220531184200.png


QQ图片20220531184200.png

三、 卷积网络中的channel(通道)


  对于输入样本中 channels 的含义。一般的RGB图片,channels 数量是 3 (红、绿、蓝);而monochrome(单色)图片,channels 数量是 1 。


  举个例子,如下图,假设现有一个为 6×6×3 的图片样本,使用 3×3×3 的卷积核(filter)进行卷积操作。此时输入图片的 channels 为 3 ,而卷积核中的 in_channels 与 需要进行卷积操作的数据的 channels 一致(这里就是图片样本,为3),注意每个卷积核的channels(也就是in_channels)一定是与图片的channels一致,因为图片的每一个channel都会分别于卷积核中对应的channel进行卷积操作。


QQ图片20220531184441.png


  接下来,进行卷积操作,卷积核中的27个数字与分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到4×4的结果。


QQ图片20220531184508.png


  上面步骤完成后,由于只有一个卷积核,所以最终得到的结果为 4×4×1 , out_channels 为 1 。在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4×4×2 的结果,因此卷积核的数量也就是out_channels,即该卷积层输出的feature map的channel数。


QQ图片20220531184544.png


  总结一下,上面提到的 channels 可以分为三种:


  (1)最初输入的图片样本的 channels ,取决于图片类型,比如RGB;


  (2)卷积操作完成后输出的 out_channels ,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels;


  (3)卷积核中的 in_channels ,刚刚(2)中已经说了,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是(1)中样本图片channels。


四、卷积网络学到了什么(可视化)


  以下图网络结构为例:

QQ图片20220531184627.png


4.1 卷积核学到了什么


  定义第k个卷积核的激活度:


QQ图片20220531184653.png


  每个卷积核负责侦测图像中的一种pattern,激活度越高说明图像中出现越多的这种pattern。在训练模型完成以后,将激活度看做因变量,图像看做自变量,通过极大化激活度而得到的图像即是该卷积核所侦测的pattern,也就实现了一个可视化的过程。具体过程如下所示:


QQ图片20220531184716.png


  这里列出12个卷积核求解得到的结果,可以看到每个卷积核都会侦测一种pattern。


4.2 全连接隐藏层神经元学到了什么


QQ图片20220531184743.png


  将神经元的输出看做因变量做同样的最优化过程得到结果,从上图中可以看出与卷积核只侦测小的pattern不同,全连接隐藏层的神经元会看到整张图像的特征。


4.3 输出层神经元学到了什么

QQ图片20220531184819.png


  上图为使用CNN对手写体数字识别数据集训练出来的网络结构的输出层可视化的结果,可以看到得到的结果并非类似数字的图像,可见机器和人识别图像的方式是不一样的。将输出层节点的值进行L1正则化然后再看求解得到的结果就可以隐约看出数字的特征了:

QQ图片20220531184852.png


五、卷积网络应用


5.1 Deep Dream


QQ图片20220531184922.png


5.2 Deep Style


QQ图片20220531184952.png


  其实现的大体原理如下:

QQ图片20220531185018.png


  保留左边图片卷积核的输出值,输出值代表了图片的内容;保留右边图片卷积核之间的相关性(corelation),相关性代表了图片的风格,然后进行最优化(maximum),最终就会得到右图风格的左图,效果如下:


QQ图片20220531185048.png


5.3 下围棋(Alpha Go)


  使用神经网络来预测下一步棋的位置时,网络的输入是当前的棋盘的状态(shape:19 * 19,黑子:1,白字:-1,空:0),输出下一步的位置。


  解决这个问题既可以使用全连接网络,也可以使用CNN,但是CNN效果更好,这是因为下围棋的问题符合一中介绍的选择CNN的理由:


  • 通过围棋的特点可以知道,只需要侦测棋盘上一些小的pattern就可以进行识别。


  • 这些小的pattern可能存在于棋盘的不同位置(指可能存在于棋盘的左上角或中间等位置)。


:由于棋盘不同于图片,图片进行降采样以后仍然可以识别特征而围棋棋盘不可以,所以Alpha Go所使用的的CNN架构中没有池化层。)


  下图为该应用的原理:


QQ图片20220531185122.png


5.4 语音辨识

QQ图片20220531185150.png


  卷积核只在Frequency方向上移动,这是因为在时间上移动卷积核意义不大,比如同样说“你好”,男女的声音很可能只是在Frequency上有差别。


5.5 文本识别


QQ图片20220531185229.png


  同样的卷积核只横向移动,这是因为每个词向量的不同维度之间是独立的。因此在CNN的实际应用中要根据实际情况选择卷积核的移动方式。


参考资料


ref:理解CNN中的通道 channel


ref:深度卷积神经网络图像风格变换 Deep Photo Style Transfer


相关文章
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
3月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
412 11
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
3月前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
239 0
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
301 7
|
6月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容包含时间序列预测算法的相关资料,涵盖以下几个方面:1. 算法运行效果预览(无水印);2. 运行环境为Matlab 2022a/2024b;3. 提供部分核心程序,完整版含中文注释及操作视频;4. 理论概述:结合时间卷积神经网络(TCN)与鲸鱼优化算法(WOA),优化TCN超参数以提升非线性时间序列预测性能。通过因果卷积层与残差连接构建TCN模型,并用WOA调整卷积核大小、层数等参数,实现精准预测。适用于金融、气象等领域决策支持。
|
6月前
|
机器学习/深度学习 数据采集 并行计算
基于WOA鲸鱼优化的TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于TCN(Temporal Convolutional Network)与WOA(Whale Optimization Algorithm)的时间序列预测算法。TCN通过扩张卷积捕捉时间序列长距离依赖关系,结合批归一化和激活函数提取特征;WOA用于优化TCN网络参数,提高预测精度。算法流程包括数据归一化、种群初始化、适应度计算及参数更新等步骤。程序基于Matlab2022a/2024b开发,完整版含详细中文注释与操作视频,运行效果无水印展示。适用于函数优化、机器学习调参及工程设计等领域复杂任务。
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容涵盖基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测算法。完整程序运行效果无水印,适用于Matlab2022a版本。核心代码配有详细中文注释及操作视频。理论部分阐述了传统方法(如ARIMA)在非线性预测中的局限性,以及TCN结合PSO优化超参数的优势。模型由因果卷积层和残差连接组成,通过迭代训练与评估选择最优超参数,最终实现高精度预测,广泛应用于金融、气象等领域。

热门文章

最新文章