人工智能大模型黑话解释
模型到底是如何生成答案的?
大语言模型并非通常理解的,简单地从数据库中找答案。而是通过数学计算,推测出最符合上下文的下一个字或词。
本质上,它是一个统计和概率驱动的工具。模型并不“理解”问题,而是利用训练数据中的语言模式,推测后续内容的概率分布。例如,输入“今天天气”,它可能预测“很”(30%)、“不”(20%)等,并从中选择输出。这种预测能力源于海量文本训练,通过调整数十亿参数,使其概率分布贴近真实语言规律。
模型的运作通常可以分为如下步骤:
-
模型接受输入,作为预测的起点,这个输入就是所谓的【上下文】
-
模型内部有一个巨大的神经网络,它根据训练时见过的海量文本,计算出在当前上下文的前提下,下一个字或词的概率分布。以【今天天气】为例,假设概率为:
很 30% 不 20% 好 15% 其他 …… -
模型会从这个概率分布中,根据策略挑选一个结果
-
循环重复,直到生成完整的句子
总结:模型通过大量文本数据学习。比如,它看到过无数次“今天天气很好”,就会记住“今天天气”后面接“很”的概率很高。训练时,模型调整内部参数(几十亿个权重),让预测的概率分布尽量接近真实语言的规律。
tips:上面提到的“字”其实就是token。
MTP Multi-Token Prediction
引入于DeepSeek-V3。相较于上面所说的传统的一个一个token预测的方式,MTP实现了类似同时预测多个字的效果。
预测的策略?
大语言模型通过不同的策略来控制输出的多样性和质量。温度、Top-k采样和Top-p采样是三种常见的调节方法,它们影响模型如何从概率分布中挑选下一个词或字。
温度
温度的公式是$P’(x)=\frac{\exp(\logit(x)/T)}{\sum\exp(\logit(x_i)/T)} $,用于调整概率分布的平滑度或者尖锐度。
- 假设T是温度值
- 时,保持原始概率分布不变
- 时,称作高温,此时概率分布变平滑,所有选项的概率差距变小
- 时,称作低温,此时分布变尖锐,高概率选项更突出
相应的,高温输出的内容更随机,也更具创意,适合生成多样化、有趣的内容(如写故事);低温输出的内容更保守,也更确定,适合需要准确性的场景(如技术回答)。
可以理解成分子热运动,温度越高,分子的活动更活跃。
Top-k采样
从概率分布中挑选前k个最高概率的词,然后只在这k个选项中随机采样。其他低概率的词直接被忽略。优点就是简单,缺点非常明显——死板。如果概率分布极度平坦(如10个词概率都在10%左右),k=5可能错过合理选项;如果分布极度尖锐(如一个词90%,其余1%),k=5又显得多余。
Top-p采样
Top-p采样不固定选择数量,而是根据累计概率阈值p(通常0到1之间)动态选择词。只要累计概率达到p,就停止添加更多选项,然后在这些词中采样。以【我是为例】,假设模型的预测概率如下:
人 | 50% |
---|---|
大帅哥 | 25% |
秦始皇 | 15% |
外星生物 | 5% |
假设p设定的是0.75,那么只会在【人】和【大帅哥】两个词中挑选答案;假设p设定的是0.95,那么秦始皇也会纳入考量范围。
总结:温度控制全局随机性,像调节“音量旋钮”;Top-k像从菜单里挑前k个菜,简单但死板;Top-p像按预算挑菜,灵活但需要调参。
组合使用
实际中,三种策略可以组合使用,比如:
- 先用低温(T=0.9)让分布更集中,再用Top-p(p=0.9)筛选核心词,最后采样输出。
- 或者用Top-k(k=50)限制范围,再用高温(T=1.2)增加随机性。
多模态 Multimodel
一个模型有着多模态,就意味着这个模型可以同时处理不同类型的数据,例如文本 + 图像 + 音频。
像 GPT-4o 就是一个明显的多模态模型,你可以让它识别出图片里的是啥。
但是,有一些模型,例如 DeepSeek r1,就没有多模态。
上下文
模型的“记忆”和“背景”,帮助模型理解和回答问题的必要条件。
注意力机制
注意力机制是 Transformer 架构的核心,它赋予模型高效处理上下文的能力。与传统模型逐词处理不同,它让每个 token 通过“自注意力”机制,同时关注句子中的所有其他 token,并根据相关性动态分配权重。
这就好比你在开会时听人发言:在需求评审会上,你会把注意力集中在产品经理的发言上,而不是一旁测试人员的闲聊;而在技术评审会上,你会更关注开发人员的方案,除非产品经理突然插话,与技术人员针对某个需求的实现争论起来。注意力机制就像这样一位“会议主持人”,动态筛选出关键信息,决定模型该聚焦哪里。
具体而言,在句子“今天天气很好”中:
- “天气”可能更多关注“今天”(时间背景),而非“很好”(形容词)。
- 计算过程会为每个 token 生成一个注意力分布,例如“天气”对“今天”的权重可能是 0.6,对“很好”是 0.3,对自身是 0.1。
正是这种机制,赋予了模型处理复杂上下文的能力。无论是理解句子的逻辑结构,还是捕捉远距离的词间关联。
过拟合 Overfitting
首先解释一下什么是拟合。拟合就像是给一堆散乱的数据点找一条合适的线(或者曲线、平面等),让这条线尽量贴近这些点,反映数据的趋势或规律。
想象你在地上撒了一堆小石子,想用一根绳子尽可能靠近所有石子。绳子的形状(直线、曲线)就是模型,把绳子摆得贴近石子就是“拟合”。如果绳子太僵硬,可能盖不住所有石子(欠拟合);如果太柔软,绕着每个石子转(过拟合),也不好。
定义:模型在训练数据上表现良好,但在未见过的数据(测试集)上表现不佳。
这里有个通俗易懂的理解:学生党刷题都去刷一个类型的题了,然后考试考了个新题型就全寄了。也就是说,模型只是学会了给它训练的数据里的问题,但是没有扩展的能力。在训练的过程中,必须避免过拟合的发生,毕竟 AI 很多时候是拿来解决现实生活中的问题的。
这也是人类很多情况下比 AI 强的原因。人类可以在复杂多变的环境中有着很好的反应能力,但是 AI 想要拥有这个还是比较难的。
预训练 Pre-training
在特定任务之前,通过大规模数据集训练模型,使其能够学习到通用的特征。
其实这个很好理解,在预训练阶段使用大量的未经审查的数据,从而让大模型对于所有的知识都有着一定的理解,让模型 “全知全能”。
后训练 Post-training
在预训练模型的基础上,进一步进行训练,目的是让模型更适应特定需求或提高质量。它可能包括微调、强化学习等具体方法。
这个也很好理解。假设说我们要训练一个生成代码的模型,我们就需要用大量这方面的数据集去让模型学会这个能力。后训练通常会使用大量的人工合成的数据来保证训练的高效。
监督微调 SFT
SFT就像一个有老师指导的学生。模型通过大量标注好的数据<输入,输出>
来学习规律,目标是让模型学会预测正确的输出。模型会把预测输出和实际输出作为参数,传到损失函数(交叉熵)里,评估自己的结果。进而调整自己,直到预测越来越准。
- 数据明确,训练效率高,但需要大量质量高的标注数据
- 适合明确定义的任务,无法处理没有复杂答案的复杂任务
强化学习 RL
强化学习的核心可以理解为【试错】。没有老师直接告诉答案,而是通过与环境的互动得到奖励或惩罚,逐渐学会如何行动才能获得最大回报。比如小孩学骑自行车,摔倒了知道疼——惩罚;骑远了会开心——奖励,慢慢自己摸索出平衡。
- 不依赖标注数据,适应性强。但设计困难,不良的设计会让模型“学歪”(比如小孩学骑车到最后学到翘头去了)。另外学得也慢
- 能解决动态、复杂的决策问题
DeepSeek R1是如何训练的
早期的版本DeepSeek-R1-Zero跳过了SFT,全部采用RL训练。这导致模型输出的可读性差,语言混杂,表达不稳定等原因。可以理解为一个数学天才不会握笔不会写字。
为了解决这个问题,DeepSeek R1在第一阶段引入了部分R1-Zero生成的,经人工修正后的“冷启动数据”做SFT。也就是多阶段后训练:
- SFT(冷启动数据):提升可读性和语言一致性,作为RL的起点
- 第一次RL:重复R1-Zero的GPRO训练,专注提升推理能力
- 第二次SFT:筛选高质量数据,提升通用能力
- 最终RL:再次用RL微调,基于更广泛的奖励信号对齐人类偏好
思维链 CoT
CoT 是一种提示策略或训练目标,鼓励模型在处理问题时展示中间推理步骤,而不是跳到最终结论。在DeepSeek R1的后训练中,CoT是一个重要特征,因为并没有明确教它使用CoT,但通过RL的奖励机制,模型在偶然间自发学会了逐步推理,形成了CoT行为。这也显著提高了大模型在逻辑和推理上的能力:
- 分解复杂性:把大问题拆成小问题,降低出错概率。
- 透明性:让用户看到推理过程,便于检查和理解。
- 提升准确性:研究表明(比如 2022 年 Google 的论文),CoT 在数学、逻辑和常识推理任务中显著提高大模型的表现。
混合专家模式 MoE
MoE,全程Mixture of Experts,是一种机器学习架构,核心思想是将复杂任务分解为多个子任务,由不同的 “专家” 模型分别处理,再通过 “门控机制” 整合结果,提升模型性能与效率。对比两种模式:
- 传统模型:一个全能员工(大模型)自己处理所有问题,又累又慢。
- MoE:一个前台(门控网络)接待你,然后根据问题类型(财务、IT、HR)分配给专业员工(专家),效率更高。
具体过程:
- 输入:x
- 门控网络分配各个专家的权重:
- 专家输出:
- 门控网络整合后的最终输出:
特点:
- 稀疏激活:不像传统模型激活所有参数,每次只需调用部分专家,节省计算资源提高利用率
- 扩展性:增加专家数量就能提升能力满足需求,无须重新设计整个大模型
- 复杂性:门控网络设计作为MoE架构的重点和核心,需要精心调优,设计难度大
蒸馏 Distillation
将一个较大的复杂模型(教师模型)训练的知识迁移到一个较小的模型(学生模型)。
这玩意的操作流程非常清楚。为了训练数据集的质量,用大的模型去生成一些数据,然后用这些数据去训练较小的模型。
比如deepseek会回答我是GPT,Gemini会回答我是文心一言,Grok又会回答我是deepseek。这些情况都是因为蒸馏,而非网上那些文盲说的“一开源就自研🤓”。这样训练可以节省很大的时间,方便快捷。
DeepSeek那些所谓的开源小模型,本质上就是用R1的数据蒸馏市面上其他的模型,比如阿里的qwen(市场有误解,厂商有误导)。真正的DeepSeek R1模型只有671b的那个版本。
量化
量化是将模型的权重(通常是32位浮点数,FP32,模型权重决定计算能力)压缩成低精度格式(如8位整数INT8或4位整数INT4)的技术,目的是减少内存占用和加速计算,同时尽量保持模型性能。
大模型动辄几十亿甚至上千亿参数,以FP32存储每个参数占4字节,671B参数的DeepSeek R1原始大小可能超过2TB,普通硬件根本跑不动。量化后:
- FP32 → INT8:内存减少4倍。
- FP32 → INT4:内存减少8倍。
此外,现代计算机对整数运算的硬件优化(如SIMD指令)还能进一步提升推理速度。例如,INT8量化后,一个50B参数的模型可能在单张GPU上运行,而FP32需要多卡分布式。
如何确保量化后的精度?
运用类似离散化的思路,利用范围缩放和偏移量,将一个浮点数表达的范围映射到整数上。
- 假设模型权重范围为
- 计算缩放因子:
- 转换:
- 比如
- 等所有计算结束后,反量化时除以缩放因子还原结果为Float。
这是最简单的均匀量化技术。但若权重分布不均匀(如存在离群值),可能导致精度损失,因为量化误差来自舍入和范围截断。更高级的技术包括分组量化(将权重分块分别量化)和混合精度量化(不同层采用不同精度),进一步优化性能和精度。
RAG
从外部数据库、文档或知识库中找出问题与问题相关的资料,大语言模型根据检索到的内容(利用余弦相似度找匹配)生成自然流畅的回答。
RAG的核心是将检索和生成两个步骤结合,流程如下:
- 检索相关上下文
- 一个专门的embedding模型将问题转成向量,在外部知识库中找最匹配的内容
- 知识库提前用embedding模型处理成向量形式。可以是文档、网页等数据,预先分块并转为向量(Excel的分块策略有问题,会导致串行,看了看网上的解决方案研究下转换成html形式行不行)
- 生成回答
- 将知识库中检索到的文本作为“增强上下文”,与用户的提问相结合,喂给生成模型。
纯生成模型偶尔会产生幻觉,也就是胡编乱造,RAG能部分解决这方面的问题。至于为什么会有幻觉,原因就在第一个概念中。模型的回答是统计和概率驱动的,但是并没有事实校验机制,所以就会生成一些看似合理但实际错误的内容,例如“秦始皇发明了点灯泡”。
Transformers库
Transformers 是 Hugging Face 开发的一个 Python 库,最初专注于 NLP,后来扩展到多模态任务(如图像、语音)。它就像一个“模型超市”,提供了上千种预训练模型(比如 BERT、GPT、T5、DeepSeek 等)的代码、权重和工具,让你能快速加载、训练或部署。
vLLM
vLLM 是一个专门为大语言模型(LLM)设计的开源推理和部署工具,由加州大学伯克利的研究团队开发。它的目标是让 LLM(比如 DeepSeek、LLaMA)跑得更快、更高效,尤其是在需要处理大量请求的场景下,比如实时聊天机器人或批量生成文本。
总结:
- 训练、微调:用 Transformers。
- 部署:可以用 Transformers,但更推荐 vLLM,因为 vLLM 更快、更省资源。
模型评估指标
-
困惑度(Perplexity):衡量语言模型预测下一个 token 的不确定性,越低越好。
-
BLEU/ROUGE:评估生成文本与参考答案的相似性,常用于翻译或摘要任务。
-
人类评估:最直观但成本高。
-
相关竞赛得分:比如数学推理或者代码生成,在一些具体的竞赛上(如在线算法竞赛平台codeforces)有可与真人对比的得分。
题外话 个人如何挑选合适的AI
首先是web端:
- 日常对话/联网搜索:马斯克X的Grok3和Google的Gemini 2.0 Flash。Grok3个人使用体验不错,目前也是免费使用,但毕竟是新出的东西有待观察。
- 写代码:Claude3.7最好。这玩意要钱,可以找找公益站。deepseekr1也不错。千问这两天也出了个他的推理模型,到时候可以去试试。
api:
- Google 2.0 Flash,这东西的免费额度对于个人开发来说就是永久免费。
- DeepSeek,现在api服务起码能用,至于速度还是卡的要命,和1.24我刚买的那时候没法比。
- 可以去论坛拼车Claude3.7的api,差不多30一个月,Claude写代码是最优秀的。
- 去linux.do,v2ex上白嫖一些硅基流动的key。有了硅基流动的余额,国内的大模型闭着眼睛选。
- 客户端只需选择cherry studio就行,最好用的客户端。