传媒网站建设价格,设计理念,网站屏蔽右键破解,提高工作效率整改措施前面我们说了CNN的一般层次结构, 每个层的作用及其参数的优缺点等内容.深度学习之卷积神经网络(Convolutional Neural Networks, CNN)_fenglepeng的博客-CSDN博客
一 CNN参数初始化及参数学习方法
和机器学习很多算法一样, CNN在进行训练之前也要进行参数的初始化操作. 我们…前面我们说了CNN的一般层次结构, 每个层的作用及其参数的优缺点等内容.深度学习之卷积神经网络(Convolutional Neural Networks, CNN)_fenglepeng的博客-CSDN博客
一 CNN参数初始化及参数学习方法
和机器学习很多算法一样, CNN在进行训练之前也要进行参数的初始化操作. 我们知道, 在机器学习中的参数值一般都是随机给定的. 但是, 这CNN的参数初始化又和机器学习中有所不同.
1.1 W的初始化
由于CNN 中的参数更新的过程一般是通过BP算法实现的,再由前面我们在深度学习之BP算法一文中得到的BP算法参数更新公式可以发现, 参数更新过程中卷积核(权重值W)参与了连乘运算,因此一定不能初始化W 0, 否则参数W无法更新.
另外考虑到太大(小)的W值可能导致梯度下降太快(慢), 一般选择很小的随机数, 且要求w为服从均值为0, 方差未知(建议选择2/n, n为权重的个数)的正态分布的随机序列.
1.2 b的初始化
一般直接设置为0在存在ReLU激活函数的网络中也可以考虑设置为一个很小的数字.
1.3 CNN模型参数学习方法
CNN中的参数学习方法主要是BP算法.
前面我们知道, BP算法的关键在于反向传播时的链式求导求得误差值 . 然后使用梯度下降的方法进行参数W和b的更新.
二 CNN过拟合 神经网络的学习能力受神经元数目以及神经网络层次的影响神经元数目越大神经网络层次越高那么神经网络的学习能力越强那么就有可能出现过拟合的问题(通俗来讲神经网络的空间表达能力变得更紧丰富了)
CNN是通过卷积核对样本进行特征提取的, 当特征提取过多(即学习到了不重要的特征)就回造成过拟合现象的发生, 这里主要介绍两种解决过拟合的方法, 分别为正则化和Dropout.
2.1 正则化
和机器学习一样, 通过在损失函数加上L1,L2正则项可以有效地防止过拟合的问题. 2.2 Dropout
一般情况下对于同一组训练数据利用不同的神经网络训练之后求其输出的平均值可以减少overfitting。Dropout就是利用这个原理每次丢掉一半左右的隐藏层神经元相当于在不同的神经网络上进行训练这样就减少了神经元之间的依赖性即每个神经元不能依赖于某几个其它的神经元指层与层之间相连接的神经元使神经网络更加能学习到与其它神经元之间的更加健壮robust鲁棒性的特征。另外Dropout不仅减少overfitting还能提高准确率。 Dropout通过随机删除神经网络中的神经元来解决overfitting问题在每次迭代的时候只使用部分神经元训练模型获取W和d的值. 具体的可以参见PDF文档http://nooverfit.com/wp/wp-content/uploads/2016/07/Dropout-A-Simple-Way-to-Prevent-Neural-Networks-from-Overfitting.pdf
p0.5 # dropout保留一个神经元存活的概率def train_out(X):# H1 np.maximum(0,np.dot(ω1,X)b1) # 第一次dropout注意做了一次除以P。U1 (np.random.rand(*H1.shape)p)/p # [0. 2. 2. 2. 0. 0. 2. 2. 0. 0.]# drop转换为0或者原始值H1 * U1H2 np.maximum(0,np.dot(ω2,H1)b2)# 第二次dropout其中除以P。U2 np.random.rand(*H2.shape)p/p# 类似上方H2 * U2out np.dot(ω3,H2)b3 # BP操作计算梯度参数更新def predict(X):#直接前向计算不乘以PH1np.maximum(0,np.dot(ω1,X)b1)H2np.maximum(0,np.dot(ω2,H1)b2)outnp.dot(ω3,H2)b32.3 方案选择
一般都可以使用Dropout解决过拟合问题回归算法中使用L2范数相比于Softmax分类器更加难以优化。对于回归问题首先考虑是否可以转化为分类问题比如用户对于商品的评分可以考虑将得分结果分成1~5分这样就变成了一个分类问题。如果实在没法转化为分类问题的那么使用L2范数的时候要非常小心比如在L2范数之前不要使用Dropout。一般建议使用L2范数或者Dropout来减少神经网络的过拟合
三、卷积神经网络训练算法
和一般的机器学习算法一样需要先定义Loss Function衡量预测值和实际值之间的误差一般使用平方和误差公式找到最小损失函数的W和b的值CNN中常使用的是SGD其实就是一般深度学习中的BP算法SGD需要计算W和b的偏导BP算法就是计算偏导用的BP算法的核心是求导链式法则。
在神经网络中一般采用Mini-batch SGD主要包括以下四个步骤的循环
采样一个batch的数据前向计算损失loss反向传播计算梯度(一个batch上所有样本的梯度和)利用梯度更新权重参数
使用BP算法逐级求解△ω和△b的值。
根据SGD随机梯度下降迭代更新ω和b。 四、池化层误差反向传播
Maxpool最大池化层反向传播除最大值处继承上层梯度外其他位置置零。 平均池化将残差均分为2×24份传递到前面小区域的4个单元中。 def max_pool_backward_naive(dout,cache):x,pool_paramcacheHH,WWpool_param[pool_height],pool_param[pool_width]spool_param[stride]N,C,H,Wx.shapeH_new1(H-HH)/sW_new1(W-WW)/sdxnp.zeros_like(x)for i in range(N):for j in range(C):for k in range(H_new):for l in range(W_new):windowsx[i,j,k*s:HHk*s,l*s:WWl*s]mnp.max(windows)dx[i,j,k*s:HHk*s,l*s:WWl*s](windowsm)*dout[i,j,k,l]return dx
梯度下降
梯度下降是常用的卷积神经网络模型参数求解方法根据每次参数更新使用样本数量的多少可以分为以下三类
批量梯度下降batch gradient descent,BGD小批量梯度下降mini-batch gradient descent,MBGD随机梯度下降stochastic gradient descent,SGD。
详细请参考机器学习之梯度下降法GD和坐标轴下降法CD
深度学习超参数
学习率Learning Rate
学习率被定义为每次迭代中成本函数中最小化的量。也即下降到成本函数的最小值的速率是学习率它是可变的。从梯度下降算法的角度来说通过选择合适的学习率可以使梯度下降法得到更好的性能。
一般常用的学习率有0.000010.00010.0010.0030.010.030.10.31310
学习率调整策略
fixed固定策略学习率始终是一个固定值。step 均匀分步策略如果设置为step,则还需要设置一个stepsize, 返回base_lr * gamma (floor(iter / stepsize)) 其中iter表示当前的迭代次数。floor(9.9)9, 其功能是“下取整”。base_lr * gamma iter iter为当前迭代次数。multistep 多分步或不均匀分步。刚开始训练网络时学习率一般设置较高这样loss和accuracy下降很快一般前200000次两者下降较快后面可能就需要我们使用较小的学习率了。step策略由于过于平均而loss和accuracy的下降率在整个训练过程中又是一个不平均的过程因此有时不是很合适。fixed手工调节起来又很麻烦这时multistep可能就会派上用场了。multistep还需要设置一个stepvalue。这个参数和step很相似step是均匀等间隔变化而multistep则是根据 stepvalue值变化 multistep设置示例caffe
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: multistep
gamma: 0.9
stepvalue: 5000
stepvalue: 7000
stepvalue: 8000
stepvalue: 9000
stepvalue: 9500
poly: 学习率进行多项式误差, 返回 base_lr *(1 - iter/max_iter) power
深度学习训练过程
过拟合
过拟合就是模型把数据学习的太彻底以至于把噪声数据的特征也学习到了这样就会导致在后期测试的时候不能够很好地识别数据即不能正确的分类模型泛化能力太差。
欠拟合
欠拟合模型没有很好地捕捉到数据特征不能够很好地拟合数据。 误差的变化 根据特征的层来调整参数
左图很粗糙显示不出底层特征可能是因为网络不收敛或者学习速率设置不好或者是因为惩罚因子设置的太小。 右图合理特征多样比较干净、平滑 https://www.microsoft.com/zh-cn/download/details.aspx?id48145751be11f-ede8-5a0c-058c-2ee190a24fa6True