前言
刚开始使用Keras时,对每轮训练反馈的loss和val_loss不怎么了解,在查阅资料以及几次训练后,作出以下记录,若有错误,欢迎指出。
一、理解train和test
train(set):训练集是用来运行学习算法。
test(set):测试集用来评估算法性能,但不会据此改变学习算法或参数。因此我们可以引入development(set),也叫validation(set),来调整参数,选择特征,以及对学习算法作出其他决定。本文先忽略验证集讲解。
常规的训练集和测试集的比例为0.7:0.3,引入验证集后常采用0.6:0.2:0.2.
在保证算法稳定的情况下,训练集和测试集的选取会对输出结果造成不同层次的影响。
二、理解loss和val_loss
loss:训练集的损失值;val_loss:测试集的损失值。
一般训练规律:
loss下降,val_loss下降:训练网络正常,最好情况。
loss下降,val_loss稳定:网络过拟合化,可以添加Dropout和Max pooling。
loss稳定,val_loss下降:数据集有严重问题,建议重新选择。
loss稳定,val_loss稳定:学习过程遇到瓶颈,需要减小学习率(自适应网络效果不大)或batch数量。
loss上升,val_loss上升:网络结构设计问题,训练超参数设置不当,数据集需要清洗等问题,最差情况。
(注意:上面提到的“下降”、“稳定”和“上升”是指整体训练趋势。)