前面在深度学习介绍的最后有留下一个疑问。我们为什么要deep learning。 我们说,变深了,参数增多,model变复杂,performance变好,是很正常的。 所以,真正要比较一个深度model和一个shallow(浅层) model的时候,你要调整两个model,让他们的参数是一样多的。这样才有说服力。很多人在比较deep 和shallow model 的时候,没有注意到这件事,这样对比是不公平的。你要让两者的参数一样多,这样才公平,这种情况下shallow的model就是一个矮胖的model,deep的model就会是一个高瘦的model。接下来的问题就是,在这个公平的评比之下,shallow比较强还是deep比较强呢? 所以,刚才的实验结果是有后半段的。后半段的实验结果是这样的,用5层,每层2K个神经元得到的error是17.2%。另外,用1层,3772个神经元得到的error是22.5%,为什么是3772个神经元呢?因为这样这两个网络的参数是接近的。我们发现1层的error比较大。 同样,7层每层2K个神经元和1层4634个神经元,他们的参数是接近的。发现1层的也是比较差的。 甚至,增加参数变成1层但是有16K个神经元,error也只是从22.6变到22.1而已。 当用一层非常非常宽的网络(参数多),跟只有2层每层2K个神经元的网络(参数少)相比,效果还不如后者。
在很多人的想象里面,deep learning就是一个暴力碾压的方法,我弄一个很大很大的model,然后collect一大堆的data,所以就得到了一个比较好的performance,它就是一个暴力的方法。实际上,你会发现不是这样子。如果你今天只是单纯地增加参数,你是让网络长宽而不是长高的话,其实对performance的帮助是比较小的。把网络长高对performance很有帮助,把网络长宽帮助没有那么好。
---------------------------------------------------------------------------------------------------------------------------- 为什么会这样呢? 我们可以想象说,当我们在做deep learning的时候,其实我们是在做模块化这件事情。什么意思呢,大家应该都会写程序,写程序的时候不能把所有的代码都写在一个函数里面,而是 |
为什么要做深度学习而不是宽度学习?
最新推荐文章于 2024-05-15 20:27:01 发布