大乱斗,教初中生深度学习

世事的变迁,有时光阴闪电,白驹过隙的感觉。这系列的文章,基于一个疯狂的假设:有一天,人类的大语言模型的知识,必需要由一位初中生来传承。

这一系列的文章,就是想尽办法,对一位初中生讲大模型。当然必需要有数学,但是能够运用的数学很有限。

为什么选择从初中生开始,而不是小学生。因为从初中开始,应该是初二的阶段,会开始讲“函数”,也就意味着,从此真正开始了用数学解释世界。

世界不断地运动变化,事物中存在着许许多多的变量,它们之间相互依存,一个/些变量的变化会引起其他变量的变化。 函数是用来描述事物变化的过程工具,大模型的本质是一个大函数。

在描述函数的性质的时候,通常的方式是,观察在二维坐标系内,随着x值的逐渐增大,y的值的变化趋势。

在初二下学期关于一次函数的介绍里面,会讲到 y = kx + b; 其中 k 叫作斜率,它是用来表示函数的变化大小程度的一个指标,比如: y = 5x -1 , 它的变化的幅度要大于 y = x -1 ,因为 5 > 1。

在微积分里面,求导的过程就是在函数的任意一点寻找它的变化率的过程。为什么我们这么关注变化率?

比如说,有一天,火星叔叔马丁,送给我们一个飞行器,接收过来一看,好家伙,里面密密麻麻的各种仪表、按钮和指示灯。 我们完全不会开呀,怎么办呢?火星叔叔送给我们一个飞行模拟器,我们可以在模拟器上面执行各种操作而不用担心坠落。 于是,我们就可以,在任意的条件下,比如把一个旋钮转5度,看看此时飞行器是上升了还是下降,幅度有多大。

通过不停地模拟调试,我们知道了其中的上万个按钮对于飞行姿态的影响,于是就掌握了飞行器的控制。

同样的,对一个大语言模型里面的万万个参数来说,我们也需要找到一个参数的微小的变化,会对结果有什么影响。因为这个过程无法通过人力运算来实现,我们一般用超过1万张的显卡24小时不停地运算。在运算的初期,我们对大模型输入一句话,它可能会真的输出一串我们无法理解的火星文。等到训练的后期,它能输出我们能理解且正确的话,那就标志着我们的训练过程完成了。

对于微积分而言,求导式子是:

\[F(h) = \frac{f(x + h) - f(x)}{h}\]

这个式子用几何来理解,就是两点之间变化的 y 值 除以 变化的 x 值,也即函数的基本性质的表达,当x变化了一点的时候,y 变化了多少。

\[\frac{f(x + h)-f(x)}{h} = \frac{d(y)}{d(x)}\]

直观地说,就是直角三角形的高除以直角三角形的底。这就是计算我们施加一点变化{h}在函数上面的时候,计算它引起的函数值的变化的方法。

在求导过程当中,有一个核心的工具是链式法则。链式法则需要解决的是这样一个问题:

假如,我们先把飞船的一个操纵踏板踩下去1度,又把某一个旋钮转了5度,此时飞船急剧上升了1000米。用前面的式子,我们可以计算旋钮对于飞船飞行姿态的影响。但是踏板对于上升了1000米的影响是多少,该怎么计算呢?

也许没有踩下去会飞行得更高?或者更低?此时就是微积分中的链式法则的运用:

如果飞船的升高(假设称为dz)依赖于飞船的旋钮(假设称为dy),而旋钮又依赖于踏板(假设称为dx),那也就是说,飞船的升高(dz)通过中间的变量旋钮(dy)依赖于踏板(dx)。在这种情况下,链式法则可以表示为:

\[\frac{dz}{dx} = \frac{dz}{dy} * \frac{dy}{dx}\]

也就是说,间接的影响等于一系列的直接的影响的相乘的结果。

为什么是相乘的结果呢?举个例子吧:

如果开汽车的速度是骑自行车的速度的4倍,而骑自行车的速度是步行的2倍。那么开汽车的速度相当于步行的几倍?

结果应该是 4 X 2 = 8 倍。

六年级(或初一)学过比例和比例的性质,假如说,我们有:

\[a : b : c = 1 : 2 : 4\]

那么 a : c = 1 : 8

说到比例的问题,这里有一道初中数学题:

\[\frac{1}{a} : \frac{1}{b} : \frac{1}{c} = 2 : 3 : 7\]

那么请问 a : b : c = ?

总结一下:

训练一个大模型的过程,相当于明确飞行器当中上万个按钮和开关对于飞行控制的作用。

其中关键的测量工具是:

斜率,用以描绘变化的大小;

比例关系,用于寻求多因素之间传递的影响。