1. 知识点
- 误差分析
收集错误样例。以猫的二分类为例。收集100个错误数据集1,如果其中有5个确是猫,那么可以用来训练猫的特征的数据只有5个,不值得用些数据集分析改进。收集100个错误数据集2,如果其中有50个确是猫,那么可以用来训练猫的特征的数据只有50个,值得用些数据集分析改进。
错误类型归类。以猫的二分类为例。将错误归为1)将狗分类为猫、2)将狮子、豹子分类为猫等,统计每一类错误所占的百分比,以确定各类错误是否值得分析、改进。
- 修正错误标记的样本
对于样本中偶然出现的标记错误,不影响训练效果,可以忽略。
对于样本中系统性的标记错误,比如,将白色的狗标记为猫,影响训练效果,需要修正。
在误差分析中,对样本的错误标记进行记录、归类,分析哪些错误标记有修正的价值。
- 搭建系统、迭代优化
搭建基本的系统。
对错误样例进行分析,用优化算法(Momentum\RMSprop\Adam)等减少偏差,用正则化等减少方差。
- 训练集和测试集上的数据存在差异
以猫的二分类问题应用在手机APP上为例,训练集是从网上下载的大量(200000张)高清图片,测试集是少量(1000张)手机拍摄的不清晰的图片。
方法一:将高清图片和模糊图片合并到一起,随机分配到训练集、验证集、测试集。这样,验证集也是以高清图片为主,而不是我们真正的目标(手机拍摄的清晰度不够的图片)。所以这个方法不推荐。
方法二:训练集用高清图片,验证集和测试集用非高清图片。训练集和测试集数据有明显差异,会不会造成高方差。
- 训练集和开发集、测试集数据分布不同情况下的偏差小和方差大:
方差大的原因,有可能是模型存在问题,也有可能是训练集和开发、测试集数据来自不同的分布。不好下定论。
方法:设立训练开发集, 和训练数据来自同一分布,但不却不用于训练。在训练开发集上如果方差较小,则说明模型本身没有问题。开发集的误差是数据分布不一致造成的。
- 迁移学习:将一个任务中学习到的知识,应用到另一个独立的任务中。
迁移学习应用场景:迁移来源问题有充足的样本数据,迁移目标问题没有那么多数据。
比如,放射科图像分析,样本数据较少,而普通图像识别样本数据较多。可以对图像识别训练中学到的很多知识进行迁移,来做放射科图像基础识别。
类似,智能客服对话任务和普通语音识别任务。可以对语音识别任务训练得到的知识进行迁移,来做智能客服对话任务的基础识别。
- 多任务学习:用一个模型结构和相同的输入,训练多个任务。
以自动驾驶为例,需要从输入图片中检测出是否有行人、汽车、红绿灯、路标。
- 端到端深度学习:用单个神经网络学习,从输入直接到输出。
需要样本数据量足够大。