如果模型效能不佳, 除了过拟合之外, 还可能是模型根本没有训练好, 课程就是针对这个问题提出解决方法和原理, 生动形象, 直观易懂.
![[]](/2018/09/05/笔记-李宏毅的模型训练技巧/李宏毅的模型训练技巧21-sqd.jpg)
训练技巧
Loss 没选好
不同的 loss 函数会有差别, 交叉熵和平方差
梯度下降适用于高低落差大的 loss
mini-batch
每一个小轮, 就更新一次, 梯度下降一次. 那么一大轮, 就更新了n次.
而且能耗低
激活函数很重要
多数激活函数会把值压缩到 (-1, 1), 乘很多层会消失. RuLU 不会消失
ReLU 有类神经元特性: 刺激越大, 反映越大
会改变的 Learning Rate
![[可变参数]](/2018/09/05/笔记-李宏毅的模型训练技巧/李宏毅的模型训练技巧14-sqd.jpg)
![[]](/2018/09/05/笔记-李宏毅的模型训练技巧/李宏毅的模型训练技巧下午8.55.54-squashed-sqd.jpg)
梯度越小, 学习率越大. 后面那个要减的数就不会很小
水平方向大胆走, 垂直方面要防止走过
![[惯性图示]](/2018/09/05/笔记-李宏毅的模型训练技巧/李宏毅的模型训练技巧15-sqd.jpg)
![[惯性公式]](/2018/09/05/笔记-李宏毅的模型训练技巧/李宏毅的模型训练技巧下午9.03.49-squashed-sqd.jpg)
上图是引入惯性: 下降的数值 = 梯度x学习率 + 惯性
所以直接无脑用 Adam
增加数据
旋转平移加不同程度的噪音, 增加数据量, 对解决识图的过拟合有用
避免过拟合
Early Stopping,
学习半途而废,
多背书不如临时发挥
Weight Decay
去掉没用的连接
如图像边角的背景, 没用的像素, 权重可以降低
每次乘 0.99, 如果这个权重真的很低, 那么最终会变极小
Dropout
训练不用全部的神经元, 测试用全部的神经元
会造成: train accu 很低, 但是网络性能看得是 test accu
等于训练时简化了训练网络, 每个神经元变得更强
但是测试的全部都用, 所以测试的时候要乘 (1- p) 来削弱每个神经元
![[]](/2018/09/05/笔记-李宏毅的模型训练技巧/李宏毅的模型训练技巧20-sqd.jpg)
每一组训练的是不同的网络, 乘(1 - p) 就是对好几个网络的平均整合
Network Structure
现有模型太垃圾, 别优化了, 自主设计吧
总结
请无脑并用以上所有招数
老师讲的非常直观易懂, 但是诚实的讲, 初学者的我在实际中就又是另一个故事了. (误