下面要讲的是,如果已经在training data上得到够好的结果。但是在testing data上的结果依然不好,你有什么可行的方法? 会介绍三个方法:early stopping、Regularization和dropout。其中early stopping和Regularization是很typical的方法,他们不是特别为深度学习设计的方法,是很传统的经典的方法。而dropout呢,是一个蛮有deep learning特色的方法。
我们来讲一下early stopping. early stopping是什么意思呢?随着training,如果你的learning rate调的对的话,你的total loss通常会越来越小。但是如果你的learning rate没有设好,total loss变大也是有可能的。但理想上,learning rate调的很好的话,training data上的loss是会逐渐变小的。但是我们说,training set和testing set的分布并不完全一样。所以,有可能,当你的training 的loss逐渐减小的时候,你的testing data的loss反而上升了。这是有可能的。
所以,理想上,假如你知道Testing data的loss的变化,你应该停在不是Training set loss最小,而是testing data loss最小的地方。你在train的时候,不要一直train下去,而是train到箭头这个地方就停下来。
但是实际上,我们根本不知道testing data的error是什么。所以,我们其实会用Validation set来做这件事情。当validation set的error最小的时候,就停下来。
|