# Summary [[斐波那契数列]]: $fib(n) = fib(n-1) + fib(n-2)$ # 1, 1, 2, 3, 5, 8, 13, 21.. GPT 自回归生成: $token(n) = f(token(0), token(1),..., token(n-1))$ # "The" → "cat" → "sat" → "on" →.. # Cues # Notes 自回归 (Autoregressive) 的含义 自回归指的是:用自己之前的输出作为下一步的输入,形成一个循环依赖的过程。 在 GPT 中的具体体现: 看 `model.py` 中的 `generate` 函数 (`mingpt/model.py:283-310`): ```python def generate(self, idx, max_new_tokens, temperature=1.0, do_sample=False, top_k=None): for _ in range(max_new_tokens): # 1. 用当前序列预测下一个token logits, _ = self(idx_cond) # 2. 获取最后一个位置的预测 logits = logits[:, -1, :] # 3. 采样或选择下一个token idx_next = torch.multinomial(probs, num_samples=1) # 4. 把预测的token追加到序列末尾,作为下一轮的输入 idx = torch.cat((idx, idx_next), dim=1) # ← 关键:自己的输出变成输入 ``` 举例说明: 生成 "The cat sat on the mat" 1. 输入: "The" → 预测: "cat" 2. 输入: "The cat" → 预测: "sat" 3. 输入: "The cat sat" → 预测: "on" 4. 输入: "The cat sat on" → 预测: "the" 5. 输入: "The cat sat on the" → 预测: "mat" 每一步都依赖之前所有生成的内容,这就是"自回归": - 自 = 使用自己生成的结果 - 回归 = 循环反馈到输入中 为什么叫"回归"? 在统计学中,自回归模型 (AR) 用过去的值预测当前值: $y(t) = f(y(t-1), y(t-2),..., y(t-n))$ GPT 类似: $token(t) = f(token(0), token(1),..., token(t-1))$ 这种逐个生成、依次累积的方式让模型能生成连贯的长文本,但也意味着生成速度较慢(必须串行生成,不能并行)。