Tips for Deep Learning
DeepLearning上,Overfitting不是第一个遇到的问题,而是在training Set上根本无法给一个好的正确率
TestingSet上的performance才是真正的performance,此时结果不好以后才是真正的Overfitting.
而如果此时Testing结果不好,要重新返回TrainingSet.
参数update的次数。
有很多影响结果的因素:
TrainingSet performance 与 TestingSet上performance问题
###dropout for good results?
TrainingSet 上的性能不好
Network架构的设计
New activation function;
Sigmoid function
手写数字辨识上,Deeper usually does not imply better.
Overfitting要看test的结果,而不是trainset.
深不一定好的原因:
Vanishing Gradient 与Learning Slowdown Problem
Sigmoid function的特点。
Sigmoid Output的衰减
如何解决Sigmoid function的Learning Slowdown问题呢?
变换activation Function
ReLU function:
对于Output是0,对于整个Network都没有影响。
故将Output是0去掉时,整个Network是一个瘦长的的Linear Network.
但我们不希望我们的function是Linear的呀?
改变小linear,改变大非linear
但neural network的Loss要可微呀?
其中有关maxout network和ReLU是Maxout的特殊一类掠过。需要看过CNN再回头看。
Maxout
learningRate的调整
Adagrad、Momentum部分也略过,需要看完一开始助教那个补充材料才能看。
Recipe of Deep Learning
如果在trainingData上结果好了以后,但是在testing上结果不好,该怎么做呢?
Early Stopping
当参数调整的好的时候,Total Loss应该逐渐减小。
应该停在TestingSet的Loss最小的时候。但不知道testingSet的error在哪,故需要ValidationData。
跑一下400Epoch尝试一下:
testingSet
TrainSet
50Epoch
Testing Data
TrainingData:
感觉从图所示,考虑EarlyStop还是35比较好?
35Epoch
TestingData
TrainingData
DropOut
- 每一次update的时候,都需要重新做一次sample.
太难了,听不懂Over.