李沐课程学习笔记

张开发
2026/4/4 11:54:22 15 分钟阅读
李沐课程学习笔记
第62讲序列到序列学习seq2seq— 实现核心内容基于第61讲编码器-解码器架构本节实现完整的seq2seq模型包括编码器、解码器、训练和BLEU评估。· 编码器实现使用RNN将输入序列编码为上下文变量最后一个时间步的隐藏状态。上下文变量可以是最后一个时间步的隐状态也可以是所有时间步的加权组合。还可以使用双向RNN构造编码器让隐状态依赖于输入序列前后两个方向的信息。· 解码器实现接收编码器的上下文变量以\bos\标记开始生成输出序列每一步的输出作为下一步的输入直到生成\eos\结束。· 训练使用强制教学Teacher Forcing——训练时将真实目标词作为解码器的下一时间步输入加速收敛。· BLEU评估衡量生成序列质量的常用指标。计算n-gram精确度并添加长度惩罚值越大越好。学习笔记seq2seq最早由谷歌在2014年提出是机器翻译、文本摘要等任务的奠基之作。编码器和解码器共享权重通过编码器最后时间的隐状态来初始化解码器隐状态来完成信息传递。核心局限在于上下文变量固定长度长序列信息压缩损失严重这正是后续注意力机制要解决的问题。PyTorch实现时注意编码器和解码器的隐藏维度匹配解码器初始隐藏状态需从编码器最后一个时间步的隐藏状态复制。BLEU评估时需处理填充和结束符。第63讲束搜索核心内容束搜索Beam Search是解码阶段平衡搜索效率和质量的启发式搜索算法。· 贪心搜索每个时间步选择概率最高的词元计算快但可能错过全局最优序列。· 穷举搜索枚举所有可能序列理论上最优但计算量随序列长度指数爆炸。· 束搜索每个时间步保留概率最高的k个候选序列k为束宽扩展后保留k个最优继续搜索。· 长度惩罚因长序列概率累积更小需进行长度归一化 \frac{1}{L^\alpha} \log P(y_1,\dots,y_L) α通常取0.6~1.0。学习笔记束搜索仅在预测推理时使用训练时不需要。贪心搜索获得的输出序列条件概率未必最大例示0.5×0.4×0.4×0.60.048而束搜索可能得到0.5×0.3×0.6×0.60.054高于贪心搜索。束宽越大效果越好但计算量增大通常取4-10。实现时需维护候选序列的累积对数概率并处理提前结束的序列。束搜索与维特比算法不同——束搜索是启发式剪枝维特比算法保证全局最优但复杂度更高。第64讲注意力机制核心内容注意力机制使模型动态关注输入中与当前任务最相关的部分解决seq2seq的长序列信息瓶颈问题。· 心理学类比不随意线索无目标性注意如颜色鲜艳的物品和随意线索有目标性的注意如找“书”。卷积、全连接、池化层只考虑不随意线索注意力机制则加入随意线索查询query。· 注意力机制框架给定Query查询当前任务需要关注什么Key表示输入数据的特征如源语言词的编码Value是实际用于生成输出的信息。通过Query和Key计算注意力权重加权求和Value得到输出。· 非参注意力池化Nadaraya-Watson核回归用高斯核衡量x和xi之间距离除以后变为概率加权求和。· 参数化注意力加入可学习参数w使模型能学习注意力汇聚方式。学习笔记注意力机制本质是软寻址Soft AddressingKey像地址Value像存储内容Query像地址索引输出是加权和。实现时需处理填充Mask避免关注无效位置。非参版本帮助理解注意力本质参数化版本则引入可学习权重。注意力权重是概率分布因此加权和本质上是加权平均值。第65讲注意力分数核心内容注意力评分函数计算Query和Key的相似度经过softmax后得到注意力权重。· 通用公式查询q与m个键-值对注意力输出 f(q,(k_1,v_1),\dots,(k_m,v_m)) \sum_{i1}^m \alpha(q,k_i) v_i \alpha 是softmax归一化的注意力权重。· 加性注意力 a(q,k) \mathbf{v}^\top \tanh(\mathbf{W}_1 q \mathbf{W}_2 k) 适用于q和k维度不同时引入可学习参数。· 缩放点积注意力 a(q,k) \frac{q^\top k}{\sqrt{d}} 除以\sqrt{d}控制方差适用于q和k维度相同计算效率更高。· 掩蔽softmax在softmax前将填充位置的分数设为-\infty使其注意力权重为0。学习笔记注意力分数是注意力机制的核心计算单元。加性注意力更灵活但计算稍慢缩放点积注意力速度快且效果好是Transformer默认选择。分母\sqrt{d}的缩放原因是当维度d较大时点积值方差变大softmax梯度趋于极小除以\sqrt{d}可稳定梯度。掩蔽softmax在批次处理中用于忽略填充位置。分数计算后通过softmax转为概率分布注意力权重反映了各Value对当前Query的重要性。第66讲自注意力与位置编码核心内容自注意力是Transformer的核心Query、Key、Value均来自同一序列捕捉序列内部元素间的依赖关系。· 自注意力公式输入序列X通过线性变换得到Q、K、V输出 \text{Attention}(Q,K,V) \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V 。· 多头注意力将Q、K、V线性投影到h个不同子空间分别计算注意力后拼接捕捉不同位置的多种特征关联。· 位置编码因Transformer无时序结构需添加位置信息。使用正弦/余弦函数 PE_{(pos,2i)} \sin(pos/10000^{2i/d}) PE_{(pos,2i1)} \cos(pos/10000^{2i/d}) 使任意两个相距k个时间步的位置编码内积相同蕴含相对位置信息。学习笔记自注意力机制使每个位置都能直接关注序列中所有位置相比RNN线性顺序和CNN局部感受野自注意力有全局感受野且计算高度并行。多头注意力类似CNN的多通道输出每个头学习不同的特征模式。位置编码是Transformer的关键创新——没有它模型将无法区分词序。训练时还需掩码Padding Mask忽略填充位置Sequence Mask防止解码时看到未来位置。第67讲Transformer — 架构与实现核心内容Transformer完全基于注意力机制抛弃RNN和CNN是现代大模型的基石。· 整体架构编码器堆叠N个块多头自注意力 前馈网络 残差连接 层归一化解码器额外包含编码器-解码器注意力并使用掩蔽自注意力防止看到未来位置。· 前馈网络每个位置独立的两层全连接FFN(x) max(0, xW₁ b₁)W₂ b₂。· 层归一化与残差连接每个子层输出 LayerNorm(x Sublayer(x))帮助梯度流动和训练稳定。· 位置编码注入序列位置信息使模型能感知词序。· 实现要点编码器和解码器通常堆叠相同层数如N6。学习笔记Transformer首次证明纯注意力架构可超越RNN/CNN。优势高度并行化无需时序递归、长程依赖建模能力强、训练速度快。参数量大需大量数据和计算资源。训练技巧学习率预热Warmup、标签平滑、Adam优化器。解码器的掩蔽自注意力Sequence Mask确保训练时预测t时刻输出时看不到t时刻之后的信息保持自回归性质。残差连接和层归一化是深层网络稳定训练的关键。第68讲优化算法 — 梯度下降与基础优化核心内容优化算法是深度学习的核心引擎本节介绍梯度下降基础及深度网络中的优化挑战。· 梯度下降沿负梯度方向更新参数 x_{t1} x_t - \eta \nabla f(x_t) 。批量梯度下降BGD使用全部数据稳定但慢随机梯度下降SGD使用单个样本快但有噪声小批量梯度下降Mini-batch SGD平衡两者。· 深度网络优化挑战局部极小值、鞍点、梯度消失/爆炸高维空间中鞍点比局部极小值更常见。· 梯度裁剪当梯度范数超过阈值时缩放梯度防止梯度爆炸。学习笔记深度学习中实际使用的是小批量SGD利用GPU并行加速。学习率η是最敏感的超参数过大训练发散过小收敛极慢。鞍点在高维非凸优化中是主要障碍——梯度为零但既非极小也非极大SGD的噪声可帮助逃离鞍点。梯度裁剪通常在RNN/LSTM中必备阈值通常设为1或5。理解这些基础问题是理解Adam等高级优化器的前提。第69讲优化算法 — 动量法核心内容动量法通过累积历史梯度加速收敛并抑制震荡。· 指数加权移动平均 v_t \beta v_{t-1} \eta_t g_t 其中 \beta 为动量系数通常0.9物理上类似小球滚下山坡积累动量。· 参数更新 x_t x_{t-1} - v_t 。· 物理意义梯度方向一致时加速方向变化时减速帮助越过局部极小和震荡区域。· 泄露平均值梯度的移动平均值代替原始梯度平滑噪声梯度。学习笔记动量法在峡谷区域一个方向陡峭、另一个方向平缓特别有效可抑制垂直方向的震荡加速水平方向的收敛。PyTorch中在SGD优化器中设置momentum0.9即启用动量法。执行随机梯度下降时嘈杂梯度下学习率选择需谨慎过快收敛停滞过宽可能不收敛到最优解。动量法类似自动调整学习率——平坦方向积累动量、震荡方向相互抵消。β越大历史梯度影响越大通常取0.9。第70讲优化算法 — AdaGrad、RMSProp核心内容自适应学习率算法根据参数历史梯度调整学习率对稀疏特征更友好。· AdaGrad累加梯度平方和 s_t s_{t-1} g_t^2 参数更新 x_t x_{t-1} - \frac{\eta}{\sqrt{s_t \epsilon}} g_t 。优势稀疏参数得到更大更新学习率自适应。局限s_t单调增长学习率持续衰减可能过早停止学习。· RMSProp改进AdaGrad使用指数加权移动平均累积梯度平方 s_t \gamma s_{t-1} (1-\gamma)g_t^2 γ通常取0.9避免学习率过快衰减。· 适用场景AdaGrad适合稀疏数据如词嵌入RMSProp适合RNN等非平稳目标。学习笔记AdaGrad是首个为每个参数自适应调整学习率的方法但对深度学习而言学习率衰减过快是致命缺陷。RMSProp引入EMA解决此问题与动量法的EMA思想一脉相承。RMSProp中分母的梯度平方EMA使学习率能动态调整——梯度大时学习率小梯度小时学习率大。实践中RMSProp在RNN训练中表现优于标准SGD。实现时注意ε通常1e-8防止除零。第71讲优化算法 — Adam核心内容AdamAdaptive Moment Estimation结合动量法和RMSProp是目前最常用的优化器。· 一阶矩估计动量 m_t \beta_1 m_{t-1} (1-\beta_1)g_t 。· 二阶矩估计自适应学习率 v_t \beta_2 v_{t-1} (1-\beta_2)g_t^2 。· 偏差修正因 m_0, v_0 初始为0需修正 \hat{m}_t m_t/(1-\beta_1^t) \hat{v}_t v_t/(1-\beta_2^t) 。· 参数更新 x_t x_{t-1} - \eta \cdot \hat{m}_t / (\sqrt{\hat{v}_t} \epsilon) 。· 默认超参数 \beta_10.9 \beta_20.999 \epsilon10^{-8} 。学习笔记Adam结合动量加速收敛和RMSProp自适应学习率几乎适用于任何模型收敛快且对学习率不敏感。偏差修正在训练初期尤为重要防止因初始化为0导致的更新过小。Adam有时泛化性能不如SGDmomentum但仍是大多数任务的首选。PyTorch中torch.optim.Adam直接使用。Adam根据梯度大小采用自适应学习率核心思想梯度大的参数更新步长短梯度小的参数更新步长大。AdamW修正了权重衰减实现方式在大模型训练中更常用。第72讲优化算法 — 学习率调度核心内容学习率调度在训练过程中动态调整学习率改善收敛效果。· 单步衰减Step Decay 每隔固定轮数将学习率乘以衰减因子如每30轮×0.1。· 多步衰减MultiStep Decay 在指定轮次如[30,60,80]衰减学习率。· 指数衰减Exponential Decay \eta_t \eta_0 \cdot \gamma^t 。· 余弦退火Cosine Annealing 按余弦函数周期性衰减可配合重启Cosine Annealing with Restarts。· ReduceLROnPlateau验证指标停止改善时降低学习率通常减半。· 预热Warmup 训练初期用较小学习率逐渐增至初始值避免梯度不稳定。学习笔记学习率调度与优化器配合使用PyTorch中通过torch.optim.lr_scheduler模块实现。Transformer等大模型训练通常采用预热余弦退火。预热可在训练初期稳定梯度通常预热步数为总步数的1-10%。多步衰减在分类任务中常用如ImageNet训练ResNet时在30/60/80轮衰减。余弦退火可周期性提高学习率帮助跳出局部极小。学习率是深度学习中最重要的超参数调度策略往往比优化器选择更影响最终性能。第73讲计算机视觉 — 目标检测综述核心内容回顾与整合目标检测经典算法建立全局认知框架。· 两阶段方法R-CNN系列R-CNN→Fast R-CNN→Faster R-CNN先生成候选区域再分类回归精度高速度慢。· 单阶段方法YOLO系列、SSD直接在特征图上预测速度快精度接近两阶段方法。· 关键组件锚框Anchor Box生成、正负样本匹配、NMS后处理、多尺度特征融合。· 评价指标mAPmean Average Precision综合考虑不同IoU阈值和召回率。· 轻量化检测MobileNet-SSD、YOLO-Nano等适合移动端部署。学习笔记YOLO将检测视为回归问题——图像划分网格每个网格预测边界框和类别概率速度极快。两阶段方法Faster R-CNN引入RPN区域提议网络与检测网络共享卷积特征精度更高。单阶段方法SSD在多层特征图上预测对小物体检测更友好。近年趋势Transformer用于目标检测DETR系列。实际部署需权衡精度与速度——实时场景选YOLO高精度场景选Faster R-CNN。第74讲计算机视觉 — 语义分割与实例分割核心内容分割任务包括语义分割像素分类和实例分割区分个体。· 语义分割FCN全卷积网络将分类网络的全连接层替换为卷积层实现端到端逐像素分类。跳跃连接融合浅层细节和深层语义显著提升边缘精度。评价指标mIoU平均交并比。· 实例分割Mask R-CNN在Faster R-CNN基础上增加掩膜预测分支同时实现检测和分割。ROI Align解决ROI Pooling的量化误差提升掩膜精度。· 常用数据集Pascal VOC20类、Cityscapes19类街景、COCO80类实例分割标注。学习笔记FCN是语义分割奠基之作后续U-Net医学图像、DeepLab系列空洞卷积在此基础上改进。Mask R-CNN是实例分割经典方法在小目标分割上表现出色。分割任务标注成本极高弱监督/半监督分割是研究方向。实际应用中U-Net在医学图像领域统治地位DeepLab在通用场景表现优秀。转置卷积第47讲是分割网络上采样的核心技术。第75讲计算机视觉 — 样式迁移与图像生成核心内容样式迁移将一张图的风格应用到另一张图的内容上生成对抗网络GAN实现图像生成。· 样式迁移原理内容损失VGG高层特征L2距离保留内容结构风格损失Gram矩阵差异捕捉纹理色彩。总损失α×内容损失β×风格损失。快速样式迁移训练前馈网络实现实时推理。· GAN基本原理生成器G从噪声生成假图像判别器D区分真假两者博弈训练。目标函数min_G max_D V(D,G) E_x[logD(x)] E_z[log(1-D(G(z)))]。· 训练技巧标签平滑、Wasserstein距离WGAN、谱归一化等稳定训练。· 应用DCGAN卷积GAN、CycleGAN无配对图像转换、StyleGAN高质量人脸生成。学习笔记样式迁移中Gram矩阵统计特征相关性纹理信息丢失空间结构因此能捕捉“风格”而非内容。GAN训练难度大易出现模式崩溃Mode Collapse——生成器只生成少数几种样本。WGAN使用Wasserstein距离缓解训练不稳定。DCGAN将CNN引入GAN是高质量图像生成的基础。近年扩散模型Diffusion Models在图像生成质量上超越GAN成为新主流。第76讲自然语言处理 — 词嵌入核心内容词嵌入将离散词映射到连续向量空间捕捉词语间的语义关系。· 词嵌入思想相似语义的词在向量空间中距离相近。词向量可通过余弦相似度衡量语义相关性。· Word2VecCBOW用上下文预测中心词Skip-gram用中心词预测上下文。负采样加速训练高频词下采样平衡词频。· GloVe基于全局词共现矩阵结合Word2Vec局部上下文和矩阵分解全局统计。· FastText考虑子词信息n-gram字符级嵌入处理OOV和形态丰富语言。· 评估类比推理任务如“king - man woman ≈ queen”和相似度任务。学习笔记独热编码维度爆炸且无语义信息词嵌入通过低维稠密向量解决此问题。Word2Vec的Skip-gram对小数据集更优CBOW训练更快。GloVe训练时使用共现矩阵效率更高。FastText的子词嵌入对形态丰富语言如德语、土耳其语特别有效。预训练词嵌入如GloVe、FastText可下载使用在下游任务微调或固定。BERT等上下文嵌入Contextual Embedding比静态词嵌入更强。第77讲自然语言处理 — 预训练BERT核心内容BERTBidirectional Encoder Representations from Transformers通过双向Transformer预训练刷新多项NLP任务记录。· 预训练任务一——掩码语言模型MLM 随机掩码15%的词元预测被掩码的原词。其中80%替换为[MASK]10%随机替换10%保持不变。迫使模型学习双向上下文信息。· 预训练任务二——下一句预测NSP 预测两个句子是否是连续上下文中的相邻句子学习句子间关系。· 模型架构多层Transformer编码器堆叠BERT-base12层110M参数BERT-large24层340M参数。· 微调预训练后在具体任务上微调如情感分类、问答、命名实体识别少量数据即可达到SOTA。学习笔记BERT标志着NLP进入预训练微调时代。MLM是BERT核心创新——传统语言模型只能单向MLM使模型真正双向理解。NSP在部分任务如句子对分类有效后续研究RoBERTa发现移除NSP性能不降反升。BERT输入为Token Embeddings词、Segment Embeddings句子A/B、Position Embeddings位置三者和。后续改进RoBERTa更大数据、动态掩码、ALBERT参数共享、DistilBERT知识蒸馏压缩。第78讲自然语言处理 — GPT系列核心内容GPTGenerative Pre-trained Transformer采用自回归语言模型范式在生成任务上表现卓越。· 预训练范式自回归语言建模预测下一个词与BERT双向不同GPT单向从左到右。· 模型架构Transformer解码器堆叠掩蔽自注意力防止看到未来词元。· GPT-1到GPT-3演进模型规模从1.17亿到1750亿参数数据量和训练计算指数级增长。· 上下文学习GPT-3首次展示通过少量示例Few-shot和自然语言指令完成任务的能力。· ChatGPT/InstructGPT通过人类反馈强化学习RLHF对齐人类偏好提升对话能力和安全性。学习笔记GPT是生成式AI的基石ChatGPT基于GPT-3.5/4。BERT适合理解任务分类、问答GPT适合生成任务文本生成、对话。自回归生成需逐个词元预测计算量大但效果惊艳。GPT-3证明模型规模扩大带来“涌现能力”——小模型不具备的复杂推理能力。RLHF是ChatGPT成功的关键通过人类偏好数据微调使模型更有用、更无害。GPT-4是多模态能同时理解图像和文本。第79讲自然语言处理 — 序列标注与命名实体识别核心内容序列标注为序列中每个位置分配标签命名实体识别NER是典型应用。· 标签体系BIO标注——B-PER人名开始、I-PER人名内部、O非实体。· 方法演进BiLSTM-CRF双向LSTM条件随机场是CRF前经典方案BERT微调是目前SOTA。· CRF条件随机场建模标签序列的全局依赖避免不合理标注如I-PER前不是B-PER。CRF损失函数考虑整个序列的转移概率。· 评价指标严格F1分数要求边界和类型完全匹配。学习笔记序列标注的挑战实体边界检测和长实体识别。BiLSTM-CRF中CRF层学习标签转移矩阵确保序列标注的合理性。BERT微调将BERT输出接线性层CRF利用预训练知识大幅提升精度。低资源场景标注数据少可考虑few-shot或数据增强。NER在信息抽取、知识图谱构建中至关重要。第80讲自然语言处理 — 文本情感分类核心内容情感分类判断文本的情感倾向积极/消极/中性是文本分类的典型任务。· 方法演进传统方法词袋模型BoW TF-IDF SVM/逻辑回归。深度方法词嵌入RNN/LSTM/CNNBERT微调是目前SOTA。· 数据集IMDb影评二分类5万条、Twitter情感分析、酒店/电商评论。· 技巧文本长度处理截断/填充、类别不平衡处理加权损失/过采样/欠采样。· 多语言与细粒度情感多语言BERTmBERT用于跨语言细粒度1-5星评分用回归或5分类。学习笔记情感分类是NLP入门经典任务流程简单且效果明显。词袋模型丢失词序信息深度方法通过RNN/CNN捕捉局部和序列信息。BERT微调仅需在BERT输出接分类头在小数据集上也能取得优秀效果。实际应用中需考虑领域迁移——电影评论模型在餐厅评论上可能失效需领域自适应。情感分析在企业舆情监控、产品分析中有广泛应用。第81讲课程总结与前沿展望核心内容回顾《动手学深度学习》知识体系展望深度学习前沿方向。· 核心模块总结多层感知机、卷积神经网络、循环神经网络、注意力机制与Transformer。· 应用领域计算机视觉分类/检测/分割/生成、自然语言处理翻译/BERT/GPT、多模态、强化学习。· 前沿方向大语言模型LLM的Scaling Law和推理能力扩散模型超越GAN成为图像生成主流多模态模型统一理解与生成AI Agent自主任务规划与执行。· 工程实践模型部署ONNX/TensorRT、分布式训练数据并行/模型并行、MLOps、Prompt Engineering/RAG检索增强生成。学习笔记深度学习的本质学习数据中的模式与表征。多模态模型GPT-4V、Gemini打破模态边界迈向通用人工智能。强化学习DQN/PPO在游戏、机器人中突破人类水平RLHF使大模型对齐人类偏好。学习深度学习如同积木搭建掌握基础模块后组合创新实践是检验理解的最佳方式。持续关注最新论文和开源项目保持终身学习。李沐老师的课程至此告一段落后续可深入学习论文精读、Kaggle竞赛、开源项目贡献。

更多文章