1.1 ML策略
- more data
- more diverse training set
- train algorithm longer with sgd
- try adam optimization instead of sgd
- try bigger/smaller network
- try dropout/L2 regularization
- network architecture.1: activation functions,2:hidden units ….
- 判断哪些idea 有效?
1.2 正交化
- TV tuning example :每一个旋钮只调整一个性质
- fit training set -> fit dev set -> fit test set
- 如果训练集不好 更大的网络,变化更好的优化算法。。
- 如果在训练集上效果很好,开发集不好,需要有一组正则化的按钮可以调节(增大训练集)
- 如果在训练集,开发集fit,在测试集不好,需要使用更大的开发集。
- 不太使用early stopping。stop early对训练集的拟合就不太好
1.3 单一数字评估指标
- trade off of precision and recall 。F1 score
1.4 满足和优化指标
- accuracy optimizing, running time satisfied(<1000 ms)。
- 一个优化指标 一个或多个满足指标
1.5 训练开发测试
- workflow: try many ideas->train different models->use dev set to evaluate and pick one
- randomly shuffled data into the dev and test set.From same distribution.
1.6 开发集和测试集的大小
- old way <10000 data :
0.7 train,0.3 test.0.6 train ,0.2 dev,0.2 test.- now large data sets 10e6:
0.01dev,0.01 test- some cases。train and dev set.no test might be ok.not recommend
1.7 改变开发、测试的指标
- 猫分类例子:算法A在评价指标上做得更好,但是会如(将色情图片分类为猫)。B评价指标并不如A,但是不会发生上述错误。评价指标无法衡量算法之间的优劣排序
- 改变error metric:把色情图片分类成猫这一错误的惩罚权重加大10倍。
- define a metric to evaluate classifiers->worry separately about how to do well on this metric
1.8 人的表现
1.9 可避免偏差
- 如果训练误差和验证误差 远大于人类或state of art:focus on bias
- 如果接近 focus on variance
- humans error 7.5,train 8,test 10:
贝叶斯误差估计。0.5 可避免偏差,2是方差。减小方差相对容易。
1.12 改善模型
- fit train set:bias
- generalizes well to dev/test: variance
- reducing
- human level(state of art)avoid bias:
- train bigger model
- train longer/better optim
- nn architecture/ hyperparameters search
- training error avoid variance
- more data
- regularization L2,dropout,data augmentation
- nn architecture/ hyperparameters search
- dev error
2.1 进行误差分析
- look as dev examples to evaluate ideas
- get 100 mislabeled dev set examples,count up error types and analysis.Decide solve it is necessary?决定在哪个错误类型有改进的必要。
- evaluate multiple ideas in parallel
- 进行误差分析,应该找一组开发集的错误例子,观察错误标记例子,看看假阳性和假阴性,启发归纳出新的误差类型。
2.2 清楚标注错误的数据
- 深度学习算法对随机误差是鲁棒的,但对系统误差(标记的人把白色的狗标记成猫)是不鲁棒的。
2.3 快速搭建系统
- 机器学习程序-> 快速搭建第一个程序->使用偏差、方差分析,错误分析,找到改善系统要优先处理的方向,迭代。 如果这个问题很熟悉或有几乎完全相同的参考文献可以不这么做。
2.4 在不同的划分上进行训练并测试。
- data1 200000 data2:10000
option 1:merge ->shuffle
option2: training 20万data1+5000data2。 dev:2500data2
2.5 不匹配数据划分的偏差和方差
2.6 定位数据不匹配
2.7 迁移学习
- 使用在分类猫数据训练好的神经网络,用这些知识或部分知识去阅读x射线扫描图。
- 将原网络的最后一层改变,重新训练。数据少-只训练最后一层的参数,
数据多可以重新训练所有层的参数。
2.8 多任务学习
- 一张图可以有多个标签。训练一个神经网络识别图中的四个物体。
- 当训练一系列任务可以共享低层次特征,每个任务的数据量接近(不绝对),可以训练一个足够大的神经网络在所有的任务中效果好。
2.9 端到端的深度学习
- 训练一个大型神经网络,输入是音频,输出是听写文本。
需要大量数据- 人脸识别:分解任务,先识别人脸位置,在识别人脸
2.10 是否要使用端到端的深度学习
- let the data speak
- data+ hand-designed components(features).当没有大量数据时。