之前神经网络火过一段时间,但是后来又淡出了,后来又火了,尤其是到2012年真的像发水一样。
之前为什么不火了呢,因为人们发现网络浅了吧,没什么优势。网络深了吧,又会出现vanishing gradient,无法训练。
看文章也没看到有特别提到为什么现在又能训练了。
调研了一下,是因为几个原因吧。
1. 现在的网络中的激活函数变了,由原来的sigmoid变成了relu,这个从relu的分布来看,限制了误差的无限变化。
2. 计算资源变好了。原来的计算资源比较差,训练的话不能一点点调,但是学习率设置大了,会影响收敛的。现在有了GPU和高速的CPU了,可以很小的learning rate开始训练,不停的迭代,也是现实的。
3. dropout的使用。这个防止了过拟合。
lstm我觉得就是利用了类似于第一点的特性吧。通过增加lstm这个环节,让rnn的误差不至于vanishing gradient.
其实我还是没弄明白vanishing gradient的克服问题。我好像陷入了一个死胡同了,老想用理论来理解这个问题,但是出现这个问题的理论是显而易见的,可是克服这个问题的这些解决办法,好像都没有很好的理论基础吧。虽然RELU从一定程度上克服了这个问题,但是当层数很深时,还是会出现这个问题的,所以he kaiming灯提出了一种PRELU,可以训练更深的网络。
而至于LSTM,增加了各种门,但是我其实没看到哪里从理论上保证了是克服这个问题的,这个需要再看看。