大语言模型的计算能力
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:
- 代码示例:
|
|
编程语言 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 的联合训练,而不是各自的单独训练。