系列文章
首页

人工智能如何识别猫?图解指南。

神经网络驱动着当今的人工智能热潮。要理解它们,我们只需要一张地图、一只猫和几千个维度。

詹姆斯·奥布莱恩为 《Quanta》杂志

L 看一张猫的照片,你瞬间就能认出它是猫。但若要编程让计算机识别猫咪照片,你很快会发现这绝非易事。你需要编写代码,精准捕捉无数猫咪照片中跨越独特背景与不同拍摄角度的核心特征。该从何入手?

如今计算机能轻松识别猫咪照片,并非因程序员发现了提炼“猫性”精髓的诀窍,而是借助神经网络——这种人工智能模型通过学习数以亿计的图像样本实现视觉识别。神经网络还能生成惊人流畅的文本,掌握复杂游戏规则,解决数学生物学难题——这一切皆无需明确指令。

研究者对神经网络的内部运作机制仍有诸多未知,但它们并非完全不可捉摸。通过将神经网络分解为基本构建模块,我们可以探究它们如何学会区分虎斑猫与桌布。

简单分类器

猫检测是研究者所称的分类任务范例。给定一个对象(此处为图片),目标是将其归入正确类别。某些分类任务远比区分“猫”与“非猫”简单。让我们设想一个奇妙的例子:假想的三角领地与方形州。

你获得一个由经纬度坐标描述的新点位,需判断该点位于哪个区域。但你没有显示边界的地图,仅掌握两地已知点位集。

要构建能自动分类未知点的“分类器”系统,必须先划定边界。此后当获得新点位时,分类器只需判断其位于边界哪一侧即可。

但如何确定边界位置?这正是神经网络发挥作用之处。它们基于初始已知数据点集,找出最可能的边界。

要理解该过程,我们需暂且搁置地图,先探索神经网络的基本构建单元——神经元。神经元本质上是数学函数,拥有多个输入端和单一输出端。输入若干数值,它便会输出新数值——仅此而已。

更简而言之,输出值几乎总是接近0或接近1。具体取值取决于输入数据以及另一组称为参数的数值。具有两个输入的神经元拥有三个参数。其中两个称为权重,决定每个输入对输出的影响程度;第三个参数称为偏置,决定神经元输出0或1的整体倾向。

现在让我们观察输入与输出的关系。下图展示了三组不同参数的神经元。当输入值变化时,它们会穿越一条边界线——此时神经元输出将从0骤升至1。在这些图表中,该边界始终呈现直线形态。参数决定了这条直线的位置与倾斜角度。

要构建能判定新数据点属于“方形区域”还是“三角区域”的分类器,我们需要调整这条直线,使其精确反映两区域的分界线。在此,若输出值接近0则判定点位于方形区域,接近1则判定为三角区域。

调整边界线需通过训练过程修改神经元参数。第一步是将参数设为随机值,这意味着神经元的初始边界线与实际边界毫无相似之处。

训练过程中,我们将每个已知数据点的经纬度输入神经元。神经元根据当前参数输出结果,再将其与真实值进行比较。有时它能给出正确答案。

洛蒂尺度测试

其他数据点则会被错误分类。

洛蒂尺度测试

每当神经元给出错误答案时,自动化算法便会微调神经元的参数,使边界向错误点方向移动。

该算法在处理训练数据时会反复执行此过程。最终我们将获得最接近真实边界形状的直线对应参数值。

 

洛蒂比例测试

现在可以将分类器应用于未参与训练的新数据了。虽然不完美,但多数情况下能给出正确答案。

神经元网络

单个神经元在简单示例中表现良好,但仅因三角领地与方形州之间的真实边界接近直线。面对更复杂的任务,我们需要使用众多相互连接的神经元组成的集合——即神经网络。如同单个神经元,整个网络本质上也是数学函数:输入数字,输出数字。

神经网络内部的神经元被分组排列成称为层的结构。

洛蒂尺度测试

单层可包含任意数量神经元,网络可拥有任意层数。每层神经元的输出结果将成为下一层神经元的输入。

洛蒂尺度测试

大型网络拥有众多参数:每个神经元对应一个偏置值,神经元间的每条连接对应一个权重值。这些额外参数使网络能够识别更复杂的边界。

例如,假设你尝试完成相同的地图分类任务,但真实边界远非直线。

虽然可尝试用单神经元分类器拟合边界,但效果必然欠佳。总体而言,网络规模越大,处理复杂任务的能力越强,但同时也需要更多训练数据。

从地图到猫咪

我们已知增加神经元数量能提升网络能力,但此前仅探讨过双输入网络。神经网络的输入数量并无上限。多数实用任务都需要多输入网络。

先前示例中,神经元的两个输入是地图上点的经纬度坐标。神经网络的输入数值也可表示其他类型数据。例如,0到1之间的数值可代表单个像素的灰度值。

洛蒂尺度测试

这意味着任意两个像素点都能在二维空间中绘制为一个点。

洛蒂尺度测试

同理,三个像素点对应三维空间中的一个点。

洛蒂尺度测试

像素数量增加需更高维度。虽然人类无法直观感知三维以上空间,但研究者已开发出观察这些抽象空间三维表示的方法,类似于透视三维空间的二维快照。在九维空间中,我们可通过三乘三网格呈现不同模式。

洛蒂尺度测试

为理解其应用价值,让我们将输入维度从九维跃升至2500维——这相当于50×50像素网格。如此规模的网格上,不同图案可呈现有意义的图像,例如猫咪照片。每张猫咪照片都对应着2500维空间中的独特坐标点。

该空间中的其他点则对应着咖啡杯的图像。

当数据点足够丰富时,我们就能训练大型神经网络区分猫与非猫。

所有猫咪照片都分布在2500维空间中某个复杂区域。训练算法会反复调整网络参数,直至找到这个无法直观呈现的区域边界。

训练完成的网络便能正确识别训练数据之外的新图像。瞧:我们构建出能“识别”猫咪图像的网络了。

不止是猫咪

我们的猫检测网络拥有大量神经元和输入端口,但仅有一个输出端口。若增加输出端口,便能训练网络识别多种物体类别,而不仅限于猫。每个类别将对应2500维空间中的不同区域。更复杂的图像识别网络已在天体物理学、细胞生物学、医学等众多领域得到应用。

神经网络还能完成分类之外的任务。ChatGPT等大型语言模型基于神经网络,其输入输出数值代表着单词。尖端网络规模庞大,参数数量达数十亿乃至数万亿级。这使得精确解析网络各部分功能变得极其困难。理解大型神经网络的运作机制,已成为当今众多研究者面临的挑战。