「这只猴子还能完整打出《哈姆雷特》全书,以及莎士比亚扔到纸篓里的每句话。」
——乔治·伽莫夫《从一到无穷大》
如何能够让猴子写出一本《莎士比亚》全集?答案很简单,只需要给它一个打字机和无限长的时间。
这个看起来非常反直觉的论断,源于法国数学家埃米尔・博雷尔1913年出版的一本论述概率的书籍。他在书中提出,“想像有一百万只猴子每天打字十个小时,也几乎不可能打出全世界藏书最丰富的图书馆里所有的书。”
英国物理学家艾丁顿爵士在1928年对此进行了重新诠释:「一整个军队的猴子在打字机上乱敲是有可能写出大英博物馆里所有的书,这件事比一个瓶子中的所有气体分子同时跑到瓶子另一边还有可能发生。」
经过不断引述后,埃米尔・博雷尔当年在书中强调概率的论述发展成了现在的「无限猴子定理」。
01
什么是无限猴子定理?
无限猴子定理可以简单的理解为:有无限只猴子用无限的时间会产生特定的文章。实际上并不需要出现两个无限的事物,一只猴子打字无限次已经足够打出任何文章,而无限只猴子则能即时产生所有可能的文章。
博雷尔原意强调有些物理事件虽然就统计上来说,发生的机率并非等于零。但当它小到微乎其微,在足够长的时间尺度内都还没机会实现,我们就可以当它不可能发生。而从相反的方向,无限猴子定理也可以理解为试图说明“随机+无限=一切可能”。
2003年,一家英国动物园的科学家们抱着求真的态度,“试验”了无限猴子定理,他们把一台电脑和一个键盘放进灵长类园区。可惜的是,猴子们并没有打出什么十四行诗。根据研究者观察,它们只打出了5页几乎完全是字母“s”的纸。
我们几乎无法拥有无限多的猴子,也不能拥有无限多的时间。因此,无限猴子定理几乎不可能在现实生活中重现。但是这并不代表它不正确,因为它可以通过数学来验证。
02
数学中的无限猴子
在数学维度,猴子随机按键打出一本书是一个概率事件。为了更好地解释其中的原理,我们可以先将打出一本书缩小到打出一个单词。
以让猴子在「有 50 个键的打字机上打出香蕉这个词」为例,假设这些键是随机且被独立按下的,就意味着无论之前按下什么键,每个键被按下的机率都均等。
香蕉英文的第一个字母是“b”的机率是 1/50,第二个字母是“a”的机率也是 1/50,以此类推,成功按照banana六个字母拼写的机率不到 150 亿分之一。
除了上面这种情况,猴子还有可能无法按照banana的字母顺序依次打出字母。因为每一段(6个字母)文字都是独立的,连续n段都没有打出"banana"的概率Xn的数学公式表达为
随着n 的增大,X (n)变小。当 n = 100 万时,X (n)大约为 0.9999,当 n = 100 亿,X (n)大约为 0.53(既没有打出“banana”的概率是53%)。假如当 n = 1000 亿,X (n)大约为 0.0017(既没有打出“banana”的概率是0.17%)。
当n趋于无穷大时,X (n) 就趋于零,也就是说,通过让 n 变得足够大,就可以使 X (n) 尽可能变小。
当有1000亿只猴子时,这个概率就会降低到0.17%,并且随着猴子数量n趋于无穷大,没有打出“banana”的概率就会无限趋于0。
那么从打出单个单词的概率回到打出《哈姆雷特》这本书的概率上来,如果不算标点符号、空格、大小写,在26个英文字母基础上,一只猴子随机打出的第一个字母和《哈姆雷特》中相同的概率是
前两个字母相同的概率是:
随着每一次尝试,概率都会呈指数级下降
因为概率发生了指数爆炸,前20个字母相同的概率是
约等于
《哈姆雷特》全文大约包含 130,000 个字母,推算在第一次试验中,猴子有
的概率打出正确的内容。而在打出正确文本前,平均需要输入字母数也会达到
,标点符号为
也就是说,在无穷长的时间后,总会有一个足够幸运的猴子或连续或不连续地打出一本书。
03
从无限猴子到「序列猴子」
如果将打字的猴子抽象为一个可以产生随机字符序列的程序,将《哈姆雷特》看成是一个按照某种规律排列好的字符序列。那么无限猴子的原理和当下的GPT大模型的原理便有异曲同工之处。GPT使用语言模型来进行预训练,并使用了n-gram方法对当前单词进行预测。通俗的说,也就是根据前K个单词来预测下一个单词的概率,并最大化下一个单词出现的可能性。它的数学表示如下,使用了负对数最大似然的损失函数来计算loss:
可以简单的理解为,当识别到banana中的b字母之后,大模型根据b预测下一个字母a的概率,当字母a在所有字母中概率最大的时候它便会选择a,再根据b+a来预测并生成第三个字母n,然后根据b+a+n预测并生成第四个字母a,直到banana包含的6个字母全部生成。
本质上,在打字机上随机敲打键盘的猴子和在GPU上构建算法生成内容的大模型一样,都在计算从无序的字符中产生特定字符排列的概率。
就像无限猴子定理中猴子的数量越接近无限,打字的时间越接近无限,打出《哈姆雷特》的概率越大一样。对于大模型而言,预训练的文本数量越大,模型的算力越大、训练的时间越长,大模型的能力就会表现的越好。
出门问问自研大模型「序列猴子」的名字便脱胎于此,只要喂给机器猴子海量文本序列,然后通过大规模算力去训练它,最终就能练出拥有智能的“序列猴子”大模型。
作为一款专为企业量身定制的创新AI产品,序列猴子企业大模型通过定制企业专属的大语言模型和私有化部署,实现与具有特定行业数据、语气和风格的角色进行个性化自然语言交流,从而提升企业应用场景的专业度和用户体验。
当前,序列猴子大模型已与包括汽车、教育、律所、金融、医疗、旅游等在内的十大行业的伙伴达成合作,将数据放到“序列猴子”中进行训练。