【降维科普】冷冰冰的机器怎么就有智能了?浅析人工智能的原理与发展

2,085 阅读31分钟

前言

我正在参加「掘金·启航计划」

前段时间,要准备 AIGC 比赛,学习了一下人工智能的相关知识,浅浅了解了一点东西,总结并扩展了一下相关内容;文章中的大部分概念都用降维的例子来阐述,无论你是否了解人工智能,都能有所收获。

石器时代

计算机从 1945 年问世至今,核心诉求都是在处理数据。从第一台计算机 ENIAC 的电子管到现在的 云计算,数据处理从最初的手动生成纸质卡片到现在的自动化,数据处理的速度和质量都大幅提升了。但,它仍然不够“智能”

专家系统

现在假设你需要计算机帮助你解答一些实际问题

有一丢丢编程知识的你,可能会这么写

if (question === "如何解决低收入人群的收入问题") {
  return "低收入者应该把空闲房出租,私家车拉客增收入";
}
if (question === "如何解决产业工人空心化现象") {
  return "多鼓励年轻人进厂当工人少送外卖";
}
if (question === "如何解决老龄化社会,青壮年劳动力不足") {
  return "鼓励60岁以上初老群体再就业";
}
// 其他问题...

一连串的 if else,根据可能提出的不同问题,给出不同的答案。

但如果所有问题都这么写,代码就太多了,也不方便查阅和后期的维护。

于是,我们把所有问题与对应的答案,统统写入数据库。不知道数据库是啥也没关系,你可以简单理解把它为就是 excel,仅仅作为存储数据用,可以增删改查

将实际问题都存入数据库后,我们得到了下面这张表:

questionanswer
如何解决低收入人群的收入问题低收入者应该把空闲房出租,私家车拉客增收入
如何解决产业工人空心化现象多鼓励年轻人进厂当工人少送外卖
如何解决老龄化社会,青壮年劳动力不足鼓励 60 岁以上初老群体再就业
如何看待取消预售制坚决不能取消预售制,预售制有利于老百姓,帮群众省钱
国内家庭的平均资产有多少国内家庭平均总资产 300 万很正常,现在谁家没个 50 万现金呢
如何降低失业率征收失业税,没工作要交钱
如何解决环境污染问题农民不要使用收割机割麦子
如何改变大家不愿生孩子的现状适当惩罚不生孩子的年轻人
如何能持续赚外汇不能提高劳动者的工资,低工资是我们的优势
如何让经济快速发展中国人假期太多,影响经济发展,建议减少一半
如何能留下辉煌的历史让贫富差距越大越好
为什么房价一直居高不下房价高是因为老百姓手里钱太多了

现在我们有了能解决以上所有问题的表,如果遇到新的问题,我们的系统不知道如何回答时,只需要我们继续往表中再添加一条新的记录就可以了。

因此,理论上,如果我们的表或者说数据库足够大,是足以应对各种可能提出的问题的。

这套理论也就是上个世纪七十年代提出的《专家系统》的思路。

可惜的是《专家系统》最终毫不意外地失败了,原因也很简单;现实世界的问题太复杂,如果要它能解决现实世界的问题,我们需要先将现实世界的问题和规律总结出来,之后再教给计算机;光是总结一个现实世界的复杂问题或规律,就足够熬死一位科学家了(没有调侃的意思)

害怕.jpg

青铜时代

为了解决《专家系统》存在的问题,科学家们想了个办法,那就是将收集到的所有答案都提前告诉计算机,再让计算机根据提出的问题,自己去海量的数据中“挑选”答案。

那么问题来了,计算机应该怎么从这海量的数据中挑出那个正确答案呢?

类比我们人类,是如何学习的呢?小时候的你做错了事,妈妈赏了你最爱吃的大嘴巴子,即使心里不服,但是你隐约会觉得这件事好像是不对的。

pia

计算机也差不多,前面举例的 “专家系统” 如果选错了答案,也需要我们及时准确地给 “专家” 来一个大嘴巴子,告诉它正确答案是啥。

这样通过不断地尝试,不断地挨巴掌,最终找到了正确答案。这种处理方法就叫 机器学习,让机器通过“自我学习”的方法拥有智能。

机器学习

“机器学习”作为“人工智能”的一个子集,在上个世纪五十年代就出现了,时至今日,仍然是最主流的人工智能实现方式。

集合 (深度学习后面说)

在机器学习的过程中,“专家” 自己找答案,需要一次次反复地试错,这一不断尝试的过程就叫做 训练集,即计算机的回答与我们给出的反馈;“专家” 在处理正确答案的过程,被称为标记,也即我们给的那一巴掌;“专家” 根据问题去找正确答案的方式,就叫做预测函数;“专家” 挨了巴掌以后,掉的血条,计算血掉了多少的方法就叫做损失函数(doge);“专家”血条逐渐减少,越来越来逼近正确答案的过程,就是收敛

机器学习流程图

总结一下,机器学习就是在一堆标记的数据面前,设计一个正确的方法(预测函数)来寻找正确答案,并最终使用一个能收敛的数学方法(损失函数)来确定答案的过程。

数学逻辑

为了更好的说明,现在我们换个栗子 🌰

假设小曲工作了一年,现在每月能拿到 2000 块;小尼工作了两年,现在每月有 4000 块工资;小马工作了三年,现在每月工资 6000;小九工作了四年,每月工资是小尼的两倍 8000 块;小刘已经工作了五年,现在每月能拿到 10000 块钱。问:你工作了六年以后能拿到多少钱?

这要是道小学题目,我们设工作年份为 x,设直线方程为 y = wx + b,很自然地我们能列出以下的等式:

2000x = y

投射到坐标轴上,如下图

工资

横坐标是工龄,纵坐标是月薪,可以轻松得出,工作六年后月薪为 12000

然而机器并不知道 x 前面的值是 2000,也不知道 b 为 0,它只能不断地尝试,x 取 1000、b 取 300,x 取 600,b 取 10,直到 x 取到 2000、b 取到 0,才找到了这条线

当然机器也不是在那瞎猜,它猜也是有技巧地猜,那就是靠 误差。在猜的过程中,努力让每一个点和实际数值的差距越来越小,也就越接近真实值

误差

上图的灰色点线部分即 y 轴方向上的误差,于是我们可以计算出已有数据的误差

第一年:2000 - (1w + b) 第二年:4000 - (2w + b) 第三年:6000 - (3w + b) 第四年:8000 - (4w + b) 第五年:10000 - (5w + b)

现在机器要做的就是让这五组数据加起来的数值最小,如果预测的值大于真实数据还会存在负数的情况,因此这里还需要对数据取正,一般为了便于计算,通常直接平方,于是,我们就得到了 平方差

(2000 - (1w + b))² + (4000 - (2w + b))² + (6000 - (3w + b))² + (8000 - (4w + b))² + (10000 - (5w + b))²

这个函数通常也被称作 损失函数,我们再简化一下式子 55w² + 55b² + 55wb - 22000w - 11000b + 900000,就得到了一个二元二次方程,现在要做的就是求这个方程的最小值(不展开了,有兴趣自己去算吧 doge)

上述这个例子还是个相对简单的例子,通常损失函数基本不会是简单的一元二次方程或二元二次方程,往往会更复杂,维度更多

因此人们急需找一种相对普适的寻找“误差”最小值的方法,目前主流的方式是 梯度下降,核心思想即:在损失函数投射到坐标轴上的曲线或曲面中找到它的最低点

那么梯度怎么理解呢?通常单变量函数中,梯度代表的是图像斜率的变化;多变量函数中,梯度代表的是向量变化最快的地方,即最陡峭的方向

假设我们的损失函数就是个普通的一元二次方程 x² - 2x + 3,对应的图像如下图所示

普普通通的一元二次方程

那么对应的梯度就是曲线斜率的变化,是不是开始有点眼熟了,能够表示函数曲线在某点处切线斜率的东东,就是导数啦,最低点也就是导数为 0 的点了

而在这个逐级接近最低点的过程,通常就被称为 收敛

机器学习的本质即 使用不同的数学模型来投射和画线

机器学习方法

下面介绍一下出镜率极高的几种机器学习方法

线性回归、逻辑回归

线性回归 和 逻辑回归 都是机器学习中的监督学习方法。

  • 线性回归是一种用于预测数值型目标变量的算法,它通过拟合一个带有权重的线性函数来推导出输入特征与输出之间的关系。在训练过程中,我们根据给定的数据集不断调整这些权重,使得预测结果与真实结果的误差最小化。当模型训练完成后,我们就可以用它来对新的输入进行预测。

  • 逻辑回归则是一种用于预测二元分类目标变量的算法,它将线性回归的输出转换成一个概率,并通过一个阈值将其映射为 0 或 1。在训练过程中,我们同样需要不断调整权重以最小化预测结果与真实结果的误差,但由于逻辑回归中的目标变量只有两种可能取值,因此我们需要使用一种称为交叉熵损失函数的方法来计算误差。

说人话就是,我们需要找到一条线来预测具体的值,根据我们已有的数据,不断地调整这条线,让它更接近真实的数据,下次有新的问题,就可以直接用这条线来预测结果了。

逻辑回归主要解决的是分类问题,例如对人群的分类,高矮、胖瘦等等

与我们上面讲机器学习时一样,是使用数学的方式,再配合损失函数,找到这条线

k 近邻

k 近邻主要解决的也是分类问题

k 近邻(k-Nearest Neighbors,KNN)是一种非常基础的分类和回归方法。简单来讲,给定一个新的数据点,KNN 会在已有的数据集中找到最接近它的 k 个数据点,并根据这些邻居的类别或数值来预测该新数据点的类别或数值。

换句话说,KNN 算法通过寻找与新样本最相似的数据点来进行分类或回归,而不需要事先建立模型。在这个算法中,K 值代表了要查找的最近邻居数量,通常由使用者自行设定。

你在网上冲浪时,无论你是在哪个网站浪,网站都会根据你注册时提供的信息,或是你时常浏览的内容是什么类型的,给你打上 tag,将你归到相应的用户分类中。来个新用户,就可以根据他注册时提供的信息快速地将他归类(提前预测他大致会是哪一类用户)

转化为数学问题就是,网站会根据不同的维度,如年龄、性别等,将新用户 “投射” 到坐标系中,通过计算找到距离新用户最近的其他几个用户,看看他们是什么类型的用户,那么新用户大概率也就是属于这个类型的。

决策树

决策树是一种基于树形结构的机器学习算法,用于对数据进行分类或预测。

它也是一种监督式学习算法,可以从已经标记好类别的数据中自动学习和推断出新的数据的类别。

这里我们还要先介绍一下一个概念 分类纯度

分类纯度

通过计算原始数据的分类纯度,即它与某个类别的一致性,一致性越高那么原始数据就越有可能是这一类别的

通过这种方式,可以将数据划分为不同的子集,然后再在子集中递归地进行相同的操作,直到所有数据都被分成了唯一的类别

这个过程可以看做是一棵树的生长过程,因此这种方法被称为决策树

现在假设你问电脑,什么样的男生或女生最受女生青睐?

我们就暂且认为,吸引女生的地方主要就是 长的好看、人很幽默、老有钱了 这三个方面吧

我们提前将马某云、杨某洋、肖某战还有你输入电脑,并告诉电脑这三个人中谁最受女生欢迎,谁最不受女生欢迎

现在我们把王某聪输入电脑,电脑便会开始计算 长的好看、人很幽默、老有钱了 三个节点的分类纯度,以此来预测王某聪受不受女生青睐

支持向量机

支持向量机 (SVM) 可以用于分类和回归问题。

它的目标是找到一个超平面,将数据点分成两个或多个类。可以解决线性、非线性的不可分问题。

现在假设这里有一群羊 🐏,还有一群狼 🐺(是会嗷嗷叫还会吃羊的那种)。

为了不让狼把羊都吃了,我们得想点办法;因为这里不是羊村,所以我们需要挖一条沟,把羊与狼给分开

我们先把羊群和狼群投射到坐标系上,我们就得到了以下这张图

咩咩与嗷呜

支持向量机就是要通过数学方法来找到这条沟,这条沟的学名就叫超平面,羊和狼就被叫做支持向量

从图上羊群与狼群的分布可以看出来,我们无法画一条笔直沟将羊群与狼群隔开,这就是线性不可分问题

而支持向量机的办法不是画曲线,而是升纬,也就是增加一个维度;既然这堆数据在二维坐标系下线性不可分,那就加一个维度,通常把用来升纬的函数称为核函数

升维后的咩咩与嗷呜

升维后,可以看到羊群与狼群之间在第三个维度下是可以完全分隔开的

贝叶斯分类

贝叶斯分类同样也是解决分类问题,它可以根据已经分好类别的训练数据来预测新数据会属于哪个类别。

在贝叶斯分类中,我们需要使用 先验概率后验概率 来确定输入数据的分类。

来个小栗子 🌰,假设你是一个快递小哥,你需要将快递送到正确的地址。你已经是一个成熟的快递小哥了,你已经成功送过很多很多快递了;在送新的快递时,你可以根据“以往每个地址收到快递的概率”,并根据快递的大小、外形计算出该快递属于某个地址的概率,来快速判断应该把快递送到哪个地址。这样,你就可以更准确地预测快递的送达地址,并提高送货的效率。

这里的“以往每个地址收到快递的概率”就属于“先验概率”,“根据快递的大小、外形计算出该快递属于某个地址的概率”就属于“后验概率”。

先验概率 通常是指一个类别在总体中出现的概率。而 后验概率 则是指在考虑了额外信息(例如输入数据)后,一个事件发生的概率。

通俗的说,就是我们根据某一类事物在发生某一些事件的概率,来反推,当某一些事件发生的时候,它就是某一类事物。

铁器时代

聪明的肯定发现了,上面介绍的机器学习方法,怎么少了个重量级选手。

对,我故意不写的

拽

为啥?因为它就是不焚者,风暴降生丹妮莉丝,弥林的女王,安达尔人,大草海的卡丽熙……

不好意思,串戏了,其实它是现在大杀四方的机器学习方法——神经网络

尬住了

神经网络

神经网络是一种模拟人类大脑神经元的计算模型,用于解决复杂的机器学习问题,基本思想就是模拟大脑神经元的活动方式,来构造预测函数和损失函数

一开始神经网络还被叫做 感知机,感知机是一种最简单的神经网络模型,它由一个或多个输入、一个输出以及一组可调节的权重构成,可以用来完成二分类任务。

单个感知机的算法机制就是在模拟大脑神经元的运行机制,神经元的“树突”可以看成是输入端,而“轴突”就是输出端

感知机

例如这个式子:x1+x2+x3=y,x1、x2、x3 作为输入,y 作为输出

神经元的神奇之处就在于它的激活机制,存在一个阈值,树突不断接收输入信号,但不是每个输入都能让轴突输出信号;同时,每个树突在输入时所占的权重也是不一样的,可能是因为权重大而引起轴突输出,也可能是因为信号积累到了一个阈值,引起轴突输出。

阈值

如上图,w1 就相当于权重系数,其中 b 是常数,于是式子就变成 W1·x1+W2·x2+W3·x3+b=y

为了实现激活的过程,我们对输出值做进一步处理,增加一个激活函数

激活函数

sigmoid 函数 是最常用的激活函数

sigmoid函数

这样就可以解决分类问题了

单个感知机的实质还是在画一条线,把两种不同的东西分开,所以单个感知机可以解决线性问题,但是仍然无法解决 “线性不可分问题”

1969 年,“人工智能之父” 马文.明斯基就曾吐槽感知机,说它连计算机最基本的“异或问题”都处理不了。

异或算法就是:两者相同则取 0,两者不同则取 1;但是反映在二维坐标系上,异或就是线性不可分的,因此感知机确实解决不了异或问题。

**But,**数学上的异或运算是一种复合运算,可以通过其他运算得到,也即: a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。因此可以先利用两个感知机计算括号内的,再把结果给第三个感知机做外层的运算,这样就完成了异或运算。

于是乎,十几年后,感知机开始“加层”,从一层变成了两层,两层感知机就可以解决异或问题了,同时也解决了线性不可分的问题。但人们还不满足继续将两层变成了多层,多层感知机也有了个新名字 深度学习,深度指的就是感知机的层数多(一般隐藏层超过 3 层的神经网络就叫深度神经网络)。

至此,无论多复杂的数据,都可以通过加层的方式,将它们分开;理论上多层感知机能成为通用的方法,跨领域解决各类机器学习的问题

基于多层感知机,1982 年,循环神经网络(RNN)出现,1989 年,卷积神经网络(CNN)出现;在它们刚出现的时候,影响和作用远没有现在大,原因主要是受限于当时的硬件与数据量,同时还存在梯度消失等问题。但现在新的激活函数被应用,硬件、数据量都满足,神经网络开始了封神之路。

图像识别

了解了神经网络的机制后,我们看一下具体的应用。神经网络的一大应用方向,就是图像识别领域。

原理

我们知道计算机底层存储的其实只是 0 和 1,因此对于图像,计算机只是把每个像素分成了 rgb 的色值,再把这个数记录下来。

只因

你看到的是公鸡与篮球,计算机看到的只有 010101010101 ……,而且如果你换个角度或提高一下亮度再拍一张,在计算机眼里就是一幅完全不一样的图了,尽管拍的都是同一个物品,但是每个像素点的色值几乎都变了。

ok,我们继续让计算机自己去学习,这次用的学习的方法是 卷积神经网络(这里的卷积与数学里的卷积不是一个东西)

回想一下,我们人眼看东西,一眼扫过去就能认出视野里都是些什么玩意儿,但对于视野中的细节,只凭这一眼是无法记住或者说分辨出来的;因为我们在扫的过程中只关注轮廓,不看具体细节,只有在我们需要找细节的时候才会再去仔细巡视。

因此,为了让计算机能识别物体,提高识别的效率,我们也要让计算机忽略细节,而只管特征,“卷积”就是用来做这个的。在计算机图形中,卷积的一个重要作用就是 提取特征

再来介绍一个概念,卷积核,卷积核就是用来提取图片特征的

一个卷积核只能提取一种特征,如:

提取横线的卷积核 👇

横线卷积核

提取竖线的卷积核 👇

竖线卷积核

具体做法就是:

  • 卷积核“盖”在图片上,从图片左上角开始
  • 卷积核与下面盖住的图片对应的数值,上下相乘再相加再平均
    • 如果数值较大,则说明特征比较相似
    • 反之,则差别很大
    • 这样想提取的特征就被放大了
  • 处理完右上角这一小块,继续向右移动,直至扫过整张图片

卷积过程

卷积核扫过图片一遍后得到一张新的“图”

fill

一次卷积后,还需要对这张新的“图”,做池化处理。

也就是进一步将图片缩小,便于后续的卷积操作,通常的做法是每个 4x4 的格子中找到数值最高的那个留下,还有一种方法则是 4 个像素取平均值;这样处理后,图片缩小了,但是保留了特征值。

接着再继续第二次卷积、第二次池化、第三次卷积、第三次池化 ……

在这个过程中图片逐渐缩小,卷积提取的特征逐渐从局部变成了整体,图片的特征数也越来越多

最后将提取出的特征,扔到由感知机组成的 全连接神经网络 中,做最后一次分类,这些特征在感知机里通过 损失函数 进行反馈,经过几百上千万次的不断尝试后,最终找到每个特征的合适权重组合

这些特征的不同组合方式,就可以识别出来这张图片中是什么物体。

将特征数字化,再去寻找数字组合的最大出现概率。

因此,只要数据是可以标签化、量化,并且转换为矩阵的,卷积核就可以乱杀,图像识别、语音识别都不是问题。

盲点

特征

这是一张卷积后的图片,我们已经很难看出这里面画的到底是啥;但是这些特征通过损失函数和反向传播,进行一定的训练后得到权重,就可以非常准确地实现图像识别。

至于这到底是如何完成的,已经超出了人类的描述能力,无法再用数学方式直观地展示出来,所以深度学习往往也被称为“黑箱”

因为我们不知道在感知机的隐藏层里,机器到底是如何分类和设计权重的,我们只知道一个模型放下去能准确识别,另一个模型放进去就是不行。

到了这个阶段,我们能做的就只有调参了,修改一下参数再扔进去试一下行不行,所以深度学习的调参也被戏称为 炼丹,把原材料都扔进去,成不成就听天命了

这或许就是神经网络让人恐惧的原因之一,我们不知道神经网络深深的隐藏层下,到底在发生着什么

蒸汽时代

终于到了激动人心的时刻,在介绍了这么多以后,相信你基本对人工智能有了一定了解,接下来就是以 GPT 为代表的时代。

GPT 是一系列大语言模型,同时它们都是基于谷歌开源的 Transformer 架构实现的,因此我们先来简单了解一下啥是大语言模型、Transformer 又是啥

大语言模型

大语言模型是一种通过大量文本数据训练的人工智能模型,可以预测一段文本中下一个词或短语出现的概率,或是直接生成一段新的文本。

这些模型的规模非常大,通常有数十亿个参数,因此可以处理极其复杂的语言结构和语义关系。这也使得它们在自然语言处理、机器翻译、问答系统、文本摘要等领域都有着相当广泛的应用。

借助大语言模型,我们可以让机器更好地理解和使用自然语言。

LLM

简单理解,这就一模型,能听懂人话。

模型训练策略

这里主要讲两种方法,Data-centricModel-centric,它们都是机器学习(ML)开发方法

  • Data-centric 方法是指将数据作为机器学习开发的核心。在这种方法中,数据被视为最重要的因素,而模型的角色相对较小。数据质量、多样性和量的增加被视为更优先的考虑因素,而模型的设计和调整只是为了更好地适应数据。

  • Model-centric 方法则更加侧重于模型的设计和开发。在这种方法中,开发人员更多地关注模型的性能和精度。模型的架构、超参数调整和模型优化是主要关注的方面,而数据只被视为输入。模型会被不断优化,直到其达到预定的精度和性能要求。

Transformer

Transformer 是一种用于序列到序列(Sequence-to-Sequence)学习的架构,广泛用于自然语言处理任务中,如机器翻译、文本摘要、对话生成等。其最大的特点是采用了注意力机制(Attention Mechanism)。

在传统的循环神经网络(RNN)中,信息只能在一个方向上流动,因此无法利用整个输入序列的上下文信息。而 Transformer 中采用的自注意力机制(Self-Attention),能够让每个词与序列中其他所有词相互交互并得到一个表示。

降维的说法就是,传统的处理文本的方法只能一个一个地处理,无法全面考虑整个文本的意思。而 Transformer 可以在处理文本时,充分挖掘上下文之间的关联信息。

自注意力机制的核心是计算注意力权重,以便为每个词分配一个权重,表示该词在当前上下文中的重要性。

这个权重值是通过将查询(query)向量、键(key)向量和值(value)向量进行点积得到的。其中,查询向量是当前时间步的输入,键向量和值向量是序列中其他位置的表示。

注意力权重由查询向量与所有键向量的点积构成,然后进行归一化处理,最后将注意力权重与值向量进行加权求和,得到表示当前时间步的输出向量。

在 Transformer 中,自注意力机制被应用于编码器和解码器中。编码器用于将输入序列转换成一组隐藏表示,解码器将这些表示转换成目标序列。编码器和解码器均由多层自注意力模块和前馈神经网络模块组成。

transformer

通过使用自注意力机制,Transformer 能够有效地学习长序列之间的依赖关系。

为了更好理解,我们再来个小栗子 🌰

假设有一篇文章,其中有一个句子“我喜欢吃糖果,我也喜欢吃巧克力。”如果我们想要使用 Transformer 模型对这个句子进行编码,其中就会用到自注意力机制。

首先,模型将这个句子中的每个单词都表示为一个向量。然后,对于句子中的每个单词,自注意力机制会计算它与其他所有单词的相似度,得到一个注意力权重向量。

以“糖果”这个单词为例,自注意力机制会计算出它与句子中其他单词的相似度,得到一个注意力权重向量。

这个向量中的每个元素代表“糖果”与句子中其他单词的相似程度,最终可以用这个向量来计算“糖果”的编码向量。

同样地,自注意力机制也会对句子中的其他单词进行类似的计算,得到它们的编码向量。

最终,所有单词的编码向量将组合成整个句子的向量表示,这个向量可以被用作输入到下一个模型层或输出层中进行进一步处理或者生成。

这种自注意力机制能够捕捉到每个单词与其他单词之间的语义关系,从而更好地理解整个句子的含义。

这也是为什么 Transformer 模型在处理自然语言任务方面表现出色的原因之一。

GPT 模型

终于到 GPT 了,开整。

GPT 是 OpenAI 开发的一系列大型语言模型,包括 GPT-1、GPT-2、GPT-3、InstructGPT、ChatGPT/GPT-4。这些模型的架构都基于 Transformer,并使用文本和位置信息的向量作为输入,使用注意力机制来建模词语之间的关系。

gpt

GPT 系列模型的整体结构相似,但随着模型规模的扩大,它们拥有更多的参数,包括更多的层数和隐含层维度等等。

GPT-1GPT-2GPT-3
Parameters117 million1.5 billion175 billion
Decoder layers124896
Context length51210242048
Hidden layer size768160012288
  • GPT-1:使用 BooksCorpus 数据集,包含各种类型的书籍。没有使用 Data-centric AI 策略。预训练后,可以在下游任务微调中提高性能。
  • GPT-2:使用 WebText 数据集,通过 Reddit 上抓取出站链接创建而成。使用了一些筛选和清洗数据的 Data-centric AI 策略,获得了 40 GB 的文本。即便在没有微调的情况下,GPT-2 也可以取得很不错的效果。
  • GPT-3:使用 Common Crawl 数据集,经过筛选和去重后获得了 570GB 的文本,仅选择了 1.27%的数据。使用了质量过滤、模糊去重等 Data-centric AI 策略。在这个基础上,GPT-3 比 GPT-2 更强。
  • InstructGPT:在 GPT-3 的基础上,使用人类反馈去微调模型,使得模型与人类期望相符。使用了严格筛选和培训过的标注者,以及比较数据和奖励模型等 Data-centric AI 策略。
  • ChatGPT/GPT-4:商业化产品,OpenAI 不再披露具体细节。已知 ChatGPT/GPT-4 遵循了以前 GPT 模型的设计,并且仍然使用 RLHF 来调整模型。由于推理速度较慢且参数数量大概率增加,可能使用更大的数据集。

从 GPT-1 到 ChatGPT/GPT-4,这些自然语言处理模型使用的训练数据经历了几次重要的变化。最初,OpenAI 使用的是相对较小但对于普通研究者来说仍然相当大的数据集。随着时间的推移,他们使用了更大、更高质量的数据集来训练模型,并最终采用了高质量人工标注的数据集。与此同时,模型的设计并没有经历显著的变化,只是随着数据集变得更大,参数也变得更多,以更好地适应更多的数据。这符合 Data-centric AI 的理念,即强调数据在机器学习中的重要性。

ChatGPT/GPT-4 的成功表明,高质量标注数据至关重要,无论在人工智能的哪个领域,都可以显著提高模型性能。甚至在许多传统的无监督任务上,使用标注数据也能显著提高性能,例如弱监督异常检测。OpenAI 非常注重数据和标签质量,这种执念是 GPT 模型成功的重要原因之一。

后记

最后总结一下,AI 的本质其实更像是个 “统计工具”

这可以从入门人工智能的四大学科中得到印证

  • 统计学:利用统计学的方法处理数据
  • 概率论:寻找概率最大的答案
  • 微积分:求导,得出逼近真实的模型
  • 线性代数:处理数据格式,让计算更加简洁

无一不在朝着概率统计的方向大踏步

现在了解了人工智能、神经网络的机制后,我想我们也能回答一下那个常被讨论的问题 “人工智能会最终取代人类,成为地球的新主人吗?”

现在我们知道,不管神经网络展示出来的学习能力有多强,它本质上还是基于数学方法的一堆程序代码,还是根据概率而来的统计工具。

即使 AlphaGo 能打败李世石,但它也不明白自己在做什么,它只是根据一定的特征、概率和权重来决定某一选项的一个程序而已,它与那些固定逻辑的程序没有本质上的区别,非要说区别的话,大概就是固定逻辑的程序的数据是基于数据库,而它的数据是基于“概率”。

就好像马戏团里会做算数题的修狗,它并不理解算数是什么,也不会自己真的去算,它只是根据驯兽师提前训练好的提示,做出了相应的动作而已。

在冯诺依曼架构下,几乎不可能诞生具有自我意识的人工智能。冯诺依曼架构的计算机处理数据的方式是顺序执行指令,而人类的大脑则是通过神经元之间相互连接来处理信息的。虽然可以通过深度学习和自然语言处理等技术生成人类可以理解的自然语言,但这也只是程序在数据上的处理能力,不代表具有自我意识或情感。如果未来真的出现了,欢迎来打脸(doge)

参考