版权归原作者所有,如有侵权,请联系我们

机器是如何学习的?

星空计划
原创
星空计划运营团队账号:活动信息发布、创作者培育计划作品发布等
收藏

一、超越人类的计算能力

经过了半个多世纪的发展,今天的计算机能以惊人的速度计算。目前,市场上的英特尔酷睿i7-2600每秒可以完成1124亿次运算。假如一个人每秒能计算一次,那么酷睿处理器每秒的计算量要让一个人计算8万多年。

然而,计算机虽然算得快,但需要人类给出极为具体的指示,比如“比较两个数的大小”或者“给一个数加上一”。无论多么复杂的程序,都是由这些简单的运算堆积而来。

图片来源:pixabay

举个例子,在很多应用场景中,我们需要对一组数字进行排序。这时候我们可以通过比较数字之间的大小和对换数字之间的位置完成非常复杂的排序任务。如果我们改变比较和对换的组合策略,还能获得提升排序算法的效率,减少程序运行的时间。

这些简单的运算组合起来,可以完成很多惊人的任务,我们用这种办法建造了复杂的网站,模拟各种自然现象,让我们可以在手机上看视频,还能处理各种各样的办公软件。

二、除了算力,还需要规则

然而,无论怎么组合,简单的运算却无法产生复杂的智能。因为人的认知能力是从上而下产生的。我们大脑可以通过仍然不太清楚的机制,迅速“捕捉”到语言或图片的高层特征和含义。

我们几乎不需要学习任何语言规则,就能开始熟练掌握语言,并在年幼的时候就能开始理解对计算机来说极为复杂的语言现象,例如幽默、多义、暗示、双关和讽刺等等。同样,我们也只需要看到几只猫和狗,就能分辨这两种动物的区别。

与人不同的是,计算机采用的是自下而上的方式运行,必须从最底层的基本规则开始定义。但很多对人类来说很简单的工作,却很难提出非常具体的规则。

从底层的像素角度来看,这些图片没有任何相似之处;但我们却一眼能发现图片里的动物都是猫。也就是说,我们就很难设置一套规则,让计算机判断一张照片里的动物是猫还是狗。

笔者供图

笔者供图

在作出了大量失败的尝试之后,人工智能的研究者们决定从另一个方向解决问题。既然没法从底层构建规则来完成复杂的任务,我们从另一个角度来攻破它。

三、黑盒子的介入

我们承认某些问题的复杂性,所以根本不尝试从内部破解它,而是把它当成一个黑盒子,可以根据不同的输入,做出合理的输出。

数学上,我们把这样的黑盒子叫做“函数”。函数就像一个怪兽,可以吞进去输入数据,然后根据规则生成输出数据。

如果我们想识别图片,我们会把图片,而把图片中的物体类别作为输出。如果我们想要让程序自己开汽车,我们会把摄像头拍到的图片作为输入,而把油门或刹车的强度和方向盘转动的角度作为输出。如果我们想让程序下围棋,我们会把当前的棋局作为输入,而把最能提升获胜概率的落棋位置作为输出。

现在,我们可以合理地假定大自然确实存在复杂的函数,但这个函数我们的大脑只能模拟,却不能给出清晰的定义。如何在不给出清晰定义的情况下,让人工智能模型也学会模拟这些函数呢?

第一步,我们需要找一个非常灵活的“通用”函数,可以通过改变自己,适配不同的场景。第二步,我们给这个函数看大量带有正确答案的数据,让它根据这些数据不断地改变自己,从而使自己的输出越来越符合真实答案,或者说,让自己的预测与真实答案的差异最小。

如果我们把模型的预测与真实结果之间的差异画成一个曲面,模型的学习过程,就可以看作是它不停地改变自己,最终找到曲面上最低点的过程。

举个例子,如果我们要预测房价和房屋面积的关系。我们可以简单的找一条直线作为函数。这个函数虽然不算太灵活,但至少可以改变方向和位置。一开始,我们会随机摆放这条直线,可以看到,这样的模型性能很差。但随后,我们可以根据训练数据,一点点调整直线的位置,让模型能符合大部分训练数据的答案。这样,我们也就有理由相信它可以预测未来不知道答案的新数据。

当然,如果需要预测的比较复杂,一条直线已经不够了,我们就需要更复杂的模型。过去几十年,机器学习和统计学习领域的学者陆续提出了很多不同的模型,可以比直线要灵活得多,例如逻辑回归和支持向量机等等。

日趋复杂的模型

20世纪40年代,神经生物学家提出了一些模拟动物神经元连接的数学模型。50年代,人工智能的先驱之一弗兰克·罗森布拉特(Frank Rosenblatt)提出了一个两层的神经网络,将其称为感知机。这是最早的人工神经网络。可是到了60年代,人们发现感知机的结构过于原始,连基本的任务都完成不了。自此之后,人工神经网络陷入了沉寂。

直到20世纪80年代。约翰·霍普菲尔德(John Hopfield)和杰弗里·辛顿(Geoffrey Hinton)改进了神经网络,他们发现只需要在感知机里加一层神经元,就能让函数变得非常灵活,可以解决复杂得多的问题。

到了1989年,数学家甚至在数学上严格证明,只要3层神经网络和一个非线性的激活函数,就能以极高的精度模拟自然界的任何函数。

所以理论上,不管我们是要让AI学会下围棋,还是回答问题,还是写代码,都可以让多层神经网络学习实现。

不过理论上能实现是一回事,实际上神经网络的学习过程要复杂得多。我们之前看到的误差曲面都非常简单,但实际遇到的误差曲面可能是一个几亿维度的复杂形状。

在这种情况下,学习的过程可能需要很多年。所以,研究人员又通过不同方法,对学习速度进行改进。在视频中,我们能看到不同的学习方法速度差异很大。

在优化了学习技术后,我们可以堆叠出远比三层神经网络更复杂的模型,也让模型有了更强的表达能力。随着神经元的层数越来越多,革命性的深度学习也因此出现。

为了适应不同的场景,模型的结构也在不断进化,从最早解决计算机视觉问题的卷积神经网络,到处理自然语言的循环神经网络,再到更全面地考虑了上下文信息的Transformer。今天我们熟悉的GPT4和chatGPT等大规模语言模型都基于Transformer架构。

所以,从某种意义上来说,那些让我们惊叹的对话能力,的确是通过一个几千亿参数的模型,在人类的语言上完成的自我学习。

参考:

The Evolution Of CPU Processing Power Part 1: The Mechanics Of A CPU - New Mind

Intro to Gradient Descent – KevinBinz

The Illustrated Transformer - Jay Alammar

文章由科普中国-星空计划(创作培育)出品,转载请注明来源。

作者:管心宇 科普作者

审核:于旸 腾讯玄武实验室负责人

内容资源由项目单位提供

评论
AOR楠姐 💪(617583083)
进士级
阅读
2023-10-12
科普62d7b9474e443
学士级
已阅
2023-10-12
銘天会更好
贡士级
阅读
2023-10-12