ModelArts-lab 第二期扩展— 调整参数,提高猫狗识别精度
ModelArts-lab 第二期实战中,通过使用数据智能标注、模型训练和模型部署,端到端模拟真实AI开发场景,构建一个图像分类应用。
根据案例提供的训练脚本,训练得到的模型的精度大概在82%左右,识别的效果并不是特别的好,而且还不太稳定,具有有一定的波动性。
经常将哈士奇误认为猫,那有什么方法可以优化模型的精度呢?
接下来我们尝试通过改变不同的参数,来提高猫狗的识别准确率。可以从两个方面来调整:
一、网络结构
激活函数:选择合适的函数防止梯度消失/爆炸的情况,如果出现这些情况,你的模型得不到更新,这个网络相当于是死的网络,对与训练来说是非常不利的。
损失函数:更好的拟合预测与真实的值
优化器的选择:也就是梯度下降的方式,尽可能快的去优化目标函数达到全局最小值。提高训练速度,找到最优的解。
学习率(learning rate或作lr)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常lr取值为[0.01,0.001,0.0001]
正则化项:防止过拟合的一个参数。
在深度学习里,除了可以在目标函数里加L1,L2的正则化,一般来说,我们在构架网络模型的时候,可以在两层网络之间,加一层dropout层,通过这一层之后,可以让上一层的神经元部分失活,随机让某一部分的神经元进入到下一部分的神经元进行计算,所以我们在构建相对比较深的网络的时候,可以去加一些dropout层。
二、训练过程
1、batch_size:就是每次我们放多少图片进行训练,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃。bath_size通常取值为[16,32,64,128]
2、epoch:迭代次数是指整个训练集输入到神经网络进行训练的次数,当测试错误率和训练错误率相差较小时,可认为当前迭代次数合适;当测试错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。
3、Train_test_split:划分训练集和测试集的比例,验证泛化性能。这个比例合适的时候,我们就可以通过训练得到模型,去验证集上去验证它的表现好不好,如果表现好的话,就可以拿到测试集上去测试它的泛化性能,一般训练和测试的比例是7:3,在训练里面还可以分为训练集和验证集,这都属于在训练的过程,验证集只是在训练过程中把它作为训练集的测试,如果整个数据集按10份的话,训练集、验证集、测试集的比例一般是6:2:2,或者是6:1:3,前面两个部分,训练和验证都是为了测试模型的效果好不好,通过在训练集上的训练,我们可以得到这个模型,之后我们拿到验证集上去验证,如果说这个验证的效果还可以,就可以把这个模型放到测试集上去测试,看真实的数据效果怎么样,
还有一些其他的参数也会影响我们模型的结果,譬如权重初始化,
下面我们重点调整以下三个参数,
1、学习率
2、批次大小 batch_size
3、epoch
下面我们就手动地去修改一下上面的参数,看对模型的影响,精度是提高了还是降低了。
点击训练作业,打开之前训练好的作业,
点击右上角的修改:
找到运行参数进行修改
通过不断调整,不断实践,还是精度比较容易上84%,但是要想更进一步,就比较困难了,本案例中使用的VGG16神经网络结构可能不是最适合的,我们会在下一阶段尝试使用其他的开源神经网络结构(比如ResNet50、Inception)等来进一步提升精度。
- 点赞
- 收藏
- 关注作者
评论(0)