Logprobs深度解析:大模型输出的隐藏信息

当你问一个大模型一个问题,它吐出一串文字作为回答。这个过程看似简单,但模型内部究竟发生了什么?它有多确信自己的答案?如果它在"胡编乱造",我们能否察觉? ...

19 min · 9161 words

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

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

18 min · 8571 words

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

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

17 min · 8098 words

Early Stopping:为什么"提前终止"能拯救你的模型免于过拟合

训练一个神经网络时,最令人沮丧的场景莫过于:训练损失持续下降,模型在训练集上的表现越来越好,但当你把它部署到真实环境时,效果却一塌糊涂。过拟合——这个困扰深度学习实践者的问题,有一个看似简单却异常有效的解决方案:Early Stopping(早停法)。 ...

17 min · 8422 words

Transformer的权重共享:为什么一行代码能省下两亿参数

一行代码的魔法 在PyTorch中实现一个简单的语言模型时,你可能会看到这样一行看似普通的代码: self.lm_head.weight = self.embedding.weight 这行代码做的事情非常简单:让输出层的权重指针直接指向嵌入层的权重。但就是这样一行代码,却能够为一个典型的70亿参数大模型节省约2亿个参数——相当于模型总参数量的3%左右。 ...

13 min · 6138 words

自动微分与反向传播为什么这个六十岁的算法是深度学习的基石

引言:一个被误读了四十年的算法 如果你问一个机器学习从业者:“反向传播算法是谁发明的?“大多数人的回答会是:“Geoffrey Hinton和他的合作者在1986年提出的。“这个答案听起来理所当然——毕竟,Hinton被称为"深度学习之父”,而那篇发表在《Nature》上的论文《Learning representations by back-propagating errors》至今仍被奉为经典。 ...

17 min · 8384 words

梯度下降优化器:从SGD到AdamW,为什么这个选择能决定模型的命运

2014年,Diederik Kingma和Jimmy Ba在ICLR上发表了一篇论文,标题平淡无奇——《Adam: A Method for Stochastic Optimization》。没有人预料到,这篇论文中的算法会在接下来的十年里统治深度学习训练领域。时至今日,无论是GPT、LLaMA还是Stable Diffusion,几乎所有大模型的训练日志里都能看到"optimizer=AdamW"的字样。 ...

15 min · 7072 words