我想知道有哪些有用的技术可以检查神经网络的实现是否正常工作。
以下是我知道的一些检查,我有兴趣了解更多:
- 在训练/测试/有效集上针对批次或时期数绘制一些指标(F1 分数、准确性、一些成本等)。
- 查看跨时代矩阵权重的演变。
- 在多层的情况下,删除一些层,看看它是否仍然学到一些东西。
- 在一些它应该能够学习的数据集上使用网络(尽管我不知道有任何好的参考数据集列表来测试神经网络实现,这将是一个有价值的资源,比在文献中寻找参考点更快.)
- 执行梯度检查。
- 检查渐变是否爆炸或消失。
一些图例说明了先前的检查:
- 绘制 train/test/valid set vs epoch number:
好(虽然很快过拟合,但至少网络能够学习):
坏的:
- 查看跨时代矩阵权重的演变:
纪元 0:
50 纪元:
很难说权重矩阵的变化是好是坏(不看成本),但至少大部分都发生了变化,并且没有卡在0。