深度学习(神经网络)的很多想法已经存在几十年了,为什么这些想法现在才流行起来?
促使机器学习进来的进步的两大因素是:
- 可得到的数据。现在,人们会花费更多的时间在数字设备上(例如笔记本,手机)。人们的数字行为产生了大量的数据,而这些数据可以用来训练我们的学习算法。
- 计算的规模。 也就是在近几年,我们才有计算能力训练足够大的神经网络,这种足够大的网络能利用我们拥有的巨大的数据集。
具体来说,即使你积累了更多数据,把这些数据用于训练旧的学习算法(例如逻辑回归),这些算法仍然表现平平。即旧的学习算法的学习曲线是“平坦”的,即使你给它更多数据,它仍然停止增长。
这种情况就像旧算法不知道如何处理我们现在拥有的数据似的。
对于同样的监督学习任务,如果我们训练一个小的神经网络,将会得到一个稍微好点的结果:
这里,小的神经网络是指神经网络的隐藏单元/层/参数较小。如果你训练越来越大的神经网络,你将会得到越来越好的结果[注释1]。
因此,当有(i)训练一个非常大的网络(训练过程会遵循上图中的绿色曲线);(ii)拥有大规模数据 这两个条件满足时,你将得到最好的表现。
还有一些其他的细节,例如神经网路的结构也很重要,并且在这个领域中有很多创新工作的提出。但目前来说,提高网络表现性能的相对可靠地方法就是(i)训练更大的网络(ii)收集更多数据。
满足条件(i)和(ii)的过程是相当复杂的,本书将详细讨论如何完成这项工作的细节。首先,我们将从既能用于传统学习算法又能用于神经网络的通用策略开始,然后讲述构建深度学习系统的最现代的策略。
[注释1]: 下图表示神经网络在小规模数据中表现挺好。但这种好的程度,不如神经网络在大规模数据中的表现好的程度(可以看出随着数据规模增大,Large NN倾斜越大)。在小规模数据中,传统算法表现的好与不好取决于如何手工设计特征。例如,如果你有20个训练样例,选择逻辑回归还是神经网络并不重要,手工设计特征将比选择算法对结果影响更大。但是如果有100万样例,还是选择神经网络把。