不少关于深度学习(神经网络)的想法已经存在了数十年,为什么现在才火起来呢?
有两个最主要因素在推动着近期的发展:
- 数据可用性 (data availability): 如今人们在数字设备(笔记本电脑、移动设备等)上花费的时间越来越多,数字化活动产生了海量的数据,而这些数据都可以提供给我们的学习算法用来训练。
- 计算规模 (computational scale): 直到近些年前,我们才开始能够利用现有的海量数据集来训练规模足够大的神经网络。
具体而言,即便你积累了更多的数据,但应用在类似于对数几率回归 (logistic regression) 这样的旧学习算法上,其性能 (performance) 也将趋于“平稳”。这意味着算法的学习曲线将“变得平缓”,即使提供更多的数据,算法的性能也将停止提升:
旧的学习算法似乎并不能很好地处理如今这个规模量级的数据。
如果你在相同的监督学习任务上训练出一个小型的神经网络 (neutral network, NN),则可能会获得较好的性能表现:
该图显示的是小数据集上应用神经网络的效果会更好,但不同于在大数据中的性能比较,这种效果在小数据上并不总是一致的。在小数据集中,取决于人们如何进行特征工程,传统算法也可能会表现得更好。例如,假设你只有20个训练样本,那么使用对数几率回归还是神经网络可能无关紧要;此时手工设计的特征选择将比算法的选择有更大的影响。但如果你有100万个样本数据,我会青睐使用神经网络。
这里的“小型神经网络”指的是只含有少量的隐藏元/层数/参数的神经网络。但如果你训练的神经网络规模越来越大,将能够获得甚至更好的性能:
因此 (i) 训练非常大型的神经网络使得性能曲线落在上图绿色曲线上方;(ii) 拥有海量的数据 将使你获得最佳的性能。
许多其它的细节也同等重要,例如神经网络的架构 (这其中已经有很多创新的方法)。但就目前来说,提升算法性能的更加可靠的方式仍然是训练更大的网络和获取更多的数据。
完成 (i) 和 (ii) 的过程异常复杂,本书将对其中的细节作进一步的讨论。我们将从对传统学习算法与神经网络中都起作用的通用策略入手,循序渐进地学习最前沿的构建深度学习系统的策略。