深度学习03 -来源于李宏毅老师的课堂
本人从零开始学习希望各位多多批评指正如果training的loss太大可能是出现了什么问题训练Loss大的两种主要原因一、Model Bias模型偏差/模型能力不足含义模型本身能力不够无法很好地拟合数据简单说就是模型太简单了即使训练到最优也无法达到低loss。原因模型结构太简单层数少、参数少网络表达能力不足模型设计不合理解决方法增加模型复杂度加深网络、增加宽度使用更强大的模型架构增加特征二、Optimization Issue优化问题 ----例如gradient descent梯度下降含义模型有能力但优化过程卡住了没找到最优解模型本身足够强大但训练过程中无法找到好的参数。类比理解大学生做小学题能力够但被蒙住眼睛瞎走能力够但找不到正确方向原因学习率设置不当太大震荡、太小收敛慢陷入局部最优或鞍点梯度消失/爆炸批次大小不合适解决方法调整学习率使用更好的优化器Adam、AdamW使用Batch Normalization调整初始化策略要判断是不是optimization的问题可以用一个比较小的model甚至不是深度学习的先看一看能得到什么样的note如果说你用了两个layer大的那个甚至都不能把小的压过去那说明是optimization的问题比如1layer 是0.2 2layer是0.18 ....5layer是0.34这种情况如何判断是哪种问题┌────────────┬──────────────────────────────┬────────────────────┐ │ 方法 │ Model Bias │ Optimization Issue │ ├────────────┼──────────────────────────────┼────────────────────┤ │ 增大模型后 │ loss明显下降 │ loss几乎不变 │ ├────────────┼──────────────────────────────┼────────────────────┤ │ 现象 │ loss下降但趋于一个较高值 │ loss卡住不动或震荡 │ ├────────────┼──────────────────────────────┼────────────────────┤ │ 检查 │ 看模型是否能在训练集上过拟合 │ 看梯度是否正常更新 │ └────────────┴──────────────────────────────┴────────────────────┘此时再看testingdata loss怎么样如果training的loss小testing的loss大才是overfitting如何解决呢第一个很有效的方法是增加你的训练资料但是补充训练资料是一个比较浪费时间的方法。第二个方法是data augmentation通过自己的理解设计出新的资料 比如上下颠倒放缩分辨率倾斜一个角度等等。除了解决资料的方法还有什么解法呢不要让你的模型有很大的弹性给他一些限制比如对选择方向上的限制因为选择的方案有限所以可能很快的就能选到比较接近的function写less parameter但是不能限制过大其他的方法1.less feature 选用少的东西比如给的是三天的资料然后选择用两天 2.early stopping 早停 3.当使用过于复杂的model时也有可能发生到达某个地方忽然loss暴涨如何分training set和validation set呢考虑N-fold cross validation切成n等份随机分1份val剩下n-1份train或者以其他比例划分。