你知道深度学习为什么叫做深度学习吗?
这是一篇单纯的推送,今天我们单纯来聊一聊深度学习这个名字。
深度学习的复苏,可以从2012算起,那一年,深度学习网络AlexNet横空出世,在ImageNet竞赛中取得了冠军,到了2016年,Alpha Go的胜利将深度学习推到了我们每一个人的面前。
但是,今天脍炙人口的深度学习,其实,从学习方式上来说,和存在了几十年的神经网络并没有什么区别。
所以,到底为什么神经网络突然就变成了深度学习?
well,用吴恩达的话来说,深度学习是神经网络的一种re-branding,这个名字,至少听上去,很有……深度……
wow, deep learning, it sounds so deep……
那么,深度学习的本质变了吗?
没有,变的只是数据量和计算力。
Like it or not, 目前在复杂的任务中达到人类水平的学习算法,与上世纪80年代努力解决玩具问题(toy example)的学习算法几乎是一样的。
这可不是我瞎掰,这是AI圣经花书里的原话。
AI圣经 —— “花书”
真正变革的,是我们有了这些算法得以成功训练所需的资源 —— 数据量和计算力。
然而,深度就一定那么好?
不一定。
这个问题可以从两方面来看,第一,一味的增加网络的深度是不好的。太深的网络不好训练!太深的网络不好训练!太深的网络不好训练!
第二,一定要追究起来,其实网络的深度和宽度都是好的,这个道理非常简单,一个机器学习模型,模型的复杂度越高,(理论上)模型的学习能力就越强。这就好比说,使用更多的变量,你就能表达出更复杂的公式。从这个角度出发,一个神经网络无论是变的更深了,还是更宽了,模型的复杂度都是提升了。
这是很自然的一种想法,所以在深度学习的发展过程中,也出现了这样两种风格的经典网络。
一种看上去很深,比如网络层数达到了152层的ResNet:
看上去很深的ResNet
还有一种看上去很胖(很宽),比如使用了Inception模块的Inception网络家族。
变宽了的Inception模块
这都是好用的网络结构,甚至还有结合了两者之大成的网络:Inception-ResNet。
这样一种听上去就很复杂的网络的结构确实……也很庞大,这里就不放出来了。
当然,这样一种深度和宽度的拓展,所要用到的计算资源也是杠杠的。
而在资源有限的情况下,深度比宽度更好,这就涉及到了直击深度的灵魂问题 ——
深度到底是在做什么
学习!一种随着网络层的深入而进行的学习。这种学习有个专业术语叫做特征学习,或者表示学习。
《深度学习》一书中关于网络学习的例子
一个深度学习网络有很多层,当我们将一张图像送进网络,首先在最底层,好像我们看到的是像素一类的东西,一层层往上,网络层“看到了”边缘、轮廓、部件等等,网络的深度,带来的是逐层抽象的能力,所以有了深度的网络有了学习的能力,和宽度所带来的比较单纯的计算力的上升,深度当然是更符合学习型模型的结构。
当然这只是一个示意,实际情况下神经网络的分层是比较模糊的,而中间网络层的输出还是相对比较抽象的概念,很难说清楚哪一些网络层就”看到了“什么特征。但是总体上当我们逐渐往上的时候,网络确实是不断在对对象进行抽象。而这是宽度所不能够带来的能力。所以,我们有深度学习,而不是宽度学习。