IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 李宏毅《机器学习》Task06 - 卷积神经网络(CNN) -> 正文阅读

[人工智能]李宏毅《机器学习》Task06 - 卷积神经网络(CNN)

卷积神经网络(Convolution Neural Network)是一种神经网络的架构设计,专门用于影像处理上。

一、卷积层

现在用不同方式来介绍卷积神经网络。

角度一:神经元版本

给出一个图像,我们如何用神经网络将其分类呢?现在我们来观察图片的特点。

1. 观察一

对于不同大小的图片,先将其处理为大小相同,再进行后续步骤

例如:

  • 输入:一批100*100固定大小的图片
  • 输出:动物类别,表示为一个列向量,每个纬度表示一个动物的种类,且非零即一(0代表“不是该类别”,1代表“是该类别”),记作 y ^ \hat y y^?

图像分类
其实我们在判断一个事物种类的时候,往往就是抓最重要的特征!因此我们要神经元做的事情就是 有没有某种特征出现,并不需要让它们去看完整的图像。

特征查看

简化一:设计神经网络

在这里插入图片描述

  • 让每个神经元关注一部分区域,这个区域就是神经网络 感受野(receptive field)1
  • 现假设 特征图填充宽度(padding)2 为3×3×3,将其变为一个27维的列向量作为神经元的输入
  • 感受野的决定在于我们自己,并且感受野是可以重叠的,多个神经元可以有同一个感受野。
    • 假设有两个完全没有重叠,有的特征就正好出现在两个感受野的交界上面,就会没有神经元去侦测它,导致错过这个特征。因此希望两个感受野之间有高度的重叠

Q&A

  • Q:感受野的尺寸是否随不同的神经元大小而改变?
    A:因为有些特征需要一些适当的尺寸才能被侦测出来,因此需要变换大小。
  • Q:感受野是否能只考虑某些通道?
    A:可以,但是一般CNN里面不考虑此法。
  • Q:感受野可以是任意矩形吗?
    A:可以,这是自己设计。
  • Q:卷积步长 (stride) 的设计中,必须让每个感受野相邻或重叠吗?
    A:最好是相邻,因为要完全遍历找出特征。但是解决一些特殊问题可以不相邻。

2. 观察二

  • 同样的图案可能出现在图片的不同区域里

不同区域
但是这些侦测鸟嘴的神经元的功能都是一样的,只是扫描的范围不一样。为了简化程序,不需要在每一个地方都安排一个相同功能的神经元,这就需要做 参数共享(parameter sharing)

简化2:参数共享

参数共享

  • 不同的神经元共享相同的参数

3. 简化方法总结

总结

  • 全连接层,一个神经元检测所有范围或某个范围,网络弹性最大,但是我们不需要看整张图片,看一小部分就能侦测到重要的特征
  • 加入感受野,强制神经元检测某个小范围,网络弹性变小
  • 加入参数共享,进一步限制了网络的弹性。

感受野 + 参数共享 → 卷积层(Convolutional Layer),使用卷积层的神经网络,就称为CNN.

CNN的模型偏差比较大,不容易过拟合,专为影像设计

角度二:卷积核版本

查看 卷积核filter和kernal的区别

卷积层里面有很多卷积核(filter),假设它们的大小是3×3×通道(彩色为3,黑白为1)
卷积层
下面是卷积层的计算:
计算

  • 用卷积核与图像进行矩阵乘积运算,这样做可以在我们想要的特征上进一步增强,其余削弱
  • 经过所有卷积核运算输出的n组数字,称为Feature Map3
  • 卷积核扫描图像的过程就叫做卷积

两种角度都是同一件事情

神经元版本卷积核版本
每个神经元只需要考虑一个感受野用一组卷积核检测一小部分范围
不同的神经元共享参数
(同样的特征可能出现在图片的不同位置)
每个卷积核要扫过整张图片

二、池化层 (Pooling Layer)4

池化层位于卷积层之后,其作用就是把图片变小:把一张图片做 下采样(subsampling)5,把一张大的图片缩小,且保留关键信息,降低卷积网络计算的复杂度。

池化有很多不同的版本,这里介绍的是Max Pooling

最大池化(Max Pooling)

Max Pooling

运作:

  • 每个卷积核都产生一组数字
  • 池化的时候,把每个卷积核产生的数字分组(例如:2×2,自行决定)
  • 每一组里面选最大一个 (局部最大值)
  • 经过池化层,图像的通道不变,但是图片变小

做完几次卷积和池化操作以后,需要对池化的输出做 扁平化(Flatten) 操作:把矩阵拉直成列向量。再把向量输入进全连接层,可能需要做softmax激活,最终输出得到结果。

  • 整个CNN流程如下:
    整个CNN流程

三、CNN的应用:围棋 Alpha Go

下围棋其实就是一个分类的问题

输入(棋盘上黑子和白子的位置)→ 神经网络 → 下一步落子的位置

  • 棋盘:19 * 19 的向量
  • 黑子:1;白子:-1;空:0

相比于全连接网络,该问题用CNN的效果更好:

  • 棋盘看做19*19的图片,每个像素代表可以落子的位置
  • 每一个像素(棋盘的位置),用48个通道(数字)来表示

为什么CNN能用于下围棋?因为围棋和影像有共同的特性

  • 很多重要的图案,只需要观察小范围
    • Alpha Go 里面第一层的卷积核大小为 5 * 5
    • 小范围
  • 同样的图案可能出现在不同的位置
    • 在这里插入图片描述
  • Alpha Go 并没有用池化层
    • 池化会丢失棋盘大小信息
    • 在这里插入图片描述

CNN 还可以用于语音、自然语言处理上,这里的CNN是独立设计的,并不能直接从图像上照搬过去。

另外,CNN不能处理图像放大缩小以及旋转的问题,我们往往要对它做 数据增强(Data Augmentation) 。Spatial Transformer Layer6 能处理这个问题。

  • 假设给CNN输入了一张图片,输出为“狗”。然而把图片放大后,它可能不会辨识出是一只狗(矩阵拉长为向量,里面的数值都不一样,因此对CNN来说,二者是非常不一样的)。

  1. 神经网络感受野(receptive field)推到分析与计算(总结) ??

  2. 图解卷积层stride,padding,kernel_size 和卷积前后特征图尺寸之间的关系 ??

  3. CNN中的feature map ??

  4. 池化层理解 ??

  5. 图像语义分割中的下采样(subsampling)和上采样(Upsampling) ??

  6. 台湾大学李宏毅机器学习课程 - Spatial Transformer Layer ??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:00:22  更:2021-08-28 09:22:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 17:51:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码