深度学习网络设计流程

版权声明: https://blog.csdn.net/zeroice7/article/details/83539989

Step 1:定义问题收集数据

  1. 确定问题是什么:即输入与预测分别是什么;
  2. 确定分类问题:是二分类问题、多分类问题、标量回归问题、向量回归问题, 还是多分类、多标签、聚类、生成、强化学习等;
  3. 假设输出是可以根据输入进行预测的(排除不可预测问题,Eg: 根据夏装销量预测冬装销量的非平稳问题;)
  4. 假设数据包含足够多信息,足以学习出输入和输出的关系;

Step 2:选择衡量成功的指标

观测是否成功的标志:

  • 平衡分类问题:精度(accuracy)和接收者操作特征曲线下面积(ROC AUC)?
  • 类别不平衡问题:准确率(precision)和召回率(recall)
  • 排序或多标签分类:平均准确率均值(Mean Average Precision)

Step 3:确定评估方法

衡量当前进展(只选其一):

  • 留出验证集:数据量大时可以采用;
  • 折交叉验证:用于流出验证样本量太少;
  • 重复的K折验证:如果可用的数据很少,同时模型评估又需要非常准确;

Step 4:准备数据

知道训练什么、要优化什么以及评估方法基础上,格式化数据使其可以输入到模型:

  1. 将数据处理为张量;
  2. 张量数值保持在较小范围,比如 (0,1) (-1,1);
  3. 不同的特征具有不同的取值范围(异质数据),那么应该做数据标准化;
  4. 对小数据问题,需要做特征工程;

Step 5:开发比基准更好的模型

开发一个小模型,打败纯随机基准(dumb baseline),获得统计功效(Statistical power):

  • 假设输出是可以根据输入进行预测的;
  • 假设数据包含足够多的信息,足以学习输入和输出之间的关系;

构建

  • 最后一层激活函数:对网络的输出进行限制;
  • 损失函数:匹配要解决的问题的类型;
  • 优化配置:使用的 优化器、学习率 【一般使用rmsprop与默认的学习率】

Step 6:扩大模型规模:开发过拟合的模型

获得统计功效模型,判断模型是否足够强大,增加模型规模;
(1)添加更多层;
(2)让每一层变得更大;
(3)训练更多的轮次;
出现过拟合后,准备正则化和调节模型;

Step 7:模型正则化与调节超参数

尝试以下几项,达到模型最佳性能:
 (1)添加 Dropout;
 (2)尝试不同的架构:增加或减少层数;
 (3)添加 L1 和/或 L2 正则化;
 (4)尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置;
 (可选)反复做特征工程:添加新特征或删除没有信息量的特征;
 【验证过程中,使用同一数据验证模型效果,会出现模型对验证过程过拟合,降低验证过程的可靠性;】
 
最后开发出满意的模型,在所有可用数据(训练数据+验证数据)训练最终模型,并用测试数据评估;若结果不理想,表明验证流程不可靠,可能需要更换可靠的评估方法,如重复的K折验证;

猜你喜欢

转载自blog.csdn.net/zeroice7/article/details/83539989
今日推荐