转自 吴恩达deeplearningai
机器学习(machine learning)是无数重要应用的基础,其包含网络搜索、垃圾邮件检测、语音识别以及产品推荐等内容。假如你和你的团队正在研发一项机器学习应用,并且想要取得较为快速的进展,本书的一些内容将会有所帮助。
假设你正在建立一家初创公司,该公司将为猫咪爱好者们提供不计其数的猫咪图片。与此同时,你决定使用神经网络(neural network)技术来构建一套计算机视觉系统,用来识别图片中的猫。
你的团队有许多的改进方案,例如:
-
获取更多的数据,即收集更多猫的图片
-
收集更加多样化的训练数据集,比如处于不常见位置的猫的图片,颜色奇异的猫的图片,以及使用不同相机参数拍摄的猫的图片
-
通过增加梯度下降(gradient descent)的迭代次数,使算法训练得久一些
-
尝试一个拥有更多层(layer)/更多隐藏元(hidden units)/更多参数(parameters)的,规模更大的神经网络
-
尝试加入正则化(例如 L2 正则化)
-
改变神经网络的架构(激活函数,隐藏元数量等等)
-
...
如果你能够在以上可能的方向中做出正确的选择,那么你将建立起一个领先的猫咪图片识别平台,并带领你的公司获得成功。但如果你选择了一个糟糕的方向,则可能因此浪费掉几个月甚至数年的开发时间。
监督学习(supervised learning)是指使用已标记(labeled)的训练样本 来学习一个从 映射到 的函数。监督学习算法主要包括线性回归(linear regression)、对数几率回归(logistic regression,又译作逻辑回归)和神经网络(neural network)。虽然机器学习的形式有许多种,但当前具备实用价值的大部分机器学习算法都来自于监督学习。
我将经常提及神经网络(和“深度学习”中所提到的一致),但你只需对此有基础的了解就可以阅读后面的内容。
如果对上文提到的一些概念你还不是很熟悉,可以在 Coursera 观看《机器学习》前三周的课程内容。(课程地址:http://ml-class.org)
不少关于深度学习(神经网络)的想法已经存在了数十年,而这些想法为什么现在才流行起来了呢?
有两个主要因素推动着近期的发展:
-
数据可用性(data availability):如今人们在数字设备(笔记本电脑、移动设备等)上花费的时间越来越多,数字化行为与活动产生了海量的数据,而这些数据都可以提供给我们的学习算法用来训练。
-
计算规模(computational scale):在近些年前,我们才开始能够使用现有的海量数据集来训练规模足够大的神经网络。
具体而言,即使你积累了更多的数据,但应用在类似于对数几率回归(logistic regression)这样的旧学习算法上,其性能表现(performance)也将趋于”平稳“。这意味着算法的学习曲线将”变得平缓“,即使提供更多的数据,算法的性能也将停止提升。
旧的学习算法似乎并不知道要如何来处理如今这个规模量级的数据。
如果你在相同的监督学习任务上选择训练出一个小型的神经网络(neutral network, NN),则可能会获得较好的性能表现.
因此,为了获得最佳的性能表现,你可以这样做:
(i) 训练大型的神经网络,效果如同上图的绿色曲线;
(ii) 拥有海量的数据。
在算法训练时,许多其它的细节也同等重要,例如神经网络的架构。但目前来说,提升算法性能的更加可靠的方法仍然是训练更大的网络以及获取更多的数据。
完成 (i) 和 (ii) 的过程异常复杂,本书将对其中的细节作进一步的讨论。我们将从传统学习算法与神经网络中都起作用的通用策略入手,循序渐进地讲解至最前沿的构建深度学习系统的策略。