第 2 章 基础知识
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在第 1 章中,我描述了理解 Deep Learning 的主要概念构件:嵌套、连续、可微函数。我展示了如何将这些函数表示为计算图,图中的每个节点代表一个单一、简单的函数。特别是,我演示了这种表示法可以轻松计算嵌套函数的输出相对于输入的导数:我们只需求出所有组成函数的导数,在这些函数接收到的输入处评估这些导数,然后将所有结果相乘;由于链式法则,这将得出嵌套函数的正确导数。我用一些简单的例子说明了这一方法确实有效,这些函数将 NumPy 的ndarrays 作为输入,并将ndarrays 作为输出。
我的演示表明,即使函数接收多个ndarrays 作为输入,并通过矩阵乘法运算将它们组合 ,这种计算导数的方法也能奏效。与我们看到的其他运算不同,矩阵乘法运算会改变输入的形状。具体来说,如果该运算的一个输入(称作输入X)是一个 B × Nndarray ,而该运算的另一个输入(W)是一个 N × Mndarray ,那么其输出P就是一个 B × Mndarray 。虽然还不清楚这种运算的导数是什么,但我已经证明,当矩阵乘法ν(X,W)作为 "组成运算 "被包含在嵌套函数中时,我们仍然可以用一个简单的表达式代替它的导数来计算其输入的导数:具体来说,∂的作用是 可以由XT 代替,而 可以由WT 播放。
在本章中,我们将开始把这些概念转化为实际应用:
-
用这些构件表示线性回归
-
证明我们在第 1 章中进行的导数推理可以训练出这个线性回归模型
-
将此模型(仍使用我们的构建模块)扩展为单层神经网络
然后,在第 3 章中,将直接使用这些相同的构建模块来构建 Deep Learning 模型。
不过,在深入探讨这一切之前,让我们先来概述一下监督学习,这是机器学习的一个子集,在我们了解如何使用神经网络来解决问题时,我们将重点关注监督学习。
监督学习概述
在 的高层次上,机器学习可以被描述为构建 算法,该算法可以发现或 "学习 "数据中的关系;监督学习可以被描述为机器学习的子集,专门用于发现已经测量过的数据特征之间的关系。1
在本章中,我们将讨论一个在现实世界中可能遇到的典型的监督学习问题:寻找房屋特征与房屋价值之间的关系。显然,房间数量、面积或学校远近等特征与房屋的居住或拥有价值之间存在某种关系。从高层次上讲,监督学习的目的就是发现这些关系,因为我们已经测量了这些特征。
我所说的 "测量 "是指每个特征都经过精确定义,并用数字来表示。房屋的许多特征,如卧室数量、面积等,自然可以用数字来表示,但如果我们有其他不同类型的信息,如 TripAdvisor 提供的房屋周边环境的自然语言描述,这部分问题就不那么简单了,而如何将这些结构化程度较低的数据以合理的方式转换成数字,可能会影响我们发现关系的能力。此外,对于任何定义模糊的概念,例如房子的价值,我们只需选择一个数字来描述它;在这里,一个显而易见的选择就是使用房子的价格。2
一旦我们将 "特征 "转化为数字,就必须决定用什么结构来表示这些数字。在机器学习中,有一种结构几乎是通用的,而且计算起来也很容易,那就是将单个观测值的每组数字--例如,单个房屋--表示为一行数据,然后将这些行堆叠在一起,形成 "批次 "数据,这些数据将以二维ndarrays 的形式输入我们的模型。然后,我们的模型将以输出ndarrays 的形式返回预测结果,每个预测结果为一行,同样地,这些数据也是堆叠在一起的,批次中的每个观测值都有一个预测结果。 ...