Room of Requirment

Less is More


  • Home

  • Tags

  • Categories

  • Archives

初识CNN

Posted on 2019-08-22 Edited on 2019-08-27

Convolutional Neural Networks(CNNs)

CNNs的结构

"Figure 1: Convolutional Neural Network for Relation Extraction"

Convolution (卷积)

卷积的数学理解
1、卷积的定义

我们称 $(f*g)(n)$ 为 $f,g$ 的卷积
其连续的定义为:

其离散的定义为:

这两个式子有一个共同特征:都类似于$n = t + n - t$
我们令$x = r, y = n - r$,那么$x + y = n$ 就是下面这些直线
lines

2、离散卷积的例子:丢骰子

将两枚🎲抛出去,两枚🎲点数加起来为4的概率是多少?
我们把🎲各个点数出现的概率表示出来:
相加点数4出现概率为:$f(1)g(3)$ $f(2)g(2)$ $f(3)g(1)$
因此,两枚🎲点数加起来为4的概率为:$f(1)g(3) + f(2)g(2) + f(3)g(1)$
符合卷积的定义,把它写成标准的形式就是:

3、连续卷积的例子:做馒头

假设我们拥有一台可以一天不断生产馒头的机器
假设馒头的生产速度为$f(t)$,那么一天后生产出的馒头总量为:

馒头生产出来后会慢慢腐败,假设腐败函数为$g(t)$,比如,10个馒头,24小时会腐败 $10*g(t)$
如此,我们可以知道,一天后,馒头总共腐败了:

卷积的实际运用

基础CNN所用的卷积是一种2D卷积。Kernel只能在x,y上滑动位移,不能进行深度(跨通道)位移。
对于RGB图像,采用了三个独立的2D kernel,如黄色部分,这个kernel的维度是$X*Y*3$。再基础CNN的不同stage中,kernel的深度都应当一致,等于输入图像的通道数。
卷积需要输入两个参数,实质是二维空间滤波,滤波的性质与kernel选择有关,CNN的卷积是在一个2-D kernel 和输入的 2-D input map 之间,RGB中各图像通道分别完成。
我们假设单一通道输入图像的空间坐标为$(x,y)$ ,卷积核大小是$p * q$ ,kernel权重为$w$ ,图像亮度值是$v$ ,卷积过程就是kernel 所有权重与其在输入图像上对应元素亮度之和,可以表示为:

convolution
并将kernel随(x,y)平移扫描,可以得到输出空间,这时假设输入图像大小是$512*512$,卷积核是$3*3$,在不考虑零填充(zero padding)的情况,输出是(512 - 3 + 1) = 510 *510
卷积层的kernel可能不止一个,扫描步长,方向也有不同,这些进阶方式可以归纳一下:

  • 可以采用多个卷积核,设为n同时扫描,得到的feature map会增加n个维度,通常认为是多抓取n个特征
  • 可以采取不同扫描步长,比如上例子中采用步长为n,输出是(510/n,510/n)
  • padding,上例中,卷积过后的图像维度是缩减的,可以在图像周围填充0来保证feature map与原始图像大小不变
  • 深度升降,例如采用增加一个1*1 kernel来增加深度,相当于复制一层前通道作为feature map
  • 跨层传递feature map,不再局限于输入即输出,例如ResNet跨层传递特征,Faster RCNN 的POI pooling

Activation(激活)

卷积之后,通常会加入偏置(bias), 并引入非线性激活函数(activation function),这里定义bias为b,activation function 是h(),经过激活函数后,得到的结果是,

bias不与元素位置相关,只与层有关
主流的activation function 有:
activation functions
例如采用$277*277$的RGB图像, 采用96个$11*11*3$的kernels同时扫描,很容易得到输出的feature maps是96个$267*267$的二维 feature map, $267*267$是单个图像feature map的x,y轴大小,96是卷积核个数,原本的3通道在积分的时候会被作为一个元素加起来。 如上图,这些feature map可视化之后,可以看到4和35表示边缘特征,23是模糊化的输入,10和16在强调灰度变化,39强调眼睛,45强调红色通道的表现。

Pooling (池化)

池化(pooling),是一种降采样操作(subsampling),主要目标是降低feature maps的特征空间,或者可以认为是降低feature maps的分辨率。因为feature map参数太多,而图像细节不利于高层特征的抽取。
pooling
目前主要的pooling操作有:

  • 最大值池化 Max pooling: $2*2$的max pooling就是取4个像素点中最大值保留
  • 平均值池化 Average pooling, $2*2$的average pooling就是取4个像素点中平均值保留
  • L2池化 L2 pooling: 即取均方值保留
    Pooling操作会降低参数,降低feature maps的分辨率,但是这种暴力降低在计算力足够的情况下是不是必须的,并不确定。目前一些大的CNNs网络只是偶尔使用pooling.

该CNN stage的基本结构是可变的,目前大部分网络都是根据基本结构堆叠调整参数,或跳层连接而成

# ArtificalIntelligence
Github + Hexo (Mac)
Java 数组
  • Table of Contents
  • Overview

2AM

they said the fruit never gon' fall far from the tree
14 posts
1 categories
7 tags
  1. 1. Convolutional Neural Networks(CNNs)
    1. 1.1. CNNs的结构
      1. 1.1.1. Convolution (卷积)
        1. 1.1.1.1. 卷积的数学理解
          1. 1.1.1.1.1. 1、卷积的定义
          2. 1.1.1.1.2. 2、离散卷积的例子:丢骰子
          3. 1.1.1.1.3. 3、连续卷积的例子:做馒头
        2. 1.1.1.2. 卷积的实际运用
      2. 1.1.2. Activation(激活)
      3. 1.1.3. Pooling (池化)
© 2019 2AM
Powered by Hexo v3.9.0
|
Theme – NexT.Muse v7.3.0