大语言模型的计算能力 LLM 的几个核心数学问题 N-GRAM 的计算能力问题 过参数化模型的统计学习问题 非凸的数值优化问题 对深度神经网络的数学理解 Transformer 算子的含义 fine-tuning 的数学含义 N-GRAM 的计算能力 大语言模型的基本范式: 假设 $w_1, w_2,\dots, w_{N}$ 是一个单词序列。我们可以按如下公式计算单词序列的概率: $$ p(w_{1},w_{2},\dots,w_{N})=\prod^N_{i=1}p(w_{i}|w_{1},w_{2},\dots,w_{i}) $$ 该模型是一个 $N-1$ 阶的马尔可夫链,称为 N-GRAM 模型。 该模型的计算能力是有限的,因为它的是个有穷自动机。 非确定型有穷自动机(NFA) 是一个 5 元数组 $Q,\Sigma,\delta,q_0,F$,其中 $Q$ 是一个有穷集合,称为状态集。 $\Sigma$ 是一个有穷集合,称为字母表。 $\delta:Q\times\Sigma_\varepsilon\rightarrow \mathcal{P}(Q)$ 是转移函数。 $q_0\in Q$ 是起始状态。 $F \subseteq Q$ 是接受状态集。 大模型是有穷自动机的证明过程 令 $q_0 =\varepsilon$ 为初始状态,大语言模型的预测函数记为 $$ \phi:{s_0s_1s_2…s_{n-1}}\rightarrow s_n,s_i \in \Sigma $$ 取 $\delta$ 为: $$ \begin{equation} \delta(q,\sigma) = \left \{ \begin{array}{ll} q \circ\sigma & \sigma \neq \varepsilon\\ q \circ\phi(q) & \sigma = \varepsilon \end{array} \right. \end{equation} $$ 也就是将 $Q$ 设置为已经拥有的上文,持续输入或预测下一个字符。 在 Bhattamishra et al. 2020 中也有类似的实验,实验中基于 Transformer 的大语言模型甚至只能识别弱化的正则语言。 大模型无法判别一个 ${[0|1]^*}$ 序列中是否有奇数个 $1$。 给定 $n$ 大模型无法生成 $(aa)^n$。 在 Zhou et al. 2023 中还尝试论述了基于 Transformer 的大语言模型也无法实现加法运算之类的复杂运算。 以及,有穷自动机无法判定 $\{0^n\#1^n\}$ 形式的序列;也无法进行基础的四则运算(无法处理括号的闭合和乘法的优先顺序)。 大模型计算能力是有限的 大模型不具备推理能力,这件事与模型的规模无关。 大模型是通过语言概率分布的泛化来模拟出推理能力的假象。 例如:大模型不会数数。他只是把看到过的数数类型的答案都记住了,然后用类比的方式去回答新的问题;如果答案在记忆中,就会回答正确。 更大的模型可以记住更多的答案,但是这并不是我们想要的答案。 我们需要新的范式来解决 AGI 问题。 Agent + LLM 可以成为完备图灵机 Agent 的基本范式是一个 While 程序。 例如下面几种常见的 Agent: ReAct 获得反思推理能力 BabyAGI 基础的计划任务 Agent Reflexion 长期记忆和短期记忆(短期记忆就符合上述流程) AutoGPT 第一个全能 Agent 代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @dataclass class ReAct(ABC): thought: Optional[str] = None action: Optional[str] = None def __post_init__(self): self.obs = self.run() # 获取执行 Action 的结果 act = ReAct() acts = [] while not act.done: acts.append(act) prompt = get_prompt(acts) act: ReAct = ReAct.parse(llm.call(prompt)) # 调用大模型 编程语言 WHILE 语义 (Semnatik) 一个 while 程序 $P$ ,通过传递 $k$ 个参数,返回一个结果, 即 $f:\mathbb{N}^k\rightarrow\mathbb{N}$ 其他未定义的参数可以在程序里被调用,但是必须设定为 $0$ WHILE 程序的结果在结束结束后通过 $x_0$ 传达 对于一个 WHILE 程序,有三种运行模式: 变量赋值: $x_i=x_j+c,c\in{0,1,−1}$ $P_1$;$P_2$ ( $P_1$,$P_2$ 是两个任意程序程序),先运行 $P_1$ ,再运行 $P_2$ WHILE $x_i \neq 0$ DO $P$ END 意思是, $P$ 程序将一直被运行,直到 $x_i$ 等于 0 定理:编程语言 WHILE 是图灵完备的 证明: 我们将受限 RAM(Registermaschine)(只有 LOAD,STORE,CLOAD,CADD,CSUB 功能的 RAM) 中的每一步都用 WHILE 程序来代替计算,由于受限 RAM 是图灵完备的,所以 WHILE 也是图灵完备的。 证明细节参看:while循环 ,源自 Unentscheidbarkeit des Halteproblems: WHILE-Programm, Vorlesung 10 in BUK von RWTH Aachen 实现图灵完备的方法不是唯一的。例如,Schuurmans 2023 就证明了,当可以使用外部存储时,大模型是图灵完备的。 但是,这并不意味着 Agent + LLM 就是 AGI,毕竟我们现在的电脑本身就是图灵完备的,但是我们并不认为电脑就是 AGI。 我们需要的是一个可以自适应的 Agent,而不是一个固定的 Agent。也就是可以通过学习来改变自己的行为,而不是通过人工的方式来改变自己的行为。 以整数加法为例 我们希望 Agent 学会整数加法。但学会的方式不是我们给了它加法的程序让它执行,而是通过加法的真值,“推导”出加法的程序。模拟人做加法的方式,我们尝试让机器训练出加法程序 已知: 十以内的加减法(这部分的结果是背下来的); 用字符串来保存十进制的数字; 有额外的存储可以利用(保存进位时的信息); 目标: 懂得如何利用已知的十以内的加减法的结果,进行多位的加减法运算; 计算时需要从后向前计算; 需要保留进位的信息; 确保计算结果一定是准确的; 这应该是一个强化学习的过程——只有计算正确时,才会获得奖励。其中,尝试探索的动作空间是: 如何利用十以内的加减 通过怎样的计算顺序 如何利用额外的存储 最终以此来生成一个完整的加法运算流程。 使用 RL 训练 Agent Agent 的 While 循环模式恰好符合 Bellman 方程的形式。 通过强化学习训练 Agent,直观上,状态空间和奖励都不难定义,难的是究竟如何定义 Action 空间。 例如十以内的加减法为什么可以成为加法的 Action? 进一步,当我们尝试训练乘法时,九九乘法表一定在我们的 Action 空间中,那如何凭空让机器找到这个“九九乘法表”呢? 甚至计算乘法时,加法也需要在 Action 空间中。这意味着,强化学习能学会内容是有序的,而且 Action 空间的生成也是依赖之前的训练结果的。 这个结果并不意外,《技术的本质》一书中就提到过人类技术的发展是渐进的,而不是突变的。 牛顿无法简单的通过阅读代数和几何来发明微积分。问题是,要生成全新的想法,还缺什么? 有可能达成 AGI 的新范式应当需要 Agent + LLM 的联合训练,而不是各自的单独训练。 Thanks