AlexNet

题外话
这几天连续看了好几天的CNN相关的博客,在此只想把我的理解和总结记录此文章中,参考文章过多,会有一些抄袭,如有侵权,告知便可以。

参考文献: https://blog.csdn.net/u014380165/article/details/77284921

一.CNN是什么?
1. CNN(convolutional neural network),顾名思义就是卷积神经网络:分为输入层,卷积层,池化层,卷积层,池化层,全连接层,输出层,如下图所示
转载 如上图所示,输入层是28×28像素点的图片,在第一层卷积过程中使用20个大小为5×5的卷积核,生成了20个24×24 feature map(24 = 28-5+1,即pading=“valid”)strider =1 padding =0;然后经过池化层(max-pooling(从扫描区域取最大值),即从上一层中按设置strider = 2滑动,池化窗口为2×2,生成了20个12×12 的feature map,再到第二次卷积,使用50个大小为5×5的卷积核,strider = 1,生成了50个8×8的feature map,再经过第二次池化,strider = 2滑动,池化窗口为2×2,生成了50个4×4的feature map,然后进入全连接层,使用和上一层feature map(4×4)相等的500个50×4×4的卷积核,卷积后相加求和;得到500个1×1map(4-4+1),再通过激活函数RELU(Rectified linear unit可选),此时再通过第二次全连接,使用10个100×1×1的卷积核,卷积后相加求和,得到10个1×1map,在通过softmax function函数进行分类。

2.分步讲解
(1)如何卷积和卷积核大小的选取规则请看下图

图2.1
3×3的卷积核在这里插入图片描述
卷积核 :3×3
图2.2
在这里插入图片描述
待卷积图片:
图2.3
在这里插入图片描述
图2.1是在卷积中选取的一个卷积核大小为3×3,卷积核的类型有好多这里不一一介绍了比如图像锐化滤波器Sharpness Filter,边缘检测Edge Detection等,每一种提取的特征各不相同;卷积核的数值以及大小有如下规定
1)滤波器的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。
2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变当然了,这不是硬性要求了。
3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。
4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。
图2.2是是模拟输入图片矩阵大小为5×5,其中的数值代表颜色的深浅,彩色图片是三层(RGB)
图2.3是卷积的过程,其滑动的顺序是依次从左往右。
其中的运算如上图所示,每个元素相加再求和;这个过程体现了平移不变性(再图片的每个位置都执行相同的操作),而且是线性的(这个操作是线性的)。
卷积过程为了更好的提取边缘图像特征,大致有三种模式,conv2 = “full”,’‘same’’,’‘valid’’,其本质是padding取值不同。

(2)池化
1)最大池化(Max Pooling)取4个点的最大值。这是最常用的池化方法。
2)均值池化(Mean Pooling)取4个点的均值。
注意 :
由于特征图的变长不一定是2的倍数,所以在边缘处理上也有两种方案:
保留边缘。将特征图的变长用0填充为2的倍数,然后再池化。
忽略边缘。将多出来的边缘直接省去。

(3)全连接在上面描述的比较清楚
(4) 激活函数是什么,其作用是什么,如何选取激活函数?
激活函数其实就是如何把“激活的神经元的特征”通过函数把特征保留并映射出来,用于更好的解决非线性问题。
常用的激活函数有RELU,Sigmoid,Tanh,Softmax,
图2.3
在这里插入图片描述 图2.4
在这里插入图片描述上图所示此处为copy,理解不是很好?
图2.3为Sigmoid与人的神经反应很相似,在很多浅层模型上发挥巨大作用从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。它容易出现梯度饱和,也就是斜率趋近于0。
图2.4为RELU,作为一个非线性函数,它还具备线性性质,对线性部分的输出,结果等效于左乘一个非0即1的对角阵(向量负数位置对应对角阵位置上为0),仍可以被看作是一个线性操作,这一性质会使模型的理论分析变得简单,且不会出现梯度消失;常用在深度学习当中。

(4)CNN中softmax层理解加记忆
SoftMax层计算过程:其实就是一个概率分类问题
在这里插入图片描述

上式中z1,z2,z3,代表了全连接后的输出即特征,3,1,-1代表了该层的权重W。
在这里插入图片描述

按上面公式,softmax的输入是W,假设模型的输入样本是I,讨论一个3分类问题(类别用1,2,3表示),样本I的真实类别是2,那么这个样本I经过网络所有层到达softmax层之前就得到了Wz,也就是说Wz是一个31的向量,那么上面公式中的aj就表示这个31的向量中的第j个值(最后会得到S1,S2,S3);而分母中的ak则表示31的向量中的3个值,所以会有个求和符号(这里求和是k从1到T,T和上面图中的T是对应相等的,也就是类别数的意思,j的范围也是1到T)。因为e^x恒大于0,所以分子永远是正数,分母又是多个正数的和,所以分母也肯定是正数,因此Sj是正数,而且范围是(0,1)。如果现在不是在训练模型,而是在测试模型,那么当一个样本经过softmax层并输出一个T1的向量时,就会取这个向量中值最大的那个数的index作为这个样本的预测标签。
因此我们训练全连接层的W的目标就是使得其输出的Wz在经过softmax层计算后其对应于真实标签的预测概率要最高。

举个例子:假设你的Wz=[1,2,3],那么经过softmax层后就会得到[0.09,0.24,0.67],这三个数字表示这个样本属于第1,2,3类的概率分别是0.09,0.24,0.67
(5)CNN中softmax loss
在这里插入图片描述
L是损失,Sj是softmax的输出向量S的第j个值,表示样本属于第j个类别的概率;j的范围是从1到类别T。
log函数是递增函数,所以-log(0.6) < -log(0.3) < -log(0.1)。简单讲就是你预测错比预测对的损失要大,预测错得离谱比预测错得轻微的损失要大。

二.反向传播算法的在CNN中的应用
预设定一个初始化权重矩阵,第一次图片输入,通过前向传播算法计算出一个cost,然后通过反向传播算法,计算出cost function对每层的每一个权重求导数,再通过梯度下降,设置合理的学习率,更新权重矩阵,再输入第二张图片,重复上述的过程。
具体的过程参考
文章名为 前向传播算法(Forward propagation)与反向传播算法(Back propagation) bitcarmanlee 写的很具体,跟着例子做一边,应该就没有问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值