大模型学习条记-基于《Deep Dive into LLMs like ChatGPT》

打印 上一主题 下一主题

主题 890|帖子 890|积分 2670

模型是什么

从逻辑层面理解,模型雷同于函数。给定模型一个输入,它会产生一个输出。
比方,垃圾邮件辨认器就是一种模型。当输入一封电子邮件时,它会输出该邮件是否为垃圾邮件的判断效果。气候猜测同样是一个模型,输入历史气候数据,它会输出对明天气候情况的猜测。
这些都是模型的实例。当然,模型的输出存在一定的正确率,其效果可能与预期高度相符,也可能偏离较大。
构建数据集

对于大语言模型(LLM)的训练而言,首先必要构建基础数据,即收集人类知识。这一过程相称于使用爬虫程序抓取整个互联网的内容。在此,推荐使用数据集 fineweb:
HuggingFaceFW/fineweb · Datasets at Hugging Face
必要注意的是,抓取的网页数据必要举行清洗。我们期望 AI 学习的内容不包罗色情、暴力、种族歧视等有害信息,以及个人身份信息(PII)。
完成内容抓取后,我们会得到一个包罗大量信息的“大文档”。接下来必要对其举行 token 化处理。
Token 可翻译为语素,可理解为将自然语言拆分后的基本单位,便于计算机举行处理。必要明确的是,token 并不等同于单词。
对于英语,由于单词之间自然存在空格,便于分割成 token。但对于中文这种没有空格分隔的语言,正确切分则存在一定难度。比方,“我刚才吃了西瓜籽”就有多种切分方式。
以下展示了不同模型的切分情况:


  • deepseek - R1

  • qwen

不同的模型可能会使用不同的 tokenizer。可以通过 Tiktokenizer 快速查看一句话在不同模型下 token 化后的效果:
Tiktokenizer
Token 化之后,相称于将“大文档”切分成一个个 token。模型实际处理的是 token 化后的内容,而非原始的完整句子。
实际上,还必要举行 embedding 操纵,即将 token 映射到对应的向量空间,简单来说,就是将 token 转换为可用于计算的情势,至此便可以开始模型训练。不过,相干视频并未提及这一点。从整体理解的角度出发,在模型训练过程中,必要重点关注的是模型“看到”的是 token,而非完整的单词或句子。
预训练(Pre - train)

预训练通常是我们所理解的“训练”过程,这是整个训练流程中最耗费时间和算力的阶段,其目标是让模型学习互联网上的海量知识。
我们常常会看到在模型名称后面带有“7B”之类的描述,这表现该模型拥有 70 亿个参数。可以将模型想象成一台巨大的呆板,上面有 70 亿个调治旋钮,我们必要将每个旋钮调解到符合的位置,以得到最正确的输出效果。而调解这些参数的过程就是预训练。
以最简单的一元线性回归模型为例,这也是呆板学习的一种方式,通过这个过程可以直观感受模型训练的概念。然而,LLM 的模型结构远比线性回归模型复杂。可以通过以下链接查看可视化后的模型结构:
https://bbycroft.net/llm
因此,找到最符合的参数必要大量的算力和时间。
预训练的效果是得到一个基座模型(Base Model)。但这个基座模型距离我们一样平常使用的 ChatGPT 还有很大差距。当前的基座模型更像是一个复读机,它能够根据输入猜测后续的输出,但看起来并不智能,只是像背诵课文一样输出所学到的知识。
因此,必要对基座模型举行进一步训练,使其成为能够举行谈天对话的谈天呆板人。
后训练(Post - train,SFT - Supervised Fine - Tuning,有监视微调)

我们期望模型成为一个能够友好对话的谈天呆板人,使用平和友好的语气交换,更像是人类的助手,而非复读机。
为了实现这一目标,必要举行后训练,即 SFT。与预训练相比,后训练所使用的数据集规模较小,所需的算力和时间也相对较少。
作为对话的开源数据集,可以参考以下链接:
https://huggingface.co/datasets/OpenAssistant/oasst2/viewer/default/train?p=2&views[]=train
示例数据集如下所示:

必要注意的是,大模型常见的“幻觉”问题,即模型一本端庄地胡说八道,也可以通过 SFT 举行改善。当我们向大模型询问一个不存在的人物信息时,模型可能会随意编造内容。这是由于在预训练过程中,模型仅学习了已有的知识,对于不存在的信息,由于互联网上没有相干内容,模型并不知晓自己的知识范围,只能从已知知识中猜测回复。
而通过 SFT,可以让模型学会在遇到不知道的问题时,回答“我不知道”,这是预训练无法办理的问题。
强化学习(Reinforcement Learning)

经过后训练,我们已经得到了雷同 ChatGPT 的模型,但仍有进一步优化的空间。春节期间爆火的 DeepSeek 表现精彩,其秘诀在于强化学习(RL)。
我们可以将模型的学习过程类比为弟子学习数学或物理的过程。在学习时,讲义会先提供相干的配景知识,然后给出例题,展示办理问题的完整步调,最后会有大量的练习题,并附有答案息争题步调。
弟子首先学习配景知识,然后通过例题了解解题方法,接着通过做大量练习题,对照答案来检验自己对知识的理解程度,在这个过程中徐徐掌握解题思路。必要强调的是,这里的解题思路不同于解题步调,解题步调通常较为固定,而解题思路是每个人独特的思考方式,难以用言语清晰表达,每每是在大量练习中得到的“灵感”。
对应到 LLM 训练中,预训练相称于学习配景知识,模型会打仗大量内容并举行理解和记忆;后训练则雷同于例题,为模型提供完整的解题步调和思路,让模型按照特定格式举行学习。但此时模型尚未形成自己的解题思路。
对于一个问题到答案的办理思路有多种,人类提供给模型的是自己认为最符合的思路,但人类与模型存在较大差别,对人类而言最符合的思路未必适合模型。我们更希望模型能够找到自己最擅长的解题思路,从而提高答案的质量。
因此,通过向模型提供问题和答案,让模型自主探索,找到最适合自己的思路,这就是强化学习的过程。
哪种输出更好,该如何提示(Prompt)

假设给模型出一道数学题,并希望得到解题步调和答案,模型可能会有两种输出方式:
第一种是先给出答案,再给出解题步调;
第二种是先给出解题步调,再给出答案。
哪种输出方式更好呢?缘故原由是什么?
答案是第二种。由于第一种方式相称于模型要用一个 token 的计算力完成整个问题的解答;而第二种方式中,模型可以在前面的解题步调中徐徐思考,最后给出答案,能够利用更多 token 的计算力。显然,我们希望终极答案的计算能够使用更多的计算力,如许可以提高计算的正确性。
这也对应了提示工程(Prompt Engineering)中的思维链(CoT)方法,之前在学习提示工程时,只知道如许做效果更好,但不清楚原理,现在便明确了其中的缘由。
为什么模型数不清草莓(strawberry)中有几个 r?

对于模型而言,它“看”到的并非“strawberry”这个单词,而是一个 token,比方可能是“1289”如许的数字(实际上可能是 embedding 后的向量,但这一细节并不影响理解)。由于模型无法直接看到“strawberry”这个单词,以是它无法像人类一样轻松地数出其中“r”的个数。因此,我们应制止让模型实行这类任务。更好的方法是让模型编写代码来办理问题,然后运行代码得到效果,即让模型发挥其擅长编写代码的上风,借助编程语言的本领完成自身不擅长的任务。
为什么模型认为 9.11 大于 9.9?

与上述情况雷同,模型看到的不是“9.11”和“9.9”这两个具体数字,而是对应的 token,因此很难对它们举行巨细比较。同时,在相干视频中,Karpathy 先容了一个案例,研究团队对模型举行调试,观察模型回答该问题时的过程(哪些神经元被激活),效果发现与圣经内容相干。由于圣经有众多章节,如 1.1、1.2 等,在这种体系下,9.11 可理解为第九章第十一小节,自然在 9.9(第九章第九小节)之后,以是模型得出“大于”的结论也符合其内在逻辑。
同样,我们应制止让模型实行其不擅长的任务。
模型如何回答“你是谁?”

信赖许多人在与模型对话时都问过这个问题,得到的回答可能会令人惊艳。
比方,询问豆包(AI 编程助手)后,得到的答案是:
“我是豆包编程助手,是一个对编程和呆板学习等领域有很强专业性的智能助手。我可以为你解答编程、呆板学习相干的技术问题,好比编程语言的使用、算法设计、模型训练等,还能提供代码示例、项目思路等方面的资助。如果你有相干需求,随时都能问我。”
这看似神奇,但很有可能是在 SFT 过程中添加了如许的对话内容,或者在提示信息中已经硬编码了雷同内容。
实际上,这个回答可能是人工编写的,模型只是像复读机一样根据问题输出预先设定的内容。目前来看,模型尚未像科幻电影中那样真正拥有“智能”,但这一天或许很快就会到来。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表