Lazy loaded image
什么是人工智能模型
字数 5066阅读时长 13 分钟
2023-12-4
2023-12-4
type
Post
status
Published
date
Dec 4, 2023
slug
summary
假设您想知道(正如伽利略在 1500 年代末所做的那样)从比萨斜塔每一层投下的炮弹需要多长时间才能落地。好吧,您可以在每种情况下进行测量并制作结果表格。或者你可以做理论科学的本质:建立一个模型,给出某种计算答案的程序,而不仅仅是测量和记住每个案例。
tags
推荐
AI工具
ChatGPT相关
AI教程
AI知识库
category
ChatGPT
icon
password
Files & media

什么是模型?

假设您想知道(正如伽利略在 1500 年代末所做的那样)从比萨斜塔每一层投下的炮弹需要多长时间才能落地。好吧,您可以在每种情况下进行测量并制作结果表格。或者你可以做理论科学的本质:建立一个模型,给出某种计算答案的程序,而不仅仅是测量和记住每个案例。
假设我们有(有点理想化的)炮弹从不同楼层落下所需时间的数据:
notion image
我们如何计算从没有明确数据的地板上掉下来需要多长时间?在这种特殊情况下,我们可以使用已知的物理定律来解决这个问题。但假设我们拥有的只是数据,而我们不知道管辖这些数据的基本法律是什么。然后我们可能会做出一个数学猜测,比如也许我们应该使用直线作为模型:
notion image
我们可以选择不同的直线。但这是平均最接近我们给出的数据的一个。从这条直线我们可以估算出任何楼层的跌落时间。
我们怎么知道在这里尝试使用直线?在某种程度上我们没有。这只是数学上简单的东西,而且我们已经习惯了这样一个事实:我们测量的大量数据结果与数学上简单的东西非常吻合。我们可以尝试一些数学上更复杂的东西——比如a + b x + c x 2——然后在这种情况下我们做得更好:
notion image
不过,事情也可能会变得很糟糕。就像这是我们可以用a + b / x + c sin( x )做的最好的事情:
notion image
值得理解的是,永远不存在“无模型模型”。您使用的任何模型都有一些特定的底层结构 - 然后是一组特定的“您可以转动的旋钮”(即您可以设置的参数)来适应您的数据。就 ChatGPT 而言,使用了大量此类“旋钮”——实际上,有 1750 亿个。
但值得注意的是,ChatGPT 的底层结构——“仅仅”有那么多参数——足以建立一个模型,“足够好”地计算下一个单词的概率,从而为我们提供合理的论文长度的文本片段。

类人任务模型

我们上面给出的例子涉及为数值数据建立一个模型,该模型本质上来自简单的物理学——几个世纪以来我们都知道“简单的数学适用”。但对于 ChatGPT,我们必须建立一个由人脑产生的人类语言文本模型。对于类似的事情,我们(至少现在)还没有“简单数学”之类的东西。那么它的模型会是什么样子呢?
在讨论语言之前,我们先讨论另一个类人任务:识别图像。作为一个简单的例子,让我们考虑数字图像(是的,这是一个经典的机器学习示例):
notion image
我们可以做的一件事是为每个数字获取一堆样本图像:
notion image
然后,为了查明作为输入给出的图像是否对应于特定数字,我们可以与我们拥有的样本进行显式的逐像素比较。但作为人类,我们似乎确实做得更好——因为我们仍然可以识别数字,即使它们是手写的,并且有各种修改和扭曲:
notion image
当我们为上面的数值数据创建模型时,我们能够获取给定的数值
x
,然后计算特定的
a
b的a + bx
。因此,如果我们将这里每个像素的灰度值视为某个变量
x i
,是否存在所有这些变量的某个函数——在评估时——告诉我们图像的数字是多少?事实证明,构造这样的函数是可能的。毫不奇怪,但它并不是特别简单。一个典型的例子可能涉及五十万次数学运算。
但最终的结果是,如果我们将图像的像素值集合输入到这个函数中,就会得到一个数字,指定我们拥有图像的哪个数字。稍后,我们将讨论如何构造这样的函数以及神经网络的思想。但现在让我们将该函数视为黑匣子,我们在其中输入手写数字的图像(作为像素值数组),然后得到这些对应的数字:
notion image
但这里到底发生了什么?假设我们逐渐模糊一个数字。有一段时间我们的函数仍然“识别”它,这里是“2”。但很快它就“失去了它”,并开始给出“错误”的结果:
notion image
但为什么我们说这是“错误”的结果呢?在这种情况下,我们知道我们通过模糊“2”获得了所有图像。但如果我们的目标是建立一个人类在识别图像方面可以做什么的模型,那么真正要问的问题是,如果人类看到其中一张模糊图像而不知道它来自哪里,他会做什么。
如果我们从函数中得到的结果通常与人类所说的一致,那么我们就有了一个“好模型”。重要的科学事实是,对于这样的图像识别任务,我们现在基本上知道如何构建执行此操作的函数。
我们可以“从数学上证明”它们有效吗?嗯,不。因为要做到这一点,我们必须对人类所做的事情有一个数学理论。拍摄“2”图像并更改一些像素。我们可能会想象,只有几个像素“不合适”,我们仍然应该将图像视为“2”。但这应该走多远呢?这是人类视觉感知的问题。是的,对于蜜蜂或章鱼来说,答案无疑会有所不同,对于假定的外星人来说,答案也可能完全不同。

神经网络

好的,那么我们用于图像识别等任务的典型模型实际上是如何工作的呢?当前最流行且最成功的方法是使用神经网络。神经网络发明于 20 世纪 40 年代,其形式与今天的使用非常接近,可以被认为是大脑工作方式的简单理想化。
人脑中约有 1000 亿个神经元(神经细胞),每个神经元每秒能够产生高达一千次的电脉冲。神经元连接在一个复杂的网络中,每个神经元都有树状分支,使其能够将电信号传递给可能数以千计的其他神经元。粗略地估计,任何给定的神经元是否在给定时刻产生电脉冲取决于它从其他神经元接收到的脉冲——不同的连接贡献不同的“权重”。
当我们“看到图像”时,发生的情况是,当来自图像的光子落在我们眼睛后部的(“光感受器”)细胞上时,它们会在神经细胞中产生电信号。这些神经细胞与其他神经细胞相连,最终信号通过一系列神经元层。正是在这个过程中,我们“识别”了图像,最终“形成了我们正在“看到 2”的想法(也许最终会做一些类似大声说出“二”这个词的事情)。
上一节中的“黑盒”函数是此类神经网络的“数学化”版本。它恰好有 11 层(尽管只有 4 个“核心层”):
notion image
这个神经网络没有什么特别的“理论推导”;
它只是1998 年作为一项工程而构建的
东西,并且被发现可以工作。(当然,这与我们描述的通过生物进化过程产生的大脑没有太大不同。)
好的,但是像这样的神经网络如何“识别事物”呢?关键是吸引子的概念。想象一下我们有 1 和 2 的手写图像:
notion image
不知何故,我们希望所有 1 都“被一个地方吸引”,而所有 2 都“被另一个地方吸引”。或者,换句话说,如果图像在某种程度上“更接近 1 ”而不是 2,我们希望它最终位于“1 位”,反之亦然。
作为一个简单的类比,假设我们在平面上有某些位置,用点表示(在现实生活中它们可能是咖啡店的位置)。然后我们可能会想象,从飞机上的任何一点开始,我们总是希望到达最近的点(即我们总是去最近的咖啡店)。我们可以通过将平面划分为由理想化“分水岭”分隔的区域(“吸引子盆地”)来表示:
notion image
我们可以将其视为实现一种“识别任务”,其中我们不会做诸如识别给定图像“看起来最像”的数字之类的事情,而是我们只是非常直接地看到给定的点是什么点最接近。(我们在这里展示的“Voronoi 图”设置将 2D 欧几里得空间中的点分开;数字识别任务可以被认为是做一些非常相似的事情,但在由所有像素的灰度级形成的 784 维空间中每个图像。)
那么我们如何让神经网络“执行识别任务”呢?让我们考虑这个非常简单的情况:
notion image
我们的目标是获取与位置 { x , y } 相对应的“输入”,然后将其“识别”为最接近的三个点中的任意一个。或者,换句话说,我们希望神经网络计算 { x , y } 的函数,如下所示:
notion image
那么我们如何用神经网络来做到这一点呢?最终,神经网络是理想化“神经元”的连接集合(通常分层排列),一个简单的例子是:
notion image
每个“神经元”都被有效地设置为评估一个简单的数值函数。为了“使用”网络,我们只需在顶部输入数字(例如坐标xy ),然后让每一层上的神经元“评估它们的功能”并将结果通过网络向前馈送 - 最终产生最终结果在底部:
notion image
在传统的(受生物学启发的)设置中,每个神经元实际上都有一组来自前一层神经元的特定“传入连接”,每个连接都被分配了一定的“权重”(可以是正数或负数)。给定神经元的值是通过将“先前神经元”的值乘以其相应的权重来确定的,然后将它们相加并添加一个常数,最后应用“阈值”(或“激活”)函数。用数学术语来说,如果神经元有输入x = { x 1 , x 2 …}那么我们计算f [ wx + b ],其中权重w和常数b通常针对网络中的每个神经元选择不同;函数f通常是相同的。
计算_ _ x + b只是矩阵乘法和加法的问题。“激活函数” f引入了非线性(最终导致了不平凡的行为)。常用的激活函数有多种;这里我们只使用Ramp(或 ReLU):
notion image
对于我们希望神经网络执行的每项任务(或者,同等地,对于我们希望它评估的每个总体功能),我们将有不同的权重选择。(正如我们稍后将讨论的那样,这些权重通常是通过使用机器学习从我们想要的输出示例中“训练”神经网络来确定的。)
最终,每个神经网络都只对应于一些整体的数学函数——尽管写起来可能很混乱。对于上面的例子,它将是:
notion image
ChatGPT 的神经网络也对应于这样的数学函数,但实际上包含数十亿个术语。
但让我们回到单个神经元。以下是具有两个输入(表示坐标xy)的神经元可以使用各种权重和常数选择(以及Ramp作为激活函数)进行计算的函数示例:
notion image
但是上面更大的网络又如何呢?嗯,这是它的计算结果:
notion image
它不太“正确”,但它接近我们上面展示的“最近点”函数。
让我们看看其他一些神经网络会发生什么。在每种情况下,正如我们稍后将解释的,我们都使用机器学习来找到权重的最佳选择。然后我们在这里展示具有这些权重的神经网络的计算结果:
notion image
更大的网络通常能够更好地逼近我们想要的函数。在“每个吸引子盆地的中间”,我们通常会得到我们想要的答案。但在边界处——神经网络“很难做出决定”——事情可能会变得更加混乱。
通过这个简单的数学式“识别任务”,“正确答案”是什么就一目了然了。但在识别手写数字的问题上,就不太清楚了。如果有人把“2”写得很糟糕,看起来像“7”等怎么办?尽管如此,我们还是可以问神经网络如何区分数字——这给出了一个指示:
notion image
我们可以“用数学方式”说明网络是如何区分的吗?并不真地。它只是“做神经网络所做的事情”。但事实证明,这通常似乎与我们人类所做的区分相当一致。
让我们举一个更详细的例子。假设我们有猫和狗的图像。我们有一个经过训练来区分它们的神经网络。以下是它在一些示例中可能执行的操作:
notion image
现在更不清楚“正确答案”是什么。一只穿着猫服的狗怎么样?等等。无论输入什么,神经网络都会生成一个答案,并且以一种与人类可能的方式相当一致的方式。正如我上面所说,这不是我们可以“从第一原则推导出来”的事实。这只是根据经验被证明是正确的,至少在某些领域是这样。但这是神经网络有用的一个关键原因:它们以某种方式捕获了“类人”的做事方式。
给自己看一张猫的照片,并问“为什么那是一只猫?”。也许你会开始说“嗯,我看到它尖尖的耳朵等等。” 但要解释你如何将图像识别为猫并不容易。只是你的大脑以某种方式弄清楚了这一点。但对于大脑来说,(至少目前为止)还没有办法“进入内部”看看它是如何解决这个问题的。(人工)神经网络怎么样?嗯,当你展示一张猫的图片时,很容易看出每个“神经元”的作用。但即使是获得基本的可视化通常也是非常困难的。
在我们用于上述“最近点”问题的最终网络中,有 17 个神经元。在识别手写数字的网络中有2190个。在我们用来识别猫和狗的网络中有60,650个。通常来说,想象 60,650 维空间是相当困难的。但因为这是一个为处理图像而设置的网络,所以它的许多神经元层被组织成数组,就像它正在查看的像素数组一样。
如果我们拍摄一张典型的猫图像
notion image
那么我们可以通过派生图像的集合来表示第一层神经元的状态——其中许多图像我们可以很容易地解释为“没有背景的猫”或“猫的轮廓”之类的东西:
notion image
到了第 10 层,就更难解释正在发生的事情了:
notion image
但总的来说,我们可以说神经网络正在“挑选出某些特征”(也许尖耳朵就是其中之一),并使用这些特征来确定图像的内容。但这些特征是我们有名字的特征吗——比如“尖耳朵”?大多数情况下不是。
我们的大脑是否使用相似的功能?大多数情况下我们不知道。但值得注意的是,像我们在这里展示的那样,神经网络的前几层似乎挑选出了图像的各个方面(例如物体的边缘),这些方面似乎与我们知道的第一层挑选出的图像相似。大脑中的视觉处理。
但假设我们想要神经网络中的“猫识别理论”。我们可以说:“看,这个特定的网络做到了”——这立即让我们意识到它是“一个多么困难的问题”(例如,可能需要多少个神经元或层)。但至少到目前为止,我们还没有办法对网络正在做什么进行“叙述性描 述”。也许这是因为它确实在计算上是不可约的,并且除了显式跟踪每个步骤之外,没有通用的方法可以找到它的作用。或者也许只是我们还没有“弄清楚科学”,也没有找到让我们总结正在发生的事情的“自然法则”。
当我们讨论使用 ChatGPT 生成语言时,我们会遇到同样的问题。同样,目前还不清楚是否有方法可以“总结它正在做的事情”。但语言的丰富性和细节(以及我们的经验)可能会让我们比图像走得更远。
上一篇
ChatGPT是在做什么?为什么它有效(一)
下一篇
机器学习和神经网络的训练