(CNN)卷积神经网络(二)

来源:互联网 发布:协同过滤算法的实现 编辑:程序博客网 时间:2024/05/18 09:07
  1. 卷积计算层
    1.1卷积的通俗理解-为什么参数会大大减少
    1.2卷积的计算
  2. ReLu激励层/ReLu layer
    2.1 为什么要用激励层?
    2.2 sigmoid函数
    2.3 tanh函数
    2.4 RELU
    2.5 Leaky-Relu
    2.6 maxout
    2.7 所有激活函数汇总

上一篇文章((CNN)卷积神经网络(一))说了卷积神经网络的层级结构和数据输入层的数据具体是怎么处理的,以及权值应该怎么初始化,这篇文章具体讲一下卷积层都做了什么操作。

1.卷积计算层
1.1 卷积的通俗理解-为什么参数会大大减少

第二层叫做卷积计算层。
如果是看一张图片,人工神经网络做的是用很多神经元,用线性分类器划分平面是吧,他会对这些数据有自己的一套评价体系。它是一下子看完整张图的,但如果神经节点说我一下子看不过来这张图,即使看完了,也不一定能记住全部信息,就像我们考试一样,虽然考试前一天我们都很努力的背答案,但大脑说我们一天背不了那么多,聪明的做法就是延长几天背的时间。

那对于图像,每个神经元也是不希望一下子全部看完所有的图像信息, 那可以一次就看一部分呀,假如这张照片是32X32X3的,可以选取左上角3X3的数据呀,这样子这个神经元就可以看完了,但光看这一点不能看完整张图呀,就像你去考试,光看第一章,不能保证你考试考100分呀,还是要看完的!所以让这个神经元滑动这个窗口来看其他的区域,通过向右滑,向下滑,不就可以看完整张图片了吗?

用术语表示:每个神经元为filter,窗口(receptive field)滑动,filter对局部数据做计算,每次这个窗口滑动多少步,称为步长(stride)。
这里写图片描述
那哪里体现了权重参数的减少呢?
仔细一点就会发现,我们的窗口大小是不变的,都是3X3(当然还可以是其他的,比如4X4),那既然窗口大小不变,那每个神经元看这幅图片,是不是就可以用相同的参数去看了呢。就像你和你朋友,同样是看这幅美女图:

你可能觉得她很漂亮,但我觉得她一般般,是什么造成了两个不同的看法呀?对于同一张图,每个人的审美标准不一样,但看这张图都是用眼睛看的。

对应于神经元,就是不同的神经元,有一组不同的参数(3X3),这组参数就是这个神经元的审美标准,它和图片上的数据做内积,得到的结果就是这个神经元带着它的参数看这幅图得到的看法,每个神经元得到的看法不一样,最后汇集起来,就是所有神经元看到的综合评价 。

人工神经网络最耗资源的就是每个神经元都要有一个32X32X3的参数,去看一整张图,相比之下,卷积神经网络中,每个神经元只用一组参数(3X3)看图片,不就大大减少了参数的数量了吗?

1.2 卷积的计算

这里面涉及了一些概念:
depth:表示有多少个像3X3 的神经元去看一张图片;
feature map:每个这样的神经元是不是都会得到一个它对这张图片的理解呢?所以每个这样的神经元都会有一个feature map(是一个矩阵);
zero-padding:如下图,你会如果步长是1,则刚刚好:
这里写图片描述

但如果窗口大小是4,或者移动的步长不是1的时候呢?是不是有在边缘地带有一些空白的呀,对,就是在空白的这些地方补0,称为zero-padding.
这里写图片描述

更具体的看一个神经元,对一张图片的一部分是怎么处理的,可以发现,中间的那个矩阵就是这个神经元的审美标准(参数矩阵)了,它和图片的一部分做点乘,然后相加有:

40+00+00+00+01+01+00+01+42=8
这里写图片描述

这还有一张是三个颜色通道的图:cs231n-conv-demo

我截一个时刻出来解释一下:
这里写图片描述
左边三个矩阵分别代表REB三个颜色通道对应的矩阵,所以是7X7X3的图片;

中间这两列,每一列都对应一个神经元,所以有两个filter,W0,W1,因为每个神经元都要看三个颜色通道,所以会有三个对应的矩阵;你会发现同一列的三个矩阵也是不一样的,说明同一个神经元,在看不同的颜色通道的时候,可以用不同的审美标准去看;

最后那个矩阵是窗口滑动之后,对应一整张图片的数据:

101+01+00+11+01+00+00+21+01=3
201+00+01+00+10+01+21+10+01=2
301+01+01+21+11+01+10+11+01=2
3+22+=3+22+1=2

提到CNN,大家都会提到两个重要的性质。
局部感知:每次filter都是对图片的局部进行卷积操作的,举个例子:

  • 滤波器就像一双眼睛,人类视角有限,一眼望去,只能看到这世界的局部。如果一眼就看到全世界,你会累死,而且一下子接受全世界所有信息,你大脑接收不过来。当然,即便是看局部,针对局部里的信息人类双眼也是有偏重、偏好的。比如看美女,对脸、胸、腿是重点关注,所以这3个输入的权重相对较大。

参数共享机制:数据的窗口在滑动,导致得到的数据在不断变化,但是filter是不变的,也就是一个神经元的参数W,这种不变性称为参数共享机制。

  • 再打个比方,某人环游全世界,所看到的信息在变,但采集信息的双眼不变。btw,不同人的双眼 看同一个局部信息 所感受到的不同,即一千个读者有一千个哈姆雷特,所以不同的滤波器 就像不同的双眼,不同的人有着不同的反馈结果。

卷积: CNN之所以叫卷积神经网络,想必大家现在都了解了吧,就是一组固定的权重和不同数据窗口内的数据做内积,这个操作就称为卷积。

2.ReLu激励层/ReLu layer
2.1 为什么要用激励层?

激励层的主要目标就是对卷积操作之后的数据过滤,做一个非线性映射,
它能把一些噪声数据清洗掉。
这里写图片描述
一般的激励函数需要满足几个重要的性质:

  • 非线性:最直观的理解就是它的函数图像不是一条直线,因此求导数的时候,它就具有比较大的变化。
  • 可导:在做反向传播的时候,必须能求导才能求得对应的梯度。
  • 输出值的范围:当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的learning rate.

也正因为函数拥有这些性质,才让神经网络做的不仅仅是线性变化。

一起看一下常见的激活函数!

2.2 sigmoid

它在逻辑回归里作为输出最后的概率的函数,但在神经网络里,它能作为激活函数。

但它有一个非常致命的弱点:

- 梯度消失和梯度爆炸:从图像中就可以看到,当值趋向无穷的时候,梯度是趋于0的,神经网络的BP算法是累积的形式,一旦有一个趋于0,那整个梯度的求解就会变为0,没有梯度传回去,那模型就很难学习。当X趋于0是,梯度有非常非常大,对模型学习很不利,这是sigmoid的问题所在。

2.3 tanh函数

它是由双曲正弦和双曲余弦推导出来的,而且它也是sigmoid函数的变形:

tanh x=sinh xcosh x=exexex+ex=2sigmoid(2x)1
同时,它是0均值的,所以实际应用中,tanh的效果要比sigmoid好。

2.4 RELU

近来越来越受欢迎的是relu:
这里写图片描述
由上图可以看出它能做到:当x<0是,输出y=0;当x>=0时,输入等于输出。在二维的情况下,得到的效果如图:
这里写图片描述

为什么RELU会比sigmoid,tanh效果要好?

  • RELU会使一部分神经元的输出为零,这就造成了网络的稀疏性,并且减少了参数之间的相互依赖关系,在一定程度上缓解了过拟合的发生。

  • 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况,在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息
    丢失,从而无法完成深层网络的训练。

  • RELU的另一优势是生物上的合理性,它是单边的,相比于sigmoid和tanh,它更像生物神经元的特性。

但它也有一些缺点,比如当学习率设置的太大的时候,你的网络中可能有很多神经元都die了。因为一个大的梯度流过一个RELU神经元,更新参数,这个神经元再也不会对任何数据有激活作用了。

2.5 Leaky-Relu

为了解决RELU的这个问题,就出现了leaky-relu
这里写图片描述
这里写图片描述其中α是一个很小的值,这样即修正了数据分布,又不至于让负轴的数据全部消失:这里写图片描述

2.6 maxout

maxout的表达式如下:

fi(x)=maxf[1,k]zij
如果是2维的情况下:
f(x)=max(wT1x+b1,wT2x+b2)
,可以注意到,relu和leaky relu都是它的一个变形(当wT1,b1为0时,不就是relu的图像吗?)。
这里写图片描述它的拟合能力特别强,可以拟合任意的凸函数。它具有RELU的优点,同时又没有RELU的缺点,但它也有缺点,就是把参数double了。这里不细说了.

2.7 所有激活函数汇总

其实还有很多这样的激活函数呢,给一个表吧!
这里写图片描述
这里写图片描述
那么多激活函数怎么选择呢?
这个得看数据集,和具体的情况。但如果要使用RELU,一定要记得调好学习率,不然很多神经元就废了。如果RELU不理想,在选择leaky-relu或者maxout.
忠告:别用sigmoig和tanh.

这篇文章我们主要讲解了卷积神经网络的卷积计算层和常用的激活函数,我们下一篇文章,看一下最后两层是什么操作,以及dropout的理解。

原创粉丝点击