如今的人工智能系统能写文章、解释科学概念、生成代码、归纳文档,还能进行十分自然的对话。站在这轮浪潮中心的,是一类常被简称为GPT的语言模型。但GPT远不止是一个聊天机器人、一个搜索引擎,或是塞满预设回答的数据库。它在本质上是一个神经语言模型,接受训练的方式是处理一连串令牌,然后预测下一个令牌该是什么。
要真正理解GPT,不能只盯着它的对话界面。需要拆开来看的,是令牌化、变换器架构、预训练、参数、后训练,以及模型产出语言的统计过程。
“GPT”是生成式预训练变换器(Generative Pre-trained Transformer)的缩写。这三个词各自对应了系统里至关重要的一部分。“生成式”意味着模型能产出新的序列,比如文本、代码、结构化数据,或者其他基于令牌的输出。“预训练”指的是模型先在大量数据上学到通用模式,再针对特定任务或对话行为加以适配。“变换器”则点明了GPT所依托的那套神经网络架构。
变换器架构出自Vaswani等人在2017年发表的论文《Attention Is All You Need》。与过去那些严重依赖循环神经网络来处理序列的模型不同,变换器使用的是注意力机制,能更高效、更并行地提取序列中各个元素间的关系。
最早的GPT研究,就是把生成式预训练应用到这种基于变换器的语言模型上。核心理念十分直接:先用未标注的文本训练出一个通用模型,再把它适配到下游的语言任务上。这一套“大规模预训练+任务专属适配”的思路,成了后来自然语言处理领域的一大基石。
GPT无法直接“阅读”原始文本。在输入被处理之前,必须先把文本转换成更小的单元,也就是令牌。令牌不一定是一个完整的词,具体取决于分词器的设计。一个令牌可能是:一个完整单词、单词的一部分、标点符号、数字、某种空白模式,或者是一个字节、一段字符序列。举个例子,分词器可能用一个令牌表示“the”这样的高频词,却把“bioinformatics”这样不常见的专业术语拆分成好几个子词令牌。这背后的拆分逻辑,由分词器的词表和训练方法决定。
子词分词法之所以变得重要,是因为一个固定规模的词级词汇表不可能高效覆盖所有可能的用词、拼写变体、术语或者新造出来的表达。在神经语言处理领域,通常被称为BPE的字节对编码被引入并加以改造,用来把生僻词表示为若干更小的子词单元。一个简化的GPT处理管线大致是:用户文本先经过分词器,被转成令牌ID,再被映射为令牌嵌入向量,最后送进变换器进行处理。从外部看是一个对话应用,里面运转的本质上是一套对序列进行分解、编码和概率预测的数学过程。
热门跟贴