【NLP】国外新动态--LLM模型

一、说明

        NLP走势如何?这是关于在实践中使用大型语言模型(LLM)的系列文章中的一篇文章。在这里,我将介绍LLM,并介绍使用它们的3个级别。未来的文章将探讨LLM的实际方面,例如如何使用OpenAI的公共API,Hugging Face Transformers Python库,如何微调LLM,以及如何从头开始构建LLM。

二、什么是LLM?

        LLM大型语言模型的缩写,这是AI和机器学习的最新创新。随着 ChatGPT 的发布,这种强大的新型人工智能在 2022 年 11 月风靡一时。

        对于那些足够开明的人生活在人工智能嗡嗡声和技术新闻周期之外的世界,ChatGPT 是一个在名为 GPT-3 的 LLM 上运行的聊天界面(在撰写本文时现已升级到 GPT-3.5 或 GPT-4)。

        如果您使用过ChatGPT,很明显这不是AOL Instant Messenger的传统聊天机器人或信用卡的客户服务所能比拟的。

三、是什么让LLM“大”?

        当我听到“大型语言模型”一词时,我的第一个问题是,这与“常规”语言模型有何不同?

        语言模型比大型语言模型更通用。就像所有的正方形都是矩形,但不是所有的矩形都是正方形。所有LLM都是语言模型,但并非所有语言模型都是LLM

        

         大型语言模型是一种特殊类型的语言模型。 LLM是一种特殊类型的语言模型,但是是什么使它们与众不同呢?

        有 2 个关键属性将 LLM 与其他语言模型区分开来。一个是定量的,一个是定性的。

  1. 数量上讲,LLM的区别在于模型中使用的参数数量。目前的LLM有10-100亿个参数[1]。
  2. 从质量上讲,当语言模型变得“大”时,就会发生一些非凡的事情。它表现出所谓的涌现特性,例如零镜头学习[1]。这些属性似乎在语言模型达到足够大的规模时突然出现。

四、什么是零镜头学习(zero-shot learn)

        GPT-3(和其他LLM)的主要创新是它能够在各种情况下进行零镜头学习[2]。这意味着 ChatGPT 可以执行任务,即使它没有经过明确的训练来执行任务

        虽然这对我们高度进化的人类来说可能没什么大不了的,但这种零镜头学习能力与之前的机器学习范式形成了鲜明的对比。

        以前,模型需要根据其目标任务进行显式训练,以获得良好的性能。这可能需要 1k-1M 预标记的训练示例。

        例如,如果您希望计算机进行语言翻译、情感分析和识别语法错误。这些任务中的每一个都需要一个在大量标记示例上训练的专用模型。然而,现在,LLM可以在没有明确培训的情况下做所有这些事情

五、LLM如何工作?

        用于训练大多数最先进的LLM的核心任务是单词预测。换句话说,给定一个单词序列,下一个单词的概率分布是什么

        例如,给定序列“听你的____”,最有可能的下一个词可能是:心脏,肠道,身体,父母,奶奶等。这可能类似于下面显示的概率分布。

       有趣的是,这与过去训练许多(非大型)语言模型的方式相同(例如GPT-1)[3]。然而,出于某种原因,当语言模型超过一定大小(比如~10B参数)时,这些(紧急)能力,如零镜头学习,就会开始出现[1]。

        虽然没有明确的答案为什么会发生这种情况(目前只是猜测),但很明显,LLM是一项强大的技术,具有无数潜在的用例。

六、使用LLM的3个级别

        现在我们转向如何在实践中使用这项强大的技术。虽然有无数潜在的LLM用例,但在这里我将它们分为3个级别,按所需的技术知识和计算资源排序。我们从最容易获得的开始。

6.1 第 1 级:快速工程

        在实践中使用LLM的第一个层次是快速工程,我将其定义为开箱即用LLM的任何使用,即不更改任何模型参数。虽然许多有技术倾向的人似乎对快速工程的想法嗤之以鼻,但这是在实践中使用LLM(技术和经济上)的最容易获得的方法。

        进行快速工程有两种主要方法:简单方法和不太简单的方法

        简单的方法:ChatGPT(或其他方便的LLM UI) — 这种方法的主要优点是方便。像 ChatGPT 这样的工具提供了一种直观、免费和无代码的方式来使用 LLM(没有比这更容易的了)。

        然而,便利往往是有代价的。在这种情况下,这种方法有两个主要缺点首先是缺乏功能。例如,ChatGPT 不容易使用户能够自定义模型输入参数(例如温度或最大响应长度),这些参数是调制 LLM 输出的值。其次,与 ChatGPT UI 的交互不能轻易自动化,因此可以应用于大规模用例。

        虽然这些缺点对于某些用例来说可能是交易破坏者,但如果我们进一步采取及时的工程设计,两者都可以得到改善。

        不太容易的方法:直接与LLM互动 - 我们可以克服 ChatGPT 的一些缺点,通过编程接口直接与 LLM 交互。这可以通过公共API(例如OpenAI的API)或在本地运行LLM(使用Transformers等库)。

        虽然这种进行快速工程的方式不太方便(因为它需要编程知识和潜在的API成本),但它提供了一种可定制,灵活且可扩展的方式来在实践中使用LLM。本系列的后续文章将讨论执行此类提示工程的付费和免费方法。

        尽管快速工程(如此处定义)可以处理大多数潜在的LLM应用程序,但依赖于通用模型,开箱即用可能会导致特定用例的性能欠佳。对于这些情况,我们可以进入使用LLM的下一个级别。

6.2 第 2 级:模型微调

        使用LLM的第二个层次是模型微调,我将定义为采用现有的LLM,并通过更改至少1个(内部)模型参数(即权重和偏差)来针对特定用例对其进行调整。在这个类别中,我还将在这里将迁移学习归为一类,即使用现有LLM的某些部分来开发另一种模型。

        微调通常包括 2 个步骤。第 1 步:获得预先训练的 LLM。第 2 步:更新给定(通常为 1000 个)高质量标记示例的特定任务的模型参数。

        模型参数定义了LLM对输入文本的内部表示。因此,通过调整特定任务的这些参数,内部表示会针对微调任务进行优化(或者至少是这样的想法)。

        这是一种强大的模型开发方法,因为相对较少的示例和计算资源可以产生出色的模型性能

        然而,缺点是,它比快速工程需要更多的技术专长和计算资源。在以后的文章中,我将尝试通过回顾微调技术和分享示例 Python 代码来遏制这种缺点。

        虽然快速的工程和模型微调可以处理99%的LLM应用程序,但在某些情况下必须走得更远。

6.3 第3级:建立自己的LLM

        在实践中使用LLM的第三种也是最后一种方法是建立自己的LLM。在模型参数方面,这是您从头开始提出所有模型参数的地方。

        LLM主要是其训练数据的产物。因此,对于某些应用程序,可能需要为模型训练策划自定义的高质量文本语料库,例如,用于开发临床应用程序的医学研究语料库。

        这种方法的最大优点是您可以针对您的特定用例完全自定义LLM。这是最大的灵活性。然而,通常情况下,灵活性是以牺牲便利为代价的。

        由于LLM性能的关键是规模,因此从头开始构建LLM需要大量的计算资源和技术专长。换句话说,这不会是一个单独的周末项目,而是一个完整的团队,以7-8F的预算工作数月甚至数年。

        尽管如此,在本系列的后续文章中,我们将探讨从头开始开发LLM的流行技术。

七、结论

        虽然现在关于LLM的炒作绰绰有余,但它们是人工智能领域的强大创新。在这里,我提供了关于LLM是什么的入门知识,并构建了它们如何在实践中使用。本系列的下一篇文章将提供OpenAI的Python API的初学者指南,以帮助快速启动您的下一个LLM用例。

本文链接:https://my.lmcjl.com/post/18538.html

展开阅读全文

4 评论

留下您的评论.