深度学习如何调参
调参就是trial-and-error. 没有其他捷径可以走. 唯一的区别是有些人盲目的尝试, 有些人思考后再尝试. 快速尝试, 快速纠错这是调参的关键.
首先说下可视化:
我个人的理解, 对于可视化, 更多的还是帮助人类以自己熟悉的方式来观察网络. 因为, 你是不可能边观察网络, 还边调参的. 你只是训练完成后(或者准确率到达一个阶段后), 才能可视化. 在这之前, 网络没有学习到良好的参数, 你可视化了也没意义, 网络达到不错的准确率了, 你看看其实也就听个响. 同样, 你的网络训练的一塌糊涂, 你可视化也没什么意义, 唯一能够看到的就是中间结果乱七八糟, 或者全黑全白, 这时候你直接看最后准确率就可以知道这网络没救了.
关于权重的可视化[ Visualize Layer Weights](现在是否强求smooth其实意义不大, 这个后面说.):
同样, 你看到一个不满足平滑结果的图像, 你知道, 这网络训练的不好, 但是为什么呢? 是数据不好? 没有预处理? 网络结构问题? Learning Rate太大或者太小? 或者就是差了一个LRN层(之前我就遇到, 加个LRN就能出smooth的weights, 当然这其实和预处理有关)?
smooth的作用在loss function中的主要目的是把loss function变成continuous differerntiable function(连续可微分函数),从而在optimization(优化)
LRN全称为Local Response Normalization
即局部响应归一化层,LRN函数类似Dropout,是一种防止过拟合的方法。这个函数很少使用,基本上被类似Dropout这样的方法取代。
Dropout叫作随机失活
简单来说就是在模型训练阶段的前向传播过程中,让某些神经元的激活值以一定的概率停止工作,这样可以使模型的泛化性更强。