课程链接: 课程笔记本
本节内容主要是讲述大语言模型是什么、大语言模型的发展过程、现在常用的大语言模型
第一节课比较偏概念, 我的笔记以我自己的个人理解为主。
大语言模型的奠基之作: 2017年google发表Attention is All you need.这篇文章提出了transformer结构, 从此llm的发展就像雨后春笋.
一个重要的现象: 随着模型参数量的增大, 模型会出现一种类似于"自我思考自我联想"的“涌现能力”,这是不同于传统的NLP语言模型的, 类似于出现了自我意识的机器人一般, 可以借助所掌握的知识根据我们的需求生成答案(尽管答案很多时候根本是胡编乱造, 即大模型的幻觉)
Scaling Law: 在LLM预训练时, 科学家们发现了在大语言模型领域, 随着模型参数量的提升, 模型的性能显著增强, 远远超出人们的预料. 随着GPT o1的提出, llm的后训练和在线推理过程中, 也出现了Scaling Law的现象.
补充:然而在计算机视觉领域, 并没有随着参数量的显著增加而出现Scaling Law现象, 尽管目前一些zero-shot模型已经有了非常显著的提升, 比如SAM系列, 参数6.4亿, 但是也没有像大语言模型出现这种自我联想的能力, 我理解的原因是: 1. 图像相对于语言是一种更高level的信息, 语言本质上是对现实的采样 , 虽然图像也是对真实世界的采样, 但是不同的人、动物, 对于图像中提取的信息是不同的, 我们从图像中获取的信息都是根据一种强"先验"知识学习到的, 其他动物的理解也是基于它们的"先验"学习到的问题 2. 语言是一种人类或物种创造出来描述世界的, 本身会有一种强结构性, 更容易通过概率模型经过大量的学习根据前因后果进行预测(扯远了… 说一些自己的看法)
常用的大语言模型: GPT系列、LLama系列、Claude,国内的优秀模型则有Qwen系列、Deepseek系列、文心一言、智谱GLM等
涌现(Emergent ability)能力:
- 上下文学习:上下文学习能力是由 GPT-3 首次引入的。这种能力允许语言模型在提供自然语言指令或多个任务示例的情况下,通过理解上下文并生成相应输出的方式来执行任务,而无需额外的训练或参数更新。
- 指令遵循:通过使用自然语言描述的多任务数据进行微调,也就是所谓的 指令微调。LLM 被证明在使用指令形式化描述的未见过的任务上表现良好。这意味着 LLM 能够根据任务指令执行任务,而无需事先见过具体示例,展示了其强大的泛化能力。
- 逐步推理:小型语言模型通常难以解决涉及多个推理步骤的复杂任务,例如数学问题。然而,LLM 通过采用 思维链(CoT, Chain of Thought) 推理策略,利用包含中间推理步骤的提示机制来解决这些任务,从而得出最终答案。据推测,这种能力可能是通过对代码的训练获得的
RAG(Retrieval-Augmented Generation)我的理解是对llm生成的一个指导, 从而使LLM模型能够减少胡编乱造的输出(RAG的结构核心是输出一个好的Prompt, 指导模型输出结果). 这个思想我认为和AIGC中的控制Stable Diffusion输出的ControlNet是一个思路, 都是将基础模型作为一个大组件, 然后通过巧妙地设计对组件本不可控的输出进行一些规范指导, 让模型输出. 这里补充课程中的图方便理解
再补充一个ControlNet的图, 从组成角度上来说是不是有相似性的
可能会有人们认为RAG和对大模型的微调(Finetune)在输出结果上是相似的, 都是使LLM遵循使用者的指导从而输出. 然而两者在实现上有着本质的差异: 我的理解LLM的微调是直接对模型动手, 实质上是不可控的(可以想象我们自己train深度学习模型炼丹的过程), 而RAG的本质是如何使输入到LLM中的提示词使模型能取得更好的效果, 因为语言本身是结构性的, 这种调整就有一定的规律可循.
Langchain: 类似于开源框架, 方便搭建RAG应用, 使开发RAG应用变得模块化、且简化了很多操作.
大模型开发:是针对Prompt优化, 使得LLM可以输出更优质的结果
环境搭建:这部分课程里已经说的很明白了, 这里我想记录一下之前没有用过的github codespaces的一些知识
codespaces本质上是类似于提供了一个docker环境或者虚拟机, 是微软开发的针对github跑代码的, 这里很方便的一点是codespaces可以在网页里打开. 这样可以有一个什么都没设置的纯净环境然后再开发, 搭建环境就很方便.(附上我的配置结果, 桌面背景是background插件, 一搜就可以找到设置方案)
噢对了, github codespaces的免费额度是一个月60小时, 不用的时候记得关掉, 下图即为如何在vscode中关掉codespaces, 点那个小方块就好了