浮点数的深渊:深度学习数值稳定性的完整解析

2019年某天凌晨三点,一位研究生的模型训练在运行72小时后突然输出全NaN。损失函数从平稳下降变成无穷大,权重变成NaN,一切归零。这是深度学习开发者的噩梦——数值不稳定。这不是偶然,而是浮点数表示固有的物理限制在特定条件下的必然爆发。 ...

17 min · 8385 words

Sigmoid与Softmax:多分类与多标签任务的激活函数选择逻辑

打开任何一本深度学习教材,或者浏览机器学习面试题库,几乎都会遇到这个问题:多分类任务应该用Sigmoid还是Softmax?答案似乎很简单——多分类用Softmax,二分类用Sigmoid。但当面试官追问"为什么"时,很多人就卡住了。更麻烦的是多标签分类场景:一个样本同时属于多个类别,这时候该用什么? ...

13 min · 6014 words

权重衰减与L2正则化:为什么这个看似微小的区别让AdamW成为大模型训练的标配

一个困扰深度学习社区多年的困惑 2015年,Diederik Kingma和Jimmy Ba在ICLR上发表了Adam优化器论文(该论文于2014年12月提交arXiv)。这个结合了动量和自适应学习率的优化器迅速成为深度学习社区的最爱。然而,一个奇怪的现象开始困扰研究者们:使用Adam训练的模型,其泛化能力似乎总是不如使用普通SGD加权重衰减训练的模型。 ...

17 min · 8405 words

多查询注意力:为什么共享一个KV头能让大模型推理提速数倍

2019年11月,Noam Shazeer在arXiv上发表了一篇标题颇为大胆的论文——《Fast Transformer Decoding: One Write-Head is All You Need》。这篇仅6页的论文提出了一个看似简单的问题:Transformer解码时,我们真的需要那么多Key和Value头吗? ...

17 min · 8445 words

Logits:神经网络输出的原始真相,从概念到实践的完整解析

当你问一个大语言模型"法国的首都是哪里?",它回答"巴黎"。这个看似简单的过程背后,模型经历了一系列复杂的计算。在最终的文字出现之前,模型首先要给出一个答案:对于词表中的每一个词,它认为这个词作为下一个输出的可能性有多大。这个"可能性"的原始形式,就是logits。 ...

13 min · 6400 words

滑动窗口注意力:为什么一个「局部窗口」能看完全局信息?

2023年9月,Mistral AI发布了一款仅有73亿参数的模型,却在几乎所有基准测试上超越了拥有130亿参数的LLaMA 2。这个令人意外的结果背后,一个关键技术就是滑动窗口注意力(Sliding Window Attention,SWA)。 ...

18 min · 8571 words

大模型如何选择下一个词:从概率预测到文本生成的完整技术链路

引言:模型输出的真正面目 当你在ChatGPT中输入一个问题,屏幕上逐字显现答案时,你是否想过:模型内部发生了什么?它是如何决定下一个词的? 很多人以为大语言模型直接输出文字,这是一个普遍的误解。事实上,模型的输出是一个由数万个数字组成的向量——每个数字对应词表中的一个词,代表该词成为"下一个词"的原始分数。这个分数,在技术术语中被称为Logit。 ...

17 min · 8098 words