深入LLMs
Deep dive into LLMs like ChatGPT by Andrej Karpathy (TL;DR) | Anfal Mushtaq
预训练
Tokenization
Naural Network I/O
Open Base Models
预训练到Post-Training
SFT
Data Conversations
幻觉,Tool use和记忆
如何解决幻觉?
方法一:
- 提取一段训练数据。
- 使用 Llama 3 生成一个关于它的事实问题。
- 让 Llama 3 生成答案。
- 根据原始数据对答案进行评分。
- 如果不正确,则训练模型识别并拒绝不正确的答案。
方法二:
- 教会模型在不知道的时候使用工具。
<|im_start|>user<|im_sep|>Who is Orson Kovacs?<|im_end|>
<|im_start|>assistant<|im_sep|><SEARCH_START>Who is Orson Kovacs?<SEARCH_END><|im_end|>
[...search results...]
<|im_start|>assistant<|im_sep|>Orson Kovacs is ....<|im_end|>
模型会意识到在不了解一些事情的时候,应该查询而不是编造。
模型参数中存储着「模糊记忆」,那些记忆像是一个月前的事情;但是在上下文中的是「工作记忆」。这就是RAG为什么有效的原因。
自身的认知
模型会觉得自己是OpenAI。如何解决?
- 训练集中加入自身定义。
- 使用System Messages。
模型需要Tokens来思考
模型并不像人类一样推理。它们需要顺序地生成tokens,所以他们需要结构化地生成来正确思考。
所以模型最好能够step-by-step来推理。
为什么?
- 如果直接生成答案,那大概是猜的。
- 如果一步步生成,会更可靠。
- 将大问题分成小部分。
对于数学/逻辑任务,最好使用外部工具来生成,而非自己的推理。
强化学习
强化学习是如何做到的
从人类反馈中进行强化学习(RLHF)
在数学或者代码的地方,也就是可以验证的领域,LLMs可以自己给自己的表现打分。
但是对于无法验证的领域,我们需要人类参与进这个循环。
例如,对于「写一个关于鹈鹕的笑话」这个prompt,很难找到一种方法来自动判断笑话的质量。LLM 可以毫无问题地生成笑话,但无法大规模判断笑话的质量。
但是我们又不可能把人类的行为大规模地纳入这个过程。因此RLHF被提出。可以参考这篇论文Fine-Tuning Language Models from Human Preferences。
为了实现大规模的 RLHF,基本上需要训练一个单独的奖励模型,这个模型可以是一层Transformer,而不需要额外的层。可以利用人类来判断基于它的回答的排名,然后利用这个奖励模型来训练奖励模型,直到对结果感到满意为止。训练完成后,就可以使用奖励模型来判断 LLM 生成的大规模响应的质量。
- RLHF 的优点
- 可在无法验证的领域(如笑话写作或总结)中使用 RL。
- 通常可以通过减少幻觉和使回答更像人类来改进模型。
- 利用 「辨别-生成的区别」——人类发现评价一个答案比生成一个答案更容易。
- RLHF 的缺点
- 奖励模型只是对人类偏好的模拟,而不是真实的人类。这可能会产生误导。
- RL 可以与系统博弈,产生利用奖励模型弱点的对抗性示例。
- 举例说明: 经过 1,000 次更新后,模型的「关于鹈鹕的顶级笑话 」可能完全是无稽之谈(例如,“the the the the the the the”)。
- 这就是所谓的对抗式机器学习。由于有无数种方法可以与系统博弈,因此过滤掉不良响应并不简单。
- 为了防止这种情况,奖励模型训练的上限是几百次迭代——超过这个上限,模型就会开始过度优化,性能就会下降。
一些接下来的领域
- 多模态模型能力
- Agent-Based Model
- 普及并且无感的AI
- 与软件/计算机集成的AI
- 实时性
继续关注LLMs
- LM Arena → Benchmarking new language models.
- AI News → A newsletter covering AI research.
- X (Twitter) → Many researchers share updates here.
哪里可以找到LLMs
- 闭源模型Proprietary Models → OpenAI (GPT-4), Google (Gemini), Anthropic (Claude), etc.
- 开放权重模型Open-Weight Models → DeepSeek, Meta (Llama), etc. Try them via Together.ai.
- 当地运行的模型Run Locally → Use Ollama or LM Studio.
- 基础模型Base Models → Explore Hyperbolic.