深度学习笔记2020.04.22

高估了自己的记忆力,两周前看的代码或者论文,现在就跟看天书一样看不懂了。其实从三月开始就坚持在写blog来监督自己学习,但是没能坚持下去,今天开始一定要重新拾起做笔记的好习惯。

“好记性不如烂笔头”,随便写点东西吧!

  • CNN

可以参考http://www.noobyard.com/article/p-zbzyjhig-cg.html讲到了cnn的由来

LeNet-5(1998)网络结构:

        输入层(INPUT)、卷积层(Convolutions,C1)、池化层(Subsampling,S2)、卷积层(C3)、池化层(Subsampling,S4)、卷积层(C5)、全连接层(F6)、输出层(径向基层)

5层:特指卷积和全连接

CNN三大特点:局部感受野(local receptive fields) 、权值共享(shared weights) 、池化(pooling)

参考:http://www.noobyard.com/article/p-yitpgaru-hb.html    @nwnlp(个人觉得是关于CNN最好的文章)

感受野:与DNN做区分  

观看一张图像时,更多的时候关注的是局部。一般的深度神经网络,往往会把图像的每一个像素点连接到全连接的每一个神经元中,而卷积神经网络则是把每一个隐藏节点只连接到图像的某个局部区域,从而减少参数训练的数量。例如,一张1024×720的图像,使用9×9的感受野,则只需要81个权值参数。

在这里插入图片描述

权值共享:

由于权值共享,窗口不论如何移动还是同一个窗口(卷积核kernal,过滤器filter),也就意味着第一个隐藏层所有的神经元从输入层探测(detect)到的是同一种特征(feature)(一种滤波器只能过滤一种特征),只是从输入层的不同位置探测到而已(图片的中间,左上角,右下角等等),一个窗口只能学到一种特征,但是这是不够的,我们想要学习更多的特征,就需要更多的窗口。如果用三个窗口的话如下图:

在这里插入图片描述

不同窗口的权值矩阵w和偏移值b都是不同的,上图就有3个w和3个b,三个窗口在图片的不同位置学习到了三种不同特征。

用20个窗口来学习MNIST数据集中的不同特征,将这20个卷积核进行可视化效果如图:

盗图7

每个卷积核都是5*5的矩阵,也就是5*5的灰度图片,白色代表权值,小也就是对输入层的神经元不敏感;黑色区域相反。

权值共享的一大优势在于减少模型参数数量,一个窗口26个参数(5*5+1),20个窗口有520个(20*26)。如果为DNN那么一个窗口就需要28*28+1个参数。

卷积核为什么一次移动一步:一次移动过多会导致边缘过度不平滑,会出现边缘效应。

池化:紧跟卷积层后面,简化卷积层的输出,有最大值池化(max-pooling)、平均池化、L2-pooling

由于待处理的图像往往都比较大,而在实际过程中,没有必要对原图进行分析,能够有效获得图像的特征才是最主要的,因此可以采用类似于图像压缩的思想,对图像进行卷积之后,通过一个下采样过程,来调整图像的大小。

max-pooling:通过2*2的窗口检测特征是否在此窗口内,经过max操作会丢失特征的绝对(精确)位置信息,但是会保留相对位置信息并且减少特征数量(减少了后续网络的输入)。

L2-pooling:与max-pooling唯一的区别就是在池化窗口扫过的区域里做的操作不是求最大值,而是所有神经元平方后求和再开根号。

池化操作方式的选择也是我们调参工作的一部分,我们可以根据validation data集来调节,选择更好的池化操作。


 

盗图8

窗口大小2*2,取窗口内最大值作为输出,移动步长(stride)=2,图片减小为原来的四分之一,24*24的图像变为12*12的。

pooling的作用:图片的特征通过卷积反映到卷积上

 

  • DNN (全连接)深度神经网络

参考:http://www.noobyard.com/article/p-blqueddu-bv.html

感知机模型:

输出output与输入之间的线性关系为:

神经元激活函数:

使结果输出为想要的值:1或者-1。这只能用于二元分类。

DNN——在感知机模型上做改进,也叫做多层感知机(Multi-Layer perceptron,MLP)

增加隐藏层、输出层的神经元有多个、激活函数类型增加(sigmoid、tanh、ReLU等等)

在这里插入图片描述

每个神经元与相邻层的所有神经元相连。

  • BP神经网络(1986)

按照误差逆向传播算法训练的多层前馈(前馈对比反馈的区别:需要模型,反应快)神经网络