AI 如何运作(LLM 的完全非技术性解释)

这个世界的一个秘密是,大多数伟大的想法并没有那么复杂。如果解释得当,你会发现,即使是看似难以理解的事物(例如人工智能)也遵循几乎任何人都能理解的简单原理。
最近关于人工智能的讨论很多——它的影响、引发的伦理困境、采用的利弊——但我的非技术朋友们的讨论很少涉及这些东西是如何工作的。从外部看,这些概念似乎令人生畏,理解大型语言模型(LLMs)的运作方式看似难以攀越。但事实并非如此。任何人都可以理解。这是因为推动人工智能激增的基本原理相当简单。
多年来,我在运营Anchor、领导Spotify有声书以及编写我的订阅时,不得不找到方法将复杂的技术概念简化给非技术听众。所以请耐心听我解释(不用任何技术词汇或数学公式)大型语言模型实际是如何工作的。为此,我将使用我们都熟悉的话题:食物。在这个类比中,”菜品”相当于单词,”餐点”相当于句子。让我们开始吧。
菜单
想象这样的情景:你在准备晚餐,但你需要再想出一个配菜。你准备的食物差一点儿就够了。所以我们需要再加一个组件到餐中。
但这说起来容易做起来难。我们选择的需要与餐点相配。如果餐点是咸的,我们的配菜也需要是咸的。如果已经有沙拉了,我们就不应该再做一个。如果餐点主要是淀粉类食物,也许我们想加入一个烤蔬菜。
如果有一个应用程序能直接告诉你做什么就好了吧?一个考虑到你已经在做的东西并提出最佳配菜的应用程序?这个应用应该适用于任何餐点,无论是搭配任何组合的菜肴和风味,无论是供四个人还是40个人食用。

所有插图由作者绘制。图片由ChatGPT生成。
我们将要开发这个应用程序。它只需要两个简单的步骤。
首先,我们将让它开发一种对食物进行分类的方法。毕竟,计算机没有味蕾,也没有对食物或味道如何搭配的直观理解。它们需要能够将食物这一新概念转化为某种形式的数据。
其次,我们将让应用学习如何取一个现有的菜肴集合并输出新的菜肴。它不仅仅是记住之前见过的东西。请记住,这个应用需要适用于任何组合的菜肴,即使是它之前从未见过的搭配。所以我们不仅仅是编程系统。我们将教它。
第一步:建模餐点
我们将从教计算机将餐点视为数据开始。我们不会通过提供有关餐点的定性细节,如它的味道或它与什么搭配。那是旧式的机器学习——太有限且容易出错。相反,我们将向它提供大量有关人们过去如何搭配各种菜肴的数据。
让我们考虑两种类型的菜肴:凯撒沙拉和卡普里沙拉。我们作为人类知道这两道菜是相似的。它们都是意大利菜,都是沙拉,都包含蔬菜和奶酪……但机器不需要知道以上任何信息就能学习这两道菜有多相似。

在我们庞大的数据中,凯撒沙拉通常与其他意大利菜肴搭配的可能性很高。同样,如果餐中有凯撒沙拉,那么通常不会再有其他沙拉。卡普里沙拉也是如此,它通常不会与其他沙拉一起出现,但会与意大利菜一起出现。
因为这两种菜肴经常与同类型的菜肴共同出现,我们可以将它们归类为相似。它们倾向于出现在相同的食物模式中。你可以说“一道菜的特点由它所处的环境决定。”

请注意,我们没有寻找凯撒沙拉和卡普里沙拉同时出现的任何餐点。它们无需同时出现,我们就可以认为这些菜肴相似。它们只需出现在相同的其他菜肴中即可。
这里有另一种思考我们刚才所做的事情的方式。想象一下,如果我们想在这张图表上绘制所有的菜肴:

首先,我们把数据中找到的所有可能的菜肴随机排列了一下:

我们这里只展示了四道菜作为示例,但想象一下,几乎每一种可能的菜肴都包括在内。
每当我们发现两种食物在其他菜肴中共同出现时,我们就可以把它们放得更近一些。比如我们看到不同种类的寿司和同一种味增汤搭配,我们就会把寿司彼此靠近一些。当我们看到比萨和意大利面伴随着蒜香面包出现时,我们也会让它们靠近。

经过多次(我是说非常多次)这样做之后,会发生一些神奇的事情。可以互换的菜肴会非常靠近地聚集在一起。有些程度上可以互换的菜肴(比如说,墨西哥玉米卷和墨西哥卷饼)会彼此更靠近一些。而很少或根本不可互换的菜肴(比如说,汉堡和寿司)则会被放得很远。

现在,实际操作中,两个维度是不够的。为了真正合理地对每个菜肴进行分类,我们需要一个包含更多轴线(可能是数百个,甚至数千个)的图表。这是无法直观显示的,但基本概念是相同的。我们将所有食物散布出来,当它们与类似的菜肴共同出现时,就把它们彼此靠近。
作为一种简称,我将这个更大的多轴图称为“餐饮空间”。每一种可能的菜肴都存在于餐饮空间中,在与可互换的菜肴接近的坐标上,与那些差异很大的菜肴则相隔甚远。
让我们退后一步,欣赏一下这是多么令人着迷。我们能够提出一个非常准确的菜肴模型,其中相似的菜肴被聚集在一起,不同的菜肴则相距遥远。而且我们做到了这一点,却没有考虑食物的味道或它们是由什么制成的。
此外,因为我们在如此多的数据上进行了训练,我们能够进行食物算术。
食物算术?“Nir,你疯了!”
我向你保证,我没有疯。你必须相信我的话,但事实证明,我们的餐饮空间中菜肴的放置并不是随机的。事实上,不仅相似的餐点被放在一起,它们还与其他食物共享逻辑关系。包含面包的菜肴都出现在同一个平面上。咸味食物在一条共同的线上。枫香味的东西有它们自己的数学联系。
这使我们能够进行食物算术。如果我取一个墨西哥卷饼的坐标,减去一个玉米饼的坐标,我会最终接近一个墨西哥碗饭的点。如果我取一个鸡肉面条汤的坐标,减去面条的坐标,再加上米饭的坐标,我会最终接近一个鸡肉米饭汤的点。

餐桌上的菜品摆放已不再是随机的。事实上,存在一些隐藏的数学模式,意味着每种食物的放置都有其逻辑性,与其他食物相对应。
第二步:寻找模式
我们已经创建了一个“餐饮空间”,并为每种菜品分配了一些合理的坐标,使其相对于其他菜品有意义。接下来呢?
那么,我们再次训练我们的模型。但这次,我们将输入完整的餐点,由各个组成菜品构成——我们谈论的是我们见过的每一顿餐——我们将要求它找出模式。具体来说,我们想训练我们的程序回答这个问题:如果一顿餐包含了A、B、C和一个未知的D,那么D最有可能是什么类型的菜?
为了做到这一点,我们所要做的就是询问:在“餐饮空间”中,A、B、C和未知的D看起来是什么样的?例如,假设我们看到许多餐点在这四个区域的图表中共享菜品。

我们现在可以概括并仅考虑餐饮空间中的坐标,忽略最初创造这些模式的原始食物。我们可以得出结论,如果一顿饭已经包含了这三个区域的菜肴,那么最佳的第四部分应该在最后一个区域找到。

记住:“一道菜由它所处的环境来定义。”因为我们的模型是训练来考虑食物及其关系的,而不是具体菜肴的成分和味道,所以它可以处理任何情境和任何风味组合,找出最佳的菜肴搭配。只要给出几个食物区域,它就需要找出下一道菜最可能属于哪个区域…
这让我们回到了最初的目标,现在已经完成了。我们想要构建一个应用程序,可以可靠地告诉我们哪些菜肴与其他一些菜肴搭配。我们确实做到了这一点。
用词汇代替食谱
要理解大型语言模型(LLMs),请将“餐点”概念替换为“句子”,将这些餐点中的“菜肴”概念替换为“词汇”。这样简单的替换,用相同的框架和方法,本质上就能让你理解基于文本的生成型AI工具是如何工作的。
第一步:训练一个模型,理解基于它们在相似语境中出现的频率,词汇之间的关系。“一个词由它所处的环境来定义。”向它输入大量人类编写的数据(当我说大量时,我基本上是指整个互联网),让它适当地调整词坐标。
输出不再称为“餐点空间”,而是称为“向量空间”。但原理是相同的。系统不知道任何词汇的意思(就像它不知道一道菜的味道一样)。它只理解这个词汇与向量空间中其他词汇的关系。
第二步:寻找模式。如果一个句子包含词汇A、B和C,接下来最可能出现的词汇是什么?如果它包含X和Y,它应该在向量空间的哪个区域寻找接下来的词汇?
在大型语言模型的案例中,它们实际上在做的只是所谓的“下一个词预测”(就像我们原来的比喻中的“下一道菜预测”)。例如,假设你用“告诉我你爱我”来提示一个LLM。它会尝试回答一个问题:接下来最可能跟随的词是什么?或者换一种说法:根据那句话中的词汇在向量空间的坐标,我在其他句子中看到了什么模式来确定我可以在哪里找到下一个词?
LLM找到的答案是“我”。确定了这一点,它会将“我”添加到你最初的提示末尾,并将整个内容重新输入到系统中。现在,接下来最可能出现的词是什么,“告诉我你爱我。我”之后?当然是“爱”!加上它,再次输入整个句子。接下来可能出现的是:“告诉我你爱我。我爱”…
你明白了吧。
当然,事情还有一些更细微的差别。涉及一些复杂的数学和复杂的计算。但基本原理真的和餐饮计划示例中的没有什么不同。
对我来说,这就是我们正在经历的AI现象如此引人入胜的原因。考虑到这项技术的变革性,它实际上并不复杂。一些简单的数学概念,大量的训练数据,加上一点点盐和胡椒,你基本上就构建了一台思考机器。
信息来源:Every