Synth Daily

AI如何识别猫咪?

本文通过地图分类和猫咪识别的例子,解释了神经网络的基本工作原理。文章阐述了从单个神经元通过调整参数来划分简单边界,到由多个神经元组成的网络如何通过学习大量数据,在人眼无法想象的高维空间中识别出复杂模式(如猫的图像)。这个过程揭示了现代人工智能解决分类、识别乃至语言生成等任务的核心机制。

一个简单的分类器

识别猫咪本质上是一个分类任务:给定一张图片,判断它属于“猫”还是“非猫”类别。为了理解这个过程,我们可以从一个更简单的例子开始。

想象一下,我们有两个虚构的区域:三角洲和方块州。我们的任务是,在不知道具体边界的情况下,根据一些已知坐标点的位置来判断一个新的坐标点属于哪个区域。

  • 目标: 自动对未知点进行分类。
  • 方法: 根据已知数据点画出一条分界线。
  • 工具: 神经网络可以根据现有的数据点,找到最可能的分界线。

要理解神经网络如何做到这一点,我们首先需要了解它的基本构建模块:神经元

神经元如何工作

神经元是一个简单的数学函数,它接收多个输入,并产生一个输出。

  • 输入: 一组数字(例如坐标点的经度和纬度)。
  • 输出: 一个接近 0 或 1 的数字。
  • 参数: 每个神经元都有一组内部参数,用于决定输出结果。
    • 权重 (weights): 决定每个输入对输出的影响程度。
    • 偏置 (bias): 决定神经元输出 0 或 1 的整体倾向性。

这些参数共同决定了一条边界线。当输入跨越这条线时,神经元的输出会从 0 迅速变为 1。通过调整参数,我们可以改变这条边界线的位置和角度。

训练过程:让边界线动起来

为了让神经元能准确划分区域,我们需要通过一个称为训练的过程来调整它的参数。

  1. 随机开始: 首先,为神经元的参数设置随机值。此时,它的边界线与实际边界可能相差甚远。
  2. 数据输入: 将已知数据点(坐标)逐一输入神经元。
  3. 比较结果: 神经元会根据当前参数输出一个结果(0 或 1),然后将其与真实标签进行比较。
  4. 调整参数: 如果分类错误,一个自动化算法会轻微地调整神经元的权重和偏置,使边界线向着错误分类的点移动一点。

这个过程会重复成千上万次,直到神经元的参数能够生成一条最能近似真实边界的直线。

训练完成后,这个神经元分类器就可以用来预测那些未曾用于训练的新数据点了。虽然不完美,但它在大多数情况下都能做出正确的判断。

从单个神经元到神经网络

单个神经元只能处理接近直线的简单边界。对于更复杂的任务,我们需要将许多神经元连接起来,形成一个神经网络

  • 层 (Layers): 神经网络中的神经元被组织在称为“层”的结构中。
  • 连接: 前一层神经元的输出会成为后一层神经元的输入。
  • 更强的能力: 一个拥有更多神经元和连接的网络,也意味着拥有更多的参数。这些额外的参数使网络能够学习和描绘出远比直线复杂的边界。

通常,网络规模越大,能处理的任务就越复杂,但同时也需要更多的训练数据。

从地图到猫咪:进入高维空间

到目前为止,我们的例子都只有两个输入(经度和纬度)。但神经网络的输入数量没有限制。

我们可以用数字来表示其他类型的数据。例如,一个介于 0 和 1 之间的数字可以代表一个像素的灰度值。

  • 2个像素: 对应二维空间中的一个点。
  • 3个像素: 对应三维空间中的一个点。
  • 更多像素: 需要更高维度的空间来表示。我们无法想象超过三维的空间,但数学上可以处理。

现在,让我们把输入从几个提升到 2500 个,这可以代表一个 50x50 像素的图像。

每一张猫的图片都对应着这个 2500 维空间中的一个点。同样,一个咖啡杯的图片则对应着另一个点。

理论上,所有猫咪的照片都聚集在这个高维空间中的某个复杂区域内。通过足够多的数据进行训练,一个大型神经网络就能够找到包围这个区域的复杂边界

当训练完成后,这个网络就能够判断一张它从未见过的新图片是否位于“猫咪区域”内,从而“识别”出猫。

不仅仅是识别猫

通过增加输出神经元的数量,我们可以训练网络识别许多不同类别的物体,而不仅仅是猫。这种技术已广泛应用于天体物理学、细胞生物学和医学等领域。

神经网络的应用也远超图像分类。像 ChatGPT 这样的大型语言模型,其基础也是神经网络,只不过它的输入和输出数字代表的是词语。这些顶尖的网络拥有数十亿甚至数万亿的参数,使得我们很难确切了解其内部各部分具体在做什么。理解这些大型神经网络的内部工作原理,是当今许多研究人员面临的重大挑战。