人工智能学习 10 - 神经网络的领域

神经网络(基础框架) -> 深度学习(解决特定问题)

  1. 卷积(图像相关, 视觉)
  2. 循环(反复使用, 输入不定长, 时间序列)
  3. 注意力(为输入分配不同权重, 时间序列)

卷积

  • 图像分类
  • ImageNet 数据集
  • 目标检测
  • 图片读取转换文字描述
  • 图像风格迁移

什么是视觉

人, 动物, 计算机 看到的是一样的世界么?

人: 光 - 视觉系统 - 总结概念
计算机: 图片像素矩阵 - 模型 - 模型结果

图片: 灰度图(单通道), 彩色图(三通道 RGB)

ANN 实现图片分类

二维数据展开, 构建全连接网络, 通过 softmax 计算得出多分类问题概率

缺陷:

  1. 二维信息展开丢失维度信息
  2. 输入层与隐藏层全连接引发维度灾难

卷积神经网络识别图像

  1. 识别目标逻辑: 特征 - 小特征 - 更小特征…
  2. 要识别的目标 - 子图
  3. 点乘(相同位置相乘, 求和) - 乘积大小, 表示特征与子图一致性大小

卷积运算

m 目标图像矩阵(切子图) × n 卷积核(小特征)
=(点乘)=>
m-n+1 新矩阵(激活值), 步长=1
=(激活函数)=>
m-n+1 新图像矩阵(特征图)

一般把图片和特效图统称为 通道. 一般卷积核称为为过滤器. 卷积 即 卷积运算, 即点乘运算.

卷积核要素:

  • 卷积核形状 shape
  • 卷积核值
  • 每次计算在目标矩阵移动步长 stride

单通道单卷积核

1 通道输入 - 1 通道卷积核 - 1 特征图

多通道单核卷积

每个通道都有独立的卷积核, 每个通道得到各自特征图后进行融合(求和), 最终得到一个融合特征图.

n 通道输入 - n 通道卷积核 - n 通道临时特征图 - 1 通道融合特征图

多通道多核卷积

n 通道输入 - n×n 通道卷积核 - n×n 通道临时特征图 - n 通道融合特征图

池化运算

卷积后得到的 m 特征图 × n 池化运算(算法,步长)
=(池化算法,求最大值/平均值)=>
m/n 池化矩阵, 步长=池化核 shape
=(通常无激活,或者线性激活)=>
m/n 矩阵

池化要素:

  • 池化核形状 shape
  • 滑动步长(一般不重叠, 步长=shape)
  • 池化方式(最大,平均)

ps: 池化核中没有值, 是一个空框, 算法是计算框中的 max 或 avg.

  • 最大池化 $a_n = max(z_n)$
  • 平均池化 $a_n = avg(z_n)$
  • 带激活函数的池化 $a_n = act(pooling(z_n))$

卷积的特征

卷积与池化拥有如下特征

1. 平移不变性

图像平移, 不影响识别位置变化的图像.

2. 稀疏连接与权值共享

全连接神经网络: 输入矩阵 m => 输出矩阵 n, 链接数 m×n, 参数=连接数 × 2 (w,b)

卷积神经网络: 输入矩阵 m × 卷积核 n => 输出激活矩阵(m-n+1), 连接数 n × (m-n+1), 参数=卷积核数 × 2 (w,b)

稀疏链接: 链接数少; 权值共享: 卷积核参数被多条链接共享.

卷积核大小

卷积核大小与运算量的关系:

运算量 = 卷积核大小 $n^2$ × 特征图大小 $(m-n+1)^2$ ≈ 在 $m=n$ 时 达到最大

卷积层数叠加产生的效果:

例如 $5×5 =(3×3)=> 3×3 =(3×3)> 1×1$, 说明第二次叠加后 $3×3$ 的卷积核再原图上作用的大小因为层数叠加而放大了.

卷积核大小的选择, 一般使用较小的卷积核, 叠加更多层数, 靠前的网络卷积核大小略大于后面层数的卷积核大小.

卷积的图像填充

为了避免经过多层网络运算后, 特征图逐渐变小, 需要在运算前对图像进行填充. 而且在进行填充后, 也可以更好的利用边界值信息参与运算.

一般情况, 填充内容为 0 或者与边界值相同.

填充 p(padding), 步长 s(stride), 图像大小 i(input), 特征图大小 o(output), 卷积核大小 n

o -> i, p, n, s

例如 1: 4×4 =(3×3)=> 2×2, 这时为了保证输出与输入大小不变, 将原输入图扩充卷积核步长 1 得到新输入 6×6 (4×4 周围扩大一圈 1×1 得到 6×6), 4×4 =(1×1 扩充)=> 6×6 =(3×3)=> 4×4.

例如 2: 4×4 =(5×5)=> 1×1, 这时为了得到原图大小, 需要填充 2 得到 8×8 的输入.

o=math.ceil((i+2p-n)/s)+1

卷积流程

  1. 选择模型, 选择卷积核大小, 选择池化核大小
  2. 扩充输入
  3. 卷积计算
  4. 池化计算
  5. 反向传输优化参数

卷积发展历史

LeCun - LeNet(MNIST) - AlexNet(ImageNet) -

  • VGG 16 - VGG 19 - ResNet
  • NIN - GoogleNet - Incption V3/V4 - ResNet
  • RCNN - Fast RCNN - SSD
  • FCN - StNet - CNN + RM/LSTM

LeNet 手写数字识别(MNIST)

题目, 摘要, 网络结构图

  • input: 要处理的图片 32×32
  • convolutions: C, 卷积
  • feature maps: Ff.maps, 特征图 6@5×5
  • subsampling: S, 向下采样 (pooling 池化过程)
  • full connection: 或 dense, F, FC 全连接
  • layer: 层
  • output: 输出的结果

LeNet

AlexNet (ImageNet)

  • 使用 ReLu 激活函数
  • 使用 dropout 技术缓解过拟合: 随机关闭一些神经元不参与运算
  • 重叠最大池化: 不使用池化核大小作为步长

VGG

基于 AlexNet 做出的调整, 更灵活适应不同任务

VGG

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.