当我第一次听到 LLM(大型语言模型)、Tokenization(分词)和 Self-Supervised Learning(自监督学习)这些术语时,感觉仿佛走进了 AI 界的神秘社团。现在,我竟然在写关于它们的文章。本文将回顾我学习 AI 工程的历程——从早期的语言模型到如今驱动 ChatGPT 和 Gemini 等应用的庞大 基座模型

语言模型:从概率预测到文本生成

语言模型 的历史可以追溯到 20 世纪 50 年代。最初,它们只是用来计算一个词在特定上下文中出现的概率。例如,给出句子“猫坐在 ___ 上”,模型会根据先前的训练数据预测空格中应该填入 “垫子” (mat)。这种方法被称为概率预测建模。

这种早期的语言模型主要专注于单一语言。但是,随着技术的发展,我们逐渐发现可以将语言模型用于生成文本。这便是生成式 AI 的开端。现在,我们拥有了能够理解和生成数十种语言的 多语言 巨头模型。

而模型处理一切信息的基础,便是 Token

Tokenization(分词):AI 文本的基石

Token 视为文本的组成部分——它可以是一个字符、一个词或一个词的一部分。 Tokenization(分词) 是模型将文本分解成这些组成部分,以便能够理解和处理它们的过程。对于 OpenAI 的模型来说,平均 Token 的长度约为一个单词的四分之三。

举个例子,句子 “The quick brown fox jumps over the lazy dog” 可能被分词为 [“The”, “quick”, “brown”, “fox”, “jumps”, “over”, “the”, “lazy”, “dog”]。更复杂的例子,如 “Unbelievable!”,可能被分词为 [“Un”, “believe”, “able”, “!”]。

每个模型都有一个词汇表,它基本上是模型已知的 Token 宇宙。更大的词汇表意味着模型可以理解更多类型的输入——但也意味着更高的复杂性。 比如,一个模型如果词汇表中包含大量的专业术语,那么它在处理相关领域的文本时,就会更加得心应手。 比如,医学相关的模型,它的词汇表肯定会包含大量的医学术语,这样它才能够更加准确的处理医学文本。

Masked Language Models (MLMs) vs. Autoregressive Language Models (ARLMs)

语言模型 主要有两种类型:Masked Language Models(MLMs,掩码语言模型)和 Autoregressive Language Models(ARLMs,自回归语言模型)。

  • Masked Language Models(MLMs,掩码语言模型):这些模型使用先前和下一个 Token 的上下文来预测序列中缺失的 Token。 它们非常适合理解文本,但不适合生成文本。 例如,BERT 就是一个典型的 MLM,擅长于文本分类、情感分析等任务。
  • Autoregressive Language Models(ARLMs,自回归语言模型):这些模型仅根据之前的 Token 预测序列中的下一个 Token。 我们使用这些模型进行文本生成——例如 GPT。 GPT 模型通过不断预测下一个词,从而生成连贯的文本。 比如,在生成 “The cat sat on the” 之后,模型会预测下一个词是 “mat”,从而生成完整的句子。

生成模型可以根据上下文和概率产生无限数量的输出,这非常棒。 但这也意味着有时它们会产生幻觉或偏离轨道。 这也是为什么我们需要不断改进模型,以减少幻觉的发生。 例如,通过引入 RAG(Retrieval-Augmented Generation)技术,让模型在生成文本之前,先从外部知识库中检索相关信息,从而提高生成文本的准确性和可靠性。

Self-Supervised Learning(自监督学习):无需标注的标签

如果你研究过机器学习,你就会知道标注数据是一件痛苦的事情。 它既慢又昂贵。 而且人类不想整天都在标记猫的照片。

这就是 Self-Supervised Learning(自监督学习) 发挥作用的地方。 这些模型不需要标记数据,而是通过使用输入的其他部分来预测输入的部分来训练自己。 无需外部标签。 这就像通过让孩子猜测睡前故事中缺失的单词来教他们说话。

例如,对于图像来说,模型可以被训练来预测图像的旋转角度,或者预测图像中被遮挡的部分。 对于文本来说,模型可以被训练来预测句子中被遮挡的词语,或者预测下一个句子。

这使得扩大训练数据集的规模成为可能,而无需花费数百万美元的人工成本。 这对于训练大型 语言模型 来说至关重要,因为需要大量的数据才能让模型学习到语言的规律。

LLMs:规模即王道

Large Language Models(LLMs,大型 语言模型)只是常规 语言模型 的放大版本——可以认为是更多的数据、更多的参数、更强大的功能。

  • GPT-1:1.17 亿个参数
  • GPT-2:15 亿个参数
  • GPT-3:1750 亿个参数
  • GPT-4:🤐(他们尚未告诉我们)

每个参数都是模型可以用来微调其预测的小旋钮。 更多参数 = 更多细微差别。 这也是为什么 GPT-3 能够生成比 GPT-1 更加流畅、自然、准确的文本。

参数的数量直接影响了模型的性能。更多的参数意味着模型可以学习到更加复杂的模式,从而提高其在各种任务上的表现。

Multimodal Models(多模态模型)和 Foundation Models(基座模型)

文本并不是终点。进入: Multimodal Models(多模态模型)——能够理解的不仅仅是文本,还有图像、音频等的 AI。

这里的早期突破之一是 CLIP,由 OpenAI 使用一种称为自然语言监督的 Self-Supervised Learning(自监督学习) 形式进行训练。 他们没有标记每个图像,而是使用了在互联网上找到的(图像,文本)对。 结果呢? 一个无需额外训练即可理解文本并将其与图像关联的模型。

需要注意的是:CLIP 不是生成模型——它是一个嵌入模型。 这意味着它将文本和图像转换为数学表示(嵌入)并进行比较。 通过这种方式,CLIP 能够判断图像和文本是否相关。 例如,给定一张猫的图片和一段描述 “一只可爱的猫咪”,CLIP 能够判断它们是相关的。

当我们训练一个可以跨许多任务进行泛化的模型时,我们称之为 Foundation Models(基座模型)。 这些不仅仅是只有一招的小马。 它们是通用的,可以通过正确的调整来适应几乎任何事情。 例如,GPT-3 可以用于文本生成、文本翻译、代码生成、问答等多种任务。

基座模型 的出现,极大地简化了 AI 应用的开发过程。 开发者只需要基于 基座模型 进行微调,就可以快速构建出各种各样的 AI 应用。

Prompt Engineering(提示工程)、RAG 和 Fine-Tuning(微调)

想要从你的 Foundation Models(基座模型) 获得更好的结果? 你有以下选择:

  • Prompt Engineering(提示工程):精心措辞的说明 + 示例 = 魔力。 通过巧妙的设计提示语,可以引导模型生成更加符合要求的文本。 例如,可以使用 “请用简洁明了的语言,解释一下什么是Prompt Engineering” 这样的提示语,来引导模型生成关于 Prompt Engineering 的解释。
  • RAG(Retrieval-Augmented Generation,检索增强生成):将模型连接到数据库,以便它可以提取相关事实。 这种方法可以提高生成文本的准确性和可靠性。 例如,可以将模型连接到维基百科,让模型在生成文本之前,先从维基百科中检索相关信息。
  • Fine-Tuning(微调):在较小的、专门的数据集(例如,产品描述、医疗笔记、游戏攻略等)上进一步训练模型。 这种方法可以使模型更加擅长于特定领域的任务。 例如,可以将一个通用的 语言模型 在医学数据集上进行 微调,使其更加擅长于处理医学文本。

这种灵活性是构建在这些模型之上的应用程序如此强大且快速的原因。 Prompt Engineering 、RAG 和 Fine-Tuning 都是提高模型性能的有效手段。 开发者可以根据具体的应用场景,选择合适的方法来优化模型。

AI Engineering:全栈智能

AI 工程是指你从玩模型到构建真实应用程序的过程。 它涉及三个核心层:

  • 应用层——用户界面、功能、用户看到的魔力。 例如,一个聊天机器人的用户界面,以及聊天机器人提供的各种功能。
  • 模型层——你在底层使用的 LLM 或 Foundation Models(基座模型)。 例如,GPT-3、GPT-4、LLaMA 等。
  • 基础设施层——GPU、API、存储和部署工具,以保持一切运行。 例如,云服务器、数据库、API 网关等。

如果你正在构建聊天机器人、推荐系统或搜索引擎之类的东西,你将接触到所有三个层。 AI 工程师需要具备全栈的技能,才能构建出优秀的 AI 应用。

结语:在实践中学习(以及 Google)

我进入 AI 工程的道路并非一帆风顺。 这是一个深夜 YouTube 兔子洞、开源代码实验以及向 ChatGPT 提出过多问题的混合体。 但现在,我明白了——我无法停止学习。

Foundation Models(基座模型) 改变了我们构建软件的方式。 AI 工程就是利用这种力量来构建比以往任何时候都更智能、更快、更个性化的应用程序。 通过不断学习和实践,我们可以更好地掌握 AI 技术,并将其应用于解决实际问题。

希望本文能够帮助读者了解 AI 工程的基本概念和技术,并激发大家对 AI 领域的兴趣。 无论是 Tokenization(分词)Self-Supervised Learning(自监督学习),还是 Prompt Engineering(提示工程),都需要我们不断学习和探索。

最后,我想强调的是,学习 AI 工程最好的方法就是实践。 尝试构建自己的 AI 应用,参与开源项目,阅读相关的论文和书籍,都是提高自己技能的有效途径。 记住,AI 领域的知识更新速度非常快,只有不断学习,才能跟上时代的步伐。