研一上对CNN学习过一段时间,现在要用到论文里面,所以对此进行复习。
附上链接:http://cs231n.github.io/convolutional-networks/#case普通神经网络的参数太多,所以要使用卷积神经网络,其次因为卷积神经网络输入是图片,是三维结构,每一过程都是三维结构。
使用Relu的作用:Relu是一个激活函数,使用它可以让模型实现非线性分类。

使用Local Response Normalization(局部响应归一化)的作用:在神经网络中,我们用激活函数将神经元的输出做一个非线性映射,但是tanh和sigmoid这些传统的激活函数的值域都是有范围的,但是ReLU激活函数得到的值域没有一个区间,所以要对ReLU得到的结果进行归一化。
为什么输入数据需要归一化(Normalized Data)?归一化后有什么好处呢?
原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理的原因。

全连接层作用:卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图,并实现最终的分类。其目的就是实现分类。全连接层有激活函数,如果某只猫的局部特征被找到了,那么全连接的这个神经元被激活。

引入ReLu的原因

第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。

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

第三,ReLu会使一部分神经元的输出为0,这样就造成了 网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

sigmoid和tanh的gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。vanishing gradient在网络层数多的时候尤其明显,是加深网络结构的主要障碍之一。相反,Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。Relu的另一个优势是在生物上的合理性,它是单边的,相比sigmoid和tanh,更符合生物神经元的特征。

cnn回归算法 cnn做回归_全连接


cnn回归算法 cnn做回归_激活函数_02


cnn回归算法 cnn做回归_cnn回归算法_03