【AI杂谈】借助高尔顿板理解AI概念
最近出来一篇论文:

挺有意思的,不过主要是这篇论文让我突然想到一个好玩的比喻。(在我写稿子期间,看到有人在讲了,而且夸大的很厉害,不过简写确实很好玩,是ToT)

1.概率模型
大家学概率的时候可能都接触过这样一个场景吧(高尔顿板):

(画的不是很好,大家理解意思就可以,素材都来源于一个著名的免费神经网络画图素材)
我们让一个小球从上到下滚下去,小球基本在每一个紫色柱子(没错,最好是将下面那些圆理解成圆柱)之间都会随机向左或者向右,最终落到底部。
正好,不是有很多人见到AI就直接扔一句“不就是贝叶斯吗?”那我们对于概率还是拿概率模型说事(真的,虽然我们经常吐槽神经网络就是炼丹、就是概率、就是暴力美学,但AI底层的数学还是非常多的,不是随便拍拍脑门就能炼丹的)
当然,如果我在专业领域那这个模型出来说事,估计会被同行“暴打”,不过作为科普,我觉得这个比喻还是有一定好处的。

2.神经网络
神经网络相关知识可以参考:
现在我们一般都把神经网络统称为模型了,这样做有一个好处是,对于一般大众来说可能更好理解一些,模型嘛,就是把一些数据按照一定的规则组织在一起。嗯,听起来就不像炼丹那样浑浊了(
所以我们就可以根据上面模型修改一下:

我们就拿简单的分类任务来做讨论。上面我有各种各样的球,每个球都有不同的性质,我要把一些小球分为五类(A、B、C、D、E),或者说,让不同的球落到不同的框里。
所以说在这里我们需要对那些原本“万球平等”的圆柱搞事情了。
如果大家了解这个模型就会知道,落到中间类别(C)的概率是相对比较高的,而落到边缘(A、E)的概率比较低,这也代表了神经网络刚开始的状态。因为刚刚初始化的神经网络权重都接近0,所以对于任何输入,输出都是相似的:

然后我们要做的就是根据这一次掉落的结果对整个模型进行修改,例如我们可以改成如下的一些情况:

假设这些球有不同的磁性,于是我们在柱子上加一些吸铁石,让黄球更倾向于跑到左边,让蓝球更倾向于跑到右边,这样输出的概率分布就发生了变化。
这就是神经网络在做的事情,就是对参数的不断优化,让不同的输入有不同的输出分布。

3.上下文学习
而ChatGPT火起来以后,在大模型这里,情况有些不同。大模型有了一种新的能力:上下文学习。
上下文的意思是说,我不需要修改模型的参数,只要你先给我几个样例,我的输出效果就会更好。
例如我想让模型做算术,我就先告诉模型1+1=2,2+2=4,然后就可以让它计算318489*214764728了
这是很不可思议的一件事情,虽然现在的神经网络中确实会有一些“活参数”(你可以简单理解为神经网络内部有些数值是根据输入动态改变的,实际上没有“活参数”这样的术语),但准确率提高一定意味着这些“活参数”做了一些事情。
当然啦,其实上下文目前依然是迷雾重重的一个存在,但也不是不能类比:

我们拿出一个训练好的模型,假设我给模型几个例子,这些例子与以前的东西有些不同(它们的区别不在于球的颜色,而在于内部的文字),根据一些研究,模型在做的可能是在内部拟合出了某种东西。
所以有可能模型是做了类似于这么一件事情:

即模型在内部构造了一个更小的模型,这样,这些输入至少很难再掉到A、E两个口了
当然,上下文学习还是太复杂、太神秘了,这个例子肯定有很多不合适的地方,但是也能够说出一些“反直觉”的事情:

假设左边的示例(即球(是B类,球2是C类,球3是D类)是正确的,右边的示例是错误的,上面两种情况的结果应该是相似的。
因为:(1)正确的输入输出对对上下文学习的影响是有限的,更重要的是示例和实际测试样例的结构相似性
(2)输出的分布是重要的,输入输出的配对没有那么重要
(3)这可能是因为大模型本身就具有大量的知识

4.思维链
思维链(Chain of thought,CoT)也是随着大模型比较火的一个东西,简单来说,我们不是让模型一次得出答案,而是一步步得出答案

例如计算2+8*3,我们不是让大模型直接突出一个结果(例如30),而是让模型一步步来做,模型就会先算8*3=24,然后2+24=26
还是对于这个模型,这时我们就让大模型来预测这个球会落到哪个洞里,大模型直接预测确实会比较麻烦,但如果我们让大模型对于每一步都进行预测,情况就会好很多:

如上图,我们一个个预测,于是来到了如下的状态:

在这种状态下,小球只会落在C、D、E之中了,假设真正的结果是D,那么这样正确率相对就提高了。
回到论文中,ToT也是类似的想法:

不过这个模型的推理还可以回去的,比较神奇(就是通过这个图我想到了这个模型)
希望能帮助大家理解吧。