卷积神经网络CNN参数优化

目录

一、训练神经网络模型

1、神经网络训练流程

2、前向传播算法

3、反向传播算法

二、卷积神经网络CNN参数优化

1、learning_rate学习速率

2、batch_size批数据大小

3、训练样本要均衡

4、丢弃率

5、网络架构


一、训练神经网络模型

1、神经网络训练流程

卷积神经网络CNN参数优化_第1张图片

变量初始化:通过满足正态分布的随机数来初始化神经网络中的参数是一个常用的方法。

部分训练数据:在每次迭代的开始,首先需要选取一小部分训练数据,这一小部分数据叫做一个batch。这个batch的样本会通过前向传播算法得到神经网络模型的预测结果。

前向传播算法:神经网络的结构,及每个神经元中的参数都已确定,根据输入,计算输出的过程,为前向传播算法。

后向传播算法:定义一个损失函数,量化batch样本通过前向传播算法的预测值与真实值之间的差距,反向传播算法更新神经网络参数的取值,使得这个batch样本通过神经网络模型的预测值与真实值更加接近。

循环上述神经网络模型参数的优化过程,直至达到指定的训练次数。

2、前向传播算法

输入根据网络结构和神经元参数计算预测结果的过程,为前向传播算法。

卷积神经网络CNN参数优化_第2张图片

如上图所示的神经网络,前向传播算法的计算过程为:

卷积神经网络CNN参数优化_第3张图片

 

3、反向传播算法

使用梯度下降法,优化所有参数取值,从而使神经网络在训练数据上的损失函数尽可能小。

分类问题损失函数:

      softmax函数将神经网络前向传播得到的结果变成概率分布:

卷积神经网络CNN参数优化_第4张图片

      分类问题比较常用的损失函数为交叉熵,计算预测的概率分布和真实的概率分布之间的距离:

回归问题损失函数:

       回归问题常用的损失函数为均方误差:

二、卷积神经网络CNN参数优化

1、learning_rate学习速率

0.001

0.005

0.01

0.05

0.1

Exponential_decay

0.256

0.206

0.22

0.22

0.206

0.206

       学习速率随迭代次数逐渐减少:1、学习速率过大,导致损失函数无法收敛到最小值;2、学习速率过小,损失函数收敛速度过慢。

        tf.train.exponential_decay函数实现了指数衰减学习率,通过这个函数,可以先用较大的学习率快速得到一个比较优的解,然后随着迭代的继续逐步减少学习率,使得模型在训练后期更加稳定:

                        Delayed_learning_rate = learning_rate * decay_rate ^ (gloabal_step/decay_steps)

        当staircase为FALSE时,学习速率是连续衰减函数,不同的训练数据有不同的学习率,当学习率减小时,对应的训练数据对模型训练结果的影响也就减小;当staircase为True时,gloabal_step/decay_steps会被转化成整数,这使得学习率为一个阶梯函数,Decay_steps通常代表完整的使用一遍训练数据所需要的迭代轮数,也就是总训练样本数除以每一个batch中的训练样本数,每完整地过完一遍训练数据,学习率就减少一次,使得训练数据中的所有数据对模型训练有相等的作用。

损失函数下降的速度和迭代结束后总损失的大小没有必然的联系。

2、batch_size批数据大小

50

100

150

200

300

0.23

0.21

0.27

0.718

0.72

       神经网络的优化过程可以分为两个阶段,第一个阶段先通过前向传播算法得到预测值,并将预测值和真实值做对比得出两者之间的差距。然后在第二个阶段通过反向传播算法计算损失函数对每一个参数的梯度,再根据梯度和学习率使用梯度下降算法更新每一个参数。

       梯度下降算法在每一轮迭代中都需要计算全部训练数据上的损失函数,在海量训练数据下,要计算所有训练数据的损失函数是非常消耗时间的。随机梯度下降算法,在每一轮迭代中,随机优化一小部分(一个batch)训练数据的损失函数,大大减少收敛所需要的迭代次数。

批数据使得随机梯度下降的结果更加接近梯度下降的效果。Batch的选择决定的是下降的方向,batchsize太小,会导致下降的方向随机,难以达到收敛,在一定范围内,batchsize越大,其确定的下降方向越准,引起训练震荡越小。

3、训练样本要均衡

不均衡

均衡

0.72

0.806

 

在分类问题中,每一类对应的样本个数要大致相同,差别不大。针对样本类别不均衡的情况,数据样本少的类别采用向上采样,数据样本多的类别采用向下采样。

CNN对类别不均衡比较敏感,不平衡的类别往往使得模型的效果下降。

4、丢弃率

丢弃率

0.3

0.4

0.5

0.6

0.7

0.8

accuracy

0.811

0.805

0.816

0.813

0.818

0.817

loss

1.207

1.164

1.08

1.15

1.09

1.12

训练样本的损失函数为0.003, 测试样本的损失函数为1.66,模型过拟合。调整丢弃率,提升模型的泛化能力。

5、网络架构

 经典的用于图片分类问题的卷积神经网络架构都满足:

                                     输入层 --> (卷积层+ --> 池化层?)+ --> 全连接层+

LeNet模型(1998):

卷积层1(5*5*6) --> 池化层1 --> 卷积层2(5*5*16) --> 池化层2 --> FC3(120) --> FC4(84) -->FC5(10) --> softmax

AlexNet模型(2012):

输入层(227*227*3) --> 卷积层1(11*11*96) --> 池化层1 --> 卷积层2(5*5*256) --> 池化层2 -->卷积层3(3*3*384) --> 卷积层4(3*3*384) --> 卷积层5(3*3*256) --> 池化层5 --> 全连接层6(4096) --> 全连接层7(4096) --> 全连接层8(1000)

卷积神经网络CNN参数优化_第5张图片

 

参考资料:

《TensorFlow实战Google深度学习框架》

你可能感兴趣的:(神经网络,卷积神经网络,CNN,参数优化)