【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

  • 卷积神经网络常用于做图像处理;
  • 一般的深层神经网络做图像处理,会有很多的参数:例如一个像素为100×100100\times100的图像,倘若第一层有1000个神经元,第一层神经网络就会有3×100×100×10003\times100\times100\times1000个参数(向量);
  • 卷积神经网络是一种简化的网络架构;
  • 期望的神经网络:每个神经元代表一个基本的分类器,随着网络深度增加,分类器做的事情越复杂。

卷积神经网络

CNN网络架构
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

CNN——Convolution(卷积计算)

  • Filter是一个需要学习的参数矩阵,维度小于像素矩阵的维度, 一个Filter就是一个神经元;
  • 从像素矩阵的左上角开始向右或向下移动,Filter和像素矩阵对应部分做内积,向右或向下移动的距离为stride,一个像素矩阵经过一个Filter后得到一个新的矩阵;
  • 如果Filter与像素矩阵的大小不完全匹配,可以忽略边缘像素,也可以补充像素进行计算;
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)
  • 可以有多个Filter,得到多维度的Feature Map(维度是Filter的个数);
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)
  • 彩色图像的像素矩阵是三维的,Filter也是三维的。
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

特点:

  • 局部关联:Filter的维度比像素矩阵小;
  • 参数共享:一组固定的权重和不同窗口内的数据做内积;
  • 相对全连接网络,具有更少的参数。
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

CNN——Pooling(池化)

  • Max pooling:对于每个2×22\times2(应该可以指定其他)的窗口,选出最大的数作为输出矩阵的相应元素值;
  • Average pooling:对于每个2×22\times2(应该可以指定其他)的窗口,选出窗口内的平均值作为输出矩阵的相应元素值。
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

特点:

  • 特征不变性:在图像处理中,池化操作就是图像的resize;
  • 特征降维:压缩数据和参数的量,去掉冗余信息;
  • 在一定程度上放置过拟合。

CNN——Flatten

  • 将经过多次卷积-池化的输出矩阵作为输入,放入一个全连接前馈神经网络
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

为什么CNN适合做图像处理

1. 要识别的patterns相对整张图片来说是很小的一部分
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

  • 卷积层的局部关联特征

2. 同一patterns在不同图片中的位置不同
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

  • 卷积层的参数共享特征

3. subsampling不改变图像特征
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

存在的问题:
Filter的大小是相同的(共享的参数),如果要识别的pattern对于不同图片其大小不一样,可以对数据作预处理,例如,增加一个网络,这个网络可以判断哪些位置需要做图像的旋转、缩放。

CNN in Keras

【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

卷积神经网络是如何学习的——理解CNN

卷积层-池化层在学习什么

  • 定义第kk个Filter被activate的程度为第kk个Filter中所有元素的和;
  • 对于训练好的模型,即Filter中参数固定,现在寻找一张图像x,使得第kk个Filter被activate的程度最大;
  • 结果见右图,可见每个Filter都在学习某个局部特征。
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

全连接网络的隐层在学习什么

  • 全连接前馈神经网络的隐层的每个神经元都在学习图像的某个整体特征
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

全连接网络的输出层在学习什么

  • 理想地,全连接前馈神经网络的输出层神经元输出应该就是识别出的图像;
  • 实际上,输出层神经元的输出基本一样;
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)
  • 为输出识别的图像“应有的样子”,增加一些约束:笔迹应该是稀疏的(识别手写字体场景)
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

Deep Dream

  • Deep Dream:给机器一张图片,机器会加上一些它看到的东西
  • CNN夸大它看到的
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

Deep Style
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

playing go
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

  • 为什么CNN可用于playing go
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)
    【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

Speech
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

Text
【DL-李宏毅2020笔记-06】卷积神经网络(Convolutional neural network)

相关文章: