想象你的厨房里有一个机器人,任务是把水倒进杯子里。它如何感知周围的世界?它是看到一堆光点,还是能识别杯子并知道如何操作?在人工智能(AI)中,数据表示从原始的像素逐步演化为有意义的行动,使机器能够真正与世界互动。

像素 - 原始感知

像素是数字图像的基本单位,每个像素代表图像中某个点的颜色强度。在计算机视觉中,图像被处理为像素网格,提供丰富的视觉信息。然而,像素本身缺乏语义意义——它们只是光和影的记录。早期的 AI 系统依赖手工设计的特征来解释像素,而现代深度学习通过卷积神经网络(CNN)自动提取特征。

例如,假设我们的机器人需要识别厨房中的杯子。像素数据可以告诉它杯子的形状和颜色,但无法直接告诉它“这是个杯子”。程序员可以使用 OpenCV,一个广受欢迎的计算机视觉库,来处理像素并检测边缘或物体。

import cv2

# 加载图像
image = cv2.imread('kitchen.jpg')

# 转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 检测边缘
edges = cv2.Canny(gray, 100, 200)

# 显示结果
cv2.imshow('Edges', edges)
cv2.waitKey(0)

这段代码展示了如何用 OpenCV 检测图像中的边缘,但像素本身并不能告诉机器人如何拿起杯子。我们需要更高级的表示来赋予数据语义。

近期研究,如《PixelWorld: Towards Perceiving Everything as Pixels》(2025 年),提出了一种新方法,将文本和图像都作为像素处理,以保留更多的空间信息。这种方法表明,像素虽然原始,但仍是 AI 感知的基础。

令牌 - 离散化世界

令牌(tokens)是将世界分解为离散单元的方式,类似于语言中的单词或图像中的补丁。在自然语言处理(NLP)中,令牌化将文本分割为单词或子词,使模型能够理解和生成语言。类似地,在计算机视觉中,视觉变换器(Vision Transformers, ViTs)将图像分割为补丁,每个补丁作为一个令牌。

例如,NVIDIA 的博客《Explaining Tokens — the Language and Currency of AI》(2025 年)指出,令牌是 AI 模型处理数据的基本单位,无论是文本中的单词还是图像中的像素块。令牌化让 AI 能够以结构化的方式处理复杂数据,促进推理和生成任务。

以下是一个使用 Hugging Face 的 transformers 库进行文本令牌化的例子:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
tokens = tokenizer.tokenize('Hello, world!')
print(tokens)  # ['hello', ',', 'world', '!']

令牌的优势在于它们将连续的数据(如图像或文本)转化为离散的、可操作的单元。然而,令牌可能存在歧义,例如“lie”可能表示“躺下”或“撒谎”,需要上下文来消解。此外,令牌化可能会丢失连续世界的细微变化,例如图像中的渐变。

在视觉领域,研究如《An Image is Worth 32 Tokens for Reconstruction and Generation》(2024 年)展示了如何将图像高效地令牌化为 32 个补丁,从而降低计算成本,同时保留关键信息。这表明令牌化是连接感知和推理的关键步骤。

状态向量 - 内部表示

状态向量是 AI 模型对当前情境的连续表示,类似于程序员在代码中维护的程序状态。在机器学习中,状态向量可以是循环神经网络(RNN)或变换器(Transformer)中的隐藏状态。这些向量捕获上下文信息,使模型能够记住过去并预测未来。

例如,在处理时间序列数据或文本序列时,状态向量可以帮助模型理解事件的顺序。以下是一个使用 PyTorch 实现的长短期记忆(LSTM)网络示例,用于预测句子中的下一个单词:

import torch
import torch.nn as nn

class LSTMModel(nn.Module):
    def __init__(self, vocab_size, embedding_dim, hidden_dim):
        super(LSTMModel, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embedding_dim)
        self.lstm = nn.LSTM(embedding_dim, hidden_dim)
        self.fc = nn.Linear(hidden_dim, vocab_size)

    def forward(self, x, hidden):
        embedded = self.embedding(x)
        output, hidden = self.lstm(embedded, hidden)
        prediction = self.fc(output)
        return prediction, hidden

# 使用示例省略

状态向量通过将离散的令牌整合为连续的表示,弥合了语言和物理世界之间的差距。例如,我们的机器人可以通过状态向量了解杯子的位置、自己的手臂状态以及环境的约束,从而规划下一步动作。

文章《Understanding Vectors in Generative AI》(2025 年)指出,向量表示是生成式 AI 的核心,允许模型在高维空间中捕捉复杂模式。这对程序员来说意味着,理解状态向量可以帮助优化模型性能,尤其是在需要实时推理的任务中。

可供性 - 行动可能性

可供性(affordances)是指物体或环境的属性,暗示了可能的行动。例如,杯子的把手暗示它可以被拿起,门的把手暗示它可以被打开。在 AI 中,特别是在机器人和交互式系统中,可供性帮助模型决定在当前状态下哪些行动是可行的。

根据 Interaction Design Foundation 的定义(2021 年),可供性是用户与物体之间的关系,取决于用户的感知和物体的属性。例如,一个按钮在界面上暗示可以点击,而一个锁住的门则不提供打开的可供性。

在编程中,可供性广泛应用于用户界面设计和游戏开发。例如,在 Web 开发中,按钮元素通过其视觉设计(如高亮或阴影)暗示可点击,程序员需要处理相应的交互事件:

<button onclick="pourWater()">倒水</button>

在现代 Web 框架如 React 中,组件的属性进一步定义了可供性。例如,一个禁用状态的按钮明确表示它不可点击:

<Button disabled={isPouring}>倒水</Button>

在游戏开发中,可供性决定玩家如何与虚拟世界互动。例如,在 Unity 游戏引擎中,程序员可以为物体定义交互行为:

public class Door : MonoBehaviour
{
    public bool isLocked = false;

    public void Interact()
    {
        if (!isLocked)
        {
            // 打开门
            transform.Rotate(0, 90, 0);
        }
    }
}

可供性将感知与行动连接起来,使 AI 系统能够从“看到”世界转变为“改变”世界。对于我们的机器人来说,理解杯子的可供性(如“可抓取”或“可倾倒”)是成功倒水的关键。

闭环:从感知到行动

从像素到可供性的演化形成了一个闭环:像素捕捉原始感知,令牌组织信息,状态向量提供推理基础,可供性引导行动。这个闭环是 AI 系统与现实世界交互的核心。例如,机器人通过像素看到杯子,通过令牌识别它,通过状态向量理解其位置和环境,最终通过可供性决定如何拿起并倒水。

这种闭环逻辑在现代 AI 系统中无处不在。例如,视觉语言模型(VLMs)通过将图像和文本统一为像素或令牌表示,实现了更强大的多模态推理。《PixelWorld: Towards Perceiving Everything as Pixels》(2025 年)的研究表明,这种统一表示可以提高模型的鲁棒性和效率。

常见误解与澄清

  • 误解一:更多数据总是更好
    并非如此。数据质量和与任务的相关性比数量更重要。冗余或无关的像素数据可能导致噪声,降低模型性能。

  • 误解二:令牌化已经足够
    令牌化虽然强大,但离散化会丢失连续信息。状态向量和可供性补充了这一不足,使模型更贴近现实世界。

  • 误解三:可供性只是动作标签
    可供性不是简单的标签,而是用户、物体和目标之间的动态关系。例如,同一个杯子对机器人和小孩提供的可供性不同。

结论

AI 从像素到行动的旅程展示了数据表示的强大力量:像素提供原始数据,令牌赋予结构,状态向量带来记忆和推理,可供性开启行动的可能性。对于程序员来说,理解这些层次不仅能帮助你开发更智能的系统,还能让你在 AI 时代保持竞争力。

你对 AI 的数据表示有什么看法?在你的项目中是否遇到过相关挑战?欢迎在评论区分享你的经验和见解!

参考文献:

  • Medium: A Beginner’s Guide to Tokens, Vectors, and Embeddings in NLP

  • arXiv: PixelWorld: Towards Perceiving Everything as Pixels

  • NVIDIA Blog: Explaining Tokens — the Language and Currency of AI

  • Interaction Design Foundation: What are Affordances?

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐