23 AI说(AI-Speak):深度神经网络
机器学习走向深度
人类的知识广泛多变,本质上难以捕捉。正如乔姆斯基所说,人类的大脑之所以能够吸收和处理知识,是因为它是一个“极为高效甚至优雅的系统,只需要少量的信息即可运作;它寻求的不是推断数据点之间的粗暴关联(brute correlations),而是创造解释1。”
机器学习是通过在大量数据中找到模式来实现这一点。但在此之前,专家和程序员必须坐下来编写与当前问题相关的数据特征,并将这些特征作为“参数”2,3输入给机器。正如我们之前所见,系统的性能在很大程度上取决于数据和参数的质量,而数据和参数的质量并不总是可以直接确定。
深度神经网络或深度学习是机器学习的一个分支,旨在通过以下方式克服这一问题:
- 在训练阶段从数据中提取其自身的参数;
- 使用多层来构建参数之间的关系,从最外层的简单表示逐渐过渡到更复杂和抽象的表示。这使得它能够比传统的机器学习算法更好地完成某些事2。
大多数强大的机器学习应用越来越多地使用深度学习。其中包括我们在本书中介绍的搜索引擎、推荐系统、语音转录和翻译。可以毫不夸张地说,深度学习推动了人工智能在多项任务中的成功。

“深度”指的是层次如何堆叠在彼此之上去创建网络。“神经”反映了设计的某些方面受到生物大脑的启发。尽管如此,它们为我们自己的思维过程提供了一些见解,但这些都是严格的数学模型,与任何生物部分或过程都不相似2。
深度学习的基础
当人类看照片时,我们会自动识别出对象和面孔。但对于算法来说,照片只是像素的集合。从混乱的颜色和亮度到人脸识别,这是一个过于复杂而难以执行的转变。
深度学习通过将过程分解为第一层中的简单表示来实现这一点——例如,通过对比相邻像素的亮度来记录图像各个区域中边缘的存在或缺失。第二层采用边缘集合来搜索更复杂的实体——例如角和轮廓,忽略边缘位置的微小变化2,3。第三层利用轮廓和角来寻找部分对象。慢慢地,复杂性逐渐提升,直到最后一层能够足够好地组合不同的部分以识别面孔或识别对象。

在每一层中,并不是由程序员来指定需要考虑什么,而是在训练过程中从数据中学习得到的3。通过将这些预测与训练数据集中的实际输出进行对比测试,以略微不同的方式调整每一层的功能,从而每次能获得更好的结果。如果一切运行正确,并且有足够的高质量数据,网络应该发展成能忽略照片中不相关的部分,例如实体的具体位置、角度和光线,并将那些使实体能被识别出的部分归零。
值得注意的是,尽管我们使用边缘和轮廓来理解过程,但实际上在每层中展现的却是一组数字,这些数字可能与我们理解的事物相对应,也可能不对应。不变的是抽象性和复杂性的增加。
网络设计
一旦程序员决定使用深度学习来处理任务并准备数据,他们必须设计所谓的神经网络架构。他们必须选择层数(网络的深度)和每层的参数数量(网络的宽度)。接下来,他们必须决定如何在层与层之间建立连接——是否将每一层的每个单元都与前一层的每个单元相连接。
通过实验通常可以找到给定任务的理想架构。层数越多,每层需要的参数就越少,网络在处理一般数据时表现得更好,但优化起来就更困难。连接较少意味着参数较少、计算量也较少,但同时也减少了网络的灵活性2。
网络训练
让我们以一个进行监督学习的前馈神经网络为例。在这里,信息从一层向更深的层前进,没有循环的反馈。对于所有机器学习技术来说,目标在于找出输入与输出之间的连接——哪些参数结合在一起,以及它们如何结合在一起以产生观察到的结果。我们假设一个连接输入x与输出y的关系f,然后使用网络找到一组参数θ,这些参数为预测输出和实际输出提供最佳匹配。
关键问题:预测的y=f (x, θ),对于哪个θ?
这里y的预测是最终产品,数据集x是输入。在面部识别中,x通常是图像中的像素集,y可以是人的名字。在网络中,各层就像装配线上的工人,每个工人处理给定的任务并将其传递给下一个工人。在装配线上,第一个“工人”接收输入并进行略微转换,然后交给第二个。第二个继续做同样的事情后传递给第三个,依此类推,直到输入被转换为最终产品。
在数学上,函数f被分解为许多函数f1, f2, f3… 其中f= ….f3(f2(f1(x)))。靠近输入的层使用f1进行计算转换输入参数,下一层使用f2计算,依此类推。在这过程中,程序员可能会介入,根据他们对问题的了解程度来帮助选择正确的函数族。

每一层的工作是对重要性的等级进行分配——赋予其接收的每个参数的权重。这些权重就像最终定义该层中预测输出和输入之间的关系的旋钮3。在典型的深度学习系统中,我们正在研究数亿个这样的旋钮和数亿个训练示例。由于我们既没有定义也无法在输入和输出之间的层中看到输出和权重,这些也因此被称为隐藏层。
在上面讨论的对象识别示例中,第一个工人的工作是检测边缘并将其传递给第二个工人,后者检测轮廓等等。
在训练过程中,将预测输出与实际输出进行比较。如果两者之间有很大差异,则必须大幅更改每一层分配的权重。如果没有较大差异,则只需要进行略微的更改。这项工作分为两部分。首先是计算预测和输出之间的差异。然后,另一个算法计算如何更改每一层的权重,由输出层开始,在这种情况下,信息从更深的层向后流动。因此,在训练过程结束时,网络已经准备好了其权重和函数来处理测试数据。其余的过程与传统机器学习相同。

1Chomsky, N., Roberts, I., Watumull, J., Noam Chomsky: The False Promise of ChatGPT, The New York Times, 2023.
2Goodfellow, I.J., Bengio, Y., Courville, A., Deep Learning, MIT Press, 2016.
3LeCun, Y., Bengio, Y., Hinton, G., Deep learning, Nature 521 521, 436–444 (2015).