所说的电子商务平台,如果它一直执行相同的业务逻辑,无论积累多少经验,都不会自动提高(直到开发人 员认识到并更新软件)。在这本书中,我们将带你开启机器学习之旅,并特别关注深度学习(deep learning L)的基础知识。深度学习是一套强大的技术,它可以推动计算机视觉、自然语言处理、医疗保健和基因组 学等不同领域的创新。 1.1日常生活中的机器学习 机器学习应用在日常生活的方方面面。现在,假设你正和本书的作者们一起,驱车去咖啡店。亚历山大拿起 部iPhone,.对它说道“HeySiri”-手机的语音识别系统主动唤醒了。接着,李沐对Siri说道“去星巴克咖啡 店”-语音识别系统自动触发语音转文字功能,并启动地图应用程序来满足我们的请求。地图应用程序在启动 后确定了若干条路线:每条路线都显示了预计的通行时间…由此可见,机器学习渗透在生活中的方方面面, 在短短几秒钟的时间里,我们与智能手机的日常互动就可以涉及几种机器学习模型。 现在,请你从基本原则出发,编写一个程序来响应一个“唤醒词”(比如“A1exa”、“小爱同学”和“Hey Si”)。试着用一台计算机和一个代码编辑器自己编写代码,如图1.11中所示。问题看似很难解决:麦克风 每秒钟将收集大约44000个样本,每个样本都是声波振幅的测量值。如何编写程序,令其输入原始音频片段, 我们也不知道如何从 ©)4一 唤醒词模型 →是,} 图11.1:识别唤醒词 通常.即使我们不知道如何明确地告诉计算机如何从输入映射到输出。我们的大脑仍然能够自己执行认知功 能。换句话说,即使你不知道如何编写计算机程序来识别“A1exa”这个词,你的大脑自己也能够识别它。有 了这一能力,我们就可以收集一个包含音频样本的巨大的数据集(dataset),并对包含和不包含唤醒词的样 本进行标记。通过机器学习算法,我们不需要设计一个“明确地”识别唤醒词的系统。相反,我们定义一个 灵活的程序算法,其输出由许多参数(Parameter)决定。然后我们使用数据集来确定当下的“最佳参数集 这些参数通过某种性能度量来获取完成任务的最佳性能。 那么到底什么是参数呢?你可以把参数看作是旋钮,我们可以转动旋钮来调整程序的行为。任一调整参数后 的程序,我们称为模型(modl)。通过操作参数而生成的所有不同程序(输入输出映射)的集合称为“模 型族”。使用数据集来选择参数的元程序被称为学习算法((learning algorithm)。 在我们开始用机器学习算法解决向题之前,我们必须精确地定义问题,确定输入(input)和输出(output) 的性质,并选择合适的模型族。在本例中,我们的模型接收一段音频作为输入,然后模型在{是,否}中生成 个选择作为输出。如果一切顺利,经过一番训练,模型对于“片段是否包含唤醒词”的预测通常是正确的。 现在我们的模型每次听到“Aexa”这个词时都会发出“是”的声音。由于这里的唤醒词是任意选择的自然语 言,因此我们可能需要一个足够丰富的模型族,使模型多元化。比如,模型族的另一个模型只在听到“Hy Sii”这个词时发出“是”。理想情况下,同一个模型族应该适合于“Alexa”识别和“Hey Siri”识别,因为 1.前言
所说的电⼦商务平台,如果它⼀直执⾏相同的业务逻辑,⽆论积累多少经验,都不会⾃动提⾼(直到开发⼈ 员认识到并更新软件)。在这本书中,我们将带你开启机器学习之旅,并特别关注深度学习(deep learning, DL)的基础知识。深度学习是⼀套强⼤的技术,它可以推动计算机视觉、⾃然语⾔处理、医疗保健和基因组 学等不同领域的创新。 1.1 ⽇常⽣活中的机器学习 机器学习应⽤在⽇常⽣活的⽅⽅⾯⾯。现在,假设你正和本书的作者们⼀起,驱⻋去咖啡店。亚历⼭⼤拿起 ⼀部iPhone,对它说道“Hey Siri”‒⼿机的语⾳识别系统主动唤醒了。接着,李沐对Siri说道“去星巴克咖啡 店”‒语⾳识别系统⾃动触发语⾳转⽂字功能,并启动地图应⽤程序来满⾜我们的请求。地图应⽤程序在启动 后确定了若⼲条路线:每条路线都显⽰了预计的通⾏时间……由此可⻅,机器学习渗透在⽣活中的⽅⽅⾯⾯, 在短短⼏秒钟的时间⾥,我们与智能⼿机的⽇常互动就可以涉及⼏种机器学习模型。 现在,请你从基本原则出发,编写⼀个程序来响应⼀个“唤醒词”(⽐如“Alexa”、“⼩爱同学”和“Hey Siri”)。试着⽤⼀台计算机和⼀个代码编辑器⾃⼰编写代码,如 图1.1.1中所⽰。问题看似很难解决:⻨克⻛ 每秒钟将收集⼤约44000个样本,每个样本都是声波振幅的测量值。如何编写程序,令其输⼊原始⾳频⽚段, 输出{是, 否}(表⽰该⽚段是否包含唤醒词)的可靠预测呢?如果你毫⽆头绪,别担⼼,我们也不知道如何从 头开始编写这个程序,这就是我们需要机器学习的原因。 图1.1.1: 识别唤醒词 通常,即使我们不知道如何明确地告诉计算机如何从输⼊映射到输出,我们的⼤脑仍然能够⾃⼰执⾏认知功 能。换句话说,即使你不知道如何编写计算机程序来识别“Alexa”这个词,你的⼤脑⾃⼰也能够识别它。有 了这⼀能⼒,我们就可以收集⼀个包含⾳频样本的巨⼤的数据集(dataset),并对包含和不包含唤醒词的样 本进⾏标记。通过机器学习算法,我们不需要设计⼀个“明确地”识别唤醒词的系统。相反,我们定义⼀个 灵活的程序算法,其输出由许多参数(parameter)决定。然后我们使⽤数据集来确定当下的“最佳参数集”, 这些参数通过某种性能度量来获取完成任务的最佳性能。 那么到底什么是参数呢?你可以把参数看作是旋钮,我们可以转动旋钮来调整程序的⾏为。任⼀调整参数后 的程序,我们称为模型(model)。通过操作参数⽽⽣成的所有不同程序(输⼊-输出映射)的集合称为“模 型族”。使⽤数据集来选择参数的元程序被称为学习算法(learning algorithm)。 在我们开始⽤机器学习算法解决问题之前,我们必须精确地定义问题,确定输⼊(input)和输出(output) 的性质,并选择合适的模型族。在本例中,我们的模型接收⼀段⾳频作为输⼊,然后模型在{是, 否}中⽣成⼀ 个选择作为输出。如果⼀切顺利,经过⼀番训练,模型对于“⽚段是否包含唤醒词”的预测通常是正确的。 现在我们的模型每次听到“Alexa”这个词时都会发出“是”的声⾳。由于这⾥的唤醒词是任意选择的⾃然语 ⾔,因此我们可能需要⼀个⾜够丰富的模型族,使模型多元化。⽐如,模型族的另⼀个模型只在听到“Hey Siri”这个词时发出“是”。理想情况下,同⼀个模型族应该适合于“Alexa”识别和“Hey Siri”识别,因为 18 1. 前⾔
从直觉上看,它们似乎是相似的任务。然而,如果我们想处理完全不同的输入或输出,比如:从图像映射到 字幕,或从英语映射到中文,我们可能需要一个完全不同的模型族。 正如你可能猜到的,如果我们只是随机设置所有按钮(模型参数),我们的模型不太可能识别出“Aexa”、“He Sim”或任何其他单词。在机器学习中,学习(learning)是一个训练模型的过程。通过这个过程,我们可以 发现正确的参数集,从而使模型强制执行所需的行为。换句话说,我们用数据训练(红)我们的模型。如 图11.2所示,训练过程通常包含如下步骤: 1.从一个随机初始化参数的模型开始,这个模型基本毫不“智能”。 2.获取一些数据样本(例如,音频片段以及对应的是,否}标签)。 3.调整参数,使模型在这些样本中表现得更好。 4.重复第2步和第3步,直到模型在任务中的表现令你满意。 更新模型 设计一个模型 检查是否够好 图1.1.2:一个典型的训练过程 总而言之,我们没有编写唤醒词识别器,而是编写了一个“学习”程序。如果我们用一个巨大的带标签的数 据集,它很可能可以“学习”识别唤醒同。你可以将这种“通过用数据集来确定程序行为”的方法看作是“用 数据编程”(programming with data)。比如,我们可以通过向机器学习系统,提供许多猫和狗的图片来设计 一个“猫图检测器”。通过这种方式,检测器最终可以学会:如果输入是猫的图片就输出一个非常大的正数 如果输入是狗的图片就会得出一个非常大的负数。如果检测器不确定,它会输出接近于零的数这个例子 仅仅是机器学习常见应用的冰山一角。而深度学习是机器学习的一个主要分支,我们稍后将对其进行更详细 的解析。 1.2关键组件 首先,我们想让大家更清楚地了解一些核心组件。无论我们遇到什么类型的机器学习问题,这些组件都将伴 随我们左右: 1.我们可以学习的数据(data)。 2.如何转换数据的模型(model)。 3.一个目标函数(objective function),用来量化模型的有效性。 4.调整模型参数以优化目标函数的算法(algorithm)。 1.2.关键组件 19
从直觉上看,它们似乎是相似的任务。然⽽,如果我们想处理完全不同的输⼊或输出,⽐如:从图像映射到 字幕,或从英语映射到中⽂,我们可能需要⼀个完全不同的模型族。 正如你可能猜到的,如果我们只是随机设置所有按钮(模型参数),我们的模型不太可能识别出“Alexa”、“Hey Siri”或任何其他单词。在机器学习中,学习(learning)是⼀个训练模型的过程。通过这个过程,我们可以 发现正确的参数集,从⽽使模型强制执⾏所需的⾏为。换句话说,我们⽤数据训练(train)我们的模型。如 图1.1.2所⽰,训练过程通常包含如下步骤: 1. 从⼀个随机初始化参数的模型开始,这个模型基本毫不“智能”。 2. 获取⼀些数据样本(例如,⾳频⽚段以及对应的{是, 否}标签)。 3. 调整参数,使模型在这些样本中表现得更好。 4. 重复第2步和第3步,直到模型在任务中的表现令你满意。 图1.1.2: ⼀个典型的训练过程 总⽽⾔之,我们没有编写唤醒词识别器,⽽是编写了⼀个“学习”程序。如果我们⽤⼀个巨⼤的带标签的数 据集,它很可能可以“学习”识别唤醒词。你可以将这种“通过⽤数据集来确定程序⾏为”的⽅法看作是“⽤ 数据编程”(programming with data)。⽐如,我们可以通过向机器学习系统,提供许多猫和狗的图⽚来设计 ⼀个“猫图检测器”。通过这种⽅式,检测器最终可以学会:如果输⼊是猫的图⽚就输出⼀个⾮常⼤的正数, 如果输⼊是狗的图⽚就会得出⼀个⾮常⼤的负数。如果检测器不确定,它会输出接近于零的数……这个例⼦ 仅仅是机器学习常⻅应⽤的冰⼭⼀⻆。⽽深度学习是机器学习的⼀个主要分⽀,我们稍后将对其进⾏更详细 的解析。 1.2 关键组件 ⾸先,我们想让⼤家更清楚地了解⼀些核⼼组件。⽆论我们遇到什么类型的机器学习问题,这些组件都将伴 随我们左右: 1. 我们可以学习的数据(data)。 2. 如何转换数据的模型(model)。 3. ⼀个⽬标函数(objective function),⽤来量化模型的有效性。 4. 调整模型参数以优化⽬标函数的算法(algorithm)。 1.2. 关键组件 19
1.2.1数据 毋庸置疑,如果没有数据,那么数据科学毫无用武之地。每个数据集由一个个样本(exa ple,sample)组成 大多时候,它们遵循独立同分布(independently and identically distributed,ii.d,)。样本有时也叫做数据点 (data point)或者数据实例(data instance),通常每个样本由一组称为特征(features,.或协变量(covariates)》 的属性组成。机器学习模型会根据这些属性进行预测。在上面的监督学习问题中,要预测的是一个待殊的属 性,它被称为标签((Iabel,或目标(target), 假设我们处理的是图像数据,每一张单独的照片即为一个样本,它的特征由每个像素数值的有序列表表示。 比如,200×200彩色照片由200×200×3=120000个数值组成,其中的“3”对应于每个空间位置的红、绿、 蓝通道的强度。再比如,对于一组医疗数据,给定一组标准的特征(如年龄、生命体征和诊断),我们可能用 此数据尝试预测思者是否会存活。 当每个样本的特征类别数量都是相同的时候,其特征向量是固定长度的,这个长度被称为数据的维数 (dimensionality)。固定长度的特征向量是一个方使的属性,它有助于我们量化学习大最样本。 然而,并不是所有的数据都可以用“固定长度”的向量表示。以图像数据为例,如果它们全部来自标准显微 镜设备,那么“固定长度”是可取的;但是如果图像数据来自互联网,它们很难具有相同的分辨率或形状。这 时,我们可以考虑将图像裁剪成标准尺寸,但这种法很局限,有丢失信息的风险。此外,文本数据更不符 合“固定长度”的要求。比如,对于亚马逊等电子商务网站上的客户评论,有些文本数据很简短(比如“好 极了”),有些则长篇大论。与传统机器学习方法相比,深度学习的一个主要优势是可以处理不同长度的数据。 一般来说,我们拥有的数据越多,我们的工作就越容易。当我们有了更多的数据,我们通常可以训练出更强大 的模型.从而减少对预先设想假设的依赖。数据集的由小变大为现代深度学习的成功奠定基础。在没有大数 据集的情况下,许多令人兴奋的深度学习模型黯然失色。就算 一些深度学习模型在小数据集上能够工作,但 其效能并不比传统方法高。 请注意,仅仅拥有海量的数据是不够的,我们还需要正确的数据。如果数据中充满了错误,或者如果数据的 特征不能预测任务目标,那么模型很可能无效。有一句古语很好地反映了这个现象:“输入的是垃圾,输出的 也是垃圾。”(“Garbage in,garbage out..")此外,糟糕的预测性能甚至会加倍放大事态的严重性。在一些敏 感应用中,如预测性监管、简历筛选和用于贷款的风险模型,我们必须特别警锡垃圾数据带来的后果。一种 常风的问预来白不均衡的数据集比如在一个有关医疗的训练数据集中、某些人群没有样本表示。想象一下 假设你要训练一个皮肤癌识别模型,但它(在训练数据集中)从未“见过”黑色皮肤的人群,这个模型就会 顿时束手无策。 再比如,如果用“过去的招聘决策数据”来训练一个筛选简历的模型,那么机器学习模型可能会无意中捕捉 到历史残留的不公正,并将其自动化。然而,这一切都可能在不知情的情况下发生。因此,当数据不具有充 分代表性,甚至包含了一些社会偏见时,模型就很有可能有偏见。 6 1.前言
1.2.1 数据 ⽏庸置疑,如果没有数据,那么数据科学毫⽆⽤武之地。每个数据集由⼀个个样本(example, sample)组成, ⼤多时候,它们遵循独⽴同分布(independently and identically distributed, i.i.d.)。样本有时也叫做数据点 (data point)或者数据实例(data instance),通常每个样本由⼀组称为特征(features,或协变量(covariates)) 的属性组成。机器学习模型会根据这些属性进⾏预测。在上⾯的监督学习问题中,要预测的是⼀个特殊的属 性,它被称为标签(label,或⽬标(target))。 假设我们处理的是图像数据,每⼀张单独的照⽚即为⼀个样本,它的特征由每个像素数值的有序列表表⽰。 ⽐如,200 × 200彩⾊照⽚由200 × 200 × 3 = 120000个数值组成,其中的“3”对应于每个空间位置的红、绿、 蓝通道的强度。再⽐如,对于⼀组医疗数据,给定⼀组标准的特征(如年龄、⽣命体征和诊断),我们可能⽤ 此数据尝试预测患者是否会存活。 当每个样本的特征类别数量都是相同的时候,其特征向量是固定⻓度的,这个⻓度被称为数据的维数 (dimensionality)。固定⻓度的特征向量是⼀个⽅便的属性,它有助于我们量化学习⼤量样本。 然⽽,并不是所有的数据都可以⽤“固定⻓度”的向量表⽰。以图像数据为例,如果它们全部来⾃标准显微 镜设备,那么“固定⻓度”是可取的;但是如果图像数据来⾃互联⽹,它们很难具有相同的分辨率或形状。这 时,我们可以考虑将图像裁剪成标准尺⼨,但这种办法很局限,有丢失信息的⻛险。此外,⽂本数据更不符 合“固定⻓度”的要求。⽐如,对于亚⻢逊等电⼦商务⽹站上的客⼾评论,有些⽂本数据很简短(⽐如“好 极了”),有些则⻓篇⼤论。与传统机器学习⽅法相⽐,深度学习的⼀个主要优势是可以处理不同⻓度的数据。 ⼀般来说,我们拥有的数据越多,我们的⼯作就越容易。当我们有了更多的数据,我们通常可以训练出更强⼤ 的模型,从⽽减少对预先设想假设的依赖。数据集的由⼩变⼤为现代深度学习的成功奠定基础。在没有⼤数 据集的情况下,许多令⼈兴奋的深度学习模型黯然失⾊。就算⼀些深度学习模型在⼩数据集上能够⼯作,但 其效能并不⽐传统⽅法⾼。 请注意,仅仅拥有海量的数据是不够的,我们还需要正确的数据。如果数据中充满了错误,或者如果数据的 特征不能预测任务⽬标,那么模型很可能⽆效。有⼀句古语很好地反映了这个现象:“输⼊的是垃圾,输出的 也是垃圾。”(“Garbage in, garbage out.”)此外,糟糕的预测性能甚⾄会加倍放⼤事态的严重性。在⼀些敏 感应⽤中,如预测性监管、简历筛选和⽤于贷款的⻛险模型,我们必须特别警惕垃圾数据带来的后果。⼀种 常⻅的问题来⾃不均衡的数据集,⽐如在⼀个有关医疗的训练数据集中,某些⼈群没有样本表⽰。想象⼀下, 假设你要训练⼀个⽪肤癌识别模型,但它(在训练数据集中)从未“⻅过”⿊⾊⽪肤的⼈群,这个模型就会 顿时束⼿⽆策。 再⽐如,如果⽤“过去的招聘决策数据”来训练⼀个筛选简历的模型,那么机器学习模型可能会⽆意中捕捉 到历史残留的不公正,并将其⾃动化。然⽽,这⼀切都可能在不知情的情况下发⽣。因此,当数据不具有充 分代表性,甚⾄包含了⼀些社会偏⻅时,模型就很有可能有偏⻅。 20 1. 前⾔
1.2.2模型 大多数机器学习会涉及到数据的转换。比如,我们建立一个“摄取照片并预测笑脸”的系统。再比如,我们 摄取一组传感器读数,并预测读数的正常与异常程度。虽然简单的模型能够解决如上简单的问题,但本书中 关注的问预超出了经典方法的极限。深度学习与经典方法的区别主要在于:前者关注的功能强大的模型.这 些模型由神经网络错综复杂的交织在一起,包含层层数据转换,因此被称为深度学习(deep learning)。在 讨论深度模型的过程中,我们也将提及一些传统方法。 1.2.3目标函数 前面,我们将机器学习介绍为“从经验中学习”。这里所说的“学习”,是指自主提高模型完成某些任务的效 能。但是,什么才算真正的提高呢?在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在大多 数情况是“可优化”的,我们称之为目标函数(obje e fun ction)。我们通常定义一个目标函数,并希望优 化它到最低点。因为越低越好,所以这些函数有时被称为损失函数(loss function,或cost function)。但这 只是一个惯例,你也可以取一个新的函数,优化到它的最高点。这两个函数本质上是相同的,只是翻转一下 符号。 当任务在试图预测数值时,最常见的损失函数是平方误差(squared error),即预测值与实际值之差的平方 当试图解决分类问题时,最常见的目标函数是最小化错误率,即顶测与实际情况不符的样本比例。有些目标 函数(如平方误差)很容易被优化,有些目标(如错误率)由于不可微性或其他复杂性难以直接优化。在这 些情况下,通常会优化替代目标。 通常,损失函数是根据模型参数定义的,并取决于数据集。在一个数据集上,我们通过最小化总损失来学习 模型参数的最佳值。该数据集由一些为训练而收集的样本组成,称为训练数据集(training dataset,或称为 训练集(training set)。然而,在训练数据上表现良好的模型,并不一定在“新数据集”上有同样的效能,这 里的“新数据集”通常称为测试数据集(,或称为测试集(testset)。 综上所述,我们通常将可用数据集分成两部分:训练数据集用于拟合模型参数,测试数据集用于评估拟合的 模型。然后我们观察模型在这两部分数据集的效能。你可以把“一个模型在训练数据集上的效能”想象成“一 个学生在模拟考试中的分数”。这个分数用来为一些真正的期末考试做参考,即使成绩令人鼓舞,也不能保 证期末考试成功。换言之,测试性能可能会显著偏离训练性能。当一个模型在训练集上表现良好,但不能推 广到测试集时,我们说这个模型是“过拟合”(overfitting)的。就像在现实生活中,尽管模拟考试考得很好, 真正的考试不一定百发百中。 1.2.4优化算法 一旦我们获得了一些数据源及其表示、一个模型和一个合适的损失函数,我们接下来就需要一种算法,它能 够搜索出最佳参数,以最小化损失函数。深度学习中,大多流行的优化算法通常基于一种基本方法-梯度下 降(gradient descent)。简而言之,在每个步骤中,梯度下降法都会检查每个参数,看看如果你仅对该参数 进行少量变动,训练集损失会朝哪个方向移动。然后,它在可以减少损失的方向上优化参数。 1.2.关键组件 21
1.2.2 模型 ⼤多数机器学习会涉及到数据的转换。⽐如,我们建⽴⼀个“摄取照⽚并预测笑脸”的系统。再⽐如,我们 摄取⼀组传感器读数,并预测读数的正常与异常程度。虽然简单的模型能够解决如上简单的问题,但本书中 关注的问题超出了经典⽅法的极限。深度学习与经典⽅法的区别主要在于:前者关注的功能强⼤的模型,这 些模型由神经⽹络错综复杂的交织在⼀起,包含层层数据转换,因此被称为深度学习(deep learning)。在 讨论深度模型的过程中,我们也将提及⼀些传统⽅法。 1.2.3 ⽬标函数 前⾯,我们将机器学习介绍为“从经验中学习”。这⾥所说的“学习”,是指⾃主提⾼模型完成某些任务的效 能。但是,什么才算真正的提⾼呢?在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在⼤多 数情况是“可优化”的,我们称之为⽬标函数(objective function)。我们通常定义⼀个⽬标函数,并希望优 化它到最低点。因为越低越好,所以这些函数有时被称为损失函数(loss function,或cost function)。但这 只是⼀个惯例,你也可以取⼀个新的函数,优化到它的最⾼点。这两个函数本质上是相同的,只是翻转⼀下 符号。 当任务在试图预测数值时,最常⻅的损失函数是平⽅误差(squared error),即预测值与实际值之差的平⽅。 当试图解决分类问题时,最常⻅的⽬标函数是最⼩化错误率,即预测与实际情况不符的样本⽐例。有些⽬标 函数(如平⽅误差)很容易被优化,有些⽬标(如错误率)由于不可微性或其他复杂性难以直接优化。在这 些情况下,通常会优化替代⽬标。 通常,损失函数是根据模型参数定义的,并取决于数据集。在⼀个数据集上,我们通过最⼩化总损失来学习 模型参数的最佳值。该数据集由⼀些为训练⽽收集的样本组成,称为训练数据集(training dataset,或称为 训练集(training set))。然⽽,在训练数据上表现良好的模型,并不⼀定在“新数据集”上有同样的效能,这 ⾥的“新数据集”通常称为测试数据集(test dataset,或称为测试集(test set))。 综上所述,我们通常将可⽤数据集分成两部分:训练数据集⽤于拟合模型参数,测试数据集⽤于评估拟合的 模型。然后我们观察模型在这两部分数据集的效能。你可以把“⼀个模型在训练数据集上的效能”想象成“⼀ 个学⽣在模拟考试中的分数”。这个分数⽤来为⼀些真正的期末考试做参考,即使成绩令⼈⿎舞,也不能保 证期末考试成功。换⾔之,测试性能可能会显著偏离训练性能。当⼀个模型在训练集上表现良好,但不能推 ⼴到测试集时,我们说这个模型是“过拟合”(overfitting)的。就像在现实⽣活中,尽管模拟考试考得很好, 真正的考试不⼀定百发百中。 1.2.4 优化算法 ⼀旦我们获得了⼀些数据源及其表⽰、⼀个模型和⼀个合适的损失函数,我们接下来就需要⼀种算法,它能 够搜索出最佳参数,以最⼩化损失函数。深度学习中,⼤多流⾏的优化算法通常基于⼀种基本⽅法‒梯度下 降(gradient descent)。简⽽⾔之,在每个步骤中,梯度下降法都会检查每个参数,看看如果你仅对该参数 进⾏少量变动,训练集损失会朝哪个⽅向移动。然后,它在可以减少损失的⽅向上优化参数。 1.2. 关键组件 21
1.3各种机器学习问题 在机器学习的广泛应用中,唤醒词问题只是冰山一角。在前面的例子中,只是机器学习可以解决的众多问题 中的一个。下面,我们将列出一些常见机器学习问题和应用,为之后本书的讨论做铺垫。我们将不断引用前 面提到的概念,如数据、模型和训练技术。 1.3.1监督学习 监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。每个“特征-标签”对都称为 ,个量木a mple)。有时,即使标签是未知的,样本也可以指代输入特征。我们的目标是生成一个模型, 能够将任何输入特征映射到标签,即预测。 举一个具体的例子:假设我们需要预测患者是否会心脏病发作,那么观察结果“心脏病发作”或“心脏病没 有发作”将是我们的标签。输入特征可能是生命体征,如心率、舒张压和收缩压。 监督学习之所以发挥作用,是因为在训练参数时,我们为模型提供了一个数据集,其中每个样本都有真实的 标签。用概率论术语来说,我们希望预测“估计给定输入特征的标签”的条件概率。虽然监督学习只是几大类 机器学习问题之一,但是在工业中,大部分机器学习的成功应用都是监督学习。这是因为在一定程度上,许 多重要的任务可以清晰地描述为:在给定一组特定的可用数据的情况下,估计未知事物的概率。比如: ·根据计算机断层扫描(CT)肿瘤图像,预测是否为癌症 ,给出一个英语句子,预测正确的法语翻译。 ·根据本月的财务报告数据,预测下个月股票的价格。 非正式地说,监督学习的学习过程如下所示。首先,从已知大量数据样本中随机选取一个子集,为每个样本 获取基本的真实标签。有时,这些样本已有标签(例如,患者是否在下一年内康复?);有时,我们可能需要 人工标记数据(例如,将图像分类)。这些输入和相应的标签一起构成了训练数据集。随后,我们选择有监督 的学习算法,它将训练数据集作为输入,并输出一个“完成学习模型”。最后,我们将之前没见过的样本特征 放到这个“完成学习模型”中,使用模型的输出作为相应标签的预测。整个监督学习过程在图1.3.1中绘制。 训练输入 监督学习 训练标签 输入 模型 输出 图1.3.1:监督学习 综上所述即使使用简单的描术“给定输入特征的预剥标签”,监智学习也可以采取多种形式的模型并日需 要大量不同的建模决策,这取决于输入和输出的类型、大小和数量。 例如 我们使用不同的模型来处理“任 意长度的序列”或“固定长度的序列”。我们将在本书中深入探讨这些问题。 3 1.前言
1.3 各种机器学习问题 在机器学习的⼴泛应⽤中,唤醒词问题只是冰⼭⼀⻆。在前⾯的例⼦中,只是机器学习可以解决的众多问题 中的⼀个。下⾯,我们将列出⼀些常⻅机器学习问题和应⽤,为之后本书的讨论做铺垫。我们将不断引⽤前 ⾯提到的概念,如数据、模型和训练技术。 1.3.1 监督学习 监督学习(supervised learning)擅⻓在“给定输⼊特征”的情况下预测标签。每个“特征-标签”对都称为 ⼀个样本(example)。有时,即使标签是未知的,样本也可以指代输⼊特征。我们的⽬标是⽣成⼀个模型, 能够将任何输⼊特征映射到标签,即预测。 举⼀个具体的例⼦:假设我们需要预测患者是否会⼼脏病发作,那么观察结果“⼼脏病发作”或“⼼脏病没 有发作”将是我们的标签。输⼊特征可能是⽣命体征,如⼼率、舒张压和收缩压。 监督学习之所以发挥作⽤,是因为在训练参数时,我们为模型提供了⼀个数据集,其中每个样本都有真实的 标签。⽤概率论术语来说,我们希望预测“估计给定输⼊特征的标签”的条件概率。虽然监督学习只是⼏⼤类 机器学习问题之⼀,但是在⼯业中,⼤部分机器学习的成功应⽤都是监督学习。这是因为在⼀定程度上,许 多重要的任务可以清晰地描述为:在给定⼀组特定的可⽤数据的情况下,估计未知事物的概率。⽐如: • 根据计算机断层扫描(CT)肿瘤图像,预测是否为癌症。 • 给出⼀个英语句⼦,预测正确的法语翻译。 • 根据本⽉的财务报告数据,预测下个⽉股票的价格。 ⾮正式地说,监督学习的学习过程如下所⽰。⾸先,从已知⼤量数据样本中随机选取⼀个⼦集,为每个样本 获取基本的真实标签。有时,这些样本已有标签(例如,患者是否在下⼀年内康复?);有时,我们可能需要 ⼈⼯标记数据(例如,将图像分类)。这些输⼊和相应的标签⼀起构成了训练数据集。随后,我们选择有监督 的学习算法,它将训练数据集作为输⼊,并输出⼀个“完成学习模型”。最后,我们将之前没⻅过的样本特征 放到这个“完成学习模型”中,使⽤模型的输出作为相应标签的预测。整个监督学习过程在 图1.3.1 中绘制。 图1.3.1: 监督学习 综上所述,即使使⽤简单的描述“给定输⼊特征的预测标签”,监督学习也可以采取多种形式的模型,并且需 要⼤量不同的建模决策,这取决于输⼊和输出的类型、⼤⼩和数量。例如,我们使⽤不同的模型来处理“任 意⻓度的序列”或“固定⻓度的序列”。我们将在本书中深⼊探讨这些问题。 22 1. 前⾔