检查神经网络学习过程?
CS231n课程笔记翻译:神经网络笔记3(上) - 知乎 (zhihu.com)
奇怪的东西增加了?
- 梯度检查
- 合理性(Sanity)检查
- 检查学习过程
- 损失函数
- 训练集与验证集准确率
- 权重:更新比例
- 每层的激活数据与梯度分布
- 可视化
- 参数更新
- 一阶(随机梯度下降)方法,动量方法,Nesterov动量方法
- 学习率退火
- 二阶方法
- 逐参数适应学习率方法(Adagrad,RMSProp)
- 超参数调优
- 评价
- 模型集成
梯度检查
把解析梯度和数值计算梯度进行比较,需要注意:
使用中心化公式: 使用
使用相对误差来比较”:
- 相对误差>1e-2:通常就意味着梯度可能出错。
- 1e-2>相对误差>1e-4:要对这个值感到不舒服才行。
- 1e-4>相对误差:这个值的相对误差对于有不可导点的目标函数是OK的。但如果目标函数中没有kink(使用tanh和softmax),那么相对误差值还是太高。
- 1e-7或者更小:好结果
使用双精度
保持在浮点数的有效范围:例如,不要让绝对值小于1e-10。比较理想的是让绝对值在 1.0 的数量级上