Blog

2021

September

Markdown 快速入门

2 minute read

Published:

本文介绍了如何配置 VSCode 以优化 Markdown 编写体验,包括推荐安装的扩展插件如 Markdown All In One、Markdown Emoji 等,以及如何利用这些工具提升文档编写效率。

Git 快速入门及在线协同

less than 1 minute read

Published:

本文介绍了 Git 的安装与 VSCode 集成配置,讲解了 Git 的基本语法,并详细说明了如何使用 Github 进行多人在线协同,包括贡献者协同(Pull Requests)和核心开发组内协同的流程。

D2L-04 数据操作及数据预处理

less than 1 minute read

Published:

本文介绍了深度学习中 N 维数组的概念,以及使用 PyTorch 和 Pandas 进行数据操作和预处理的基本方法,包括张量的创建、运算、广播机制以及 CSV 文件的读取和缺失值处理。

D2L-05 线性代数

less than 1 minute read

Published:

本文总结了深度学习中常用的线性代数基础知识,包括向量点乘、范数、矩阵乘法、特征值分解等基本运算,并提供了对应的 PyTorch 代码实现,最后解答了关于 Tensor 数据类型转换的常见问题。

D2L-06 矩阵计算

1 minute read

Published:

本文深入探讨了矩阵求导在深度学习中的意义,详细介绍了标量、向量、矩阵之间相互求导的规则和形状变化,并总结了分子布局下的求导公式,为理解反向传播算法奠定数学基础。

D2L-07 自动求导

less than 1 minute read

Published:

本文深入探讨了深度学习中自动求导的核心机制。首先讲解了向量与矩阵求导的链式法则及具体推导示例;接着详细解析了计算图(Computational Graph)的原理、正反向传播的计算与内存复杂度;最后介绍了基于 PyTorch 的自动微分代码实现与常用操作,为理解深度学习框架的底层运算逻辑奠定基础。

D2L-08 线性回归

3 minute read

Published:

本文深入探讨了线性回归模型的基本原理,将其等价为单层神经网络进行解析。详细介绍了损失函数、代价函数、解析解及梯度下降优化算法的数学原理,并分别展示了基于 PyTorch 的从零代码实现与利用框架组件的简洁实现,为理解深度学习模型的训练过程奠定基础。

D2L-09 Softmax 回归

6 minute read

Published:

本文介绍 Softmax 回归如何处理多类别分类问题,推导 Softmax 变换与交叉熵损失,并结合 Fashion-MNIST 数据集讲解数据读取、训练和预测流程,给出基于 PyTorch 的从零实现与简洁实现。

October

D2L-10 多层感知机

2 minute read

Published:

本文详细介绍了从感知机到多层感知机(MLP)的演变历程,分析了 XOR 问题对 AI 发展的影响及非线性激活函数的重要性。文章深入讲解了 MLP 的结构、常用激活函数(Sigmoid、Tanh、ReLU)及基于 PyTorch 的代码实现,并探讨了参数初始化、深层网络优势及“维度灾难”等核心问题。

D2L-11 模型选择和过拟合欠拟合

2 minute read

Published:

本文介绍训练误差与泛化误差、模型选择和 K 折交叉验证,分析模型容量与数据复杂度对过拟合、欠拟合的影响,并通过多项式回归实验比较不同拟合状态。

D2L-12 权重衰退(Weight Decay)

2 minute read

Published:

本文介绍权重衰退如何通过 L2 正则化约束模型容量,推导带正则项的损失函数与参数更新规则,并通过 PyTorch 实验比较不同正则化强度对训练和泛化的影响。

D2L-13 丢弃法(Dropout)

2 minute read

Published:

本文介绍丢弃法的基本思想,说明如何通过无偏噪声缓解过拟合,区分训练与预测阶段的处理方式,并给出 Dropout 的从零实现与 PyTorch 简洁实现。

D2L-14 数值稳定性 + 模型初始化 + 激活函数

3 minute read

Published:

本文分析深层神经网络中的梯度爆炸与梯度消失,讨论数值稳定性、模型初始化和激活函数之间的关系,并介绍通过控制各层方差实现 Xavier 初始化的思路。

D2L-15 Kaggle 加州房价预测实战

5 minute read

Published:

本文以 Kaggle 房价预测为例,串联数据预处理、特征编码、模型训练与 K 折交叉验证,介绍使用对数误差评估模型和生成比赛提交文件的完整实践流程。

D2L-16 Pytorch 神经网络基础

5 minute read

Published:

本文介绍 PyTorch 中层与块的组织方式,演示 Sequential 与自定义模块的实现,进一步讲解参数访问、初始化、共享、自定义层以及模型参数的保存和读取。

D2L-17 卷积神经网络(CNN)

1 minute read

Published:

本文从图像处理中的平移不变性与局部性出发,解释卷积神经网络的设计动机,区分卷积与交叉相关,介绍图像通道、二维卷积层及其代码实现。

D2L-18 卷积层中的填充和步幅

1 minute read

Published:

本文介绍卷积层中填充与步幅的作用,说明它们如何影响输出尺寸和感受野,并通过 PyTorch 实例验证不同卷积配置下的输入输出形状。

D2L-19 卷积层里的多输入多输出通道

2 minute read

Published:

本文介绍卷积层的多输入、多输出通道结构,解释跨通道卷积和 1×1 卷积的计算方式,并通过代码验证通道组合与张量形状的变化。

D2L-20 池化层

less than 1 minute read

Published:

本文介绍池化层的作用与计算方式,对比最大池化和平均池化,并通过从零实现与 PyTorch 示例说明池化窗口、填充和步幅对输出的影响。

D2L-21 经典卷积神经网络 LeNet

2 minute read

Published:

本文介绍经典卷积神经网络 LeNet 的结构,说明卷积层、池化层与全连接层如何组成图像分类模型,并给出在 Fashion-MNIST 上训练和评估 LeNet 的代码。

D2L-22 深度卷积神经网络 AlexNet

2 minute read

Published:

本文结合机器学习理论、计算硬件和数据规模的发展介绍 AlexNet,分析其网络结构与计算复杂度,并展示各层输出形状和图像分类训练过程。

November

D2L-23 使用块的网络 VGG

1 minute read

Published:

本文介绍 VGG 通过重复卷积块构建深层网络的思路,分析模块化设计与网络架构,并给出缩小通道数的 VGG 模型实现和训练示例。

D2L-24 网络中的网络 NiN

1 minute read

Published:

本文介绍网络中的网络 NiN,讨论全连接层的参数开销,说明 1×1 卷积与全局平均池化的作用,并展示 NiN 网络的构建与训练。

D2L-25 含并行连接的网络 GoogLeNet

2 minute read

Published:

本文介绍含并行连接的 GoogLeNet,分析 Inception 块如何组合不同尺寸的卷积与池化操作,并通过代码展示多分支网络的组织与训练方式。

D2L-26 批量归一化

3 minute read

Published:

本文介绍批量归一化在深层网络中的作用,说明训练和预测阶段的计算差异,对比 BatchNorm、LayerNorm 等归一化方法,并给出实现与实验示例。

D2L-27 残差网络 ResNet

5 minute read

Published:

本文从深层网络的优化困难出发介绍残差连接,分析残差块与 ResNet 的网络结构,并进一步讨论 DenseNet 的稠密连接及两类模型的代码实现。

D2L-28 深度学习硬件和相关技术

2 minute read

Published:

本文梳理深度学习计算中的 CPU、GPU、TPU 等硬件与相关技术,讨论计算、内存和通信的关系,并介绍单机多卡并行与分布式训练的基本思路。

D2L-29 数据增广

2 minute read

Published:

本文介绍图像数据增广的动机与常用方法,演示翻转、裁剪和颜色变换等操作,并说明如何在模型训练流程中组合和应用数据增强。

D2L-30 模型微调 Fine-tuning

1 minute read

Published:

本文介绍模型微调与迁移学习,说明如何利用预训练网络迁移特征,讨论重用分类器权重、冻结部分网络层等技术,并给出图像分类微调实践。

D2L-31 Kaggle 实战 - CIFAR-10

4 minute read

Published:

本文以 Kaggle CIFAR-10 图像分类任务为例,介绍数据组织、训练与验证集划分、数据增广和模型训练,展示从读取比赛数据到生成预测结果的实践流程。

D2L-32 物体检测和数据集

3 minute read

Published:

本文介绍图像分类、目标检测和实例分割的区别,说明边界框的表示方法与目标检测数据集的组织方式,并给出边界框绘制和数据读取示例。

D2L-33 锚框

8 minute read

Published:

本文介绍锚框、交并比和训练标签分配,说明如何编码边界框偏移并通过非极大值抑制筛选预测结果,结合代码梳理目标检测中的张量操作。

D2L-34 物体检测算法R-CNN、SSD、YOLO

less than 1 minute read

Published:

本文梳理基于锚框的目标检测算法,介绍 R-CNN 系列、SSD 与 YOLO 的基本思路,对比候选区域方法与单阶段检测方法的结构特点。

D2L-35 SSD实现

4 minute read

Published:

本文通过代码实现单发多框检测器 SSD,串联多尺度特征提取、锚框生成、类别与边界框预测、损失计算和训练过程,展示目标检测模型的实现流程。

December

D2L-36 语义分割

3 minute read

Published:

本文介绍将图像中的每个像素分配到类别的语义分割任务,说明分割标签与数据集的处理方式,并给出 VOC 数据的读取、标签转换和裁剪示例。

D2L-37 转置卷积

1 minute read

Published:

本文介绍转置卷积如何增大特征图尺寸,说明其基本计算过程,并通过代码比较转置卷积、普通卷积和矩阵运算之间的关系。

D2L-38 全连接神经网络FCN

2 minute read

Published:

本文围绕用于语义分割的 FCN 展开,介绍将分类网络转为像素预测网络的思路,说明双线性插值与上采样的作用,并展示模型构建和训练代码。

D2L-39 样式迁移

3 minute read

Published:

本文介绍神经样式迁移如何结合内容图像与样式图像,说明特征提取、内容损失和样式损失的作用,并给出优化合成图像的实现流程。

D2L-40 序列模型

2 minute read

Published:

本文介绍具有时间结构的序列数据,讨论自回归模型、隐变量自回归模型和马尔可夫假设,并通过时间序列预测代码比较不同预测方式。

D2L-41 文本预处理

2 minute read

Published:

本文介绍自然语言处理中的文本预处理流程,包括读取语料、分词、构建词表和将词元转换为索引,并说明字符级与词级处理方式的区别。

D2L-42 语言模型

4 minute read

Published:

本文介绍语言模型与 N 元模型,使用词频统计分析文本中的序列规律,并讲解词元分布、下采样与随机采样和顺序采样等训练数据组织方法。

D2L-43 循环神经网络RNN

5 minute read

Published:

本文介绍循环神经网络如何借助隐状态处理序列,说明语言模型的训练与预测过程,并给出 RNN 的从零实现与 PyTorch 简洁实现。

D2L-44 门控循环单元GRU

1 minute read

Published:

本文介绍门控循环单元 GRU,通过重置门、更新门与候选隐状态解释信息的保留和更新方式,并给出 GRU 语言模型的代码实现。

D2L-45 深层循环神经网络

less than 1 minute read

Published:

本文介绍通过堆叠循环层构建深层循环神经网络的思路,说明多层隐状态之间的信息传递,并给出基于 PyTorch 的多层循环网络示例。

D2L-46 双向循环神经网络

less than 1 minute read

Published:

本文介绍双向循环神经网络如何结合过去与未来的上下文,说明双向隐状态的组织方式与适用条件,并展示双向 RNN 的代码实现。

D2L-47 长短期记忆网络LSTM

2 minute read

Published:

本文介绍长短期记忆网络 LSTM,说明输入门、遗忘门、输出门和记忆单元如何控制序列信息,并给出 LSTM 模型的实现示例。

D2L-48 机器翻译数据集

2 minute read

Published:

本文介绍机器翻译中的平行语料处理,展示文本规范化、分词、词表构建、序列截断与填充,以及有效长度和小批量数据的组织方式。

D2L-49 编码器和解码器

less than 1 minute read

Published:

本文介绍编码器与解码器架构,说明如何将输入序列转换为中间表示并生成输出序列,并通过代码定义可扩展的编码器、解码器及组合模型接口。

2022

January

D2L-50 序列到序列学习Seq2Seq

5 minute read

Published:

本文介绍序列到序列学习在机器翻译中的应用,讲解编码器与解码器的连接、训练和预测过程,并给出 Seq2Seq 模型及翻译质量评估的实现。

D2L-51 束搜索

less than 1 minute read

Published:

本文介绍序列生成中的束搜索,对比贪心搜索与穷举搜索,说明束宽如何影响候选序列的保留,并讨论生成序列的评分方式。

D2L-52 注意力机制

2 minute read

Published:

本文介绍注意力机制中的查询、键和值,说明注意力池化如何根据相关性聚合信息,并通过核回归示例展示注意力权重与可学习参数的作用。

D2L-53 注意力分数

2 minute read

Published:

本文介绍注意力分数的计算与掩码 Softmax,对比加性注意力和缩放点积注意力,并给出相应的 PyTorch 实现与权重可视化示例。

D2L-54 使用注意力机制的seq2seq

2 minute read

Published:

本文介绍如何在 Seq2Seq 解码器中引入注意力机制,使生成过程能够动态关注输入序列的不同位置,并给出注意力解码器的训练与预测实现。

D2L-55 自注意力 (Self Attention)

1 minute read

Published:

本文介绍自注意力如何由同一输入序列生成查询、键和值,对比自注意力、循环网络和卷积网络的计算特点,并说明位置编码的作用与实现。

D2L-56 Transformer

7 minute read

Published:

本文介绍基于注意力的 Transformer 编码器与解码器,讲解多头注意力、前馈网络、残差连接和层归一化,并通过代码串联训练、预测与注意力可视化流程。

D2L-57 BERT(Bidirectional Encoder Represent Transformers)

12 minute read

Published:

本文介绍 BERT 的双向编码与预训练任务,说明输入表示、掩码语言模型和下一句预测的实现方式,并进一步展示预训练模型的使用与微调流程。

D2L-58 优化算法

1 minute read

Published:

本文介绍深度学习中的优化问题、凸集与凸函数,梳理梯度下降、随机梯度下降、小批量 SGD、动量法与 Adam,并通过示例比较不同优化方法的行为。

D2L-59 动手学深度学习课程总结与进阶学习

less than 1 minute read

Published:

本文回顾课程之外值得继续探索的应用与模型,整理阅读论文、参与竞赛和研究开源代码的学习建议,为进一步学习机器学习与深度学习提供方向。