Table of Contents
《动手学深度学习》的笔记
原文:https://zh-v2.d2l.ai/
每个数据集由一个个
样本
(example, sample)组成。样本有时也叫做数据点(data point)或者数据实例(data instance),通常每个样本由一组称为特征
(features,或协变量(covariates))的属性组成。在上面的监督学习问题中,要预测的是一个特殊的属性,它被称为标签
(label,或目标*(target))。
在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在大多数情况是“可优化”的,我们称之为*
目标函数
(objective function)。 我们通常定义一个目标函数,并希望优化它到最低点。 因为越低越好,所以这些函数有时被称为损失函数
(loss function,或cost function)。 通常,损失函数是根据模型参数定义的,并取决于数据集。 在一个数据集上,我们通过最小化总损失来学习模型参数的最佳值。 该数据集由一些为训练而收集的样本组成,称为训练数据集*(training dataset,或称为*训练集
(training set))。 然而,在训练数据上表现良好的模型,并不一定在“新数据集”上有同样的效能,这里的“新数据集”通常称为测试数据集*(test dataset,或称为*测试集
*(test set))。 当一个模型在训练集上表现良好,但不能推广到测试集时,我们说这个模型是“过拟合
”(overfitting)的。
一旦我们获得了一些数据源及其表示、一个模型和一个合适的损失函数,我们接下来就需要一种算法,它能够搜索出最佳参数,以最小化损失函数。 深度学习中,大多流行的优化算法通常基于一种基本方法–梯度下降(gradient descent)。 简而言之,在每个步骤中,梯度下降法都会检查每个参数,看看如果你仅对该参数进行少量变动,训练集损失会朝哪个方向移动。 然后,它在可以减少损失的方向上优化参数。
监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。** 每个“特征-标签”对都称为一个样本(example)。 有时,即使标签是未知的,样本也可以指代输入特征。 我们的目标是生成一个模型,能够将任何输入特征映射到标签,即预测。 综上所述,即使使用简单的描述“给定输入特征的预测标签”,监督学习也可以采取多种形式的模型,并且需要大量不同的建模决策,这取决于输入和输出的类型、大小和数量。 例如,我们使用不同的模型来处理“任意长度的序列”或“固定长度的序列”。 我们将在本书中深入探讨这些问题。
本质上是输出决定的。 假设你在市场上寻找新房子,你可能需要估计一栋房子的公平市场价值。 销售价格,即标签,是一个数值。 当标签取任意数值时,我们称之为回归问题。
在分类问题中,我们希望模型能够预测样本属于哪个类别(category,正式称为类(class))。 当我们有两个以上的类别时,我们把这个问题称为
多元分类
(multiclass classification)问题。 常见的例子包括手写字符识别 {0,1,2,…9,a,b,c,…}{0,1,2,…9,a,b,c,…}。 与解决回归问题不同,分类问题的常见损失函数被称为交叉熵(cross-entropy)
学习预测不相互排斥的类别的问题称为*
多标签分类
*(multi-label classification)。
在信息检索领域,我们希望对一组项目进行排序。 以网络搜索为例,我们的目标不是简单的“查询(query)-网页(page)”分类,而是在海量搜索结果中找到用户最需要的那部分。
另一类与搜索和排名相关的问题是推荐系统(recommender system),它的目标是向特定用户进行“个性化”推荐
以上大多数问题都具有***固定大小*的输入和产生固定大小的输出。在这些情况下,模型只会将输入作为生成输出的“原料”,而不会“记住”输入的具体内容。(如果输入的样本之间没有任何关系,以上模型可能完美无缺。) 但是如果输入是连续的,我们的模型可能就需要拥有“记忆”功能。
序列学习需要摄取输入序列或预测输出序列,或两者兼而有之。 具体来说,输入和输出都是可变长度的序列
这涉及到用属性注释文本序列。 换句话说,输入和输出的数量基本上是相同的。
例如,我们可能想知道动词和主语在哪里,或者,我们可能想知道哪些单词是命名实体。
在语音识别中,输入序列是说话人的录音,输出序列是说话人所说内容的文本记录。 它的挑战在于,与文本相比,音频帧多得多(声音通常以8kHz或16kHz采样)。 这也是“序列到序列”的学习问题,其中输出比输入短得多。
输出比输入长得多
在语音识别中,输入和输出的出现顺序基本相同。 而在机器翻译中,颠倒输入和输出的顺序非常重要。 换句话说,虽然我们仍将一个序列转换成另一个序列,但是输入和输出的数量以及相应序列的顺序大都不会相同。
我们称这类数据中不含有“目标”的机器学习问题为无监督学习(unsupervised learning)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3NtSWjWw-1645978428940)(C:/Users/007/AppData/Roaming/Typora/typora-user-images/image-20220227234616577.png)]
不管是
监督学习
还是无监督学习
,我们都会预先获取大量数据,然后启动模型,不再与环境交互。 这里所有学习都是在算法与环境断开后进行的,被称为*离线学习
*(offline learning)。 好的一面是,我们可以孤立地进行模式识别,而不必分心于其他问题。 但缺点是,解决的问题相当有限。
你可能会期望人工智能不仅能够做出预测,而且能够与真实环境互动。 与预测不同,“与真实环境互动”实际上会影响环境。
强化学习
问题,这是一类明确考虑与环境交互的问题。
如果你对使用机器学习开发与环境交互并采取行动感兴趣,那么你最终可能会专注于
强化学习
(reinforcement learning)。 这可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)。深度强化学习
(deep reinforcement learning)将深度学习应用于强化学习的问题,是非常热门的研究领域。 突破性的深度Q网络(Q-network)。例如:AlphaGo 程序在棋盘游戏围棋中击败了世界冠军 在强化学习问题中,agent在一系列的时间步骤上与环境交互。 在每个特定时间点,agent从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后agent从环境中获得奖励
(reward)。 此后新一轮循环开始,agent接收后续观察,并选择后续操作,依此类推。
例如,我们可以将任何监督学习问题转化为强化学习问题。 假设我们有一个分类问题,我们可以创建一个强化学习agent,每个分类对应一个“动作”。 然后,我们可以创建一个环境,该环境给予agent的奖励
。 这个奖励与原始监督学习问题的损失函数是一致的。
例如,在监督学习中,我们总是希望输入与正确的标签相关联。 但在强化学习中,我们并不假设环境告诉agent每个观测的最优动作。 一般来说,agent只是得到一些奖励。 此外,环境甚至可能不会告诉我们是哪些行为导致了奖励。 因此,强化学习者必须处理学分分配(credit assignment)问题:决定哪些行为是值得奖励的,哪些行为是需要惩罚的。
也就是说,当前的观察结果可能无法阐述有关当前状态的所有信息。 比方说,一个清洁机器人发现自己被困在一个许多相同的壁橱的房子里。 推断机器人的精确位置(从而推断其状态),需要在进入壁橱之前考虑它之前的观察结果。
强化学习agent必须不断地做出选择:是应该利用当前最好的策略,还是探索新的策略空间(放弃一些短期回报来换取知识)。
当环境可被完全观察到时,我们将强化学习问题称为马尔可夫决策过程(markov decision process)。 当***状态不依赖于之前的操作*时,我们称该问题为上下文赌博机(contextual bandit problem)。 当***没有状态,只有一组最初未知回报的可用动作*时,这个问题就是经典的多臂赌博机(multi-armed bandit problem)。
机器学习
研究计算机系统如何利用经验(通常是数据)来提高特定任务的性能。它结合了统计学、数据挖掘和优化的思想。通常,它是被用作实现人工智能解决方案的一种手段。- 表示学习作为机器学习的一类,其研究的重点是如何自动找到合适的数据表示方式。
深度学习
是通过学习多层次的转换来进行的多层次的表示学习。- 深度学习不仅取代了传统机器学习的浅层模型,而且取代了劳动密集型的特征工程。
*。它结合了统计学、数据挖掘和优化的思想。通常,它是被用作实现人工智能解决方案的一种手段。- 表示学习作为机器学习的一类,其研究的重点是如何自动找到合适的数据表示方式。
深度学习
是通过学习多层次的转换来进行的多层次的表示学习。- 深度学习不仅取代了传统机器学习的浅层模型,而且取代了劳动密集型的特征工程。
- 最近在深度学习方面取得的许多进展,大都是由廉价传感器和互联网规模应用所产生的大量数据,以及(通过GPU)算力的突破来触发的。 整个系统优化是获得高性能的关键环节。有效的深度学习框架的开源使得这一点的设计和实现变得非常容易。