深度学习
文章平均质量分 84
小饼干超人
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【CS336】从0开始构建大模型,学习笔记合集(网上最详细的版本!连上课提问的QA都有!还做了知识扩展)
博主精心整理的CS336学习笔记系列,涵盖GPU架构优化、Triton框架应用、大模型并行化策略等核心内容(5-14课),1-3课和15-17课预计2026年4月前更新。笔记不仅包含课程讲解,还补充了公式推导、课堂QA及参考链接,旨在帮助读者深入掌握知识。目前已发布10篇详细教程,涉及模型训练、推理优化及数据策略等实战内容。欢迎关注学习!原创 2026-03-09 09:56:03 · 97 阅读 · 0 评论 -
pytorch中哪些操作是视图,哪些操作是复制
视图操作:不复制底层内存,仅修改,新张量是原张量的「视角」,修改互影响t()view();复制操作:新建内存并拷贝数据,新张量和原张量独立,修改互不影响clone()(非连续时)//花式索引;条件操作:是否复制取决于原张量状态,核心是reshape()切片to(),用3行验证代码可快速判断;PyTorch设计优先视图操作(O(1)高效),仅在无法通过元信息映射内存时才会触发复制,这是对内存和效率的优化。原创 2026-02-05 10:00:00 · 653 阅读 · 0 评论 -
为什么大模型训练优先用 bf16 而非 float16,而且需要保留 float32 的参数副本
bf16优于fp16的核心和fp32几乎一致的数值范围(8位指数),彻底避免大模型训练的上溢/下溢,无需损失缩放,训练稳定性拉满;而bf16的精度低问题,会被大模型的海量参数弥补,对收敛无显著影响。保留fp32参数副本的核心bf16/fp16精度不足,无法表示微小的参数更新步长,直接更新会导致梯度量化为0;fp32的高精度能保证优化器计算和参数更新的有效性,避免误差累积,是混合精度训练的「精度兜底」。原创 2026-02-05 10:00:00 · 1157 阅读 · 0 评论 -
详解 torch.finfo()
是查询浮点型张量机器属性的工具,整数型用,核心用于规避数值溢出和精度损失;最常用属性是eps(机器精度),是判断浮点相等的核心依据,绝对不能用==直接比较浮点数;比特数越多,精度越高、表示范围越大,显存/计算开销也越大PyTorch 的finfo和 NumPy 完全兼容,CUDA 浮点类型的属性和 CPU 一致。原创 2026-02-04 12:13:14 · 709 阅读 · 0 评论 -
详解向量数据库中的PQ算法(Product Quantization)
PQ算法是Faiss、Milvus等向量数据库的核心技术之一,在保持可接受精度的同时,极大提升了大规模向量检索的效率。,通过将高维向量分割成子向量并分别量化,实现大幅度的内存压缩和快速的近似最近邻搜索。Product Quantization(乘积量化)是一种。原创 2026-01-19 20:28:02 · 1094 阅读 · 0 评论 -
IVF(Inverted File)原理图解:高维向量的分桶加速搜索
IVF 的核心原理是“聚类分桶+局部搜索”,通过将高维向量按相似度划分到不同桶,大幅缩小搜索范围,实现高效近似最近邻搜索。其优势在于结构简单、速度快、内存占用低,缺陷是依赖聚类质量、召回率有上限。实际应用中,常通过调整K和nprobe平衡性能,或与 PQ、HNSW 等算法结合,适配不同场景(如低内存场景用 IVF-PQ,高召回场景用 IVF-HNSW)。IVF 是向量搜索的“基础工具”,理解其分桶逻辑,能更好地掌握复杂混合索引的设计思路。原创 2026-01-17 20:43:57 · 1670 阅读 · 0 评论 -
图解 HNSW(Hierarchical Navigable Small Worlds)原理
用“分层结构”实现快速范围定位,用“可导航小世界图”实现精准近邻查找。通过融合概率跳表的分层思想与 NSW 的贪心路由机制,HNSW 解决了传统图算法搜索慢、易陷入局部最小值的问题,成为当前向量相似度搜索的首选算法之一。实际使用中(如通过 Faiss 实现),需根据业务需求调整核心参数,平衡召回率、搜索速度与内存成本。原创 2026-01-17 20:00:38 · 1344 阅读 · 1 评论 -
KDITransformer 原理与代码解析
KDI-Transformer(Kernel Dependency Integration Transformer)是一种针对Transformer架构的改进变体,核心是通过。传统自注意力的注意力权重计算基于点积(dot-product),仅捕捉两两token的直接线性依赖;机制增强注意力机制对序列依赖关系的建模能力,解决传统自注意力在长序列建模中计算复杂度高、依赖捕捉不充分的问题。(V为Value矩阵,与标准Transformer一致)。(m为低维映射维度),将输入映射为。(随机傅里叶特征近似)。原创 2026-01-16 10:15:00 · 1623 阅读 · 0 评论 -
如何兼容不同版本的 scikit-learn(sklearn)库,统一获取“均方根误差(RMSE)”的计算函数
最终无论 sklearn 版本是新是旧,代码中。原创 2026-01-16 10:00:00 · 856 阅读 · 0 评论 -
为什么分类任务的损失函数是交叉熵
在信息论中,熵(Entropy)衡量一个分布的不确定性;交叉熵(Cross-Entropy)衡量用分布QQQ去编码分布PPP的数据,需要的平均比特数HPQ−∑i1nPilogQiHPQ−i1∑nPilogQiPPP:真实标签的分布(one-hot 分布,只有真实类别对应的Pi1P(i)=1Pi1,其余为0);QQQ:模型预测的概率分布。贴合任务本质:直接衡量预测分布与真实分布的差异,符合分类任务的概率建模目标;原创 2026-01-15 10:13:41 · 923 阅读 · 0 评论 -
Predictions Balancing(预测平衡)的核心原理和代码实现
核心原理:Predictions Balancing 是后处理技术,通过调整预测阈值或缩放预测概率,让预测分布贴合目标分布,修正模型预测偏差;核心方法:阈值调整法(调整决策边界,适合只需修正类别预测)、概率缩放法(修正概率值,适合需要校准概率的场景);核心价值:无需重新训练模型,即可快速修正类别不平衡、域偏移导致的预测偏差,提升模型实际应用效果。原创 2026-01-15 10:00:00 · 1407 阅读 · 0 评论 -
伪标签(Pseudo Labeling)的核心原理和实战
self.fc2 = nn.Linear(128, 10) # 10个数字类别x = x.view(x.size(0), -1) # 展平:(64,7,7) -> (64*7*7,)return x# 初始化模型、损失函数、优化器核心原理:伪标签是半监督学习方法,用有标签数据训练初始模型,给无标签数据打高置信度伪标签,再混合训练提升模型性能;核心流程:有标签训练初始模型 → 生成高置信度伪标签 → 混合数据迭代训练;应用场景。原创 2026-01-14 10:15:00 · 2288 阅读 · 0 评论 -
正则化损失的原理和代码实现
核心原理:正则化通过在损失函数中加入参数惩罚项,约束参数大小,本质是“牺牲部分训练拟合度,换取更强的泛化能力”;核心好处:解决过拟合问题,提升模型泛化能力,L1还能实现特征选择,L2让模型更稳定;代码关键:正则化损失=原始损失+λ×惩罚项(L1是参数绝对值和,L2是参数平方和,偏置项一般不惩罚)。原创 2026-01-14 10:00:00 · 2032 阅读 · 0 评论 -
tf.feature_column.embedding_column()的底层实现原理
的核心是封装了Embedding层,本质是通过可训练的嵌入矩阵,将高维稀疏的类别ID映射为低维稠密向量;底层实现是「ID索引→查表(替代one-hot+矩阵乘法)→ 可选的多值合并」,并做了跳过显式one-hot的性能优化;嵌入矩阵是可训练参数,会随模型训练更新,最终让语义相近的类别ID对应向量距离更近。简单来说,这个接口的价值是把“高维稀疏类别特征编码”的复杂逻辑封装起来,让用户无需手动实现嵌入层,只需配置参数即可完成特征的语义编码。原创 2026-01-13 11:00:00 · 783 阅读 · 0 评论 -
tf.parse_example使用详解
首先需要创建一个特征描述字典(key 是特征名,value 是对应的解析规则),用或:固定长度特征(如单值的年龄、分数,或固定长度的向量);:可变长度特征(如文本词汇、多标签,解析后为 SparseTensor)。示例:"age": tf.io.FixedLenFeature(shape=(), dtype=tf.int64), # 单值int,shape=()表示标量。原创 2026-01-13 10:30:00 · 645 阅读 · 0 评论 -
tf.feature_column.embedding_column()实战-如何将稀疏数据转为dense向量
稀疏数据(如用户 ID、品类标签、文本词汇等)无法直接输入模型,需先通过 tf.feature_column.categorical_column_with_* 系列接口(如 with_identity、with_hash_bucket)将其转为 稀疏 ID 列(CategoricalColumn)。关键细节:嵌入矩阵的初始值为随机值,后续会随模型训练(通过反向传播)不断优化,最终让语义 / 逻辑相近的稀疏 ID 对应到向量空间中相近的稠密向量。原创 2026-01-12 10:30:00 · 270 阅读 · 0 评论 -
梯度累积Trick:显存受限下的大Batch训练神器
在深度学习训练中,大BatchSize往往能带来更稳定的梯度更新和更好的模型泛化能力,但GPU显存不足的问题常常让人望而却步。梯度累积(Gradient Accumulation)作为一种经典的显存优化Trick,能让你用小Batch模拟大Batch训练效果,无需升级硬件就能解锁更大规模的模型训练,堪称资源受限场景下的"救命稻草"。原创 2026-01-12 11:00:00 · 788 阅读 · 0 评论 -
深入浅出RLHF中的对数概率计算:从模型输出到策略梯度的核心桥梁
函数完整体现了RLHF中对数概率计算的工程逻辑:从模型logits的基础处理,到多响应维度的适配,再到响应序列的索引匹配,每一步都围绕“维度对齐”和“数值稳定”两大核心目标。维度管理优先使用Einops库,简化多维张量变换;对数概率计算优先使用,保证数值稳定性;索引操作必须保证维度严格匹配,避免梯度计算时的维度错误。原创 2026-01-09 11:12:48 · 629 阅读 · 0 评论 -
深入浅出RLHF中的优势函数计算:从原始奖励到归一化奖励的工程实现
原始奖励验证了“奖励→优势”的核心逻辑,但缺乏工程实用性;中心化奖励解决了“绝对奖励干扰相对评价”的问题;归一化奖励进一步标准化了奖励尺度,实现了工业级的训练稳定性;最大奖励是极端场景的特殊选择,通用性差。在大模型RLHF中,优势函数的本质是“将绝对奖励转化为相对优势”,而归一化奖励正是这一目标的最优实现——它让模型聚焦“每个prompt下的相对好坏”,而非被绝对数值或尺度差异误导,最终实现稳定、高效的策略更新。原创 2026-01-09 10:44:20 · 854 阅读 · 0 评论 -
深入浅出PPO损失函数:从朴素策略梯度到Clipped PPO的代码实现解析
朴素策略梯度验证了策略梯度的核心逻辑,但缺乏工程实用性;非裁剪PPO引入策略比率,为策略更新增加“锚点”;裁剪PPO通过比率裁剪和保守更新,实现了工业级的训练稳定性。原创 2026-01-08 21:23:20 · 1393 阅读 · 0 评论 -
KL散度的三种公式解析,含代码复现
KL散度(相对熵)用于衡量两个概率分布pxp(x)px和qxq(x)qx的“差异程度”,非对称KLp∣∣q≠KLq∣∣pKLp∣∣qKLq∣∣pKLp∥qEx∼plogpxqxKLp∥qEx∼plogqxpxx∼px \sim px∼p:表示期望是对分布pxp(x)px取的;log\loglog通常为自然对数(ln\lnln。原创 2026-01-08 21:18:19 · 1544 阅读 · 0 评论 -
通俗易懂地解释Bradley-Terry-Luce(BTL)模型
BTL模型通过两两对比数据计算隐形实力分,进而得出整体排名。例如三款奶茶的受欢迎度通过两两PK结果(如A赢B 60次)转化为实力分(A=1.8),使A赢B的概率(60%)与分数比一致,最终按分数排序(A>B>C)。该模型将零散对比转化为系统排名,类似体育积分制,无需直接评选最优,通过两两胜负关系即可推导整体排序。适用于多选一场景,选某款概率由其分数占比决定。原创 2025-09-22 20:36:11 · 644 阅读 · 0 评论 -
通俗易懂地解释 On-Policy 和 Off-Policy 的区别
强化学习中的On-Policy和Off-Policy策略在数据来源与使用方式上存在本质区别。On-Policy必须使用当前策略实时生成的数据进行训练,典型如Sarsa算法,特点是数据即时但无法复用;Off-Policy则可利用历史数据或其他策略生成的数据(如Q-Learning),数据利用率高但需处理数据偏差问题。关键差异体现在数据利用率、探索灵活性、计算复杂度等方面:On-Policy简单稳定但效率低,Off-Policy灵活高效但实现复杂。选择策略需权衡实时性与数据利用需求。原创 2025-09-22 19:14:30 · 2809 阅读 · 0 评论 -
详解 pytorch dataload 原理及各组件代码
PyTorch DataLoader是深度学习训练中的核心数据加载工具。它通过Dataset基类管理数据,实现__len__和__getitem__方法获取样本。DataLoader负责批处理、打乱顺序和多进程加载,支持自定义collate_fn进行数据变换。官方实现提供高效的数据管道,包括内存固定(pin_memory)等优化功能。自定义简化版DataLoader展示了其核心原理:索引处理、批采样和数据处理流程。实际应用中,DataLoader能显著提升训练效率,特别是配合多进程和GPU加速时。原创 2025-09-09 15:35:30 · 845 阅读 · 0 评论 -
详解布隆过滤器
Bloom过滤器摘要: Bloom过滤器是一种空间高效的概率型数据结构,通过m位比特向量和k个独立哈希函数实现集合成员查询,支持常数时间的插入与查询。其核心特性是允许假阳性(误判存在但实际不存在),但确保“不存在”的判断绝对正确。典型应用如Web缓存快速判断URL是否在缓存中,假阳性的代价可控。当参数优化(哈希函数数k≈(ln2)·m/n)且m=8n时假阳性率约2%,m=10n时低于1%。相比传统数据结构(需Ω(n·log u)位存储),Bloom过滤器以极低空间开销(仅m位)实现高效查询,但无法存储键的额原创 2025-09-08 18:57:50 · 1179 阅读 · 0 评论 -
【cs336学习笔记】[第14课]实战数据过滤和去重
本讲深入探讨数据集处理机制,包括过滤算法和应用方法。过滤算法部分介绍了KenLM(基于Kneser-Ney平滑的快速n-gram模型)用于语言质量评估,fastText分类器实现高效文本分类,以及DSIR通过重要性重采样进行数据选择。过滤应用涵盖语言识别、质量评估和毒性检测。去重技术则涉及布隆过滤器、MinHash和局部敏感哈希(LSH)等方法。这些技术共同构成了处理大规模语言模型数据的关键流程,兼顾效率与准确性。原创 2025-09-10 10:00:00 · 1386 阅读 · 0 评论 -
【cs336学习笔记】[第13课]训练数据策略
本文摘要探讨了训练语言模型时数据的关键作用。研究表明,数据质量远比模型架构重要,这从各大公司对训练数据的严格保密可见一斑。文章详细介绍了预训练的三个阶段(预训练、中期训练、后训练)及其数据特征,并通过BERT、GPT-2等案例分析了不同数据源(如Wikipedia、Common Crawl)的特点和处理方法,包括去重、语言识别和质量过滤等技术。特别指出即使是高质量数据源也可能存在投毒攻击等安全隐患,强调数据整理是影响模型性能的决定性因素。原创 2025-09-09 10:00:00 · 1193 阅读 · 0 评论 -
【cs336学习笔记】[第12课]模型评估详解
评估模型:给定一个训练好的模型,评估它有多好。原创 2025-09-08 10:00:00 · 1382 阅读 · 0 评论 -
古德哈特定律(Goodhart‘s Law)
该定律由英国经济学家查尔斯·古德哈特(Charles Goodhart)在1975年提出,最初用于批判撒切尔夫人政府的货币主义政策,指出当政府试图管理金融指标时,这些指标便不再是可信的经济风向标。古德哈特定律(Goodhart’s Law)表述为“当一个指标变成了目标,它将不再是个好指标”。原创 2025-09-07 10:00:00 · 675 阅读 · 0 评论 -
详解 ELO 评分系统
ELO评分系统是一种衡量对弈水平的评价方法,由物理学家阿帕德・埃洛创立,最初用于国际象棋排名。其核心原理是通过预期表现与实际结果的差异来调整分数。Chatbot Arena利用ELO分数评估AI模型,方法是让用户比较两个模型对同一提示词的回复,根据用户选择更新模型分数。系统为新模型赋予初始分数(如1000分),通过公式计算预期胜率,再根据用户评价结果(胜者1分,败者0分)调整分数。文中提供了Python实现代码,包含模型添加、预期胜率计算和分数更新等功能,支持动态纳入新模型并进行实时评分。该机制能客观反映模原创 2025-09-06 20:41:16 · 2424 阅读 · 0 评论 -
【cs336学习笔记】[第11课]如何用好scaling law
摘要:本文探讨了大模型扩展的最佳实践,重点分析$\mu P$参数化方法在稳定扩展中的作用。通过Cerebras-GPT和MiniCPM的案例研究,展示了$\mu P$如何通过调整初始化方式(1/width缩放)和学习率(1/width缩放)实现超参数稳定性,从而减少计算资源消耗。MiniCPM进一步提出WSD学习率策略(预热-稳定-衰减),解决了传统余弦学习率无法复用早期检查点的问题。实验表明,$\mu P$结合WSD能显著提升小模型扩展效率,在1.2B-2.4B参数规模实现5倍计算节省,同时保持损失与ba原创 2025-09-06 11:50:30 · 1088 阅读 · 0 评论 -
图解小波变换(WT,wavelet transform)
小波变换与傅里叶变换对比分析 小波变换是一种时频分析方法,通过多尺度分解将信号分为近似分量(低频整体特征)和细节分量(高频局部特征)。与傅里叶变换(FFT)相比,小波变换具有时频局部化能力,能同时分析信号的时间和频率特性。FFT适合处理平稳信号(如固定频率正弦波),而小波变换更擅长分析非平稳信号(如突变信号)。在分解过程中,小波变换采用可变分辨率:低频部分高频率分辨率,高频部分高时间分辨率。典型应用包括信号去噪、图像压缩和故障诊断等。原创 2025-09-05 10:00:00 · 1573 阅读 · 0 评论 -
图解 FFT 快速傅里叶变换
本文介绍了傅里叶变换的基本原理及其在信号处理中的应用。傅里叶变换将周期信号分解为正弦/余弦函数的加权和,而非周期信号则视为无限大周期信号。快速傅里叶变换(FFT)将DFT计算复杂度从O(n²)降至O(nlogn)。通过示例展示了频域分量合成时域信号的过程,以及从时域信号中提取频域信息的方法。FFT能有效识别信号中的主要频率成分及其振幅,但存在局限性:对于非平稳信号,无法获得频率成分出现的时间信息。文中提供了Python代码实现平稳和非平稳信号的FFT分析,通过图形化展示了频域与时域的对应关系。原创 2025-09-04 15:46:15 · 1802 阅读 · 0 评论 -
详解 CKA(Centered Kernel Alignment)
本文介绍了CKA(中心化核对齐)方法的核心原理、数学公式和Python实现。CKA通过核函数将特征映射到高维空间,计算两个特征矩阵的相似性,取值范围为[0,1]。文章详细阐述了核矩阵构造、中心化操作和HSIC计算的数学过程,并提供了线性核和RBF核的Python实现代码,包括自动计算RBF核参数的启发式方法。CKA可用于评估神经网络特征表示、模型特征提取能力等场景,支持线性和非线性关系的比较。代码展示了如何计算随机特征矩阵的CKA值,验证了方法的有效性。原创 2025-09-04 10:30:00 · 2139 阅读 · 0 评论 -
详解向量范数/矩阵范数
摘要:范数是衡量向量或矩阵“大小”的数学工具,满足非负性、绝对齐次性、三角不等式和正定性。常见向量范数包括L0(非零元素数)、L1(绝对值之和)、L2(欧几里得距离)和L∞(最大绝对值)。矩阵范数如L1诱导范数、L2诱导范数和F范数用于衡量矩阵规模。范数广泛应用于机器学习正则化(L1/L2)、优化问题、信号处理(信号强度)和数值分析(矩阵稳定性)。不同范数适用于不同场景,选择取决于对“大小”的具体需求。原创 2025-09-03 10:00:00 · 1261 阅读 · 0 评论 -
详解FiLM 特征级线性调制
FiLM(Feature-wise Linear Modulation,特征级线性调制)是一种用于神经网络的条件调制机制,由Perez等人在2018年的论文《FiLM: Visual Reasoning with a General Conditioning Layer》中提出。它通过学习对神经网络中间层的特征进行逐通道的线性变换(缩放和平移),从而使模型能根据不同输入条件动态调整特征表示。原创 2025-09-02 10:00:00 · 2427 阅读 · 0 评论 -
Transformer注意力机制中QKV的序列长度有何不同
本文分析了Transformer模型中注意力机制下Q(Query)、K(Key)、V(Value)序列长度的关系。关键点包括:1)自注意力中Q、K、V来自同一序列,长度必然相同(L_Q=L_K=L_V);2)交叉注意力中Q来自一个序列,K/V来自另一序列,K和V长度必须相同(L_K=L_V),但Q长度可能与之不同;3)特殊情况下交叉注意力可能出现Q与K/V长度相同但来源不同的特例。文章通过典型应用场景(如机器翻译、图像描述)和计算示例,阐明了不同注意力类型下QKV长度的差异逻辑。原创 2025-08-29 11:00:00 · 994 阅读 · 0 评论 -
详解参数估计和非参数估计的区别
参数估计与非参数估计的核心差异在于是否依赖预设的固定参数模型。参数估计(如线性回归、高斯分布)假设数据服从特定分布或函数关系,通过固定参数描述数据,适用于数据量少、分布已知的场景;非参数估计(如KNN、决策树)不预设模型形式,参数数量随数据量动态变化,适合处理复杂、未知分布的大数据。选择方法时需权衡数据特征、计算效率和模型灵活性,参数估计计算快但假设强,非参数估计灵活但计算成本高。两者各有优劣,需根据具体场景选择。原创 2025-08-29 11:00:00 · 1306 阅读 · 0 评论 -
jax包介绍及代码示例
JAX 是由 Google 开发的用于高性能机器学习研究的 Python 库,它将的语法与和相结合,特别适合开发深度学习模型和优化算法。原创 2025-07-22 14:00:00 · 1107 阅读 · 0 评论 -
xformers包介绍及代码示例
xFormers是由Meta开发的一个高性能深度学习库,专门用于优化Transformer架构中的注意力机制和其他组件。它提供了内存高效和计算高效的实现,特别适用于处理长序列和大规模模型。原创 2025-07-21 19:43:39 · 1197 阅读 · 0 评论
分享