文章目录
-
- 一、基础阶段:构建多维知识体系
-
- [1.1 数学理论深度解析](#1.1 数学理论深度解析)
- [1.2 编程工具链对比](#1.2 编程工具链对比)
- 二、进阶阶段:掌握前沿算法与优化
-
- [2.1 网络架构创新](#2.1 网络架构创新)
- [2.2 训练技巧大全](#2.2 训练技巧大全)
- 三、应用阶段:从实验室到生产环境
-
- [3.1 计算机视觉全流程](#3.1 计算机视觉全流程)
- [3.2 自然语言处理进阶](#3.2 自然语言处理进阶)
- [3.3 工业级部署方案](#3.3 工业级部署方案)
- 四、前沿趋势与学习资源
-
- [4.1 技术发展趋势](#4.1 技术发展趋势)
- [4.2 实践建议](#4.2 实践建议)
- 五、学习路径规划建议
-
- [5.1 分阶段目标](#5.1 分阶段目标)
- [5.2 资源推荐](#5.2 资源推荐)
- 《理解深度学习》

深度学习作为人工智能领域最具颠覆性的技术,正在重塑自动驾驶、医疗影像、智能推荐等关键行业的技术范式。本文将系统梳理从数学基础到工业级部署的完整学习路径,结合最新技术趋势与工程实践,提供可运行的代码示例和实战建议。
一、基础阶段:构建多维知识体系
1.1 数学理论深度解析
线性代数进阶应用:
- 图像处理中的张量运算:彩色图像表示为3D张量(H×W×C),卷积核为4D张量(K×K×C_in×C_out)
- 批处理优化:将N个样本堆叠为4D张量(N×C×H×W)实现并行计算
python
# 自定义3D卷积实现(简化版)
def conv3d(input_vol, kernel, stride=1):
# input_vol: (D,H,W), kernel: (kD,kH,kW)
D, H, W = input_vol.shape
kD, kH, kW = kernel.shape
output_D = (D - kD) // stride + 1
output_H = (H - kH) // stride + 1
output_W = (W - kW) // stride + 1
output = np.zeros((output_D, output_H, output_W))
for d in range(output_D):
for h in range(output_H):
for w in range(output_W):
d_start = d * stride
h_start = h * stride
w_start = w * stride
patch = input_vol[d_start:d_start+kD,
h_start:h_start+kH,
w_start:w_start+kW]
output[d,h,w] = np.sum(patch * kernel)
return output
# 测试
vol = np.random.rand(5,5,5)
kernel = np.random.rand(3,3,3)
print(conv3d(vol, kernel).shape) # 输出: (3,3,3)
微积分优化技巧:
- 二阶优化方法:L-BFGS在少量参数场景(如超参优化)中表现优异
- 梯度裁剪:防止RNN训练中的梯度爆炸
python
# 梯度裁剪实现
def clip_gradients(optimizer, max_norm):
for group in optimizer.param_groups:
for p in group['params']:
if p.grad is not None:
torch.nn.utils.clip_grad_norm_(p, max_norm)
# 使用示例
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
for epoch in range(100):
# ...前向传播和损失计算...
optimizer.zero_grad()
loss.backward()
clip_gradients(optimizer, 1.0) # 裁剪梯度范数不超过1.0
optimizer.step()
1.2 编程工具链对比
PyTorch vs TensorFlow 特性对比:
特性 | PyTorch | TensorFlow 2.x |
---|---|---|
计算图模式 | 动态图(Eager Execution) | 静态图(AutoGraph) |
调试体验 | 优秀(支持pdb调试) | 较差(需依赖tf.print) |
工业部署 | TorchScript/ONNX | TFLite/TF Serving |
分布式训练 | Torch Distributed | tf.distribute |
JAX框架新兴特性:
- 基于XLA编译器实现自动并行化
- 函数式编程范式支持高效微分
python
# JAX示例:自动微分与JIT编译
import jax
import jax.numpy as jnp
def sigmoid(x):
return 1 / (1 + jnp.exp(-x))
x = jnp.array([1.0, 2.0, 3.0])
vmap_sigmoid = jax.vmap(sigmoid) # 自动向量化
print(vmap_sigmoid(x)) # 输出: [0.731 0.881 0.953]
# JIT编译加速
@jax.jit
def train_step(x, y, params):
def loss_fn(params):
preds = jnp.dot(x, params)
return jnp.mean((preds - y)**2)
grads = jax.grad(loss_fn)(params)
return params - 0.01 * grads
二、进阶阶段:掌握前沿算法与优化
2.1 网络架构创新
Vision Transformer (ViT) 核心实现:
python
class ViTBlock(nn.Module):
def __init__(self, dim, num_heads=8):
super().__init__()
self.norm1 = nn.LayerNorm(dim)
self.attn = nn.MultiheadAttention(dim, num_heads)
self.norm2 = nn.LayerNorm(dim)
self.mlp = nn.Sequential(
nn.Linear(dim, 4*dim),
nn.GELU(),
nn.Linear(4*dim, dim)
)
def forward(self, x):
# x shape: (batch_size, seq_len, dim)
x_norm = self.norm1(x)
attn_out, _ = self.attn(x_norm, x_norm, x_norm)
x = x + attn_out
x_norm = self.norm2(x)
mlp_out = self.mlp(x_norm)
x = x + mlp_out
return x
# 图像分块处理
def image_to_patches(img, patch_size=16):
# img shape: (B, C, H, W)
B, C, H, W = img.shape
patches = img.unfold(2, patch_size, patch_size).unfold(3, patch_size, patch_size)
patches = patches.contiguous().view(B, C, -1, patch_size, patch_size)
patches = patches.permute(0, 2, 1, 3, 4) # (B, num_patches, C, patch_size, patch_size)
return patches.flatten(2) # (B, num_patches, C*patch_size^2)
2.2 训练技巧大全
学习率调度策略对比:
python
# 不同学习率调度器可视化
import matplotlib.pyplot as plt
def plot_lr_schedulers():
epochs = np.arange(0, 100)
# 阶梯式衰减
lr_step = 0.1 * (0.1 ** (epochs // 30))
# 余弦退火
lr_cosine = 0.1 * 0.5 * (1 + np.cos(epochs/100 * np.pi))
# 带热重启的余弦退火
restart_epochs = [30, 70]
lr_cosine_restart = []
for e in epochs:
t = e
for restart in restart_epochs:
if e > restart:
t = e - restart
lr_cosine_restart.append(0.1 * 0.5 * (1 + np.cos(t/30 * np.pi)))
plt.figure(figsize=(10,5))
plt.plot(epochs, lr_step, label='Step Decay')
plt.plot(epochs, lr_cosine, label='Cosine Annealing')
plt.plot(epochs, lr_cosine_restart, label='Cosine Annealing w/ Restarts')
plt.xlabel('Epoch')
plt.ylabel('Learning Rate')
plt.legend()
plt.grid()
plt.show()
plot_lr_schedulers()
混合精度训练实现:
python
# PyTorch混合精度训练
scaler = torch.cuda.amp.GradScaler()
for epoch in range(100):
for inputs, targets in dataloader:
optimizer.zero_grad()
with torch.cuda.amp.autocast():
outputs = model(inputs)
loss = criterion(outputs, targets)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
三、应用阶段:从实验室到生产环境
3.1 计算机视觉全流程
目标检测实战:YOLOv5改进版:
python
import torchvision.ops as ops
class YOLOLoss(nn.Module):
def __init__(self, stride=8, num_classes=80):
super().__init__()
self.stride = stride
self.num_classes = num_classes
self.bce_loss = nn.BCEWithLogitsLoss(reduction='none')
self.ciou_loss = ops.generalized_box_iou
def forward(self, pred, target):
# pred: (B, 255, H, W) for COCO (5+80=85 per anchor)
# target: (B, num_gt, 5) [x,y,w,h,class]
B, _, H, W = pred.shape
pred = pred.view(B, 3, 85, H, W).permute(0,1,3,4,2) # (B,3,H,W,85)
# 计算网格位置
grid_x = torch.arange(W, device=pred.device).float()
grid_y = torch.arange(H, device=pred.device).float()
grid_x, grid_y = torch.meshgrid(grid_x, grid_y)
grid = torch.stack([grid_x, grid_y], dim=-1).unsqueeze(0).unsqueeze(0) # (1,1,H,W,2)
# 提取预测值
pred_boxes = torch.sigmoid(pred[..., :4]) * self.stride
pred_boxes[..., :2] += grid # 中心点坐标
pred_obj = torch.sigmoid(pred[..., 4:5])
pred_cls = torch.sigmoid(pred[..., 5:])
# 计算损失(简化版)
obj_mask = target[..., 4] > 0 # 只计算有目标的区域
if obj_mask.sum() > 0:
# CIoU损失
pred_boxes_flattened = pred_boxes[obj_mask].view(-1,4)
target_boxes_flattened = target[obj_mask][..., :4].view(-1,4)
ciou = self.ciou_loss(
pred_boxes_flattened[:, :4],
target_boxes_flattened
)
ciou_loss = 1 - ciou.mean()
# 分类损失
cls_loss = self.bce_loss(pred_cls[obj_mask],
F.one_hot(target[obj_mask][...,4].long(),
num_classes=self.num_classes).float())
cls_loss = cls_loss.mean()
total_loss = ciou_loss + cls_loss
return total_loss
return torch.tensor(0.0).to(pred.device)
3.2 自然语言处理进阶
BERT微调实践:文本分类:
python
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
import datasets
# 加载数据集
dataset = datasets.load_dataset('imdb')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
def tokenize_function(examples):
return tokenizer(examples['text'], padding='max_length', truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# 定义模型
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
# 训练参数
training_args = TrainingArguments(
output_dir='./results',
num_train_epochs=3,
per_device_train_batch_size=16,
per_device_eval_batch_size=64,
warmup_steps=500,
weight_decay=0.01,
logging_dir='./logs',
logging_steps=10,
)
# 创建Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets['train'],
eval_dataset=tokenized_datasets['test'],
)
# 开始训练
trainer.train()
3.3 工业级部署方案
TensorRT优化流程:
- 模型转换:ONNX格式导出
python
# PyTorch to ONNX
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(model, dummy_input, "model.onnx",
input_names=["input"], output_names=["output"],
dynamic_axes={"input": {0: "batch_size"}, "output": {0: "batch_size"}})
- TensorRT引擎构建:
bash
# 使用trtexec工具构建引擎
trtexec --onnx=model.onnx --saveEngine=model.engine --fp16
- C++推理代码示例:
cpp
// TensorRT C++推理示例
#include <NvInfer.h>
#include <cuda_runtime_api.h>
class Logger : public nvinfer1::ILogger {
void log(Severity severity, const char* msg) noexcept override {
if (severity <= Severity::kWARNING) {
std::cout << msg << std::endl;
}
}
} gLogger;
int main() {
// 1. 加载引擎文件
std::ifstream engine_file("model.engine", std::ios::binary);
std::vector<char> engine_data((std::istreambuf_iterator<char>(engine_file)),
std::istreambuf_iterator<char>());
// 2. 创建运行时和引擎
nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(gLogger);
nvinfer1::ICudaEngine* engine = runtime->deserializeCudaEngine(
engine_data.data(), engine_data.size(), nullptr);
// 3. 创建执行上下文
nvinfer1::IExecutionContext* context = engine->createExecutionContext();
// 4. 准备输入输出缓冲区
const int batch_size = 1;
const int input_size = 3 * 224 * 224 * sizeof(float);
const int output_size = 1000 * sizeof(float); # 假设1000类分类
float* input_data = new float[input_size / sizeof(float)];
float* output_data = new float[output_size / sizeof(float)];
// 5. 执行推理
void* buffers[2];
cudaMalloc(&buffers[0], input_size);
cudaMalloc(&buffers[1], output_size);
cudaMemcpy(buffers[0], input_data, input_size, cudaMemcpyHostToDevice);
context->enqueueV2(buffers, nullptr, nullptr, nullptr);
cudaMemcpy(output_data, buffers[1], output_size, cudaMemcpyDeviceToHost);
// 6. 清理资源
cudaFree(buffers[0]);
cudaFree(buffers[1]);
delete[] input_data;
delete[] output_data;
context->destroy();
engine->destroy();
runtime->destroy();
return 0;
}
四、前沿趋势与学习资源
4.1 技术发展趋势
-
多模态学习:
- CLIP模型实现文本-图像对齐
- Flamingo架构支持视频-文本交互
- Gato模型实现跨任务通用智能
-
高效模型设计:
- MobileNetV4:硬件感知的神经架构搜索
- RepVGG:训练时多分支,推理时单路径
- Swin Transformer V2:支持任意分辨率输入
-
可信AI:
- 差分隐私训练
- 模型可解释性工具(LIME/SHAP)
- 对抗样本防御
4.2 实践建议
-
论文阅读方法论:
- 精读经典论文(如ResNet、Transformer)
- 跟踪顶会(CVPR/NeurIPS/ICML)最新工作
- 关注arXiv每日更新(设置关键词提醒)
-
开源项目参与:
- HuggingFace Transformers:贡献新模型实现
- MMDetection:改进目标检测算法
- Stable Diffusion:探索生成模型优化
-
竞赛策略:
- Kaggle竞赛:选择医疗影像、时间序列等深度学习友好赛道
- 天池大赛:关注阿里系业务场景(推荐、风控等)
- 本地黑客松:快速验证创意原型
五、学习路径规划建议
5.1 分阶段目标
阶段 | 时间 | 核心目标 | 评估标准 |
---|---|---|---|
基础阶段 | 1-2月 | 掌握数学基础和框架使用 | 实现MNIST分类(>98%准确率) |
进阶阶段 | 3-4月 | 理解前沿算法和训练技巧 | 复现ResNet/Transformer |
应用阶段 | 5-6月 | 完成端到端项目开发 | 部署模型到移动端/服务器 |
专家阶段 | 持续 | 跟踪最新研究并贡献开源社区 | 发表顶会论文/开源项目Star>1k |
5.2 资源推荐
-
书籍:
- 《Deep Learning》(Goodfellow等)
- 《Transformer自然语言处理》(邓力等)
- 《Python深度学习》(François Chollet)
-
课程:
- Stanford CS231n(计算机视觉)
- CMU 11-785(深度学习系统)
- Hugging Face NLP课程
-
工具:
- Weights & Biases(实验跟踪)
- Comet.ml(模型管理)
- DVC(数据版本控制)
深度学习技术发展日新月异,建议学习者建立"理论-代码-论文-项目"的闭环学习模式,例如在研究Vision Transformer时:
- 数学推导:自注意力机制的矩阵运算复杂度
- 代码复现:手写ViT块并测试不同配置
- 论文精读:An Image is Worth 16x16 Words原文
- 项目应用:用预训练ViT完成医学图像分类
通过系统化的知识构建和持续的工程实践,完全可以在12个月内达到独立研究的能力水平。关键在于保持"代码-理论-实践"的三位一体学习节奏,避免陷入"只看论文不动手"的误区。
《理解深度学习》

编辑推荐
在当今这个信息爆炸的时代,获取学习资料的渠道并不匮乏,各类书籍和视频资源可谓琳琅满目。但我始终没有找到一本合适的"人工智能入门指南"。一部分书籍罗列了许多新颖的算法,但缺乏深入剖析,浮于表面;它们更适合作为科普读物,对于希望深入学习的读者来说,内容深度是远远不够的。一部分书籍从最基础的数学原理入手,详细列出相关公式,但学习门槛较高;而且即便完全掌握了这些原理,若想将算法落地,仍需要补充对应的编程技能。还有一部分书籍侧重实践应用,提供了大量示例代码和详细讲解,却容易让读者陷入"知其然"而"不知其所以然"的困境。
直到阅读了亚东老师推荐的Understanding Deep Learning后,我意识到终于找到理想的"指南书"了。本书从最基础的浅层神经网络入手,逐步深入,直至扩散模型,内容包罗万象。在基础模型章节中,Simon教授对每个问题的建模和公式推导都进行了细致入微的讲解;在高级模型章节中,阐述原理,还深入探讨模型的应用场景及前沿研究趋势。如果你潜心研读每一章节、每一个公式,会发现Simon教授倾注了大量心血,力求将复杂的概念以最清晰的方式呈现给读者。深度学习的难点之一在于如何理解高维空间中的问题,Simon教授通过降维和可视化手段,将梯度下降、迭代求解等抽象过程直观展现出来,极大地降低了理解门槛。本书讲解算法原理,还附有每个模型的Python Notebook源代码。无论你是具备一定数学基础的本科生,还是希望深入了解人工智能技术的软件工程师,本书都是你的上佳选择。
内容简介
一部权威、通俗、前沿的深度学习指南。
从机器学习基础知识到前沿模型,《理解深度学习》精选关键理论与尖端主题,以直观形式呈现高密度的核心知识。
- 涵盖热门主题:如Transformer模型与扩散模型(Diffusion Model)。
- 化繁为简:先以通俗语言阐释复杂概念,再辅以数学公式与视觉图解深入解析。
- 实践导向:引导读者动手实现模型的初级版本。
- 配套资源丰富:提供教师课件、习题及Python Notebook编程练习。
- 适用读者:适合已掌握应用数学基础知识的本科生、研究生及从业者。
作者简介
Simon J.D.Prince 现任英国巴斯大学计算机科学名誉教授,著有Computer Vision: Models, Learning, and Inference .他专注于人工智能与深度学习领域研究,曾在Anthropics Technologies Ltd、Borealis AI等机构领导学术界与工业界科研团队。
精彩书评
"本书的卓越之处在于,它既能解构复杂概念,又不减损其精妙性。......《理解深度学习》堪称一部全面且与时俱进的深度学习指南。在我看来,这是一部当之无愧的经典之作,是目前最优秀的深度学习教科书。它不仅仅是一本教材,更是一份以智慧、洞察力和前瞻性驾驭技术未来的路线图。"
------Nature Machine Intelligence
(《自然》旗下,计算机科学与AI领域国际顶级学术期刊)推荐语
"这是一部学术与视觉双重精妙的杰作。它以简洁而清晰的方式传递核心思想,并通过精心设计的插图加以诠释,堪称当今最出色的深度学习入门著作。"
------Kevin Murphy,Google DeepMind 研究科学家,
Probabilistic Machine Learning: Advanced Topics作者
人工智能的发展浩荡前行,累计出现过三次大的浪潮。第一次浪潮的符号主义困于逻辑的桎梏,第二次浪潮的连接主义受限于数据的藩篱,而作为第三次浪潮的深度学习技术则散发出魅力,为学术和产业界追捧,并持续酝酿、发酵及推动更猛烈的智能革命,被人们誉为第四次浪潮的大语言模型也正是基于深度学习。
由Simon J. D. Prince所著并由张亚东、马壮翻译的《理解深度学习》一书,从基础概念到核心技术再到最新进展,以全局视角系统性地梳理了深度学习的技术及应用发展全景,同时匹配了代码资源,是学术界和工业界有志于从事深度学习技术研究的新人上手实践不可多得的案头读物。
全书围绕深度神经网络的设计与应用展开,开篇聚焦网络训练策略以及性能评估,以奠定相关基础;继而深入解析卷积神经网络、残差连接与Transformer等关键架构的创新原理及其在各类任务中的适用性;随后剖析生成式对抗网络、变分自编码器、标准化流与扩散模型等现代生成机制,并概述深度强化学习的核心思想;结尾则从理论层面探讨深度网络的可训练性、泛化能力与参数冗余等基础问题,并从伦理角度反思深度学习技术的社会影响,内容上兼具理论深度与实践广度。
Simon教授因其具有工业界和学术界的双重经历,或许更了解那些苦于既不掌握技术细节,又难以动手实践的读者的困扰,因此本书写作风格深入浅出,配有大量的图与表以清楚地解释原本晦涩的概念,偶尔出现的公式看似枯燥,实际是有高等数学和线性代数基础读者可以轻松掌握的,也绝对是理论的有力补充。
深度学习技术及其应用已深入我们的工作与生活,如果你希望能够在这样一个智能革命的时代做一个弄潮儿,从这本书开始是个不错的选择。
------李鑫
科大讯飞AI研究院副院长,科研部部长
在AI技术飞速演进的今天,我们正迎来"从模型走向应用"的时代。无论是产业数字化升级,还是开发者的新一轮创业浪潮,人工智能的落地能力,正在成为一家公司能否穿越周期的关键变量。极客邦科技在 2025 年将"AI 应用落地"定为年度主题,正是基于这样的判断:时代的新窗口已经打开,技术理解力决定了实践行动力。
在这个背景下,我非常高兴看到Simon J.D. Prince的经典著作Understanding Deep Learning推出中文版《理解深度学习》。这本书并不只是一本理论教材,它是一部帮助读者"真正理解"深度学习的入门指南。在我们长期运营InfoQ极客传媒、极客时间和TGO鲲鹏会的过程中,经常听到工程师、架构师和CTO们吐槽:"讲 Transformer 的人太多,能讲明白的人太少;讲推理框架的人不少,但从头带你理解原理的人几乎没有。"而这本书,恰恰解决了这样的问题。
《理解深度学习》不是快餐式教学,而是一场系统思维的启蒙。它通过严谨而通俗的语言,从线性代数、概率基础一步步引导你走进深度神经网络的世界。与市面上许多"照公式堆概念"的 AI 教程不同,本书强调WHY胜于WHAT,强调"理解"胜于"记忆"。它告诉我们,只有真正明白深度学习是如何工作的,才可能在未来的工程场景中创造出具有价值的应用。
对我个人而言,本书的意义不仅在于技术层面,更在于方法论上的启发。它体现了极客邦科技在内容和教育产品设计中始终坚持的价值观:技术的传播,应该是"实践驱动"的,应该追求可理解、可推理、可迁移,而不仅仅是堆叠信息。
随着AIGC、Agent、Agentic AI等技术生态加速演进,我们越来越看到,未来的开发者既要"理解底层",又要"善用高阶工具";既要具备对模型机制的抽象理解,也要能把技术变成具体的生产力。这本书,是打好底层认知根基的首选。
最后,我想特别感谢清华大学出版社引进这本作品。在喧嚣的当下,需要有人静下心来,从底层逻辑入手,抽丝剥茧,为世人排除通往未来的道路上的重重障碍。所以说,《理解深度学习》不仅是一本技术书籍,更是一把钥匙,帮助我们打开AI世界的思维之门。我相信,对于每一个想在 AI 应用时代中抓住机会的读者来说,这都将是一次重要的认知启程。
------霍太稳
极客邦科技创始人兼CEO
《理解深度学习》是一本来自MIT的重磅教材,结构清晰,内容全面覆盖人工智能领域从基础到前沿的各种关键主题。作者是一位在学术界和工业界都有贡献的计算机科学家。他以直观的方式讲解复杂概念,同时结合了数学推导和可视化图示,帮助读者实现理论与实践的对接。无论是初学者,还是希望系统梳理AI知识的从业者,都能从中受益。
------李烨
微软AI亚太区首席应用科学家
由深度学习引领的人工智能技术正在为各行各业带来巨大的范式创新。《理解深度学习》一书以精炼的文笔对深度学习这一复杂的理论体系抽丝剥茧,简明不失深刻,前沿不失实用,是系统掌握深度学习的佳作。
------李建忠
全球机器学习技术大会主席,CSDN高级副总裁
《理解深度学习》是一部极具时代价值的经典教材。与传统教材不同,Simon J.D. Prince教授巧妙地在理论深度与实用性之间找到了平衡点,既避免了纯理论的晦涩,又不陷入代码实现的琐碎细节。我尤其欣赏本书对Transformer和扩散模型等前沿架构的深入剖析,这正是当前大模型技术的核心基石。书中通过精心设计的图表和直观解释,将复杂概念化繁为简,让读者真正"理解"而非仅仅"使用"深度学习。张亚东、马壮两位专家的翻译精准流畅,既保留原著的学术精髓,又贴合中文表达,有专门的章节探讨AI伦理与社会责任。对想在飞速迭代的AI浪潮中抓住技术本质的中文读者,本书是首选的入门与进阶指南。
------王昊奋
OpenKG轮值主席,同济大学特聘研究员
在人工智能重塑人类文明边界的今天,Simon教授的《理解深度学习》犹如一盏明灯,既照亮了技术进化的底层逻辑,又烛照了伦理思考的精神维度。这部权威著作完美平衡了学术深度与教学温度,堪称深度学习领域的"概念罗盘"。无论你是渴望夯实理论根基的开发者,还是探寻智能本质的思想者,都能在这部兼具学术严谨性与思维启发性的作品中获得双重提升。在这个算法重构世界的时代,本书不仅是通向技术内核的通行证,更是一份关于智能文明的责任宣言。正如作者的观点:"我们或许尚未真正理解深度学习,但绝不能停止理解它的努力。"这部著作,正是这场认知远征的最佳向导。
------茹炳晟
腾讯Tech Lead,腾讯研究院特约研究员,
中国计算机学会CCF TF研发效能SIG主席
作为一名长期致力于集成电路领域教学与研究的教育工作者,我非常荣幸地向各位郑重推荐这本名为《理解深度学习》的优秀著作。
集成电路是现代科技的基石,尤其在人工智能时代,高性能、低功耗的芯片更是驱动AI技术发展的核心引擎。深度学习作为人工智能领域的核心技术之一,正以前所未有的速度渗透到集成电路的各个环节,从面向AI应用的芯片架构设计、智能化的设计、自动化工具开发,到利用AI进行电路性能优化和故障诊断,再到基于新型存储器实现高效的AI计算,都展现出巨大潜力。可以预见,未来的集成电路发展将更加紧密地契合AI领域的需求。
《理解深度学习》一书系统而深入地介绍了深度学习的基本原理和核心架构,如卷积神经网络、循环神经网络,以及近年来备受瞩目的生成式对抗网络、扩散模型和Transformer等。这些内容不仅能帮助集成电路领域的学生和研究人员快速掌握深度学习的关键技术,更能启发工程师们思考如何设计出更高效、更智能的芯片,以满足日益增长的AI算力需求,并探索将这些先进的算法直接部署到芯片上的可能性,实现软硬件的深度融合。
我相信,这本书的出版将成为连接集成电路领域与深度学习领域的桥梁,促进跨学科的交流与合作,加速人工智能技术在集成电路领域的创新应用,并推动设计出更智能、更强大的AI芯片。我诚挚地希望《理解深度学习》能够成为你探索人工智能奥秘、赋能集成电路事业的得力助手。
------叶乐
北京大学集成电路学院/博雅教授
作为多年从事人工智能领域研究的教育工作者,我非常荣幸能为《理解深度学习》这本杰出的著作撰写推荐序。
作为人工智能领域的核心技术,深度学习(尤其是大语言模型)近年来取得了令人瞩目的成就,深刻地改变了我们的生活和工作方式。然而,深度学习的理论基础和内部机制相对复杂,对于初学者来说,往往存在一定的学习门槛。
《理解深度学习》这本书的出现,恰好弥补了这一缺憾。本书以清晰易懂的语言,深入浅出地介绍了深度学习(包括大语言模型)的基本概念、原理和方法。作者通过丰富的、深入浅出的讲解,让零基础的读者也能像搭积木一样,一步步掌握深度学习的核心魔法,并逐步掌握深度学习的核心技术。
本书的亮点总结如下。
•系统全面的知识体系:本书涵盖深度学习的各个方面,从基础知识到各类模型应用方向,构建了一个完整的知识体系,帮助读者全面了解深度学习。
•深入浅出的讲解方式:作者采用通俗易懂的语言,配合丰富的图表和公式,将复杂的概念和理论转化为易于理解的知识,降低了学习难度。
•理论与实践相结合:本书不仅介绍了深度学习的理论知识,还提供了一定量的习题,帮助读者更好地掌握所学知识和理论。
本书的中文翻译版,更是为广大中文读者提供了一个便捷的学习途径。我相信,无论是初学者还是专业人士,都能从本书中获益匪浅。
我强烈推荐《理解深度学习》这本书,相信它将成为你学习深度学习的得力助手。
------郭艳卿
大连理工大学未来技术学院/人工智能学院副院长
目录
bash
第1章 引言 1
1.1 监督学习 1
1.2 无监督学习 7
1.3 强化学习 11
1.4 伦理学 12
1.5 本书编排方式 13
1.6 其他书籍 14
1.7 如何阅读本书 15
第2章 监督学习 16
2.1 监督学习概述 16
2.2 线性回归示例 17
2.3 本章小结 21
2.4 注释 22
2.5 问题 22
第3章 浅层神经网络 24
3.1 神经网络示例 24
3.2 通用逼近定理 28
3.3 多变量输入和输出 29
3.4 浅层神经网络:一般情形 33
3.5 术语 33
3.6 本章小结 34
3.7 注释 34
3.8 问题 37
第4章 深度神经网络 40
4.1 组合神经网络 40
4.2 从组合网络到深度网络 43
4.3 深度神经网络 43
4.4 矩阵表示法 46
4.5 浅层与深度神经网络 48
4.6 本章小结 50
4.7 注释 50
4.8 问题 51
第5章 损失函数 54
5.1 最大似然 54
5.2 构建损失函数 58
5.3 示例1:单变量回归问题 58
5.4 示例2:二分类问题 63
5.5 示例3:多分类问题 65
5.6 多输出问题 67
5.7 交叉熵损失 68
5.8 本章小结 69
5.9 注释 70
5.10 问题 71
第6章 模型训练 74
6.1 梯度下降法 74
6.2 随机梯度下降 79
6.3 动量 82
6.4 Adam 优化器 84
6.5 训练算法超参数 86
6.6 本章小结 87
6.7 注释 87
6.8 问题 90
第7章 梯度与参数初始化 93
7.1 问题定义 93
7.2 计算导数 95
7.3 简单示例 96
7.4 反向传播算法 99
7.5 参数初始化 103
7.6 训练代码示例 107
7.7 本章小结 108
7.8 注释 108
7.9 问题 110
第8章 性能评估 114
8.1 训练简单模型 114
8.2 误差来源 116
8.3 降低误差 120
8.4 选择超参数 127
8.5 本章小结 128
8.6 注释 128
8.7 问题 131
第9章 正则化 133
9.1 显式正则化 133
9.2 隐式正则化 136
9.3 提高性能的启发式算法 139
9.4 本章小结 147
9.5 注释 148
9.6 问题 154
第10章 卷积网络 155
10.1 不变性和等变性 156
10.2 用于一维输入的卷积网络 157
10.3 二维输入的卷积网络 163
10.4 下采样和上采样 165
10.5 应用 167
10.6 本章小结 172
10.7 注释 172
10.8 问题 176
第11章 残差网络 178
11.1 顺序处理 178
11.2 残差连接和残差块 180
11.3 残差网络中的梯度爆炸 183
11.4 批量归一化 184
11.5 常见的残差架构 185
11.6 为什么具有残差连接的网络表现如此出色? 190
11.7 本章小结 190
11.8 注释 191
11.9 问题 195
第12章 变换器 197
12.1 处理文本数据 197
12.2 点积自注意力 198
12.3 点积自注意力的扩展 203
12.4 变换器 205
12.5 自然语言处理中的变换器 206
12.6 编码器模型示例:BERT 208
12.7 解码器模型示例:GPT-3 211
12.8 编码器-解码器模型示例:机器翻译 214
12.9 用于长序列的变换器 216
12.10 图像的变换器 217
12.11 本章小结 220
12.12 注释 221
12.13 问题 228
第13章 图神经网络 230
13.1 什么是图 230
13.2 图的表示 233
13.3 图神经网络、任务和损失函数 235
13.4 图卷积网络 237
13.5 示例:图分类 240
13.6 归纳模型与演绎模型 241
13.7 示例:节点分类 242
13.8 图卷积网络的层 245
13.9 边图 248
13.10 本章小结 249
13.11 注释 249
13.12 问题 254
第14章 无监督学习 257
14.1 无监督学习模型分类 257
14.2 什么是好的生成模型? 259
14.3 量化评估指标 260
14.4 本章小结 263
14.5 注释 263
第15章 生成式对抗网络 264
15.1 判别作为信号 264
15.2 提高稳定性 269
15.3 提升生成图像质量的方法 274
15.4 条件生成 276
15.5 图像翻译 279
15.6 StyleGAN 282
15.7 本章小结 284
15.8 注释 285
15.9 问题 288
第16章 标准化流 290
16.1 一维示例 290
16.2 一般情况 293
16.3 可逆网络层 295
16.4 多尺度流 302
16.5 应用 303
16.6 本章小结 306
16.7 注释 307
16.8 问题 310
第17章 变分自编码器 312
17.1 隐变量模型 312
17.2 非线性隐变量模型 314
17.3 训练 315
17.4 ELBO 的性质 318
17.5 变分近似 320
17.6 变分自编码器 320
17.7 重参数化技巧 323
17.8 应用 323
17.9 本章小结 327
17.10 注释 328
17.11 问题 331
第18章 扩散模型 333
18.1 概述 333
18.2 编码器(前向过程) 334
18.3 解码器模型(反向过程) 340
18.4 训练 340
18.5 损失函数的重参数化 344
18.6 实现 347
18.7 本章小结 352
18.8 注释 352
18.9 问题 355
第19章 强化学习 357
19.1 马尔可夫决策过程、回报和策略 357
19.2 预期回报 361
19.3 表格型强化学习 365
19.4 拟合Q学习 368
19.5 策略梯度方法 371
19.6 演员-评论家方法 376
19.7 离线强化学习 377
19.8 本章小结 378
19.9 注释 378
19.10 问题 382
第20章 为什么深度网络有效 385
20.1 质疑深度学习的案例 385
20.2 影响拟合性能的因素 387
20.3 损失函数的性质 391
20.5 我们需要这么多参数吗 398
20.6 网络必须很深吗? 401
20.7 本章小结 402
20.8 问题 403
第21章 深度学习和伦理 404
21.1 价值一致性 405
21.2 故意滥用 410
21.3 其他社会、伦理和专业问题 412
21.4 案例研究 414
21.5 科学的价值中立理想 414
21.6 负责任的人工智能研究作为集体行动问题 415
21.7 未来的方向 416
21.8 本章小结 417
21.9 问题 418
附录A 符号表示 420
附录B 数学 423
附录C 概率 432
前言
在学术界,深度学习的发展史极不寻常。一小群科学家坚持不懈地在一个看似没有前途的领域工作了25年,最终使一个领域发生了技术革命并极大地影响了人类社会。研究者持续探究学术界或工程界中深奥且难以解决的问题,通常情况下这些问题无法得到根本性解决。但深度学习领域是个例外,尽管广泛的怀疑仍然存在,但Yoshua Bengio、Geoff Hinton 和Yann LeCun 等人的系统性努力最终取得了成效。
本书的书名是"理解深度学习",这意味着它更关注深度学习背后的原理,而不侧重于编程实现或实际应用。本书的前半部分介绍深度学习模型并讨论了如何训练它们,评估它们的表现并做出改进。后半部分讨论专用于图像、文本、图数据的模型架构。只要学习过线性代数、微积分和概率论的二年级本科生都能掌握这些章节的知识。对于后续涉及生成模型和强化学习的章节,则需要更多的概率论和微积分知识,它们面向更高年级的学生。
这个书名在一定程度上也是一个玩笑------在撰写本书时,没有人能够真正理解深度学习。目前深度神经网络学习的分段线性函数的数量比宇宙中的原子数还多,可用远少于模型参数数量的样本进行训练。现在我们既无法找到可靠地拟合这些函数的方法,又不能保证能很好地描述新数据。第20章讨论了上述问题和其他尚未完全理解的问题。无论如何,深度学习都将或好或坏地改变这个世界。最后一章讨论了人工智能伦理,并呼吁从业者更多地考虑所从事的工作带来的伦理问题。