AI 科普:用生活场景拆解大模型推理的"思考"过程

cover

一、AI 的"思考"到底是什么?——从神秘感到了解感

当 ChatGPT 流畅地回答问题、写代码、做翻译时,很多人会产生一种错觉:AI 似乎真的在"思考"。但另一些人则走向另一个极端——认为 AI 只是在"随机拼凑文字",毫无逻辑可言。这两种看法都不准确。

理解大模型的推理过程,不需要数学博士学位,也不需要啃论文。关键在于找到合适的类比——用日常生活中的熟悉场景,映射 AI 内部的工作机制。本文的目标不是把 Transformer 的数学推导讲一遍,而是让非技术背景的读者也能建立对 AI "思考"过程的直觉理解:它为什么能给出看似合理的回答?它为什么会犯错?它的能力边界在哪里?

二、从图书馆到神经网络:AI 推理的四个关键步骤

大模型的推理过程可以拆解为四个阶段:理解输入、检索知识、组合推理、生成输出。用生活场景来类比,就像一个人在图书馆里回答问题。

flowchart LR
    subgraph S1["第一步:理解输入"]
        A1[用户提问] --> A2[分词:把句子切成词块]
        A2 --> A3[编码:每个词块变成数字向量]
        A3 --> A4[注意力:识别词与词的关联]
    end

    subgraph S2["第二步:检索知识"]
        B1[激活相关记忆<br/>权重参数被唤醒] --> B2[上下文窗口<br/>只看最近的对话]
        B2 --> B3[知识融合<br/>多路信息加权组合]
    end

    subgraph S3["第三步:组合推理"]
        C1[模式匹配<br/>类似问题怎么回答的] --> C2[逻辑链构建<br/>因果、对比、举例]
        C2 --> C3[置信度评估<br/>这个回答有多靠谱]
    end

    subgraph S4["第四步:生成输出"]
        D1[逐词预测<br/>每次选一个最可能的词] --> D2[采样策略<br/>在确定性和多样性间平衡]
        D2 --> D3[输出文本]
    end

    S1 --> S2 --> S3 --> S4

2.1 理解输入:把问题"翻译"成 AI 能懂的格式

想象你问一个只会英语的图书管理员一个中文问题。他需要先翻译,才能理解你的意图。AI 也一样——它不直接理解文字,而是把文字转换成数字向量(一串数字),这个过程叫"编码"。

分词就像把"我想学做饭"切成"我/想/学/做饭"四个词块。每个词块对应一个固定的数字编号,再通过嵌入层转换为一个高维向量(比如 4096 维的浮点数数组)。这个向量就是 AI 对这个词的"理解"——语义相近的词,向量也相近。"猫"和"狗"的向量距离,比"猫"和"汽车"近得多。

注意力机制是理解阶段的关键创新。它让 AI 在处理一个词时,能"回头看"句子中的其他词,判断哪些词与当前词最相关。比如"苹果发布了新手机"中,AI 处理"苹果"时会注意到"手机",从而判断这是公司而非水果。这种能力不是被显式编程的,而是从海量文本中自动学到的。

2.2 检索知识:从"记忆"中找到相关信息

AI 的"记忆"不是数据库式的精确存储,而是分布在数十亿个参数权重中的模糊模式。当输入经过编码后,会"激活"参数中与输入相关的模式——这就像你闻到某种气味,突然想起童年的某个场景。不是刻意搜索,而是联想触发。

这里有一个关键限制:上下文窗口。AI 只能看到当前对话中最近的几千到几万个词,更早的内容就"忘记"了。这就像一个人在回答问题时只能看眼前的一页笔记,翻不了前面的页。这就是为什么长对话中 AI 会"失忆"——不是它不想记,而是物理上看不到。

2.3 组合推理:模式匹配而非逻辑演绎

这是最容易被误解的环节。AI 的"推理"本质上是模式匹配——它见过类似的问题和回答模式,然后按照这些模式生成新内容。这不同于人类的逻辑演绎(从已知前提出发,逐步推导结论)。

举个例子:AI 能正确回答"如果 A 大于 B,B 大于 C,那么 A 和 C 谁大?",不是因为它理解了传递性的逻辑规则,而是因为训练数据中有大量类似的推理模式。当问题变得复杂或反直觉时(比如"如果 A 大于 B,B 大于 C,C 大于 A,谁最大?"),AI 就容易出错——因为训练数据中几乎没有这种矛盾前提的模式。

2.4 生成输出:每次只选一个词

AI 生成文本的方式是逐词预测:根据当前上下文,计算词表中每个词作为下一个词的概率,然后选一个。这个过程反复进行,直到生成结束符。

这里有一个微妙但重要的参数:温度(Temperature)。温度越低,AI 越倾向于选择概率最高的词,输出更确定但可能枯燥;温度越高,AI 更愿意选择概率较低的词,输出更有创意但可能跑题。这就像考试时的答题策略——保守型选手只写有把握的答案,冒险型选手愿意尝试不确定但有亮点的回答。

三、用代码模拟:一个极简的推理过程

以下代码用最简化的方式模拟大模型推理的核心流程,帮助建立直觉:

import numpy as np
from dataclasses import dataclass
from typing import List, Dict


@dataclass
class Token:
    """词块:文本的最小处理单元"""
    text: str
    vector: np.ndarray  # 嵌入向量,模拟 AI 对词的"理解"


class MiniInference:
    """极简推理模拟器——展示 AI 推理的核心步骤"""

    def __init__(self, vocab: Dict[str, np.ndarray]):
        # vocab: 词到向量的映射,模拟预训练的嵌入层
        self.vocab = vocab
        self.vocab_size = len(vocab)

    def tokenize(self, text: str) -> List[str]:
        """分词:将输入文本切分为词块"""
        # 简化实现:按空格和标点切分
        tokens = text.replace(",", " ,").replace("。", " 。").split()
        return tokens

    def encode(self, tokens: List[str]) -> List[Token]:
        """编码:将词块转换为向量"""
        result = []
        for t in tokens:
            if t in self.vocab:
                result.append(Token(text=t, vector=self.vocab[t]))
            else:
                # 未知词用随机向量代替(实际模型有更复杂的处理)
                result.append(Token(
                    text=t,
                    vector=np.random.randn(64) * 0.1,
                ))
        return result

    def attention(self, tokens: List[Token]) -> List[np.ndarray]:
        """注意力机制:让每个词"看到"上下文中相关的其他词"""
        attended = []
        for i, token in enumerate(tokens):
            # 计算当前词与所有其他词的相似度
            scores = np.array([
                np.dot(token.vector, other.vector)
                for other in tokens
            ])
            # Softmax 归一化,得到注意力权重
            weights = np.exp(scores) / np.sum(np.exp(scores))
            # 加权求和,得到融合了上下文信息的新表示
            context_vector = sum(
                w * tokens[j].vector
                for j, w in enumerate(weights)
            )
            attended.append(context_vector)
        return attended

    def predict_next(
        self,
        context_vectors: List[np.ndarray],
        temperature: float = 1.0,
    ) -> str:
        """预测下一个词:基于上下文选择最可能的词"""
        # 用最后一个上下文向量作为查询
        query = context_vectors[-1]
        # 计算与词表中每个词的相似度
        logits = np.array([
            np.dot(query, self.vocab[word])
            for word in self.vocab
        ])
        # 应用温度参数
        logits = logits / max(temperature, 0.01)
        # Softmax 转换为概率分布
        probs = np.exp(logits) / np.sum(np.exp(logits))
        # 按概率采样
        words = list(self.vocab.keys())
        chosen = np.random.choice(words, p=probs)
        return chosen

    def generate(self, prompt: str, max_tokens: int = 20,
                 temperature: float = 0.8) -> str:
        """完整生成流程:分词 → 编码 → 注意力 → 逐词预测"""
        tokens = self.tokenize(prompt)
        encoded = self.encode(tokens)
        attended = self.attention(encoded)

        generated = [t.text for t in encoded]
        for _ in range(max_tokens):
            next_word = self.predict_next(attended, temperature)
            generated.append(next_word)
            # 将新词加入上下文,继续生成
            new_token = Token(
                text=next_word,
                vector=self.vocab.get(
                    next_word,
                    np.random.randn(64) * 0.1,
                ),
            )
            encoded.append(new_token)
            attended = self.attention(encoded)

        return "".join(generated)

这段代码省略了真实模型中的多层 Transformer、位置编码、KV Cache 等关键组件,但保留了推理流程的核心逻辑:分词 → 编码 → 注意力 → 逐词预测。通过调整温度参数,可以直观感受确定性与多样性的权衡。

四、理解的边界:AI "思考"的局限与误判风险

4.1 模式匹配无法替代真正的逻辑推理

AI 擅长"看起来像"的推理,但不擅长"真正对"的推理。当问题落在训练数据的覆盖范围内,AI 的模式匹配能给出正确答案;一旦超出范围,AI 不会承认"我不知道",而是自信地给出错误答案——这就是"幻觉"的根源。在医疗、法律等高风险领域,这种"自信的错误"尤其危险。

4.2 上下文窗口的"记忆"限制

即使上下文窗口扩展到 128K 甚至 1M Token,AI 的"记忆"仍然是有限的。更关键的是,注意力机制在处理超长上下文时会出现"中间遗忘"现象——位于上下文中部的信息最容易被忽略,首尾的信息反而更受关注。这意味着把重要信息放在中间位置,AI 可能"视而不见"。

4.3 知识的时效性盲区

AI 的知识截止于训练数据的最后更新时间。对于训练后发生的事件、新发布的工具、新修改的 API,AI 的回答可能完全错误。这不是 Bug,而是架构层面的限制——模型参数在训练完成后就固定了,不会自动更新。RAG(检索增强生成)是当前最主流的缓解方案,但引入了检索质量和延迟的新问题。

4.4 类比的误导风险

本文大量使用类比来解释 AI 的工作机制,但类比本身有简化失真的风险。"注意力"不是人类意义上的注意力,"记忆"也不是人类意义上的记忆。过度依赖类比可能导致对 AI 能力的误判——以为 AI 真的像人一样"理解"了问题。理解类比是为了建立直觉,但直觉不能替代对技术边界的清醒认知。

五、总结

大模型的推理过程可以概括为四个步骤:把文字翻译成数字、从参数中联想相关知识、按模式组合推理、逐词生成回答。这个过程的核心是模式匹配而非逻辑演绎,这决定了 AI 的能力边界——擅长模仿已有模式,不擅长创造新的逻辑链。

对非技术读者而言,最重要的认知是:AI 不是"在思考",而是"在匹配模式"。这个认知不是贬低 AI 的价值,而是帮助更准确地使用它——把 AI 当作一个见多识广但不会独立思考的助手,在它擅长的领域(模式识别、文本生成、知识检索)充分利用它的能力,在它不擅长的领域(严格逻辑推理、事实核查、实时信息)保持审慎。

更多推荐