CNN基础小记

CNN利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能。

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。

卷积网络的核心思想是将:局部感受野、权值共享(或者权值复制)以及时间或空间亚采样这三种结构思想结合起来获得了某种程度的位移、尺度、形变不变性。

我们训练一个神经网络,就是要训练得出这些卷积核,而这些卷积核就相当于我们学单层感知器的时候的那些参数W,因此你可以把这些待学习的卷积核看成是神经网络的训练参数W。

卷积神经网络最常见的形式就是将一些卷积层和ReLU层放在一起,其后紧跟汇聚层,然后重复如此直到图像在空间上被缩小到一个足够小的尺寸,在某个地方过渡成成全连接层也较为常见。最后的全连接层得到输出,比如分类评分等

滤波器filter = 卷积核kernel == 权重矩阵

卷积核做的,其实就是与感受野范围内的像素点进行点积(而不是矩阵乘法)。

Feature Map 特征图

输入和滤波器卷积后的输出叫特征图
https://blog.csdn.net/zouxy09/article/details/8781543
每种滤波器去卷积图像就得到对图像的不同特征的映射,即输出层。100个滤波器(卷积核)就有100个Feature Map(深度)

卷积神经网络计算原理

输出数据体在空间上的尺寸可以通过输入数据体尺寸(W),卷积层中神经元的感受野尺寸(F),步长(S)和零填充的数量(P)的函数来计算。(译者注:这里假设输入数组的空间形状是正方形,即高度和宽度相等)输出数据体(特征图)的空间尺寸为(W-F +2P)/S+1。

当步长S=1时,零填充的值是P=(F-1)/2(不用记)

卷积输出的feature map的大小的计算

大小:(W-F +2P)/S+1
比如:iput:3 *32 *32,filter:3 *5 *5,bias:1,feature map:1 *28 *28.
哪里WX+b??

参考https://zhuanlan.zhihu.com/p/29119239、https://blog.csdn.net/dcrmg/article/details/79652487

以 AlexNet 模型的第一个卷积层为例,

 输入图片的尺寸统一为 227 x 227 x 3 (高度 x 宽度 x 颜色通道数),
 本层一共具有96个卷积核,
 每个卷积核的尺寸都是 11 x 11 x 3。
 已知 stride = 4, padding = 0,
 假设 batch_size = 256,
 则输出矩阵的高度/宽度为 (227 - 11) / 4 + 1 = 55
alexnetbatchheightweightin depthout depth
input256 *227 *227 *3
kernel11 *11 *3 *96
output256 *55 *55 *96

深度切片:就是特征图数量(out depth)。深度切片中的所有权重都使用同一个权重向量,用同一个滤波器去扫描

全连接

每个隐层神经元都连接图像的每一个像素点。最后一层滤波器尺寸等于输入尺寸,所以输出就是1*1*N了。(比如针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出数据体就为[1x1x4096]了。)

然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,我们就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。(神经元,理解为权重W)

lenet5网络卷积、池化、relu、fc层的计算规则

参考https://blog.csdn.net/d5224/article/details/68928083、https://www.jianshu.com/p/ce609f9b5910

网络一共有多少神经元、存在多少连接和参数

参考https://blog.csdn.net/qq_35608277/article/details/79032842

对于一个卷积神经网络,假如该网络的第k层有n个节点,k+1层为卷积层且有m个节点,则k+1层的每个节点只与k层的部分节点相连,此处假设只与k层的i个节点相连(局部连接);另外k+1层的每个节点的连接共享相同的参数、相同的bias(参数共享)。这样该卷积神经网络的第k、k+1层间共有m*i个连接、i+1个参数。由于i小于n且为常数,所以卷积层的连接数、参数数量的数量级约为O(n),远小于全连接的O(n^2)的数量级。

连接的参数矩阵:就是卷积核的意思(权重矩阵)

连接参数:就是卷积核参数,比如卷积核有5x5个连接参数。

训练参数(神经元个数):(要更新的参数(variable))(连接参数加上1个偏置参数)* 特征图数量。比如共25+1=26个训练参数,有6个特征图,训练参数共有26 * 6个。

连接:特征图输出大小 * 训练参数。比如每个特征图输出大小为28 * 28.则有(5 * 5 + 1) * 6 * 28 * 28个连接。

feature map中神经元个数:特征图大小 * 深度 。 比如6个卷积核,就有6个特征图,特征图大小28 * 28,则神经元个数为28 *28 *6=784。

相关概念:

感受野 receptive field

局部连接。让每一层输出特征图的每一个的输出神经元只与输入层的一个局部区域连接。该连接的输入层空间大小叫做神经元的感受野(receptive field)。用来表示网络内部的不同位置的神经元(yl:滤波器和特征图卷积后的矩阵,叫神经元)对原图像的感受范围的大小。
感受野的尺寸是一个超参数(其实就是滤波器的空间尺寸)

假设输入数据体尺寸为[32x32x3](比如CIFAR-10的RGB图像),如果感受野(或滤波器尺寸)是5x5,那么卷积层中的每个神经元会有输入数据体中[5x5x3]区域的权重,共5x5x3=75个权重(还要加一个偏差参数)

举个例子,在maxpooling层中,如果它的kenerl size是2x2,输出结果中的每一个元素都是其对应输入的2x2的区域中的最大值,所以这一层的感受野大小就是2。

其实感受野的大小是由kernel size和stride size一起决定的,公式是:rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize,其中out是指上一层感受野的大小。

权值共享

就是整张图片在使用同一个卷积核内的参数,比如一个3*3*1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。说的再直白一些,就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片。

卷积操作保证了每一个像素都有一个权系数,只是这些系数是被整个图片共享的,这大大减少了卷积核中的参数量。(yl:就是好多个像素最后只对应一个权重)。

此外卷积操作利用了图片空间上的局部相关性,这也就是CNN与传统神经网络或机器学习的一个最大的不同点,特征的自动提取。
这也就是为什么卷积层往往会有多个卷积核(甚至几十个,上百个),因为权值共享后意味着每一个卷积核只能提取到一种特征。(卷积核数量是个超参数)

前向传播

反向传播 BackProp算法

BP算法。最初所有边权重都是随机分配的。对于训练数据集中的每个输入,激活ANN并观察其输出。将此输出与我们已知的所需输出进行比较,并将错误“传播”回上一层。记下该错误并相应地“调整”权重。重复该过程直到输出误差低于预定阈值。

激活函数 (非线性函数)

Activation function
参考https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/

  • Sigmoid (logistic function逻辑斯谛函数): 获取实值输入并将其压缩到0到1之间

     σ(x)= 1 /(1 + exp(-x))
    
  • tanh:获取实值输入并将其压缩到范围[-1,1]

     tanh(x)=2σ(2x) - 1
    
  • ReLU:ReLU代表整流线性单元。它需要一个实值输入,并将其阈值设为零(将负值替换为零)

     f(x)= max(0,x)
    

image

在分类任务中,我们通常使用Softmax函数 作为多层感知器的输出层中的激活函数,以确保输出是概率,并且它们加起来为1.

Softmax函数采用任意实值得分的向量和将它压缩到一个介于0和1之间的值的向量,总和为1。SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布

  • softmax :multiclass logistic regression (a.k.a. MaxEnt, multinomial logistic regression, softmax Regression, Maximum Entropy Classifier).

  • sigmoid:二分类的logistic regression

优化函数

损失函数

loss function

lenet,alexnet,vggnet, resnet,densenet,googlenet 它的基本组成单元是怎样的

参考 https://www.cnblogs.com/skyfsm/p/8451834.html
输出矩阵为[50,4,4]。
pool2后面接全连接层fc1,神经元数目为500,再接relu激活函数。
再接fc2,神经元个数为10,得到10维的特征向量,????Flatten()是怎样的

falttern:将feature map的大小变成1*1,个数等于上一层feature map的个数

?????GoogLeNet看不太懂64(256/4)个。在这种情况下,我们首先进行256到64的1×1卷积,然后在所有Inception的分支上进行64次卷积,接着再使用一个64到256的1×1卷积。

256×64×1×1 = 16000
64×64×3×3 = 36000
64×256×1×1 = 16000????

深度怎么变大的?怎么算的?特征图数量 怎么确定?


Q:第一个卷积层中的每个神经元都对输入数据体有一个3x3的视野。第二个卷积层上的神经元对第一个卷积层有一个3x3的视野,也就是对输入数据体有5x5的视野 同样,在第三个卷积层上的神经元对第二个卷积层有3x3的视野,也就是对输入数据体有7x7的视野。

A:当P=0,S=1时,((W-3+2P)/S+1 -3 +2P)/S+1 = (W-5+2P)/S+1 所以对输入是5*5.


卷积核的数量 怎么确定 每个权重都是随机初始的吗 特征

???https://www.jianshu.com/p/ce609f9b5910 池化层的可训练参数 为什么 不是 2216

全连接层

前面的卷积层,都是部分连接,只扫上一层其中几张feature map;而全连接层,想成卷积核大小和输入一样,输出1*1的大小,并且每个输出的feaure map,都是扫全了所有上一层的feaure map,所以叫全连接,具体要有几个全连接层的feaure map,看想要几个就几个。

自编码器 待看

https://blog.csdn.net/marsjhao/article/details/73480859

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值