7.3 深度学习与神经网络
深度学习¶
深度学习是机器学习的一个特定子领域:一种从数据中学习表示的新方法,它强调学习有意义的连续层次的表示。
"深度"在"深度学习"中并不是指该方法实现了更深层次的理解;相反,它代表了逐渐学习连续层次的表示的想法。模型中有多少层贡献到数据的模型中被称为模型的深度。该领域的其他合适名称可能是分层表示学习或层次化表示学习。现代深度学习通常涉及到数十甚至数百个连续的表示层,它们都是通过暴露于训练数据而自动学习的。
在深度学习中,这些分层表示是通过称为神经网络的模型学习的,这些模型被组织成逐层堆叠在一起的字面上的层次结构。
术语"神经网络"是指神经生物学,但尽管深度学习的一些核心概念部分是受到我们对大脑的理解(尤其是视觉皮层)的启发而发展的,但深度学习模型并不是大脑的模型。没有证据表明大脑实现了任何类似于现代深度学习模型中使用的学习机制。你可能会遇到一些普及科学文章声称深度学习就像大脑一样工作或者是大脑的模型,但事实并非如此。让初学者误以为深度学习与神经生物学有任何关联会很令人困惑且适得其反;你不需要将深度学习包装成与我们的思维方式"一模一样"的神秘事物,你也可以忘记你可能读到的有关深度学习与生物学之间假想联系的任何东西。
在我们这里,深度学习是一个从数据中学习表示的数学框架。

深度学习算法学习到的表示是什么样子的呢?让我们来看一看一个几层深的网络(见上图)是如何将一个数字的图像转换为识别它是什么数字的。
正如您在图下中所看到的,网络将数字图像转换为与原始图像越来越不同的表示,并且越来越能提供有关最终结果的信息。您可以将深度网络看作是一个多阶段的信息提取过程,在这个过程中,信息经过连续的过滤器,变得越来越纯净。

因此,从技术上讲,这就是深度学习:一种学习数据表示的多阶段方法。这是一个简单的想法——但事实证明,足够大规模的简单机制最终可能看起来像魔术一样。
神经网络¶
神经网络(Neural Network,NN)既可以用于回归,也可以用于分类,但在实际应用中常用于分类。基于神经网络的深度学习因在图像识别和语音识别等领域表现优异而广为人知。

图 神经网络的典型网络结构
神经网络在输入数据和输出结果之间插入了叫作中间层的层,能够学习复杂的决策边界。它既可以用于回归,也可以用于分类,但主要还是应用于分类问题。本 节也以分类问题为例进行说明。

图 MNIST 手写数字数据示例
本次创建的神经网络如图所示,图中省略了各个节点之间的连接线。

图 MNIST神经网络构建
输入层表示输入图像(64 维向量)本身。如果将各个点的像素值存储在长度为 64 的一维数组的元 素中,则可以将其视为 64 维数据来处理。下面通过神经网络来学习使用上述方法得到的 64 维数据。 中间层使用 Sigmoid 等非线性函数计算输入层传来的数据。中间层的维度是超参数。使维度变 大可以学习更加复杂的边界,但是容易发生过拟合。本次设置中间层为 16 维。下面的“算法说明” 部分将再次介绍中间层的计算方法、中间层的维度和学习结果的关系。 输出层也同样使用非线性函数计算中间层传来的数据。本次任务是对 0 ~ 9 这 10 个数字进行 分类。因此,输出层输出的是输入手写图像分别为 0 ~ 9 这 10 个数字的概率。 下面使用这个神经网络进行学习,并进行分类(图 4)。

图 使用神经网络进行分类
图中的 Label 代表作为正确答案的数字,Prediction 代表作为神经网络的分类结果的数字,下方的图像是输入数据。可以看出,神经网络可以正确地识别出这些手写数字。
参考¶
秋庭伸也,《图解机器学习算法》
Francois Chollet,Deep Learning with Python 2nd Edition