“苹果这次降价了。”
这句话放在水果店的聊天里,你可能接着问,一斤多少钱;放在手机购买的讨论里,你可能接着问,哪个型号。
字没有换,接下去的话却变了。你能接住它,依靠的不只是认识“苹果”两个字,还包括前面正在谈什么、谁在说、这次准备做什么。认识一个符号,与在当次关系中用好这个符号,是相接的两件事。
大模型为什么也能顺着这些关系接话?我们可以从语言怎样成用,走到模型怎样计算。
人可以伸手指向一件东西,也可以借声音、文字、图形和其他符号,使别人沿着留下的痕迹再去找它。这些能够延伸指认的符号,承担了代指。人们反复使用、补充、纠正,使一些代指逐渐成为可以共同取用的资源。“苹果”能够被我们拿来接话,已经有这样的用法积累在前。
从这个角度说,语言是有限的公共代指的共指结果。公共,意味着这些代指可以被不同的人学习、取用和重新组合;有限,意味着每次表达只携带一部分差异,还要依靠相应条件补足;共指,则使不同的人能够沿表达返回相关对象、关系或差异,并校正落点。已有的共同用法让新表达有了起点,新的使用又会改变共同用法。
这里有一个解释大模型的重要条件:进入训练材料的文字,已经带着大量人们组织表达的痕迹。商品说明怎样限定对象,故事怎样交代人物,问题怎样引出回答,前面的定义怎样约束后面的用词,都留在文序之中。模型可以从这些关系开始学习,无须先替每个符号安排一份完整、固定的意义。
不过,文字进入模型,还要先取得可计算的形式。
分词器按一定方法把文本拆成片段,再映射为编号。这样的处理单位叫 token。片段可能是字、词的一部分、完整的词,或者其他符号组合;具体怎么拆,取决于分词方法和词表。分词器本身也可以经过训练来确定切分与词表,例如 SentencePiece 就把这一过程做成了可训练的工具。SentencePiece
在代指的解释里,可以把 token 叫作参与代指的计算单元。它让机器能重复识取、排列和处理这些片段。一个单元不必独立构成词汇,也不必独立指向一件东西;多个单元怎样接续,才逐渐显出可供人辨认的表达。本文谈“苹果”的用法,也不意味着它在所有分词器中都恰好是一个 token。
到了这里,要分开两个问题:怎样取得一套可处理的片段,怎样学会把片段组织成话。
以自回归语言模型为例,预训练的一项核心任务是根据前文预测下一个 token。训练将预测分布与材料中的实际后续比较,按损失调整参数。反复调整以后,模型逐渐学得哪些表达关系在什么条件下能够接续。有限片段的共享表示,也使已经学到的关系有机会用于训练中未见过的组合。神经概率语言模型早期的工作,就明确把分布式表示与这种泛化联系起来。神经概率语言模型
因此,用代指来解释训练,可以说:训练使机器逐渐取得将代指单元组织成人能够辨认、接续的词汇与表达的能力。这里形成的是模型组织表达的能力;人类词汇的既有用法、分词器的词表、语言模型的参数学习,分别承担不同环节。
“预测下一个”,说出了训练任务的形式。接下来还要解释:为什么这种预测能够利用如此丰富的关系?
先回到“苹果”。同一个符号进入不同位置,作用会变。模型为 token 提供向量形式的初始表示,再在网络运算中形成结合上下文的表示。固定模型中的同一个 token 编号,可以取得相同的初始入口;它在不同句子、不同位置所得的上下文表示,却可以不同。用上下文表示承接一词多用,已有明确的技术研究。上下文表示研究
关系还带有方向。“甲收购乙”与“乙收购甲”,用词相近,谁做了什么却换了位置。在因果语言模型中,一个位置能利用哪些前文,也受方向约束。注意力让不同位置按当前表示形成权重,取得其他可见位置的信息;多头提供不同的表示子空间,后续变换和层叠继续组合这些信息。Transformer 的计算结构
这样看,时变与非对称就有了具体落点:同一片段在不同上下文中的作用会变,材料更新与新一轮交流又会改变接续条件;不同位置之间的影响也不必互逆、等量。固定的编号提供复用入口,变化的关系参与当次接续。
分布式也可以从这里理解。一种用法可以由多个数值维度、参数和位置关系共同承载,不必集中放在一个写着“苹果的全部意义”的格子里。这里说的是表示和作用怎样分布;模型是否运行在多台机器上,是另一个工程问题。
再把时间拉长,便能看见异步。一篇文章写于此前,一份说明后来改版,一个问题此刻提出,模型输出又进入下一轮交流。材料的形成、训练和使用发生在不同时间,各处掌握的背景也不相同。模型处在这条跨时的文器接续链上。“异步”在这里描述材料与交流的接续条件;自回归逐步生成,不等于 Transformer 内部采用异步计算。
时变、非对称、异步、分布式,因此可以帮助我们追问:代指关系怎样在变化和局部可见之中取得可用的稳定?四个词分别需要落到材料、表示、连接和使用的具体位置。
多层网络使这个问题又向前走了一步。
前一层得到的,已经是经过关系组织的表示;后一层可以继续利用这些表示,形成进一步的组合。假设一段话先介绍苹果公司的两款手机,再比较价格,最后要求“把较便宜的那款写成一句推荐”。要接好这句话,需要把对象类别、两个型号、价格比较和最后的指代接在一起。一个可用的回答,承接的是这些条件共同限定的关系。
层叠为关系的进一步组合提供了计算条件。训练时,再依据预测损失沿计算链反向计算梯度,调整参与这些组合的参数,使有助于预测的关系组织方式逐渐形成。
用前面的话说,符号进入更具体的位置,候选用法受到更多约束。这可以帮助我们理解层叠的作用,但不是说神经网络第一层负责字、第二层负责词、第三层负责句;也不表示每多一层,解释就必然更准确。这里建立的是功能上的解释联系。
到了这里,“稳定”需要再拆开。动态响应稳定,与把一次落点当作静态不变量,是机制上的不同。前者要解释条件变化怎样进入、响应怎样调整、失配怎样返回;后者若把过去成立的落点当作以后始终成立的东西,就把这些工作省掉了。
继续看两款手机。此前的有效报价中,甲比乙便宜,回答推荐甲。后来配置未变,但有效的新报价使乙更便宜。任务仍是找出当前较便宜的那款,适当的回答就应转向乙。答案改变,恰好是在接续这次任务;始终回答甲,只能证明结果重复,不能证明代指关系仍然成用。
本文所说的动态响应稳定,落在这样的机制中:新的条件能够进入,相关表示和接续随之调整,失配能够显出,并在任务所需的时间和容差内得到处理。何种偏差可以接受、多久需要返回,也须随具体任务说明;任务自身改变时,验收条件同样可以重开。
固定的 token 编号或模型参数,可以参与这种动态响应。参数保持不变,仍可依据不同输入形成不同接续;关键在于变化能否进入有效的计算条件。一个部件固定,与整条指路在变化中持续可用,分别需要说明。
限定变换之下的不变量,仍然是有用的分析工具。这里要拆除的幻觉,是抹去它的成立条件,把局部保持当成对象永不改变、指路无须再维护的依据。不变量说明什么在指定变换下保持;它本身不提供发现新差、回传失配与重开判断的过程。
这也使“层数不保证稳定”有了更具体的解释。如果有效的新报价没有进入材料,或者摘要时删去了时间与型号,后续计算就可能继续围绕旧条件组织出流畅的回答。层叠增加了组合的计算条件,并不自动建立与当前对象重新接通的通道。
由此可以接到断指债务:必要的指路已经断开,应当补回、核对或修正的工作却没有返回可处理的位置,后续环节仍按原指有效继续使用。这些工作持续欠下,又可能随着转述、汇总和采用而扩大重建与修复的范围。
省略有其用途。所省仍有承接,未决之处明示,出现新差能够返回,便保留了继续成用的条件。只有当所余被遗忘、抹去或封住返路,需要处理的差持续失承,才由余成欠、积欠成债。一次答错,或一个已经登记并有人处理的未决项,都不足以单独说明已经积债。
例如,“甲目前更便宜”被省成“推荐甲”,其后又被多个环节转述。若报价、时间和比较条件已经无从返回,新价格出现以后,需要修订的就不只是一句话,还包括沿旧推荐形成的摘要、判断和后续使用。表达越整齐,越可能让人忽略这些尚未接回的关系。
处理这笔债务,需要恢复可核对的条件,将失配定位到输入、转换或采用的具体环节,再修订和重新验收。损失回传在这里指一条查找并修复失效位置的工作路径。神经网络训练中的反向传播负责计算参数调整所需的梯度;现实中的断指,还可能要求恢复材料、修改任务或重开验收口径。
多层网络因而要放回这条成用链中观察:它怎样利用可得条件组织关系,新差有没有机会进入,旧指失效后能否被修正。代指稳定性是对这些响应提出的要求;训练损失、网络层数和一次输出的一致性,各自只能回答其中一部分问题。
生成时,模型利用当前表示得到下一 token 的概率分布,选出一个单元;这个单元随后成为后续生成的条件,接续继续发生。学得的参数关系参与当次计算,当前材料又限定这一次怎样使用它们。提示中给出新名称、定义或例子,也可以改变当次接续,而不必立即重新训练模型。GPT-3 的研究已经展示了在不更新参数的情况下,通过文字提示和示例完成多种任务的能力。GPT-3 的上下文学习
大模型能够翻译、改写、问答和组织新文本,便可以沿这条路来理解:公共表达留下可学习的关系,训练把一部分关系落实为可复用的计算能力,当前输入使它们重新组合,输出再回到人能读取的文序之中。
这种输出又进入人的共指网络。用户补一句背景,指出一个误解,提供一项定义,都会改变下一轮可用的条件。模型因此可以承接一段指路,帮助人把分散材料重新组织到当前问题上。具体事情是否接成,仍要在相应使用中验收。
“苹果这次降价了。”
模型接着谈一斤多少钱,还是哪个型号,显示的并不只是它存了多少关于“苹果”的句子。我们可以观察,它怎样沿着眼前的条件,调用并组织已经学得的关系,使有限的符号在这一次重新接成话。