Table of Contents
第 1 章 引言:从“写规则”到“用数据编程”
对应教材:《动手学深度学习(第二版)》第 1 章 引言
官方源码:d2l-ai/d2l-zh:chapter_introduction/index.md
学习定位:第一次系统学习深度学习,重点不是记住模型名,而是建立统一的问题框架。
1. 章节概览
传统程序由人明确写出“输入经过哪些规则得到输出”,但语音识别、图像分类等任务的规则过于复杂,难以手工穷举;机器学习则从数据中自动确定程序的参数,因此可理解为“用数据编程”(programming with data)。一个机器学习问题至少包含四个核心组件:数据(data)、模型(model)、目标函数(objective function)和优化算法(optimization algorithm)。不同任务的本质差异主要来自“可获得什么反馈”和“希望输出什么”,由此形成监督学习、无监督学习和强化学习等范式。深度学习是多层次的表示学习(representation learning),它借助端到端训练,把过去依赖人工设计的特征也纳入统一优化。现代深度学习的兴起并非只源于某一个算法,而是数据、算力、算法和开源系统共同发展的结果。
2. 第一性原理:为什么需要机器学习
2.1 两种“编程”方式
传统编程可以抽象为
例如,商城中“把商品加入购物车”可以写成确定的业务规则。可是对唤醒词识别而言,输入是一段包含数万次振幅采样的音频,人很难写出一组规则,直接判断它是否包含“Hey Siri”。
机器学习改变了规则的来源:
训练完成后才进行预测:
关键变化是:人不再逐条规定输入到输出的映射,而是规定一个可调的模型族和一个什么叫做得好的目标,让算法从经验中寻找参数。
2.2 机器学习、深度学习与人工智能的关系
- 人工智能(artificial intelligence, AI)是更大的目标:让机器表现出与智能有关的能力。
- 机器学习(machine learning, ML)是实现 AI 的一类方法:系统利用经验改善某项任务的性能。
- 深度学习(deep learning, DL)是机器学习的一类方法:模型通过多个可学习的变换层获得多层次表示。
“神经网络”不是对大脑的完整复制;它首先是一类可微、可组合、可通过数据优化的函数模型。
3. 核心概念
3.1 数据、样本、特征与标签
通俗解释
数据是模型的“经验”。一条经验称为样本(example/sample),描述样本的已知属性称为特征(feature/covariate),希望模型预测的量称为标签(label/target)。
以房价预测为例:
- 一个房子是一条样本;
- 面积、卧室数、距离市中心的时间是特征;
- 成交价格是标签。
数学定义
监督学习数据集通常写为
其中 是第 个样本的特征, 是标签, 是样本数。若每个样本有 个数值特征,则
称为特征维数(dimensionality)。无监督数据集通常只有
教材常假设样本独立同分布(independent and identically distributed, i.i.d.):
“同分布”指训练样本来自同一个联合分布 ;“独立”指知道一个样本不会改变另一个样本的抽样概率。它是便于理论分析的假设,不是现实世界的保证。
为什么需要它
学习算法只能利用数据中存在的信息。数据量大但标签错误、覆盖人群不完整,或特征与任务无关,仍然无法学出可靠模型,即“垃圾进,垃圾出”(garbage in, garbage out)。因此,数据的代表性、正确性和采集机制与模型结构同样重要。
3.2 参数、模型与模型族
通俗解释
可以把参数(parameter)想成模型内部的旋钮。固定一组旋钮值,就得到一个具体模型;所有可能的旋钮设置构成模型族(model family)。训练就是根据数据寻找合适的旋钮位置。
数学定义
参数为 ,模型写成
模型族为
例如线性模型
的参数为 。
为什么需要它
若模型族太弱,即使找到其中最好的参数也无法表达真实规律;若模型族过于灵活而数据不足,则可能记住训练样本却不能推广。学习问题不只是“找参数”,还包括选择恰当的函数空间。
参数与超参数不同:参数由训练数据直接学习,如权重 ;超参数(hyperparameter)由研究者或外层搜索设定,如学习率、网络层数和批量大小。
3.3 目标函数、损失函数与评价指标
通俗解释
模型不会天然知道“好”是什么意思。目标函数像评分规则,把模型表现变成一个数。只有先定义目标,学习算法才知道应该把参数往哪个方向调整。
数学定义
单个样本的损失为
在训练集上的平均损失称为经验风险(empirical risk):
我们真正关心的是未知数据分布上的期望风险(expected risk):
由于真实分布 通常未知,只能先最小化可计算的经验风险:
常见损失包括:
- 回归的平方误差:;
- 分类的交叉熵:;
- 多标签分类的二元交叉熵:对各标签的 Bernoulli 负对数似然求和。
为什么需要它
目标函数把任务要求转化为可优化的问题。但要区分:
- 损失(loss):训练时用于求梯度;
- 目标(objective):可能还包含正则化等额外项;
- 评价指标(metric):用于报告最终表现,如准确率、F1、BLEU,不一定可微。
0-1 错误率很符合分类直觉,但预测类别发生跳变时它才改变,几乎处处梯度为零,难以直接用梯度法优化,因此需要交叉熵这样的替代损失(surrogate loss)。
3.4 优化算法与梯度下降
通俗解释
目标函数给出了“当前位置有多差”,优化算法负责寻找更好的参数。梯度指向函数局部增长最快的方向,因此沿负梯度方向走一小步,通常会让损失下降。
数学定义
批量梯度下降(gradient descent)的更新为
其中 为学习率(learning rate)。
实际深度学习常用小批量随机梯度下降(mini-batch stochastic gradient descent, mini-batch SGD):
若小批量 是均匀抽样,则 是全数据梯度的无偏估计:
为什么需要它
现代神经网络可能有数百万甚至数十亿参数,无法枚举所有参数组合。梯度把“每个参数的微小变化如何影响目标”压缩成一个向量,使大规模连续优化成为可能。
3.5 训练、测试、泛化与过拟合
通俗解释
训练集像练习题,测试集像没有见过的考试题。真正目标不是背熟练习题,而是学到能迁移到新样本的规律。
数学定义
给定独立的训练集 和测试集 ,泛化差距(generalization gap)可写为
当训练误差很小而测试误差明显更大时,称为过拟合(overfitting)。反之,模型连训练数据中的主要规律都没有学到,通常称为欠拟合(underfitting)。
为什么需要它
部署时遇到的是未来数据,而不是训练数据本身。若反复根据测试集修改模型,测试集也会被间接用于训练,评价便失去可信度;实践中通常再划分验证集(validation set)用于选择超参数,把测试集留到最后。
3.6 监督学习:从输入预测标签
通俗解释
监督学习(supervised learning)像带答案练习:训练时每个输入都有目标答案,模型学习从 到 的映射。
数学定义
可从函数角度写为
也可从概率角度学习条件分布
预测时可取
若不同错误的代价不同,更一般的决策是最小化条件风险:
其中 表示真实类别为 时采取决策 的代价。这解释了为什么“概率最高的类别”不一定等于“最合理的行动”。
为什么需要它
大量实际问题都有成对的输入和标签,例如图像—类别、病历—风险、语音—文字。明确标签使学习信号直接,因此监督学习是最成熟、应用最广泛的范式之一。
常见监督学习任务
| 任务 | 输出空间 | 数学形式 | 例子 |
|---|---|---|---|
| 回归(regression) | 连续值 | 房价、降雨量 | |
| 多类分类(multiclass classification) | 互斥类别之一 | 手写数字 0–9 | |
| 多标签分类(multi-label classification) | 多个标签可同时成立 | 图片同时含猫、狗、树 | |
| 排序(ranking) | 有序项目列表 | 搜索结果 | |
| 推荐(recommendation) | 用户—物品匹配分数 | 电影推荐 | |
| 序列学习(sequence learning) | 可变长序列 | 翻译、语音识别 |
多标签分类不是多类分类。多类分类通常假设类别互斥;多标签分类中每个标签可视为一个 Bernoulli 变量:
序列模型还需要描述输出之间的依赖。由概率链式法则,
这说明生成第 个词时,不能只看输入,还可能需要利用已经生成的 。
3.7 无监督学习:没有人工标签时发现结构
通俗解释
无监督学习(unsupervised learning)没有现成答案,但不是“什么目标都没有”。研究者仍要指定希望发现的结构,例如相似样本应归为一组、用更少变量保留主要信息,或学习数据的生成分布。
数学定义
输入只有 。典型目标包括:
- 聚类:学习簇指派 ;
- 降维/表示学习:学习 ,通常 ;
- 密度估计/生成建模:学习 。
例如 均值聚类最小化簇内平方距离:
为什么需要它
现实中的无标签数据远多于人工标注数据。无监督学习可用于探索数据结构、压缩、异常检测、生成数据,也可以先学习通用表示,再以少量标签完成下游任务。
仅凭观察数据发现相关结构,不等于已经识别因果关系;因果推断通常需要额外假设、干预或实验设计。
3.8 离线学习、环境交互与分布偏移
通俗解释
离线学习(offline learning)先收集固定数据,再训练模型;模型的预测不会改变训练数据的来源。交互式系统则不同:推荐什么会影响用户点击什么,模型今天的行为会改变明天看到的数据。
数学定义
经典监督学习常隐含
若二者不相等,
则出现分布偏移(distribution shift)。在交互系统中,未来数据分布还依赖模型采取的动作:
为什么需要它
训练集准确率高并不能保证部署后可靠。人群变化、传感器变化、用户对推荐的响应以及对手的策略变化都会使过去数据失效。推荐系统还可能形成反馈循环:被推荐的内容获得更多曝光,又因为更多点击而被进一步推荐。
3.9 强化学习:通过奖励学习行动策略
通俗解释
强化学习(reinforcement learning, RL)不是每一步都有标准答案。智能体(agent)观察环境、选择动作、收到奖励,再从长期后果中判断哪些行为值得重复。
数学定义
完全可观测情形通常建模为马尔可夫决策过程(Markov decision process, MDP):
其中 为状态空间, 为动作空间, 为状态转移概率, 为奖励, 为折扣因子。策略(policy)为
从时刻 开始的折扣回报为
学习目标是
为什么需要它
在机器人、游戏和在线决策中,动作会改变后续状态,奖励可能延迟出现,也没有人告诉智能体“这一步的正确动作”。强化学习专门处理序贯决策、探索—利用(exploration–exploitation)和信用分配(credit assignment)问题。
3.10 表示学习、深度与端到端训练
通俗解释
传统流水线常由专家先手工提取特征,再训练一个较浅的模型。深度学习让模型自己学习一连串表示:图像的早期层可能表示边缘,后续层组合出纹理、部件和对象概念。
数学定义
一个 层深度模型可写为函数复合:
令
则每个 都是第 级表示。端到端训练(end-to-end training)指所有层共同针对最终任务优化:
为什么需要它
手工特征可能丢失任务所需信息,而且每个领域都要重新设计。联合训练让最终误差信号反向指导每一级表示,减少人工特征工程,并为图像、语音和文本提供较统一的工具。
端到端并不意味着“不需要数据清洗、架构设计、安全约束和系统工程”;它只说明多个可微组件可以围绕同一个最终目标联合调整。
3.11 深度学习为什么在近年成功
教材强调的原因可以概括成四个相互增强的条件:
- 数据:互联网应用、数字化与廉价传感器产生了大规模训练数据;
- 算力:GPU、并行计算和分布式训练使大模型优化成为可能;
- 算法:更好的激活、初始化、正则化、注意力和优化方法提高了可训练性;
- 系统与开源生态:PyTorch 等框架把自动微分、硬件加速和模型组件封装成可复用工具。
深度学习不是“数据越多就必然成功”。数据质量、模型归纳偏置、目标是否与真实需求一致、优化能否稳定进行,以及部署分布是否变化,都会决定最终结果。
4. 关键公式推导
4.1 为什么负梯度方向能让损失下降
设目标函数为 ,在当前位置做一个小改变量 。一阶泰勒展开为
选择
代入得到
只要梯度非零且步长足够小,右侧第二项为负,因此目标下降。这只是局部的一阶结论:
- 太大时,高阶项不能忽略,可能越过低点甚至发散;
- 深度网络目标通常非凸,梯度下降不保证找到全局最优;
- 但它能利用局部方向信息,在高维空间中高效搜索可用解。
4.2 线性回归的平方损失与梯度
设批量数据矩阵为 ,标签为 ,模型为
定义平均平方损失
令残差
则
利用链式法则:
所以
同理,
梯度下降更新为
平方损失前放 只是为了求导时抵消平方产生的系数 ,不改变最优解。
4.3 交叉熵为什么来自最大似然
对 类分类,模型输出类别概率
若样本相互独立,整个数据集标签的条件似然为
最大化许多小概率的乘积数值上不稳定,也不方便求导。对数函数单调递增,因此最大化似然等价于最大化对数似然:
再乘以负号,就转成最小化:
若用 one-hot 标签 表示真实类别,则
这正是多类交叉熵。它不仅关心分类对错,还连续地惩罚“给真实类别分配很低概率”的行为,因此比 0-1 错误率更适合梯度优化。
4.4 经验风险为什么只能近似真实风险
训练目标
是对总体期望
的样本平均估计。对一个固定的 ,在 i.i.d. 且损失期望存在时,大数定律说明
但训练后的 恰好是依据这批样本选出的,并非预先固定;一个容量很大的模型可能利用有限样本中的偶然噪声。因此,“样本平均趋近期望”并不能单独排除过拟合,还需要独立测试数据、容量控制或正则化等手段。
5. 代码解析(PyTorch)
5.1 先说明教材代码情况
本章官方页面与官方 chapter_introduction/index.md 均为概念讲解和示意图,没有可执行的 PyTorch 核心代码单元。下面给出一个教学补充:用最小线性回归例子把本章的“数据—模型—目标函数—优化算法—评估”五个环节对应到 PyTorch。它不是冒充教材原代码,而是为理解本章训练闭环服务。
5.2 完整可运行示例
import torchfrom torch import nnfrom torch.utils.data import DataLoader, TensorDataset
# 固定随机数种子,便于复现实验torch.manual_seed(42)
# 1) 数据:y = 2*x1 - 3*x2 + 0.5 + 噪声n, d = 1000, 2X = torch.randn(n, d)true_w = torch.tensor([[2.0], [-3.0]])true_b = 0.5y = X @ true_w + true_b + 0.1 * torch.randn(n, 1)
# 留出独立测试集;训练集用于学习参数,测试集只用于评估X_train, X_test = X[:800], X[800:]y_train, y_test = y[:800], y[800:]
# DataLoader 每次提供一个随机小批量train_loader = DataLoader( TensorDataset(X_train, y_train), batch_size=32, shuffle=True,)
# 2) 模型族:所有从 R^2 到 R 的仿射函数 x @ w + bmodel = nn.Linear(in_features=2, out_features=1)
# 3) 目标函数:小批量上的平均平方误差loss_fn = nn.MSELoss()
# 4) 优化算法:随机梯度下降;model.parameters() 是待学习的 w 和 boptimizer = torch.optim.SGD(model.parameters(), lr=0.05)
# 5) 训练:重复“前向计算 -> 计算损失 -> 反向传播 -> 更新参数”for epoch in range(20): model.train() for X_batch, y_batch in train_loader: y_hat = model(X_batch) # 前向传播:得到预测 loss = loss_fn(y_hat, y_batch) # 衡量预测与标签的差异
optimizer.zero_grad() # 清除上一次迭代累积的梯度 loss.backward() # 自动微分:计算每个参数的梯度 optimizer.step() # 按 SGD 规则更新参数
if (epoch + 1) % 5 == 0: print(f"epoch={epoch + 1:02d}, last_batch_loss={loss.item():.6f}")
# 6) 测试:不更新参数,只估计模型对未见数据的泛化表现model.eval()with torch.no_grad(): test_pred = model(X_test) test_loss = loss_fn(test_pred, y_test)
print("learned weight:", model.weight.detach())print("learned bias:", model.bias.detach())print("test MSE:", test_loss.item())5.3 逐段理解
数据与形状
X.shape == (1000, 2),表示 1000 个样本、每个样本 2 个特征;true_w.shape == (2, 1),所以
X @ true_w的形状为 (1000, 1)。加上标量偏置 true_b 时,PyTorch 使用广播(broadcasting)把它加到每个样本上。
这里人为生成数据,是因为我们知道真实参数 ,可以检查模型是否真的学回这些值。噪声项模拟现实中无法解释的波动,因此测试损失不应期望严格为零。
小批量加载
TensorDataset 把同一索引的 X_train[i] 和 y_train[i] 绑定为一个样本。DataLoader 每次返回 32 个样本,shuffle=True 在每轮训练前打乱顺序,减弱固定顺序造成的系统性影响。
模型
model = nn.Linear(2, 1)实现
PyTorch 内部权重 model.weight 的形状是 (out_features, in_features) = (1, 2),前向计算实际采用 。这与数学中把 写成 (2, 1) 列向量只是存储约定不同。
损失
nn.MSELoss() 默认对批量中所有元素求均值:
它没有前面推导中的 ,因此梯度多一个常数因子 ;这不会改变最优点,只会影响合适的学习率尺度。
梯度与参数更新
optimizer.zero_grad()loss.backward()optimizer.step()zero_grad():PyTorch 默认把新梯度累加到.grad,不清零就会把多个批量的梯度意外相加;backward():沿动态计算图应用链式法则,把梯度写入各参数的.grad;step():根据优化器规则修改参数。对普通 SGD,近似执行 。
“前向传播”计算数值,“反向传播”计算梯度,“优化器”使用梯度更新参数,三者不要混为一谈。
训练模式与测试模式
model.train() 和 model.eval() 控制 Dropout、批量归一化等层的行为。当前只有 nn.Linear,两种模式结果相同,但保留正确习惯有利于以后扩展。
torch.no_grad() 关闭梯度记录,减少测试时的显存和计算开销。它与 model.eval() 作用不同,实际评估时通常两者都用。
6. 知识点结构
第 1 章 引言├─ 1. 为什么需要机器学习│ ├─ 规则可明确:传统编程│ └─ 规则难穷举:用数据编程├─ 2. 机器学习统一框架│ ├─ 数据:样本、特征、标签、i.i.d.│ ├─ 模型:参数、模型族、表达能力│ ├─ 目标:损失、经验风险、评价指标│ └─ 算法:梯度、SGD、参数更新├─ 3. 学习问题类型│ ├─ 监督学习│ │ ├─ 回归│ │ ├─ 分类 / 多标签分类│ │ ├─ 搜索与排序│ │ ├─ 推荐系统│ │ └─ 序列学习│ ├─ 无监督学习│ │ ├─ 聚类│ │ ├─ 降维与表示学习│ │ └─ 密度估计与生成建模│ └─ 强化学习│ ├─ 智能体—环境交互│ ├─ 状态、动作、奖励、策略│ └─ 长期回报、探索、信用分配├─ 4. 从训练到部署│ ├─ 训练集 / 验证集 / 测试集│ ├─ 泛化、欠拟合、过拟合│ ├─ 分布偏移│ └─ 反馈循环与公平性└─ 5. 深度学习 ├─ 多层函数复合 ├─ 多级表示学习 ├─ 端到端联合优化 └─ 成功条件:数据 + 算力 + 算法 + 系统把整章压缩成一个训练闭环:
训练闭环之外还有一个更重要的外环:
7. 常见误区与易错点
- 把 AI、ML、DL 当作同义词。深度学习只是机器学习的一部分,机器学习也只是实现人工智能的一类方法。
- 认为模型是在“存储答案”。模型学习的是带参数的映射;是否学到可迁移规律要看未见数据。
- 把参数和超参数混淆。权重、偏置由反向传播学习;学习率、层数、批量大小通常由人或外层算法选择。
- 把损失和指标混为一谈。训练优化交叉熵,不等于最终只能看交叉熵;准确率等指标也不一定适合直接求梯度。
- 认为训练损失越小,模型一定越好。训练损失持续下降而测试损失上升,正是典型过拟合信号。
- 在测试集上反复调参。这会泄漏测试信息,使测试成绩变得乐观;应使用验证集调参。
- 把 i.i.d. 当成现实定律。时间序列、同一用户的多条记录、推荐反馈等数据通常有关联,部署分布也可能变化。
- 认为数据越多越好。更多有偏、有毒或错误的数据可能强化偏差;覆盖性与采集机制比单纯规模更重要。
- 把多类分类和多标签分类混淆。“猫/狗二选一”是多类分类;“图中同时有猫和狗”是多标签分类。
- 把类别概率直接当成可信度。神经网络输出 0.9 不保证真实事件在长期统计上恰有 90% 发生率,还涉及概率校准。
- 认为无监督学习没有目标函数。它没有人工标签,但仍有聚类、重构、对比或似然等学习目标。
- 从相关性直接推出因果性。预测模型可以利用相关性获得高准确率,但“改变某特征会导致结果变化”需要因果假设或干预证据。
- 把即时奖励等同于强化学习目标。强化学习优化长期累积回报,短期最优动作可能损害长期收益。
- 忘记 PyTorch 梯度会累积。常规训练循环中若不调用
optimizer.zero_grad(),梯度会跨批量相加。 - 认为
model.eval()等于torch.no_grad()。前者切换层的行为,后者关闭梯度记录,两者功能不同。 - 把“端到端”理解为不需要人工工作。数据定义、目标选择、约束、评估、安全和部署仍然依赖系统设计。
- 认为深度学习成功只因为“网络更深”。大规模数据、GPU、优化技术和软件系统缺一不可。
8. 与前后章节的联系
8.1 本章依赖的已有知识
本章是全书第一章,没有正式的前置章节,但默认读者能理解:
- Python 程序的输入、输出与函数;
- 向量、矩阵和函数复合;
- 概率分布、条件概率与期望;
- 导数、梯度和链式法则的基本直觉。
若这些概念不熟,不必在本章一次补齐;第 2 章会系统复习。
8.2 为后续章节铺垫
| 本章概念 | 后续落点 |
|---|---|
| 张量、样本与特征 | 第 2 章数据操作、线性代数 |
| 梯度与优化 | 第 2 章微积分、自动微分;第 11 章优化算法 |
| 回归与平方损失 | 第 3 章线性回归 |
| 分类、概率与交叉熵 | 第 3 章 softmax 回归 |
| 过拟合与泛化 | 第 4 章模型选择、权重衰减、Dropout |
| 多层表示与端到端训练 | 第 4 章多层感知机;第 6–7 章卷积网络 |
| 序列学习 | 第 8–9 章循环神经网络 |
| 注意力与可变长序列 | 第 10 章注意力机制与 Transformer |
| 模型参数与计算框架 | 第 5 章深度学习计算 |
| 分布偏移 | 第 4 章环境和分布偏移 |
| 大规模计算与 GPU | 第 5、12 章 GPU、并行与多 GPU |
| 计算机视觉与自然语言处理应用 | 第 13–15 章 |
建议把本章的四元组反复用于后续每个模型:
只要能回答这四个问题,就不会在繁杂的网络结构中失去主线。
9. 自测思考题
- 唤醒词识别为什么难以用传统规则编程?请分别写出它的数据 、标签 、模型 、损失 和最终评价指标,并解释损失与指标为何可以不同。
- 训练误差为零是否意味着模型已经学会任务?请从经验风险、期望风险、模型容量和分布偏移四个角度回答,并举一个训练集泄漏的例子。
- 为什么交叉熵比分类错误率更适合梯度下降?尝试从“最大似然”和“可微替代目标”两条路线各解释一次。
- 推荐系统为什么不只是一个普通的监督学习问题?请说明曝光偏差、隐式反馈和反馈循环如何破坏静态 i.i.d. 假设。
- 端到端学习取代了什么,又没有取代什么?请以图像分类或语音识别为例,区分可由模型自动学习的表示与仍需人工决定的数据、目标、安全约束和评价流程。
10. 延伸阅读
- LeCun, Bengio & Hinton, “Deep learning”, Nature, 2015:经典综述,重点理解“多层表示”和反向传播为何构成统一方法。
- Bengio, Courville & Vincent, “Representation Learning: A Review and New Perspectives”, IEEE TPAMI, 2013:表示学习的系统综述,适合在学完多层感知机后重读。
- Goodfellow, Bengio & Courville, Deep Learning, 2016:可作为 D2L 的理论补充,建议先读第 1、5、6 章。
- Mnih et al., “Human-level control through deep reinforcement learning”, Nature, 2015:理解深度表示如何与强化学习结合,以及“像素—动作”的端到端学习。
- Vaswani et al., “Attention Is All You Need”, 2017:本章提到注意力和序列学习;学完第 10 章后回看,可理解 Transformer 如何改变序列建模。
11. 一页复习结论
- 机器学习的本质不是“写出答案”,而是定义可学习的函数族和评价标准,再从经验中选择参数。
- 所有训练过程都可追问四件事:数据、模型、目标、优化。
- 训练损失只是对真实部署风险的有限样本近似;泛化能力才是最终目的。
- 监督学习学习 或输入到标签的映射;无监督学习发现 的结构;强化学习学习在交互中最大化长期回报的策略。
- 深度学习通过多层函数复合自动学习表示,并用端到端训练联合调整各层。
- 现代深度学习的能力来自数据、算力、算法与系统的共同作用,也受到数据偏差、目标错配和分布变化的共同约束。