翻译: 深入神经网络概览Dive into Deep Learning
Posted AI架构师易筋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译: 深入神经网络概览Dive into Deep Learning相关的知识,希望对你有一定的参考价值。
1. 简介
直到最近,我们每天与之交互的几乎所有计算机程序都是由软件开发人员根据第一原理编码的。假设我们想编写一个应用程序来管理一个电子商务平台。在围着白板花了几个小时思考这个问题之后,我们会想出一个可行的解决方案的大致思路,可能看起来像这样:
- (i) 用户通过在 Web 浏览器中运行的界面与应用程序交互或移动应用程序;
- (ii) 我们的应用程序与商业级数据库引擎交互,以跟踪每个用户的状态并维护历史交易记录;
- (iii) 在我们应用程序的核心,业务逻辑(你可能会说,大脑) 我们的应用程序有条不紊地详细说明了我们的程序在每一种可能的情况下应该采取的适当行动。
为了构建我们的应用程序的大脑,我们必须逐步检查我们预计会遇到的每一个可能的极端情况,设计适当的规则。每次客户单击以将商品添加到他们的购物车时,我们都会在购物车数据库表中添加一个条目,将该用户的 ID 与请求的产品 ID 相关联。虽然很少有开发人员第一次就完全正确(可能需要一些测试运行才能解决问题),但在大多数情况下,我们可以根据第一原则编写这样的程序,并在 见到真正的客户之前自信地启动它。我们根据驱动功能产品和系统的第一原理设计自动化系统的能力,通常是在新颖的情况下,这是一项了不起的认知壮举。当您能够设计出有效的解决方案时 100% 当时,您不应该使用机器学习。
幸运的是,对于不断壮大的机器学习科学家社区来说,我们希望自动化的许多任务不会轻易屈服于人类的聪明才智。想象一下,与您所知道的最聪明的人一起围在白板上,但这次您正在解决以下问题之一:
- 编写一个程序,根据地理信息、卫星图像和过去天气的跟踪窗口预测明天的天气。
- 编写一个程序,接受一个问题,用自由格式的文本表达,并正确回答。
- 编写一个程序,给定一张图片,可以识别其中包含的所有人,并在每个人周围画出轮廓。
- 编写一个程序,向用户展示他们可能会喜欢但在自然浏览过程中不太可能遇到的产品。
在每种情况下,即使是精英程序员也无法从头开始编写解决方案。其原因可能会有所不同。有时我们正在寻找的程序遵循随时间变化的模式,我们需要我们的程序来适应。在其他情况下,关系(例如像素和抽象类别之间)可能过于复杂,即使我们的眼睛毫不费力地完成任务,也需要进行数千或数百万次超出我们意识理解的计算。机器学习是对可以从经验中学习的强大技术的研究。随着机器学习算法积累更多经验,通常以观察数据或与环境交互的形式,其性能会提高。将此与我们的确定性电子商务平台进行对比,该平台根据相同的业务逻辑执行,无论积累了多少经验,直到开发人员自己了解并决定是时候更新软件了。在本书中,我们将向您介绍机器学习的基础知识,并特别关注深度学习,这是一套强大的技术,可推动计算机视觉、自然语言处理、医疗保健和基因组学等多个领域的创新。
1.1 一个智能语音的例子
在开始写作之前,这本书的作者,就像许多工作人员一样,不得不喝咖啡。我们跳上车开始开车。亚历克斯使用 iPhone 喊出“嘿 Siri”,唤醒了手机的语音识别系统。然后穆命令“去蓝瓶咖啡店的方向”。手机很快显示出他的命令转录。它还认识到我们在问路,并启动了地图应用程序(app)来满足我们的请求。启动后,地图应用程序确定了许多路线。在每条路线旁边,手机都会显示预计的运输时间。虽然我们为了教学方便而编造了这个故事,但它表明,在短短几秒钟内,我们与智能手机的日常交互可以使用多种机器学习模型。
想象一下,只是编写一个程序来响应诸如“Alexa”、“OK Google”和“Hey Siri”之类的唤醒词。尝试在一个房间里自己编写代码,只需要一台计算机和一个代码编辑器,如图 1.1.1 所示。您将如何从第一原理编写这样的程序?想一想……问题很难。每秒,麦克风将收集大约 44000 个样本。每个样本都是声波幅度的测量值。什么规则可以可靠地从原始音频片段映射到可靠的预测 yes,no 关于片段是否包含唤醒词?如果您被卡住了,请不要担心。我们也不知道如何从头开始编写这样的程序。这就是我们使用机器学习的原因。
图 1.1.1识别唤醒词。
这是诀窍。通常,即使我们不知道如何明确地告诉计算机如何从输入映射到输出,我们仍然能够自己完成认知壮举。换句话说,即使您不知道如何对计算机进行编程以识别“Alexa”这个词,您自己也能够识别它。有了这种能力,我们可以收集一个包含音频示例的巨大数据集,并标记那些包含和不包含唤醒词的音频。在机器学习方法中,我们不会尝试 明确地设计一个系统来识别唤醒词。相反,我们定义了一个灵活的程序,其行为由多个参数决定. 然后我们使用数据集来确定可能的最佳参数集,这些参数可以提高我们的程序在感兴趣任务上的某些性能度量方面的性能。
您可以将参数视为我们可以转动的旋钮,从而操纵程序的行为。固定参数,我们将程序称为模型。我们仅通过操纵参数就可以生成的所有不同程序(输入-输出映射)的集合称为模型族 。使用我们的数据集选择参数的元程序称为学习算法。
在我们继续使用学习算法之前,我们必须精确地定义问题,确定输入和输出的确切性质,并选择合适的模型系列。在这种情况下,我们的模型接收一段音频作为输入,然后模型在其中生成一个选择 yes,no 作为 输出。如果一切按计划进行,模型对片段是否包含唤醒词的猜测通常是正确的。
如果我们选择正确的模型系列,应该存在一个旋钮设置,以便模型每次听到“Alexa”这个词时都会触发“yes”。因为唤醒词的确切选择是任意的,我们可能需要一个足够丰富的模型系列,通过旋钮的另一种设置,它只能在听到“杏”这个词时触发“是”。我们期望相同的模型系列应该适用于“Alexa”识别和“Apricot”识别,因为从直觉上看,它们似乎是相似的任务。但是,如果我们想处理根本不同的输入或输出,比如我们想从图像映射到字幕,或者从英文句子到中文句子,我们可能需要完全不同的模型系列。
您可能会猜到,如果我们只是随机设置所有旋钮,我们的模型不太可能识别“Alexa”、“Apricot”或任何其他英文单词。在机器学习中,学习是我们发现旋钮的正确设置的过程,以从我们的模型中强制执行所需的行为。换句话说,我们用数据训练我们的模型。如图1.1.2所示,训练过程通常如下所示:
- 从一个随机初始化的模型开始,它不能做任何有用的事情。
- 获取您的一些数据(例如,音频片段和相应的 yes,no 标签)。
- 调整旋钮,使模型对这些示例的吸收更少。
- 重复第 2 步和第 3 步,直到模型很棒。
图 1.1.2一个典型的训练过程。
总而言之,我们不是编写一个唤醒词识别器,而是编写一个可以学习识别唤醒词的程序,如果我们向它提供一个大的标记数据集。您可以将这种通过将数据集呈现给程序来确定程序行为的行为视为使用数据进行编程. 也就是说,我们可以通过为我们的机器学习系统提供许多猫和狗的例子来“编程”一个猫检测器。这样,检测器最终将学会发出一个非常大的正数,如果它是一只猫,一个非常大的负数,如果它是一只狗,如果它不确定,它会接近零,这几乎不会触及表面机器学习可以做到。深度学习,我们稍后会更详细地解释,只是解决机器学习问题的众多流行方法之一。
1.2. 关键部件
在我们的唤醒词示例中,我们描述了一个由音频片段和二进制标签组成的数据集,并且我们对如何训练模型以近似从片段到分类的映射给出了一种直观的感觉。这类问题,我们尝试根据已知输入来预测指定的未知标签,给定一个由标签已知的示例组成的数据集,称为 监督学习。这只是众多机器学习问题中的一种。稍后我们将深入探讨不同的机器学习问题。首先,无论我们处理什么样的机器学习问题,我们都想更清楚地了解一些将跟随我们的核心组件:
- 我们可以从中学习的数据。
- 如何转换数据的模型。
- 一个目标函数,用于量化模型做得好(或坏)的程度。
- 一种调整模型参数以优化目标函数的算法。
1.2.1 数据
不用说,没有数据就无法进行数据科学。我们可能会浪费数百页来思考究竟是什么构成了数据,但现在,我们将在实际方面犯错,并专注于要关注的关键属性。通常,我们关注的是示例集合。为了有效地处理数据,我们通常需要提出一个合适的数字表示。每个 示例(或数据点、数据实例、样本)通常由一组称为特征(或协变量)的属性组成),模型必须从中做出预测。在上面的监督学习问题中,要预测的东西是一个特殊的属性,它被指定为标签(或目标)。
如果我们使用图像数据,每张单独的照片都可能构成一个示例,每张照片都由对应于每个像素的亮度的有序数值列表表示。一种 200×200 彩色照片将包括 200×200×3=120000 数值,对应于每个空间位置的红色、绿色和蓝色通道的亮度。在另一项传统任务中,我们可能会尝试根据一组标准特征(例如年龄、生命体征和诊断)来预测患者是否能够存活。
当每个示例都以相同数量的数值为特征时,我们说数据由固定长度的向量组成,我们将向量的恒定长度描述为数据的维数。正如您可能想象的那样,固定长度可能是一个方便的属性。如果我们想训练一个模型来识别显微镜图像中的癌症,固定长度的输入意味着我们可以少担心一件事。
但是,并非所有数据都可以轻松地表示为固定长度的 向量。虽然我们可能期望显微镜图像来自标准设备,但我们不能期望从互联网上挖掘的图像都以相同的分辨率或形状显示。对于图像,我们可能会考虑将它们全部裁剪为标准尺寸,但这种策略只能让我们做到这一点。我们冒着丢失裁剪部分中的信息的风险。此外,文本数据更顽固地抵制固定长度的表示。考虑亚马逊、IMDB 和 TripAdvisor 等电子商务网站上留下的客户评论。有些很短:“它很臭!”。其他人则为页面而徘徊。与传统方法相比,深度学习的一个主要优势是现代模型可以处理 不同长度的数据。
一般来说,我们拥有的数据越多,我们的工作就越容易。当我们拥有更多数据时,我们可以训练更强大的模型,并减少对先入为主的假设的依赖。从(相对)小数据到大数据的制度变化是现代深度学习成功的主要贡献者。为了说明这一点,深度学习中许多最令人兴奋的模型如果没有大型数据集就无法工作。其他一些在小数据机制中工作,但并不比传统方法好。
最后,仅仅拥有大量数据并巧妙地处理它是不够的。我们需要正确的数据。如果数据充满错误,或者如果选择的特征不能预测感兴趣的目标数量,那么学习就会失败。陈词滥调很好地捕捉到了这种情况:垃圾进,垃圾出. 此外,较差的预测性能并不是唯一的潜在后果。在机器学习的敏感应用中,例如预测性监管、简历筛选和用于贷款的风险模型,我们必须特别警惕垃圾数据的后果。一种常见的故障模式发生在训练数据中没有代表某些人群的数据集中。想象一下在以前从未见过黑色皮肤的野外应用皮肤癌识别系统。当数据不仅未充分代表某些群体而且反映社会偏见时,也可能发生失败。例如,如果使用过去的招聘决定来训练用于筛选简历的预测模型,那么机器学习模型可能会无意中捕捉和自动化历史不公正。
1.2.2 模型
大多数机器学习都涉及在某种意义上转换数据。我们可能想要构建一个系统来摄取照片并预测笑脸。或者,我们可能想要获取一组传感器读数并预测读数的正常与异常情况。按 型号,我们表示用于摄取一种类型的数据并输出可能不同类型的预测的计算机制。特别是,我们对可以从数据中估计的统计模型感兴趣。虽然简单模型完全能够解决适当简单的问题,但我们在本书中关注的问题扩展了经典方法的局限性。深度学习与经典方法的区别主要在于它关注的一组强大的模型。这些模型由许多连续的数据转换组成,这些数据从上到下链接在一起,因此得名深度学习。在讨论深度模型的过程中,我们还将讨论一些更传统的方法。
1.2.3 目标函数
早些时候,我们将机器学习介绍为从经验中学习。通过 在这里学习,我们的意思是随着时间的推移在某些任务上有所改进。但是谁能说什么是改进呢?您可能会想象我们可以提议更新我们的模型,而有些人可能会不同意提议的更新是否构成改进或下降。
为了开发一个正式的学习机器数学系统,我们需要对我们的模型有多好(或多坏)有正式的衡量标准。在机器学习和更一般的优化中,我们将这些 目标函数称为目标函数。按照惯例,我们通常定义目标函数,以便越低越好。这只是一个约定。您可以采用任何更高更好的函数,然后通过翻转符号将其转换为质量相同但更低更好的新函数。因为越低越好,这些函数有时被称为损失函数。
在尝试预测数值时,最常见的损失函数是平方误差,即预测值与真实值之差的平方。对于分类,最常见的目标是最小化错误率,即我们的预测与基本事实不一致的示例比例。一些目标(例如平方误差)很容易优化。由于不可微性或其他复杂性,其他(例如,错误率)难以直接优化。在这些情况下,通常会优化 替代目标。
通常,损失函数是根据模型的参数定义的,并且取决于数据集。我们通过最小化由为训练收集的一些示例组成的集合所产生的损失来学习模型参数的最佳值。然而,在训练数据上做得很好并不能保证我们在看不见的数据上做得很好。因此,我们通常希望将可用数据分成两个部分:训练数据集(或训练集,用于拟合模型参数)和测试数据集(或测试集),用于评估),报告模型在两者上的表现。您可以将培训表现视为学生在练习考试中的分数,用于准备一些真正的期末考试。即使结果令人鼓舞,也不能保证在期末考试中取得成功。换句话说,测试性能可能会显着偏离训练性能。当一个模型在训练集上表现良好但无法泛化到看不见的数据时,我们说它是 过拟合的。在现实生活中,这就像在实践考试中表现出色但在真实考试中不及格一样。
1.2.4 优化算法
一旦我们获得了一些数据源和表示、模型和明确定义的目标函数,我们就需要一种能够搜索最佳参数以最小化损失函数的算法。流行的深度学习优化算法基于一种称为梯度下降的方法。简而言之,在每个步骤中,此方法都会检查每个参数,如果您仅对该参数进行少量扰动,则训练集损失会以何种方式移动。然后它在可能减少损失的方向上更新参数。
1.3. 机器学习问题的种类
在我们的激励示例中,唤醒词问题只是机器学习可以解决的众多问题之一。为了进一步激发读者的兴趣并在我们在整本书中讨论更多问题时为我们提供一些共同语言,下面我们列出了机器学习问题的示例。我们将不断参考我们前面提到的概念,例如数据、模型和训练技术。
1.3.1 监督学习 Supervised learning
监督学习解决了在给定输入特征的情况下预测标签的任务。每个特征-标签对称为一个示例。有时,当上下文很清楚时,我们可以使用术语示例来指代输入的集合,即使相应的标签是未知的。我们的目标是生成一个将任何输入映射到标签预测的模型。
为了将此描述建立在一个具体的例子中,如果我们在医疗保健领域工作,那么我们可能想要预测患者是否会心脏病发作。这种观察,“心脏病发作”或“没有心脏病发作”,将成为我们的标签。输入特征可能是生命体征,例如心率、舒张压和收缩压。
监督开始发挥作用,因为为了选择参数,我们(监督者)为模型提供了一个由标记示例组成的数据集,其中每个示例都与真实标签匹配。在概率方面,我们通常对估计给定输入特征的标签的条件概率感兴趣。虽然它只是机器学习中的几种范式之一,但监督学习占机器学习在工业中成功应用的大部分。部分原因是因为许多重要任务可以明确地描述为在给定一组特定可用数据的情况下估计未知事物的概率:
给定计算机断层扫描图像,预测癌症与非癌症。
给定一个英文句子,预测法语的正确翻译。
根据本月的财务报告数据预测下个月的股票价格。
即使使用简单的描述“根据输入特征预测标签”,监督学习也可以采用多种形式并需要大量建模决策,具体取决于(除其他考虑因素外)类型、大小以及输入和输出的数量。例如,我们使用不同的模型来处理任意长度的序列和处理固定长度的向量表示。我们将在本书中深入探讨其中的许多问题。
非正式地,学习过程如下所示。首先,获取大量已知特征的示例,并从中选择一个随机子集,获取每个示例的真实标签。有时这些标签可能是已经收集的可用数据(例如,患者是否在下一年内死亡?)而其他时候,我们可能需要使用人工注释器来标记数据(例如,将图像分配给类别)。这些输入和相应的标签一起构成了训练集。我们将训练数据集输入到监督学习算法中,该算法将数据集作为输入并输出另一个函数:学习模型。最后,我们可以将以前看不见的输入提供给学习模型,使用它的输出作为相应标签的预测。图 1.3.1。
图 1.3.1监督学习。
1.3.1.1。回归
也许最简单的监督学习任务是回归。例如,考虑从房屋销售数据库中收集的一组数据。我们可以构建一个表格,其中每一行对应不同的房子,每一列对应一些相关的属性,比如房子的面积、卧室的数量、浴室的数量和分钟数(步行) 到市中心。在这个数据集中,每个例子都是一个特定的房子,对应的特征向量是表中的一行。如果您住在纽约或旧金山,并且您不是亚马逊、谷歌、微软或 Facebook 的 CEO,那么您家的(平方英尺、卧室数量、浴室数量、步行距离)特征向量可能看起来像: [600,1,1,60] . 但是,如果你住在匹兹堡,它可能看起来更像 [3000,4,3,10] . 像这样的特征向量对于大多数经典的机器学习算法来说都是必不可少的。
使问题回归的实际上是输出。假设您在市场上寻找新房。考虑到上述一些特征,您可能想要估计房屋的公平市场价值。标签,即销售价格,是一个数值。当标签采用任意数值时,我们称之为回归问题。我们的目标是生成一个模型,其预测与实际标签值非常接近。
许多实际问题都是描述良好的回归问题。预测用户对电影的评分可以被认为是一个回归问题,如果你在 2009 年设计了一个很棒的算法来完成这一壮举,你可能已经赢得了100 万美元的 Netflix 奖。预测患者在医院的住院时间也是一个回归问题。一个好的经验法则是多少?或者有多少?问题应该暗示回归,例如:
- 这个手术需要几个小时?
- 在接下来的六个小时内,这个小镇会有多少降雨?
即使您以前从未使用过机器学习,您也可能非正式地解决过回归问题。想象一下,例如,您修复了下水道,而您的承包商花了 3 个小时清除污水管中的垃圾。然后他寄给你一张350美元的账单。现在想象一下,你的朋友雇佣了同一个承包商 2 个小时,他收到了 250 美元的账单。如果有人随后问您对他们即将到来的垃圾清除发票的期望值是多少,您可能会做出一些合理的假设,例如更多的工作时间会花费更多的美元。您还可以假设有一些基本费用,然后承包商按小时收费。如果这些假设成立,那么鉴于这两个数据示例,您已经可以确定承包商的定价结构:每小时 100 美元外加 50 美元出现在你家。如果您遵循了那么多,那么您已经理解了线性回归背后的高级思想。
在这种情况下,我们可以生成与承包商价格完全匹配的参数。有时这是不可能的,例如,如果某些差异归因于您的两个特征之外的几个因素。在这些情况下,我们将尝试学习最小化我们的预测和观察值之间的距离的模型。在我们的大部分章节中,我们将专注于最小化平方误差损失函数。正如我们稍后将看到的,这种损失对应于我们的数据被高斯噪声破坏的假设。
1.3.1.2。分类
虽然回归模型非常适合解决多少问题?问题,很多问题都不适用于这个模板。例如,一家银行希望在其移动应用程序中添加支票扫描功能。这将涉及客户使用他们智能手机的相机拍摄一张支票的照片,并且该应用程序需要能够自动理解图像中看到的文本。具体来说,它还需要更加健壮地理解手写文本,例如将手写字符映射到已知字符之一。这种是哪一种?问题称为 分类。它使用一组不同于回归算法的算法进行处理,尽管许多技术会继续使用。
在分类中,我们希望我们的模型查看特征,例如图像中的像素值,然后在一些离散的选项集中预测样本属于哪个类别(正式称为类)。对于手写数字,我们可能有十个类别,对应于数字 0 到 9。最简单的分类形式是当只有两个类别时,我们称之为二元分类问题。例如,我们的数据集可能包含动物的图像,我们的标签可能是类 cat,dog . 在回归中,我们寻找回归器来输出数值,在分类中,我们寻找分类器,其输出是预测的类分配。
由于我们将在本书变得更加技术性的过程中进入的原因,可能很难优化只能输出硬分类分配的模型,例如“猫”或“狗”。在这些情况下,用概率语言来表达我们的模型通常要容易得多。给定示例的特征,我们的模型为每个可能的类分配一个概率。回到我们的动物分类示例,其中类是 cat,dog ,分类器可能会看到一张图像并输出图像是猫的概率为 0.9。我们可以通过说分类器 90% 确定图像描绘了一只猫来解释这个数字。预测类别的概率大小传达了一种不确定性概念。这不是不确定性的唯一概念,我们将在更高级的章节中讨论其他概念。
当我们有两个以上可能的类时,我们将问题称为 多类分类。常见的例子包括手写字符识别 0,1,2,…9,a,b,c,… . 虽然我们通过尝试最小化平方误差损失函数来解决回归问题,但分类问题的常见损失函数称为交叉熵,其名称可以通过后续章节中对信息论的介绍来揭开神秘面纱。
请注意,最有可能的类别不一定是您要用于决定的类别。假设你在你的后院发现了一个漂亮的蘑菇,如图 1.3.2 所示。
图 1.3.2死亡帽——不能吃的东西!
现在,假设您构建了一个分类器并训练它根据照片预测蘑菇是否有毒。假设我们的毒物检测分类器输出图 1.3.2 包含死亡上限的概率为 0.2。换句话说,分类器 80% 确定我们的蘑菇不是死帽。不过,你必须是个傻瓜才能吃它。那是因为一顿美味晚餐的某些好处不值得冒 20% 的死亡风险。换句话说,不确定性风险的影响远远超过了收益。因此,我们需要计算我们作为损失函数所产生的预期风险,即我们需要将结果的概率乘以与之相关的利益(或伤害)。在这种情况下,食用蘑菇所造成的损失可能是 0.2×∞+0.8×0=∞
,而丢弃它的损失是 0.2×0+0.8×1=0.8
. 我们的谨慎是有道理的:正如任何真菌学家会告诉我们的那样,图 1.3.2中的蘑菇 实际上是一个死亡帽。
分类可能比二进制、多类甚至多标签分类复杂得多。例如,有一些用于寻址层次结构的分类变体。层次结构假设在许多类之间存在一些关系。所以不是所有的错误都是平等的——如果我们必须犯错,我们宁愿错误分类到一个相关的类而不是一个遥远的类。通常,这被称为层次分类。一个早期的例子要归功于林奈,他将动物组织成一个等级。
在动物分类的情况下,将贵宾犬(一种犬种)误认为雪纳瑞(另一种犬种)可能并没有那么糟糕,但如果将贵宾犬与恐龙混淆,我们的模型将付出巨大的代价。哪个层次结构相关可能取决于您计划如何使用模型。例如,响尾蛇和吊袜带蛇可能在系统发育树上很接近,但将响尾蛇误认为吊袜带可能是致命的。
1.3.1.3。标记
一些分类问题很适合二进制或多类分类设置。例如,我们可以训练一个正常的二元分类器来区分猫和狗。鉴于计算机视觉的当前状态,我们可以使用现成的工具轻松做到这一点。尽管如此,无论我们的模型有多准确,当分类器遇到不来梅城市音乐家的图像时,我们可能会遇到麻烦,这是 一个流行的德国童话故事,在图 1.3.3中有四只动物。
图 1.3.3驴、狗、猫和公鸡。
如您所见,图 1.3.3中有一只猫,还有一只公鸡、一只狗和一头驴,背景中有一些树。根据我们最终想要对模型做什么,将其视为二元分类问题可能没有多大意义。相反,我们可能想给模型一个选项,说图像描绘了一只猫、一只狗、一头驴和一只公鸡。
学习预测不互斥的类的问题称为多标签分类。自动标记问题通常最好描述为多标签分类问题。想想人们可能会在技术博客上应用的标签,例如“机器学习”、“技术”、“小工具”、“编程语言”、“Linux”、“云计算”、“AWS”。一篇典型的文章可能会应用 5-10 个标签,因为这些概念是相关的。有关“云计算”的帖子可能会提到“AWS”,而有关“机器学习”的帖子也可能涉及“编程语言”。
在处理生物医学文献时,我们也必须处理这类问题,其中正确标记文章很重要,因为它允许研究人员对文献进行详尽的审查。在美国国家医学图书馆,许多专业注释者检查每篇在 PubMed 中被索引的文章,以将其与 MeSH 中的相关术语相关联,MeSH 是大约 28000 个标签的集合。这是一个耗时的过程,注释者通常在归档和标记之间有一年的延迟。在这里可以使用机器学习来提供临时标签,直到每篇文章都可以进行适当的人工审核。事实上,几年来,BioASQ 组织举办的比赛正是为了做到这一点。
1.3.1.4。搜索
有时我们不只是想将每个示例分配给存储桶或实际值。在信息检索领域,我们希望对一组项目进行排名。以网络搜索为例。目标不是确定特定页面是否与查询相关,而是确定众多搜索结果中的哪一个与特定用户最相关。我们非常关心相关搜索结果的顺序,我们的学习算法需要从更大的集合中生成有序的元素子集。换句话说,如果我们被要求从字母表中生成前 5 个字母,则返回“ABCDE”和“CABED”是有区别的。即使结果集相同,集合内的顺序也很重要。
这个问题的一种可能的解决方案是首先为集合中的每个元素分配一个相应的相关性分数,然后检索评分最高的元素。 PageRank是谷歌搜索引擎背后的原始秘密武器,是这种评分系统的早期例子,但它的特殊之处在于它不依赖于实际查询。在这里,他们依靠一个简单的相关过滤器来识别相关项目集,然后使用 PageRank 对包含查询词的结果进行排序。如今,搜索引擎使用机器学习和行为模型来获得与查询相关的相关分数。有整个学术会议专门讨论这个主题。
1.3.1.5。推荐系统
推荐系统是另一个与搜索和排名相关的问题设置。就目标是向用户显示一组相关项目而言,这些问题是相似的。主要区别在于在推荐系统的上下文中强调对特定用户的个性化。例如,对于电影推荐,科幻迷的结果页面和彼得塞勒斯喜剧鉴赏家的结果页面可能会有很大差异。类似的问题出现在其他推荐设置中,例如零售产品、音乐和新闻推荐。
在某些情况下,客户会提供明确的反馈来传达他们对特定产品的喜爱程度(例如,亚马逊、IMDb 和 Goodreads 上的产品评级和评论)。在其他一些情况下,它们提供隐式反馈,例如,通过跳过播放列表上的标题,这可能表示不满意,但可能只是表示歌曲在上下文中不合适。在最简单的公式中,这些系统被训练来估计一些分数,例如给定用户和项目的估计评分或购买概率。
给定这样的模型,对于任何给定的用户,我们可以检索得分最高的对象集,然后可以将其推荐给用户。生产系统要先进得多,并且在计算此类分数时会考虑详细的用户活动和项目特征。图 1.3.4是亚马逊推荐的深度学习书籍示例,这些书籍基于针对个人偏好进行调整的个性化算法。
图 1.3.4亚马逊推荐的深度学习书籍。
尽管具有巨大的经济价值,但天真地建立在预测模型之上的推荐系统仍存在一些严重的概念缺陷。首先,我们只观察审查的反馈:用户优先评价他们强烈喜欢的电影。例如,在 5 分制中,您可能会注意到许多项目获得了很多 5 星和 1 星评级,但很少有 3 星评级。此外,当前的购买习惯往往是当前推荐算法的结果,但学习算法并不总是考虑到这个细节。因此,有可能形成反馈循环,其中推荐系统优先推送一个项目,然后该项目被认为是更好的(由于更多的购买),进而被更频繁地推荐。许多关于如何处理审查、激励和反馈循环的问题都是重要的开放性研究问题。
1.3.1.6。序列学习
到目前为止,我们已经研究了一些固定数量的输入并产生固定数量的输出的问题。例如,我们考虑从一组固定的特征来预测房价:平方英尺、卧室数量、浴室数量、步行到市中心的时间。我们还讨论了从(固定维度的)图像映射到它属于固定数量类中的每一个的预测概率,或者获取用户 ID 和产品 ID,并预测星级。在这些情况下,一旦我们将固定长度的输入输入模型以生成输出,模型就会立即忘记它刚刚看到的内容。
如果我们的输入真的都具有相同的维度并且连续的输入真的彼此无关,那么这可能很好。但是我们将如何处理视频片段?在这种情况下,每个片段可能包含不同数量的帧。如果我们考虑到前一帧或后一帧,我们对每一帧中发生的事情的猜测可能会更强。语言也是如此。一个流行的深度学习问题是机器翻译:提取某种源语言的句子并预测其翻译成另一种语言的任务。
这些问题在医学上也存在。我们可能需要一个模型来监测重症监护病房中的患者,并在他们在接下来的 24 小时内死亡的风险超过某个阈值时发出警报。我们绝对不希望这个模型每小时丢弃它所知道的关于患者病史的所有信息,而只是根据最近的测量结果做出预测。
这些问题是机器学习最令人兴奋的应用之一,它们是序列学习的实例。它们需要一个模型来摄取输入序列或发出输出序列(或两者兼而有之)。具体来说,序列到序列学习 考虑输入和输出都是可变长度序列的问题,例如机器翻译和从口语中转录文本。虽然不可能考虑所有类型的序列转换,但以下特殊情况值得一提。
标记和解析。这涉及使用属性注释文本序列。换句话说,输入和输出的数量基本相同。例如,我们可能想知道动词和主语在哪里。或者,我们可能想知道哪些词是命名实体。一般来说,目标是根据结构和语法假设对文本进行分解和注释,以获得一些注释。这听起来比实际上更复杂。下面是一个非常简单的示例,它使用标记来注释句子,这些标记指示哪些单词引用了命名实体(标记为“Ent”)。
Tom has dinner in Washington with Sally
Ent - - - Ent - Ent
自动语音识别。对于语音识别,输入序列是说话者的录音(如图 1.3.5所示),输出是说话者所说内容的文本记录。挑战在于音频帧(声音通常以 8kHz 或 16kHz 采样)比文本多得多,即音频和文本之间没有 1:1 的对应关系,因为数千个样本可能对应于一个口语单词。这些是序列到序列的学习问题,其中输出比输入短得多。
图 1.3.5在录音中。-D-e-e-p- L-ea-r-ni-ng-
文字转语音。这与自动语音识别相反。换句话说,输入是文本,输出是音频文件。在这种情况下,输出比输入长得多。虽然人类很容易识别出坏的音频文件,但这对计算机来说并不是那么简单。
机器翻译。与语音识别的情况不同,其中相应的输入和输出以相同的顺序(对齐后)发生,在机器翻译中,顺序反转可能至关重要。换句话说,虽然我们仍在将一个序列转换为另一个序列,但输入和输出的数量以及相应数据示例的顺序都不会被假设为相同。考虑以下德国人将动词放在句子末尾的特殊倾向的说明性示例。
German: Haben Sie sich schon dieses grossartige Lehrwerk angeschaut?
English: Did you already check out this excellent tutorial?
Wrong alignment: Did you yourself already this excellent tutorial looked-at?
在其他学习任务中会出现许多相关问题。例如,确定用户阅读网页的顺序是一个二维布局分析问题。对话问题表现出各种额外的复杂性,其中确定接下来要说什么需要考虑现实世界的知识和跨越很长时间距离的对话的先前状态。这些都是活跃的研究领域。
1.3.2. 无监督和自监督学习
到目前为止,所有示例都与监督学习有关,即我们为模型提供包含特征和相应标签值的巨大数据集的情况。你可以认为受监督的学习者拥有极其专业的工作和极其平庸的老板。老板站在你的肩膀上,准确地告诉你在每种情况下该做什么,直到你学会从情况映射到行动。为这样的老板工作听起来很蹩脚。另一方面,取悦这个老板很容易。您只需尽快识别模式并模仿他们的行为即可。
以完全相反的方式,为一个不知道他们想要你做什么的老板工作可能会令人沮丧。然而,如果你打算成为一名数据科学家,你最好习惯它。老板可能只是给你一大堆数据,然后告诉你用它做一些数据科学! 这听起来很模糊,因为它是。我们将这类问题称为 无监督学习,我们可以提出的问题类型和数量仅受我们创造力的限制。我们将在后面的章节中讨论无监督学习技术。为了暂时激发您的兴趣,我们描述了您可能会问的以下几个问题。
我们能不能找到少量能准确概括数据的原型?给定一组照片,我们可以将它们分为风景照片、狗、婴儿、猫和山峰的照片吗?同样,给定一组用户的浏览活动,我们可以将他们归类为具有相似行为的用户吗?这个问题通常被称为 集群。
我们能否找到少量的参数来准确捕捉数据的相关属性?球的轨迹可以通过球的速度、直径和质量很好地描述。裁缝开发了少量参数,可以相当准确地描述人体形状,以达到合身的目的。这些问题被称为子空间估计。如果相关性是线性的,则称为主成分分析。
欧几里得空间中是否存在(任意结构的)对象的表示,使得符号属性可以很好地匹配?这可用于描述实体及其关系,例如“罗马” − “意大利” + “法国” = “巴黎”。
是否描述了我们观察到的大部分数据的根本原因?例如,如果我们有关于房价、污染、犯罪、位置、教育和工资的人口统计数据,我们能否仅根据经验数据发现它们之间的关系?与因果关系和概率图形模型相关的领域解决了这个问题。
无监督学习的另一个重要且令人兴奋的最新发展是生成对抗网络的出现。这些为我们提供了一种合成数据的程序方法,甚至是复杂的结构化数据,如图像和音频。底层统计机制是检查真假数据是否相同的测试。
作为无监督学习的一种形式,自监督学习利用未标记的数据在训练中提供监督,例如通过使用其他部分预测数据的某些保留部分。对于文本,我们可以通过使用大型语料库中的周围单词(上下文)预测随机掩码的单词来训练模型“填补空白”,而无需任何标记工作[Devlin et al., 2018]!对于图像,我们可以训练模型来判断同一图像的两个裁剪区域之间的相对位置[Doersch et al., 2015]。在这两个自我监督学习的例子中,预测可能的单词和相对位置的训练模型都是分类任务(来自监督学习)。
1.3.3. 与环境交互
到目前为止,我们还没有讨论数据实际来自哪里,或者当机器学习模型生成输出时实际发生了什么。这是因为监督学习和无监督学习并没有以非常复杂的方式解决这些问题。在任何一种情况下,我们都会预先抓取一大堆数据,然后让我们的模式识别机器运转起来,而无需再次与环境交互。因为所有的学习都是在算法与环境断开后进行的,所以这有时被称为离线学习。对于监督学习,考虑从环境中收集数据的过程如图 1.3.6 所示。
图 1.3.6从环境中收集数据进行监督学习。
这种离线学习的简单性有其魅力。好处是我们可以孤立地担心模式识别,而不会分心这些其他问题。但缺点是问题的表述非常有限。如果你更有野心,或者如果你从小就读过阿西莫夫的机器人系列,那么你可能会想象人工智能机器人不仅能够做出预测,还能在世界上采取行动。我们想考虑智能代理,而不仅仅是预测模型。这意味着我们需要考虑选择行动,而不仅仅是做出预测。此外,与预测不同,行动实际上会影响环境。如果我们想训练一个智能代理,我们必须考虑其行为可能影响代理未来观察的方式。
考虑与环境的交互会引发一整套新的建模问题。以下只是几个例子。
-
环境是否记得我们之前所做的事情?
-
环境是否想帮助我们,例如,用户将文本读入语音识别器?
-
环境是否想击败我们,即像垃圾邮件过滤(针对垃圾邮件发送者)或玩游戏(与对手)这样的对抗环境?
-
环境不在乎吗?
-
环境是否有动态变化?例如,未来的数据是否总是与过去相似,或者模式是否会随着时间而变化,无论是自然地还是响应我们的自动化工具?
当训练和测试数据不同时,最后一个问题提出了分布偏移的问题。这是我们大多数人在参加讲师撰写的考试时遇到的问题,而作业是由他的助教撰写的。接下来,我们将简要描述强化学习,这是一种明确考虑与环境交互的设置。
1.3.4。强化学习
如果您有兴趣使用机器学习来开发与环境交互并采取行动的代理,那么您可能最终会专注于强化学习。这可能包括应用于机器人技术、对话系统,甚至开发用于视频游戏的人工智能 (AI)。将深度学习应用于强化学习问题的深度强化学习已经大受欢迎。仅使用视觉输入在 Atari 游戏中击败人类的突破性深度 Q 网络,以及在棋盘游戏 Go 中击败世界冠军的 AlphaGo 程序就是两个突出的例子。
强化学习给出了一个非常一般的问题陈述,其中代理在一系列时间步长上与环境交互。在每个时间步,代理接收来自环境的一些观察,并且必须选择随后通过某种机制(有时称为执行器)传输回环境的动作。最后,代理从环境中获得奖励。该过程如图 1.3.7 所示。然后代理接收后续观察,并选择后续动作,依此类推。强化学习代理的行为由策略控制。简而言之,政策只是一个将环境观察映射到动作的函数。强化学习的目标是产生一个好的策略。
图 1.3.7强化学习与环境的交互。
很难夸大强化学习框架的普遍性。例如,我们可以将任何监督学习问题视为强化学习问题。假设我们有一个分类问题。我们可以创建一个强化学习代理,每个类别对应一个动作。然后,我们可以创建一个环境,该环境给出的奖励与原始监督学习问题的损失函数完全相同。
话虽如此,强化学习还可以解决监督学习无法解决的许多问题。例如,在监督学习中,我们总是期望训练输入与正确的标签相关联。但是在强化学习中,我们并不假设对于每次观察,环境都会告诉我们最佳行动。一般来说,我们只是得到一些奖励。此外,环境甚至可能不会告诉我们哪些行为导致了奖励。
以国际象棋为例。唯一真正的奖励信号出现在游戏结束时,当我们赢了,我们可以分配奖励 1,或者当我们输了,我们可以分配 -1 的奖励。因此,强化学习者必须处理信用分配问题:确定哪些行为应归功于或归咎于结果。对于在 10 月 11 日获得晋升的员工也是如此。该晋升可能反映了上一年大量精心挑选的行动。未来获得更多晋升需要弄清楚在此过程中采取的行动导致了晋升。
强化学习器可能还必须处理部分可观察性的问题。也就是说,当前的观察可能无法告诉您有关当前状态的所有信息。假设一个清洁机器人发现自己被困在一所房子的许多相同壁橱中。推断机器人的精确位置(以及状态)可能需要在进入壁橱之前考虑其先前的观察结果。
最后,在任何给定点,强化学习者可能知道一个好的策略,但可能还有许多其他更好的策略,代理从未尝试过。强化学习者必须不断选择是利用当前已知的最佳策略作为策略,还是探索策略空间,可能会放弃一些短期奖励以换取知识。
一般的强化学习问题是一个非常普遍的设置。行动会影响随后的观察。仅根据所选操作观察奖励。可以完全或部分地观察环境。一次性考虑所有这些复杂性可能对研究人员提出太多要求。此外,并非每个实际问题都表现出所有这些复杂性。因此,研究人员研究了一些强化学习问题的特殊情况。
当环境被充分观察时,我们将强化学习问题称为马尔可夫决策过程。当状态不依赖于先前的动作时,我们称该问题为上下文强盗问题。当没有状态,只有一组初始未知奖励的可用动作时,这个问题就是经典的多臂老虎机问题。
1.4. 历史
我们刚刚回顾了机器学习可以解决的一小部分问题。对于各种各样的机器学习问题,深度学习提供了强大的工具来解决这些问题。尽管许多深度学习方法都是最近才发明的,但使用数据和神经网络(许多深度学习模型的名称)进行编程的核心思想已经研究了几个世纪。事实上,长期以来,人类一直渴望分析数据和预测未来结果,而大部分自然科学都源于此。例如,伯努利分布以Jacob Bernoulli (1655-1705)命名,而高斯分布由Carl Friedrich Gauss (1777-1855)发现. 例如,他发明了最小均方算法,该算法至今仍被用于解决从保险计算到医疗诊断等无数问题。这些工具催生了自然科学中的实验方法——例如,与电阻器中的电流和电压相关的欧姆定律可以用线性模型完美地描述。
即使在中世纪,数学家也对估计有着敏锐的直觉。例如,雅各布·科贝尔 (Jacob Köbel,1460-1533)的几何书 说明了对 16 名成年男性脚的长度进行平均以获得平均脚长。
图 1.4.1估计脚的长度。
图 1.4.1说明了这个估计器是如何工作的。16名成年男子在离开教堂时被要求排成一排。然后将它们的总长度除以 16,以获得现在为 1 英尺的估计值。这个“算法”后来被改进以处理畸形的脚——脚最短和最长的 2 人分别被送走,只对其余的人取平均值。这是修剪平均估计的最早示例之一。
随着数据的收集和可用性,统计数据真正起飞。它的一位巨匠Ronald Fisher (1890-1962)对其理论及其在遗传学中的应用做出了重大贡献。他的许多算法(如线性判别分析)和公式(如Fisher信息矩阵)至今仍在频繁使用。事实上,即使是 Fisher 在 1936 年发布的 Iris 数据集,有时仍然被用来说明机器学习算法。他也是优生学的支持者,这应该提醒我们,数据科学在道德上的可疑使用与其在工业和自然科学中的生产性使用一样悠久而持久。
对机器学习的第二个影响来自 Claude Shannon (1916-2001)的信息论和Alan Turing (1912-1954)的计算理论。图灵提出了“机器能思考吗?”的问题。在他著名的论文Computer Machinery and Intelligence [Turing, 1950]中。在他所说的图灵测试中,如果人类评估者难以根据文本交互区分来自机器和人类的回复,则可以认为机器是智能的。
另一个影响可以在神经科学和心理学中找到。毕竟,人类显然表现出智能行为。因此,询问是否可以解释并可能对这种能力进行逆向工程是合理的。以这种方式启发的最古老的算法之一是由Donald Hebb (1904-1985)制定的。在他的开创性著作《行为的组织》 [Hebb & Hebb, 1949],他假设神经元通过正强化学习。这被称为赫布学习规则。它是 Rosenblatt 感知器学习算法的原型,它为当今支持深度学习的许多随机梯度下降算法奠定了基础:强化理想行为并减少不良行为,以获得神经网络中参数的良好设置。
生物灵感是神经网络得名的原因。一个多世纪以来(可追溯到 Alexander Bain,1873 年和 James Sherrington,1890 年的模型),研究人员一直试图组装类似于相互作用神经元网络的计算电路。随着时间的推移,对生物学的解释已经变得不那么字面了,但名字却被保留了下来。其核心是当今大多数网络中都可以找到的一些关键原则:
线性和非线性处理单元的交替,通常称为层。
使用链式法则(也称为反向传播)一次调整整个网络中的参数。
在最初的快速进展之后,神经网络的研究从 1995 年左右一直到 2005 年都萎靡不振。这主要是由于两个原因。首先,训练网络在计算上非常昂贵。虽然在上个世纪末随机存取存储器很丰富,但计算能力却很匮乏。其次,数据集相对较小。事实上,Fisher 1932 年的 Iris 数据集是测试算法有效性的流行工具。具有 60000 个手写数字的 MNIST 数据集被认为是巨大的。
鉴于数据和计算的稀缺性,强大的统计工具(如核方法、决策树和图形模型)在经验上证明是优越的。与神经网络不同,它们不需要数周的训练,并提供具有强大理论保证的可预测结果。
1.5。深度学习之路
由于万维网、为数亿在线用户提供服务的公司的出现、廉价、高质量传感器的传播、廉价的数据存储(克莱德定律),这在很大程度上随着大量数据的随时可用而发生了变化,以及廉价的计算(摩尔定律),特别是 GPU 的形式,最初是为计算机游戏而设计的。突然之间,似乎在计算上不可行的算法和模型变得相关(反之亦然)。这在表 1.5.1中得到了最好的说明。
表 1.5.1数据集与计算机内存和计算能力
很明显,随机存取存储器并没有跟上数据增长的步伐。与此同时,计算能力的增长已经超过了可用数据的增长速度。这意味着统计模型需要提高内存效率(这通常通过添加非线性来实现),同时由于计算预算增加,需要花费更多时间优化这些参数。因此,机器学习和统计的最佳点从(广义)线性模型和核方法转移到了深度神经网络。这也是为什么许多深度学习中流砥柱的原因之一,例如多层感知器 [McCulloch & Pitts, 1943]、卷积神经网络 [LeCun et al., 1998]、长短期记忆 [Hochreiter & Schmidhuber, 1997]和 Q-Learning [Watkins & Dayan, 1992]在相对休眠相当长一段时间后,在过去十年中基本上被“重新发现”。
统计模型、应用程序和算法的最新进展有时被比作寒武纪大爆发:物种进化的快速进展时刻。事实上,最先进的技术不仅仅是可用资源的结果,它适用于几十年前的算法。请注意,下面的列表几乎没有触及帮助研究人员在过去十年中取得巨大进步的想法的表面。
-
容量控制的新方法,例如dropout [Srivastava et al., 2014],有助于减轻过度拟合的危险。这是通过在整个神经网络中应用噪声注入[Bishop, 1995]来实现的,将权重替换为用于训练目的的随机变量。
-
注意力机制解决了困扰统计学一个多世纪的第二个问题:如何在不增加可学习参数数量的情况下增加系统的内存和复杂性。研究人员通过使用只能被视为可学习的指针结构找到了一个优雅的解决方案 [Bahdanau et al., 2014]。不必记住整个文本序列,例如,对于固定维度表示的机器翻译,需要存储的只是指向翻译过程中间状态的指针。这允许显着提高长序列的准确性,因为模型不再需要在开始生成新序列之前记住整个序列。
-
多阶段设计,例如,通过记忆网络 [Sukhbaatar et al., 2015]和神经程序解释器[Reed & DeFreitas, 2015]允许统计建模者描述迭代的推理方法。这些工具允许重复修改深度神经网络的内部状态,从而在推理链中执行后续步骤,类似于处理器如何修改内存以进行计算。
-
另一个关键发展是生成对抗网络的发明[Goodfellow et al., 2014]. 传统上,用于密度估计和生成模型的统计方法侧重于寻找适当的概率分布和(通常是近似的)从中采样的算法。因此,这些算法在很大程度上受到统计模型缺乏灵活性的限制。生成对抗网络的关键创新是用具有可微参数的任意算法替换采样器。然后以鉴别器(实际上是双样本测试)无法区分假数据和真实数据的方式对这些数据进行调整。通过使用任意算法生成数据的能力,它为各种技术开辟了密度估计。疾驰的斑马 [Zhu et al., 2017]和假名人面孔的 例子[Karras et al., 2017]都证明了这一进步。即使是业余涂鸦者也可以仅根据描述场景布局的草图来制作逼真的图像[Park et al., 2019]。
-
在许多情况下,单个 GPU 不足以处理大量可用于训练的数据。在过去的十年中,构建并行和分布式训练算法的能力得到了显着提高。设计可扩展算法的关键挑战之一是深度学习优化的主力,随机梯度下降,依赖于要处理的相对较小的小批量数据。同时,小批量限制了 GPU 的效率。因此,在 1024 个 GPU 上进行小批量训练,例如每批 32 张图像,总计约 32000 张图像的小批量。最近的工作,首先是 Li [Li, 2017],随后是 [You et al., 2017]和[Jia et al., 2018] 将大小提高到 64000 个观察值,将 ResNet-50 模型在 ImageNet 数据集上的训练时间减少到不到 7 分钟。为了比较——最初的训练时间是以天为单位测量的。
-
并行计算的能力也对强化学习的进步做出了相当重要的贡献,至少在模拟是一种选择时是这样。这导致计算机在围棋、雅达利游戏、星际争霸和物理模拟(例如,使用 MuJoCo)中实现超人性能方面取得了重大进展。例如,参见 [Silver et al., 2016],了解如何在 AlphaGo 中实现这一目标。简而言之,如果有大量(状态、动作、奖励)三元组可用,即只要有可能尝试很多事情来了解它们之间的关系,强化学习效果最好。模拟提供了这样的途径。
-
深度学习框架在传播思想方面发挥了至关重要的作用。允许轻松建模的第一代框架包括Caffe、 Torch和 Theano。许多开创性的论文都是使用这些工具编写的。到目前为止,它们已被 TensorFlow(通常通过其高级 API Keras使用)、 CNTK、Caffe 2和Apache MXNet 所取代。第三代工具,即用于深度学习的命令式工具,可以说是由 Chainer带头的,它使用类似于 Python NumPy 的语法来描述模型。这个想法被PyTorch和MXNet 的 Gluon API和 Jax。
构建更好工具的系统研究人员和构建更好神经网络的统计建模人员之间的分工大大简化了事情。例如,训练一个线性逻辑回归模型曾经是一个不平凡的家庭作业问题,值得给新的机器学习博士。2014年卡内基梅隆大学的学生。到现在,这个任务用不到10行代码就可以完成,牢牢掌握在程序员的手中。
1.6. 成功的故事
人工智能在交付成果方面有着悠久的历史,否则这些成果将难以实现。例如,自 1990 年代以来就已经部署了使用光学字符识别的邮件分拣系统。毕竟,这是著名的 MNIST 手写数字数据集的来源。这同样适用于阅读银行存款支票和对申请人的信用评分。自动检查金融交易是否存在欺诈行为。这构成了许多电子商务支付系统的支柱,例如 PayPal、Stripe、支付宝、微信、Apple、Visa 和 MasterCard。几十年来,国际象棋计算机程序一直具有竞争力。机器学习提供互联网上的搜索、推荐、个性化和排名。换句话说,机器学习无处不在,尽管经常隐藏在视线之外。
直到最近,人工智能才成为人们关注的焦点,主要是因为解决了以前被认为难以解决且与消费者直接相关的问题。许多这样的进步归功于深度学习。
-
智能助手,如苹果的 Siri、
以上是关于翻译: 深入神经网络概览Dive into Deep Learning的主要内容,如果未能解决你的问题,请参考以下文章
翻译: 3.线性神经网络 概览 深入神经网络 pytorch
《Dive into Python》Chapter 2 and Chapter 3 笔记
A Deep Dive into Rescalable State in Apache Flink