深入理解LLM大语言模型,从入门到精通(建议收藏)
本文从基础定义、技术原理(预训练、后训练、强化学习)到实用技巧全面解析大语言模型(LLM)。预训练阶段通过互联网数据训练基础模型;后训练将模型转变为对话助手;强化学习优化输出质量。文章探讨幻觉问题、思维链等关键概念,并提供use code等实用技巧,帮助读者理解LLM工作原理和应用方法。
前排提示,文末有大模型AGI-CSDN独家资料包哦!
什么是 LLM 大语言模型?
如果问什么是大语言模型,看这个视频之前,我估计会一时语塞,大语言模型就是大语言模型。
看完 Andrej Karpathy 的 Deep Dive into LLMs like ChatGPT,会有更深的体会。
Andrej Karpathy
- OpenAI 的创始成员,2015年至2017年担任该团体的研究科学家。
- 2017年6月,他成为特斯拉人工智能总监。在特斯拉休假数月后,他宣布将于2022年7月离开公司。
- 2023年2月,卡帕斯宣布重返OpenAI。
什么是大语言模型?
Level1 第一种解释:
- 大语言模型是经过海量数据训练,通过预测的方式,理解你的意图,帮你完成任务。
Level2 更深一层解释:
- 训练:大语言模型所谓的训练,是有一套神经网络,输入是数据和参数,输出是下一个内容的预测。通过不断调整参数,来使得下一个内容的预测比较准。
- 整个训练会分为三个大的阶段:
- 预训练:预训练的主要特征是会拿互联网上的数据进行训练。预训练完之后,会得到一个基础模型,这个模型,具备了互联网上的知识。
- 后训练:后训练和预训练的主要区别是数据集的不同,预训练是拿互联网的数据,后训练是自己生成数据集。后训练得到的会变成可以遵循指令、进行对话的 “智能助手”。
- 强化学习:模型会生成多个回答,由人类或奖励模型打分,模型据此调整策略,使输出更符合人类偏好。这就是强化学习的核心。
Level3 更深一层:
- 大语言模型也会遇到一些问题,比如说:
- 幻觉的问题。产生与解决方案。
- 直接给出答案 和 先给分析过程,哪种好。
- use code 小技巧:不需要模型帮助预测,而是直接使用代码的方式解决问题。
- 思维过程为什么会如此冗长。
以下则是视频的一些笔记。感兴趣非常建议看下原视频。
一、预训练 pre-training
第一步:下载和预处理互联网的内容

- Common Crawl 网站:Common Crawl 是一个非营利组织,定期爬取整个互联网的公开网页,并免费向全世界开放这些数据。
- URL过滤:比如垃圾网站。
- 文本提取:比如只想要那些文字,爬虫得到的 HTML标签这些是不需要的。
- 语言过滤:所以对于某种模型来说,如果不擅长某种语言,那么可能就是在预训练时缺失了这部分语言的训练数据。
- ……
第二步:tokenization
想要把这些数据放到神经网络中进行训练,那么首先是怎么表示这些数据。当然可以用01表示,但这会导致序列变得很长,我们希望短一些,所以如下可以看到,57668 表示 你,53901 表示 好,这样数字不仅用01,可以用大一些,这样可以表示更多的内容。

什么是****token
像上述的把 “你好” 转换成 57668,53901,这个 57668 和 53901 就是 2 个 token。
第三步:neural network training 神经网络训练
上下文长度
当上述把文本转换成 token 列表之后,首先需要 take a window of tokens。其中 token 的长度可以是任意的。比如 GPT-5 就能接受 272,000 个 token 的长度。Gemini 则支持 100万的 token 长度。
神经网络的训练
对于某一个 window,就需要开始 预测 下一个token可能是什么。把这个 window of tokens 放入到神经网络中,输出就是下一个token的预测,比如说下一个token有很多种可能,就输出各种token和其中的概率。例如:

一开始,这个概率是比较随机的。但是有办法调整优化神经网络,使得输出正常的token的概率会变高一些。神经网络的训练就是不断循环这个过程,使得预测匹配训练数据的实际情况。
参数
例如如下模型的 Qwen-32B,Qwen-14B,这些 32B,14B就代表着模型参数的数量, B 即 Billion。


一开始这些参数是随机的,所以预测的输出也不准,但是随着不断的调整神经网络,这些参数也会被优化调整,最后达到一个比较准确的预测输出。
训练
这个装置就称为神经网络的 Transformer。这是一门科学,输入是 token 和很多参数,输出是下一个token的预测。不同的参数的设置,会导致有不同的下一个token的预测。

推理
比如说 “你好”,那么输入就是 “你好”的 token,然后预测下一个token输出,再把 “你好”和下一个token输出 再作为输入,从而继续预测到下一个token。这样不断循环。
所以整体流程是:一开始有了互联网的数据,就可以进行神经网络的训练,在训练之后,相关的参数就有一个比较好的优化,这样一个基础模型就产生了。以后我们再和模型交流,就不再是训练,而是进行推理了。
Base Model 基础模型
以上训练出来的是基础模型。基础模型是根据互联网上的数据进行训练,进行预测,但是其实我们更想要的话一个智能的助手,而不是一个 “网络搜索器”。
在基础模型上问问题,它是回答是基于互联网上搜索得来的结果。
这个模型的好处是学到了很多世界知识,并且把这些知识存储在了参数中。
总结
整个 预训练 的过程,其实就是基于互联网上的海量数据,对其进行 token 化,再结合众多的参数,放入到神经网络中进行训练,每训练完一轮后,即得到下一个 token 的预测。通过不断的调整参数,最后使得输出的token的预测是比较准确的。
这些参数相当于互联网知识的压缩,整个预训练得到的是一个基础模型,这个基础模型,更多的是具备了世界知识。
二、后训练 post-training
后训练的一个重要作用是:当我们问一个问题的时候,模型不是单单根据互联网上的已有的知识进行预测回答,而是真正的可以遵循指令、进行对话智能助手。
后训练的一个方式是,创建自己的对话集,而不是使用互联网上的数据,来训练神经网络。这些对话集包括了我们的问题和我们理想的回答。
对话集从哪里来
有专门的职业来做这个事情,给出对话,给出理想的回答。同时,也可以使用 LLM 来创建这些对话集。但一般来说是合成的。
幻觉问题
为什么会有幻觉
幻觉问题的来源一部分来源于后训练的数据集,我们给出的回答带有一些自信,肯定的语气。
这导致模型即使不知道,它也会模仿采用自信,肯定语气的风格,这就是所说的一本正经的胡说八道,一本正经的源于别的数据集自信的语气,胡说八道源于模型确实不知道。
解决方案
- 解决方案1:训练数据集可以给出一些样本,是模型不知道的,让模型可以回答不知道,而不是一本正经胡说八道。
- 进一步的问题:怎么知道模型知不知道某个事情?
-
根据经验。
-
多次询问模型,比较不同的输入答案,看每次回答的输出是否真的知道。
- 解决方案2:真不知道的时候,search the internet。
模型的边界问题
- Models need tokens to think。也就是说,模型直接给出答案,再给出分析,其实不一定好。因为直接给出答案很可能是根据互联网的记忆,根据训练集来匹配,而不是真正的计算分析。有时候和模型对话 “一步步分析”,就是强制模型先分析,再给答案,避免根据互联网记忆匹配。
- 为什么会根据互联网的记忆,因为先出答案,意味着要直接完成所有的计算,而计算量是有限的,无法马上计算出,所以直接“胡说八道”,或者找以前的记忆。
- use code。同样的,在神经网络单次计算中无法直接计算得出答案。但使用 use code 使用代码,所以能更准。所以可以在聊天的时候,涉及计算,最后可以加一句 “use code”。
===》所以,尽量使用中间过程和 use code 这两种方式,可以一定程度让模型更准。
总结
后训练和预训练相比,更多的是把训练数据集换了,从以前的互联网获取,改成自己生成(可以人为生成或者合成)。预训练产出 BASE model,后训练产出 SFT model。
三、强化学习 reinforcement learning
就像课本的练习题,有题目,最后有答案,但是没有解题过程。强化学习同样,模型会生成多个回答,由人类或奖励模型打分,模型据此调整策略,使输出更符合人类偏好。这就是强化学习的核心。
当尝试不同的解决过程中,模型能够知道哪些解题思路是可以顺利解决这个问题,然后调整模型的参数。
思维链(chains of thought)
模型正在学习创建非常长的解决方案。为什么会创建非常长的解决方案,因为模型正在不断的回溯,重构,从不同角度尝试很多不同的想法。这些就是模型的思维链,这也是为什么我们平常看到的思考过程这么冗长,但是答案也是比较准确的。
RL的重要性
如果一直是模仿人类,那最后是不能超过人类的,但RL强化学习可以,例如 alphao 的 move37。

CSDN独家福利
最后,感谢每一个认真阅读我文章的人,礼尚往来总是要有的,下面资料虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
更多推荐


所有评论(0)