目录
0. task3任务:2. 机器学习框架&实践攻略
对应《深度学习详解》目录
第2章 实践方法论
2.1 模型偏差
2.2 优化问题
2.3 过拟合
2.4 交叉验证
2.5 不匹配
1.实践方法论
Training data :
Training: step1 : function with unknown——
step2 : define loss from training data——
step3 : optimization——
Testing data :
Use to label the testing data ;
to upload to Kaggle
优化思路:
1.1 模型偏差
在训练数据上误差大可能是:①模型偏差;②优化问题。
模型太简单,损失低的函数能在这个设定模型里找到。
对策:增加模型复杂度,如:增加输入的特征(用更长的时间建立模型)、deep learning
1.2 优化问题
找到的θ不是最优解,损失不够低,但在所设模型内。
1.3 如何判断是模型偏差or优化问题
①先做较小的、浅层的网络,或非深度学习的方法,比较容易被成功优化的,得到损失值。比如:线性模型、支持向量机 SVM Support Vector Machine。
②再做深层的模型,使深的模型灵活性比前者大,得到损失值。
③比较两者的损失值,如果深的模型的损失不能比浅模型更低,即深的模型损失值更大,则说明是优化问题。换句话说,采用更深的层数时,如果损失值从下降迎来转折点上升,就是优化问题。
④模型偏差:在训练数据上误差大,深的模型的损失比浅模型更低,就是正常的模型偏差。
1.4 过拟合
在训练数据上损失小,在测试数据上损失大。
解决方法:
①最有效:增加训练资料(但在很多作业/比赛中用不了)
②数据增强 data augmentation :根据对问题的理解创造出新的合理的数据。比如:图像识别时,左右翻转,(但一般不会上下颠倒,这不合理)
③限制模型,减少灵活性:根据对问题的理解,做合理限制。比如:限制模型是二次曲线。
(i)给模型更少的参数。a.深度学习时给模型更少的神经元数目; b.让模型公用参数(会在CNN里展开讲解)
全连接网络 fully-connected network: 灵活性较大的架构。(之前讲的都属于这个)
卷积神经网络 CNN Convolutional Neural Network :灵活性较低,有限制的架构,针对图像的特性来限制模型的灵活性。(浓缩的精华)
(ii)更少的特征。(七天的周期数据减少到3天)
(iii)早停 early stopping
(ix)正则化 regularization
(x)丢弃法 dropout
注意:①不能给太大的限制,而回到模型偏差问题。
②不要用公开测试数据拿到测试分数来判断一个模型的好坏,因为模型有可能出随机数绕开模拟(极端情况),最终可能会在私密测试数据中拿到较低分数。(这也是为什么paper上常有超越人类的例子,而实际并非如此)
1.5 交叉验证
把训练数据分成两部分,一部分训练集 training set ,一部分验证集 validation set。在验证集中拿到好结果后再上传到公开测试数据去测试。
理想上只关注验证集的分数去选择模型,尽量少关注公开测试数据的分数。如果过于关注公开测试数据,多次调整模型,可能会在公开测试数据上过拟合,导致在私密测试数据中拿到较低分数。
k折交叉验证 k-fold cross validation : 把训练数据分成k等份,把其中一份做验证集,另外的做训练集,重复k次。
比如,当k=3时(采用三等分时):做三次测试,计算每个模型拿到的三次分数的平均值,选择平均值最好的模型。
1.6 不匹配 mismatch
训练数据和测试数据有不同的分布,不能通过训练资料的增加来提高准确性。
如何判断:根据对数据的理解来判断。
2. 实践思路整合(个人理解,有不对的地方欢迎留言指出)