规模促进机器学习的发展
深度学习(神经网络)的很多思想已经提出快几十年了,为什么这些东西现在突然火了呢?
促进近年来巨大进步的最大的驱动因素有两个:
- 大量可用的数据。现在人们会花更多的时间在数字设备上(比如笔记本/手机等),他们在数字设备上的操作会产生大量可供学习算法使用的数据。
- 计算尺度。仅仅在几年前我们才刚开始能训练足够大的神经网络,以利用我们拥有的大量数据。
详细来说,即使你积累再多的数据,通常原有古老的学习算法(比如logistic回归)的性能也会出现“高原效应(plateaus)”。这意味带着即使你提供再多的数据,算法的学习曲线也会平坦,算法的效果不会再提高。
这就好像这些传统算法并不知道该如何处理我们的全部数据。
如果你对同样的监督学习问题训练一个小型的神经网络,你会获得略好的结果。
这里,小型神经网络(small NN)我们指只有少量隐层神经元/层/参数的网络。最后,如果你训练一个更大的神经网络,你能获得甚至更好的效果。
因此,如果你想获得更好的学习效果,你需要(I)训练更大的神经网络,使其在绿色曲线上方;(II)使用大量数据。
在训练效果更好的神经网络过程中,很多其他因素,包括神经网络的架构,也非常重要,本书也会详细讨论这些细节。但是最可靠的方法仍然是(I)训练更大的神经网络;(II)获取更多的数据。
如何完成(I)和(II)是非常复杂的,这本书将会充分的讨论这些细节。我们会从对传统学习算法和神经网络都有用的通用策略开始,逐步构建最先进的深度学习体系。
这个图表说明了NN在小数据集下也会做的更好(横轴前半部分)。这和NN在大数据集中表现优秀并不是一回事。在小数据集中,传统算法可能做得更好,也可能不会做得更好,这依赖于人工设计的特征。例如,如果你只有20个训练样本,那么你使用logistic regression 或使用neural network可能没有多大区别;人工设计的特征将会比算法的选择产生更大的影响。但是如果你拥有一百万的数据量,我更倾向于使用神经网络。
自己的一点想法
- 数据之中包含信息(这里可以理解为知识),而每种学习算法都有其容量,能承载的信息量(知识)有限。
- 深度神经网络是一种有很大数据承载能力的学习算法。
- 容量可以从学习参数的自由度这个角度理解,比如同样是多项式拟合,三阶多项式显然能表达的形态比二阶多项式丰富,当然容量肯定不能简单的理解为参数自由度。
- 以后如果谁提出了完备的神经网络容量度量方式,那将是深度学习领域重大的理论突破。
- 对神经网络而言,不仅有容量度量,还有其结构决定的固有特性。