让我们从 LLM 实际是什么开始:一个巨大的数学函数,用来预测序列中的下一个词语。仅此而已。没有意识,没有人类意义上的理解,只是在一个看起来诡异地智能的规模上进行统计模式匹配。当你在 Claude 或 ChatGPT 中输入“法国的首都是”,模型并不知道巴黎存在。它计算得出基于数十亿的训练实例,最有可能出现的词语是“巴黎”。这是整合了整个互联网的自动完成。 使这成为可能的架构称为 transformer,由谷歌研究人员于2017年发明。以下是文本如何变成回应的逐步细分:

  1. 分词:你的输入文本被切分成称为 tokens 的小片(大约每个是一个词的3/4)。“Hello world”变成“Hello” 和“world”。
  1. 嵌入:每个 token 转换为一个向量,一个代表其在数学空间中意义的数字列表。具有相似意义的词语在这个抽象几何中聚集在一起。
  1. 注意力机制:这是秘诀所在。模型计算哪些 token 应该“关注”哪些其他 token。在“ The animal didn't cross the street because it was too tired.”中,注意力帮助模型将“it”链接到“animal”而不是“street”。
  1. 处理层:现代 LLM 如 GPT-4 或 Claude 3 有数十个 transformer 层,每个层精炼表示。早期层识别语法模式,中层把握语义,后期层处理推理。
  1. 预测:最后一层输出每个可能下一个 token 的概率。模型从这个分布中取样(带有一些随机性以获得创造力)并输出一个词。然后它将那个词回输入,再预测下一个。如此重复直至完成。

这实际上在伪代码和数学中看起来是这样的。这是简化的,但捕捉了核心逻辑: function generate_text(input_text, max_tokens): tokens = tokenize(input_text) for i in range(max_tokens): # Convert tokens to embeddings (vectors) embeddings = embedding_layer(tokens) # embeddings shape: [sequence_length, embedding_dim] # Apply transformer layers hidden_state = embeddings for layer in transformer_layers: hidden_state = layer.apply(hidden_state) # Get probabilities for next token logits = output_layer(hidden_state[-1]) # Use last position probabilities = softmax(logits) # probabilities shape: [vocabulary_size] # Sample next token (with temperature for randomness) next_token = sample(probabilities, temperature=0.7) tokens.append(next_token) if next_token == END_TOKEN: break return detokenize(tokens) function transformer_layer(hidden_state): # Multi-head self-attention attention_output = multi_head_attention(hidden_state) hidden_state = layer_norm(hidden_state + attention_output) # Residual connection # Feed-forward network ff_output = feed_forward(hidden_state) hidden_state = layer_norm(hidden_state + ff_output) # Residual connection return hidden_state function multi_head_attention(X): # X shape: [seq_len, d_model] # Split into multiple attention heads outputs = [] for head in range(num_heads): # Linear projections to Query, Key, Value Q = X @ W_q[head] # [seq_len, d_k] K = X @ W_k[head] # [seq_len, d_k] V = X @ W_v[head] # [seq_len, d_v] # Scaled dot-product attention # scores[i,j] = how much position i attends to position j scores = (Q @ K.transpose()) / sqrt(d_k) # [seq_len, seq_len] # Mask future positions (can't look ahead) scores = mask_future(scores) # Convert to probabilities attention_weights = softmax(scores) # [seq_len, seq_len] # Apply attention to values output = attention_weights @ V # [seq_len, d_v] outputs.append(output) # Concatenate all heads and project return concatenate(outputs) @ W_o 注意力背后的数学是魔法发生的地方。对于序列中的每个位置,模型计算: Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V 这意味着:Q(查询)问“我在找什么?”,K(键)回答“我包含什么?”,V(值)提供“这是我的实际信息”。点积 QK^T 衡量查询和键之间的相似性。具有高相似性的那些位置在 softmax 之后获得高注意力权重。那些权重然后从值中拉取相关的信息。 例如,处理“ The cat sat on the mat because it was soft”:

  • 在“it”之后进行预测时,对于“it”的查询计算出与“mat”的键的高相似性(softmax 可能给出0.7的权重),与“cat”的相似性低(0.1权重)
  • 所有值向量按这些分数加权,所以“it”主要从“mat”的表示中拉取信息
  • 这经过多个层次的传递,每层不断精炼关联

训练过程是大规模的梯度下降: function train_llm(training_data, num_epochs): # Initialize billions of parameters randomly model = initialize_model(num_parameters=175_000_000_000) for epoch in range(num_epochs): for batch in training_data: # Mask out some tokens to predict input_tokens = batch[:-1] # All but last target_tokens = batch[1:] # All but first # Forward pass: predict next tokens predictions = model.forward(input_tokens) # Calculate loss: how wrong were we? loss = cross_entropy(predictions, target_tokens) # Cross entropy: -sum(target * log(prediction)) # Penalizes confident wrong predictions heavily # Backward pass: calculate gradients gradients = compute_gradients(loss, model.parameters) # Update parameters to reduce loss for param, grad in zip(model.parameters, gradients): param -= learning_rate * grad return model 每个单独的参数更新都试图最小化交叉熵损失:模型对下一个实际 token 的惊讶程度。如果它以95%的概率预测正确的“巴黎”,损失很小。如果它以60%的概率预测错误的“伦敦”,而正确的是“巴黎”,损失很大。这在数万亿例子和数十亿参数中进行,模型学会了语言的统计结构。 训练过程是昂贵且复杂的。这些模型通过无监督学习在大规模文本数据集上学习:书籍、网站、代码库、科学论文。在预训练期间,研究人员向模型展示带有一些被遮蔽词语的文本,要求其进行预测。每个错误猜测都会生成一个错误信号,使数十亿参数(模型内部的可调数字)稍微接近更好的预测。据信 GPT-4 拥有超过1万亿个参数,花费超过1亿美元在成千上万的 GPU 上训练数月。 在预训练之后是微调阶段,人类训练师对模型的回应进行评分,教其如何变得有帮助而不仅仅是准确。这就是为什么 Claude 不会写下你的宣言或 ChatGPT 拒绝某些请求。通过人类反馈进行的强化学习(RLHF)字面上重构了概率分布以避免不良输出。模型学习到某些响应模式从人类那里获得更高的分数,所以它偏爱这些模式。 现在,预测行业正在被攻占。任何成功意味着识别模式和预测未来的领域,核心上是一个 LLM 问题。天气预报?模式匹配历史大气数据。股票交易?发现价格变动和新闻情绪的关联。医疗诊断?从数百万病例历史中匹配症状和病症模式。法律文件审查?识别相关的先例和合同条款。客户服务?基于过去的票据预测解决方案。 AI 的优势即残酷又简单:规模。人类放射科医生可能在职业生涯中查看5万张 X 光片。AI 模型则是5000万。一名对冲基金分析师每季度阅读数百份财报。一个 LLM 实时处理全球发布的每一份收益电话会议记录、SEC 文件和分析师笔记。模式识别的优势倍增,直到人类专业知识变得是装饰性的而不是功能性的。 我们已经看到接管速度加快。专门为金融数据训练的 Bloomberg GPT 在预测新闻的市场走势方面表现优于人类分析师。DeepMind 的 AlphaFold 通过将分子结构作为预测任务解决了困扰生物学家50年的蛋白质折叠问题。GitHub Copilot 写了启用库中40%的代码。这些工具不是帮助人类的狭义工具,而是使整个技能集变得过时的替代技术。 不舒服的事实是,大多数知识工作是用预测打扮成的专业知识。律师预测案件结果并根据模板起草文件。会计师预测纳税责任和审计风险。营销人员预测哪种信息会与哪个受众产生共鸣。教师预测哪种解释可以澄清概念。医生预测哪种治疗可以治愈哪种疾病。如果你的工作涉及查看数据并说“基于 X,我认为 Y 会发生”,你就处于影响范围内。唯一的问题是时间。