误差分析
分类别,抓住主要成分
为了降低验证集错误率,一个思路是分析验证集中各个类型的数据,比如猫咪识别器中,随机抽出一部分图片,人工标记各类型的百分比(如狗、大猫类、模糊图片等),找出百分比最高的类,然后针对该类进行优化,降低错误率
验证集标签错误
验证集存在部分标签错误属于随机误差,通常不值得化过多精力处理,深度学习算法对于随机误差具有很好的稳健性,但对于系统误差表现不佳 。
从验证集中抽样部分数据,人工检查误标签数据比例,乘以算法在验证集上的错误率可以得到这部分误标签对结果的贡献比例
建造实用的深度学习系统时,需要一些更偏向人工的错误分析和人为见解
处理不同分布的数据集
对于某些端到端的深度学习系统,由于目标数据集不够,可能会从其它途径获取数据,导致这些数据来自不同的分布。处理办法是:从目标数据集抽取出验证集和测试集,将剩下的目标数据集和其它所有的数据混合作为训练集。(验证集和测试集决定了模型的训练目标,必须用目标数据集)
确定改进方向
确定五个值:
- human level
- training set error
- traing-dev set error
- dev error
- test error
偏差、方差、数据失配
数据失配处理
- 进行人为误差分析,理解数据的差别
- 使训练集更相似,或收集更多与验证/测试集相似的数据
- 进行数据合成
注:进行数据合成时,如果只针对部分子集进行数据合成,可能导致模型对该子集过拟合。
迁移学习
pre-training, fine tunning
- 有相同输入
- 预训练模型有更多的数据
- 预训练中的低维特征对目标问题有帮助
多任务学习
通过同一网络,产生多个输出,但各输出并不是同一任务的多个类别(多分类),而是不同任务(多任务),多任务间共享部分层或多层,通常用单一模型多任务比多个模型每个模型处理一个任务效果更好(由于网络中共享了部分低维特征信息,而这些信息通过所有的数据进行训练而得)。
当训练样本中缺少部分数据时,训练时忽略该数据即可
适用:
- 对于有共享低维特征的多个任务
- 每个任务中大量数据都存在相似性
- 训练一个大的神经网络,使得在所有任务都有较好表现
端到端学习
优势:
- 学习数据的内在性,过滤掉人为的见解
- 减少了人工设计、操作的部分
缺点:
- 需要大量的数据。如果各个子任务具有更多的数据量,可以分成几个子任务构建多个深度学习模型。
- 排除了一些具有潜在用途的手工设计组件
结合任务和数据量,确定使用端到端学习的区间。