【算法】CNN(卷积神经网络)详解!

时间:2022-10-17 17:02:27

CNN的概念

卷积神经网络(Convolutional Neural Networks / CNNs / ConvNets)与普通神经网络非常相似,它们都由具有可学习的权重和偏置常量(biases)的神经元组成。每个神经元都接收一些输入,并做一些点积计算,输出是每个分类的分数。

CNN的结构层次

基础的CNN由卷积(convolution), 激活(activation), and 池化(pooling)三种结构组成。CNN输出的结果是每幅图像的特定特征空间

卷积

考虑一个大小为5×5的图像,和一个3×3的卷积核。这里的卷积核共有9个参数,每个参数相当于卷积核中的数与图像中对应的数乘积之和

【算法】CNN(卷积神经网络)详解!

池化

池化(pooling),是一种降采样操作(subsampling),主要目标是降低feature maps的特征空间,或者可以认为是降低feature maps的分辨率。因为feature map参数太多,而图像细节不利于高层特征的抽取。 【算法】CNN(卷积神经网络)详解! 目前主要的池化操作:

  1. 最大值池化 Max pooling:如上图所示,2 * 2的max pooling就是取4个像素点中最大值保留
  2. 平均值池化 Average pooling: 如上图所示, 2 * 2的average pooling就是取4个像素点中平均值值保留
  3. L2池化 L2 pooling: 即取均方值保留

全连接层

全连接层相当于一个“分类器”,起到对整个图像进行一个特征提取的作用 全连接层和卷积层可以相互转换:

  • 对于任意一个卷积层,要把它变成全连接层只需要把权重变成一个巨大的矩阵,其中大部分都是0 除了一些特定区块,而且好多区块的权值还相同
  • 相反地,对于任何一个全连接层也可以变为卷积层。比如,一个K=4096的全连接层,输入数据体的尺寸是7∗7∗512,这个全连接层可以被等效地看做一个F=7,P=0,S=1,K=4096的卷积层。换言之,我们把 filter size 正好设置为整个输入层大小

CNN的架构

【算法】CNN(卷积神经网络)详解! 堆叠几个卷积和整流层,再加一个池化层,重复这个模式知道图片已经被合并得比较小了,然后再用全连接层控制输出