AI律师助手:律师实务ChatGPT实战指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 背后的技术:理解ChatGPT的工作原理

2.1.1 基础技术解析

本节将从律师熟悉的自然法切入,逐步引导读者理解ChatGPT的内部工作原理。

注意:虽然在解释过程中偶尔会用代码来计算精确值,但代码本身不是本章的重点。对于代码不感兴趣的读者,可以忽略编程细节,这不会影响对主要内容的理解。

1.法律:从大自然到自然法

自然法的概念源于古代哲学和法律理论,认为法律的根基在于自然界的规律和人类的本质。这种思想认为,所有的法律和社会规范都应该反映自然界的基本原则。比如,经典的法学论著《法学阶梯》就将自然法与罗马法融合起来,并根据自然法的思想重新构建了罗马法。而对20世纪战争的反思促进了自然法的再次复兴,最终促进了《世界人权宣言》的诞生。

自然法理论认为,有些权利和原则是自然赋予的。例如,生存、自由和追求幸福被认为是自然法赋予每个人的基本权利。这些原则反映了自然界的某些基本真理,如生物的生存和繁衍。在自然演变过程中,人类形成了许多生存和社会互动的基本原则。例如,种群繁衍行为启发了人类对家庭和社会结构的理解,并最终导致了婚姻制度的建立,婚姻制度及抚养关系又产生了一系列相关的法律和社会规范,如《中华人民共和国婚姻法》和《中华人民共和国未成年人保护法》等。

当前法律的制定和解释经常参考自然法的原则。比如,在讨论人权、公正和道德时,自然法提供了一个重要的视角。这种当前法律与自然法的对话体现了人类社会对自然界规律的理解和尊重。

如何把自然界中的规则借鉴用于法律上呢?这其实涉及更底层的关于语言(符号)本身的一些思考,接下来我们就需要引入符号学的概念。

2.符号学:概念类比

符号学是研究符号及其在人类交流中作用的学科。符号不仅是文字和语言,也包括我们用来表达和理解世界的一切符号系统。这些符号系统使我们能够将复杂的概念分解成更易理解的部分。例如,法律文本使用特定的术语和结构来传达复杂的法律概念。

人类经常使用类比和隐喻来理解新的或复杂的概念。例如,将时间比作流水是一种结构类比,它帮助我们理解时间的连续性和不可逆性;将商业营销活动比作战役(广告是空中轰炸,供货是地面推进)则是一种深层隐喻,它揭示了商业营销策略的复杂性和竞争性。这种类比和隐喻的使用是人类认知的基本特征,它使我们能够将未知联系到已知,从而理解新的概念。

我们自然而然地会从熟悉的事物入手(比如自然界的一些自然规则),通过类比来创造新的、模式化的东西(比如自然法)。从自然规则到自然法的类比如图2-1所示。

图2-1 从自然规则到自然法的类比

再深入一下,类比正是我们理解一个陌生符号(词)意义的方法。

后结构主义语言学强调语言和符号意义的相对性与构建性。在这个视角下,一个陌生词的意义不仅取决于它自身,还取决于它与其他已知词的关系。我们之所以知道什么是“西瓜”,是因为它与“苹果”“梨”和“衣服”等词之间有着特定的区别和联系。于是,我们常常不由自主地问出这样的问题:××和××的区别是什么?当这类问题脱口而出的时候,我们就可以洞察,我的大脑原来是这样理解事物的。

人脑中通过距离找的坐标,相关性越强,距离越近,如图2-2所示。计算机也可以进行类似的行为,接下来我们引入稠密词向量(Dense Word Vector),探究计算机是如何“理解”不同概念的。

3.从概念类比到稠密词向量

(1)语料库

假设我们有一个简单的语料库,包含四个关于香味描述的句子,如表2-1所示。

图2-2 通过距离找到新词坐标

表2-1 关于香味描述的超简单语料库

(2)共现矩阵

我们可以统计出词之间的共现矩阵,如图2-3所示。

图2-3 共现矩阵

通过代码清单2-1,我们可以计算出词向量。

代码清单2-1 使用奇异值分解[1]提取词向量的Python代码

输出结果如下。

(3)勾股定理与余弦相似度

因为词料库过于简单,导致几种水果的词向量非常接近,为了解决这一问题,下面通过代码清单2-2将苹果和柠檬的词向量在二维矩阵上清晰地绘制出来(请忽略草莓的直线,由于数据量问题,草莓没有与别的水果共现,所以未显示),如图2-4所示。

代码清单2-2 绘制二维矩阵的Python代码

根据勾股定理(边长2=苹果向量2+柠檬向量2),通过代码清单2-3就可以计算出苹果和柠檬两向量间的边长为1.154 700 538 379 251 5。所谓的边长即欧几里得距离,体现了苹果与柠檬的相关性。

代码清单2-3 通过余弦定理计算欧几里得距离(边长)的Python代码

图2-4 勾股定理计算向量间边长

通过上面的非常简单的例子,我们能更好地明白其中的概念。在实际情况下,我们通常计算余弦相似度。通过代码清单2-4可以计算出苹果向量与其他四种水果向量的余弦相似度,如表2-2所示。

代码清单2-4 计算余弦相似度的Python代码

表2-2 苹果向量与其他四种水果向量的余弦相似度[2]

本例只是比较苹果在单个维度上(香味)与其他几种物品的相似度,但是从生活中的常识可以知道,水果除了香味,还有营养成分、口感、质量、体积、成熟季节、经济价值、文化符号等维度,这里就要引入稠密词向量的概念。

(4)稠密词向量

稠密词向量是自然语言处理中用于表示词汇语义的一种数学表达方式。具体来说,它是将词汇映射到一个高维(通常有几百维到几千维)的实数向量空间中,每个维度上的数值表示词汇的某种语义特征。这样每个词汇就由一个稠密的实数向量来表示,不同词汇之间的语义关系可以通过向量运算来体现。

与传统的一词一义(One-Hot)的表示方式不同,稠密词向量带有语义信息,可以反映词汇间的语义相似性。词义相近的词汇,其对应的词向量也比较接近,这样词向量可以应用到句法分析、语义分析等自然语言处理任务中。

而ChatGPT中的Transformer语言模型正是使用了稠密词向量技术。接下来介绍Transformer中稠密词向量技术的实现。

4.Transformer:从稠密词向量到“变压器”

具体来说,ChatGPT是基于Transformer机器学习模型构建的。Transformer由编码器和解码器组成。

在编码器中,采用了词嵌入层,就是将文本中的每个词汇映射为一个稠密词向量,这些词向量保留了词汇的语义信息。然后将这些词向量输入Transformer的自注意力机制中,以计算词向量之间的相关性,学习语义信息。之后输入前馈全连接层,进一步学习特征。这些都依赖稠密词向量提供的语义知识。

在解码器中,也有类似的词向量映射、自注意力等结构。编码器输出的语义信息通过注意力机制传递给解码器,指导解码器生成对输入文本的预测或理解。

在训练大量文本数据后,ChatGPT模型学会了将词汇映射到语义向量,并利用向量间的关系进行语义理解和生成。所以可以说,稠密词向量为ChatGPT提供了表示和学习语义信息的关键技术基础。它让ChatGPT可以对词汇间的语义关系进行建模,从而完成语言理解和对话任务。稠密词向量帮助ChatGPT“感知”了语言的语义空间。

于是,ChatGPT就可以开始生成文本了。

5.ChatGPT生成文本的底层过程

网上有一个笑话,说人的本质其实是复读机。某种意义上,这句话说得没错。有时候我们看到一个问题,而这个问题和我们之前看到的问题比较类似,那么我们通常会直接复用之前看到的问题的答案(或者根据情境简单改一改)来回答现在的问题。ChatGPT本质上也是个复读机。

当ChatGPT理解语言之后,其文本生成的过程就是一个搜索过程,它会根据预先设定的语料库去生成下一句话。具体来说,就是ChatGPT先把接收的语言转换成向量,然后从自己训练过程中接收的极其庞大的语料库所构成的向量空间中搜索匹配项,然后在匹配的向量空间中进一步向下扩展。

ChatGPT生成文本的本质就是计算下一个词的分布概率,如图2-5所示。首先,ChatGPT据上文判断可能的句式(注意力机制),比如根据上一句话,下一句话有三种生成方式,其中最可能生成的句子是什么。其次,判断如果采用这个句子,那么下一个词应该是什么。如此逐步迭代,直到生成整个文本。

图2-5 ChatGPT只是不断生成下一个词

回到技术上,总结一下,ChatGPT作为一款先进的自然语言处理工具,其核心技术基于一种深度学习架构Transformer实现。这一架构于2017年由谷歌的研究团队提出,迅速成了自然语言处理领域的革命性技术。

Transformer架构的核心是注意力机制,它使模型能够关注输入数据的不同部分以提高预测的准确性。在处理自然语言时,这意味着模型可以专注于句子中的关键词汇,忽略不相关的信息,从而更好地理解语言的上下文和含义。例如,在翻译任务中,注意力机制帮助模型关注源语言句子中与目标语言词汇直接相关的部分。

在生成文本时,ChatGPT通过预测下一个最可能的词来构建句子。这一过程基于之前的词汇和上下文,确保生成的文本连贯且符合语境。为了提高文本的多样性和创造性,模型还会考虑多种可能的词汇组合,并从中选择。