本文从基础定义、技术原理(预训练、后训练、强化学习)到实用技巧全面解析大语言模型(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独家福利

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

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐