Tips for Deep Learning
针对training set和testing set上的performance分别提出针对性的解决方法
- 在training set上准确率不高: new activation function:ReLU、Maxout adaptive learning rate:Adagrad、RMSProp、Momentum、Adam
- 在testing set上准确率不高:Early Stopping、Regularization or Dropout
1,training set上准确率不高的解决方案-New activation function
1,梯度消失和梯度爆炸
第一种解释:
参考:
https://blog.csdn.net/baidu_29782299/article/details/52742773
https://www.cnblogs.com/xxlad/p/11283104.html
当network很深的时候,在靠近input的地方,这些参数的gradient(即对最后loss function的微分)是比较小的;而在比较靠近output的地方,它对loss的微分值会是比较大的.为什么会这样呢? 因为在靠近输入层时,根据反向传播,梯度的计算是一直相乘的,靠近output的梯度相乘的数比较少.
因此当你设定同样learning rate的时候,靠近input的地方,它参数的update是很慢的;而靠近output的地方,它参数的update是比较快的
所以在靠近input的地方,参数几乎还是random的时候(没来得及更新),output就已经根据这些random的结果找到了一个local minima,然后就converge(收敛)了
这个时候你会发现,参数的loss下降的速度变得很慢,你就会觉得gradient已经接近于0了,于是把程序停掉了,由于这个converge,是几乎base on random的参数,所以model的参数并没有被训练充分,那在training data上得到的结果肯定是很差的.
第二种解释: