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

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

一、 为什么使用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


相关文章
|
3天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
|
4天前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
4天前
|
机器学习/深度学习
【从零开始学习深度学习】37. 深度循环神经网络与双向循环神经网络简介
【从零开始学习深度学习】37. 深度循环神经网络与双向循环神经网络简介
|
3天前
|
机器学习/深度学习 自然语言处理 前端开发
深度学习-[源码+数据集]基于LSTM神经网络黄金价格预测实战
深度学习-[源码+数据集]基于LSTM神经网络黄金价格预测实战
|
3天前
|
机器学习/深度学习 自然语言处理 前端开发
深度学习-[数据集+完整代码]基于卷积神经网络的缺陷检测
深度学习-[数据集+完整代码]基于卷积神经网络的缺陷检测
|
3天前
|
机器学习/深度学习 数据可视化 TensorFlow
【手把手教学】如何可视化YOLOv8深度学习的网络结构并保存
【手把手教学】如何可视化YOLOv8深度学习的网络结构并保存
|
4天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用
【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用
|
4天前
|
机器学习/深度学习 数据采集 算法
未来研究将深入探索深度学习的应用及数据质量与安全问题
【6月更文挑战第13天】本文探讨了使用Python和机器学习预测股票价格的方法,包括数据收集与预处理(填充缺失值、处理异常值、标准化)、特征选择(技术指标、基本面指标、市场情绪)、模型选择与训练(线性回归、SVM、神经网络等)、模型评估与调优。尽管股票价格受多重因素影响,通过不断优化,可构建预测模型。未来研究将深入探索深度学习的应用及数据质量与安全问题。
23 5
|
4天前
|
机器学习/深度学习 传感器 自动驾驶
探讨深度学习在自动驾驶中的应用,以及它如何推动自动驾驶技术的发展
【6月更文挑战第13天】本文探讨了深度学习在自动驾驶汽车中的核心应用,涉及环境感知、决策规划和控制执行。深度学习通过模拟神经元工作方式处理传感器数据,如使用CNN和RNN识别图像和雷达信息。此外,它助力智能决策规划和精确控制执行。然而,数据需求、可解释性和实时性是当前挑战,可通过数据增强、规则方法、模型压缩等手段解决。随着技术发展,深度学习将进一步提升自动驾驶性能,并应对安全和隐私挑战。
16 5
|
1天前
|
机器学习/深度学习 人工智能 监控
深度学习在图像识别中的应用与未来发展
随着科技的不断进步,深度学习已成为人工智能领域的重要技术。本文探讨了深度学习在图像识别中的应用,以及未来可能的发展方向,并提供了一些实际应用案例。
8 0

热门文章

最新文章