一、建立评价指标
- 最好是一个指标
回归问题:均方差mse
分类问题:F1值(准确率+召回率)
标题生成:BLEU
- 指标是容易理解的
- 指标的范围最好是在(0,1)之间,并且最好是线性的
二、建立合理的预期
在任务执行之前,要对任务有合理的预期,知道行业内的最高值是多少,对专业领域知识熟悉。
-
以看图说话项目为例
项目分为四个步骤:
1.目标识别
2.目标动作识别
3.场景理解
4.语音合成
所以,项目预期的为:目标检测效果动作识别效果场景理解效果*文本合成效果 = 0.36 * 0.88 * 0.66 * 0.753 = 0.16
三、建立合理的数据集
测试集中的数据要和训练集中数据保持一致。
测试集中的数据要出现在训练集中,如果训练集中都没有,需要将新的数据添加到训练集中。
四、判断是否欠/过拟合, 以及消除欠/过拟合
首先确定训练集数据分布和测试集训练分布是正确的,再判断网络是过拟合or欠拟合。
1)欠拟合
-
第一种欠拟合网络
欠拟合网络曲线(1).png -
解决方案:
1.增加训练的次数(epoch)
2.增大batch-size
3.调整激活函数(比如说使用Relu代替SGD)
4.调整优化算法:使用更好的优化算法、增大学习率
-
第二种欠拟合网络
欠拟合网络曲线(2).png -
解决方案:
1.增加网络复杂度
增加层数
增加卷积层输出的通道数
增加全连接层的节点数
2.检查数据集分布:查看训练数据集和测试数据集是否有相对于的特征。
增加训练集中数据的种类,使得训练数据可以覆盖所有测试数据的特征;
使用数据增强;
2)过拟合
-
第一种过拟合网络loss曲线
过拟合曲线(1).png -
解决方案:
Early Stopping
-
第二种过拟合网络loss曲线
过拟合曲线(2).png -
解决方案:
1.检查数据集分布:查看训练数据集和测试数据集是否有相对于的特征。
增加训练集中数据的种类,使得训练数据可以覆盖所有测试数据的特征;
使用数据增强;
2.减小网络复杂度
3.添加正则化
4.增加Dropout层
5.添加Batch Normalization
5.超参数优化
- 超参数:
层数
当网络的层说比较多的情况下,网络对应的损失函数具有非常多的局部最优解,而且这些局部最优解和全局最优解的值非常接近。
根据以上理论,我们应该让网络的层次比较多,避免网络收敛得到一个不好的局部最优解。
每层神经元个数:整个网络呈纺锤形
激活函数
学习率:从0.01开始尝试
正则化系数
mini batch大小:从32开始尝试
Batch Size会影响训练过程的计算资源需求、速度和迭代次数。
较大的Batch Size允许在训练中利用矩阵乘法的计算增强,但需要以更多的内存用于训练过程为代价;
较小的Batch Size会在误差计算中产生更多噪声,并且通常在防止训练过程停止在局部最小值时更有有。
因此,增加Batch Size会提升训练速度,但从放着局部最小值的角度而言,应该避免使用太大的Batch Size
训练次数Epochs
需要通过观察训练过程中Validation Error的变化来估计正确的迭代次数。只要
Validation Error不断减少,就可以对模型继续迭代。
通过Early Stopping的技术可以自动确定何时停止训练模型。
如果验证错误在过去10个或20个时期内没有改善,则停止训练。
- 优化方法:
网络搜索
随机搜索
贝叶斯优化:通过历史先验信息,进行参数选择
进化算法
神经架构搜索
见视频
网友评论