虽然方博被那一夜速成的代码震得怀疑人生,但在徐辰眼里,屏幕上那个正在跑的demo,其实……
很简陋。
甚至可以说是“丑陋”。
“demo虽然跑通了,证明了『逻辑嵌入』这条路是可行的。但是,”徐辰看著代码里那几行关於盒子体积的计算公式,眉头微微皱起,“这个数学模型,太粗糙了。”
现在的模型,是用“超矩形”来表示概念。比如“猫”是一个小盒子,“动物”是一个大盒子。
这种表示法虽然直观,但在数学上有一个致命的缺陷——梯度硬截断。
当两个盒子完全没有交集时,体积重叠为0,梯度也瞬间变为0。这就意味著,反向传播在这里断掉了,神经网络学不到任何东西。为了解决这个问题,徐辰在代码里加了一个很丑的“平滑项”,但这只是权宜之计,治標不治本。
“这就像是用一堆方块去拼一个圆,无论怎么拼,边缘永远是锯齿状的。”
徐辰的数学强迫症犯了。
“必须要优化。我需要一个更『光滑』的几何结构。”
他的大脑飞速运转,lv.2的数学直觉开始接管键盘。
“为什么非要用盒子呢?”
【写到这里我希望读者记一下我们域名 101 看书网书库广,????????????.??????任你选 】
“逻辑的本质是『偏序关係』。在向量空间里,能完美表达偏序关係的,不一定是闭合的盒子,也可以是……锥!”
“或者,引入高斯分布,利用kl散度来衡量包含关係?”
“不,高斯分布也不够好,它的尾部衰减太快,难以表达传递性。”
徐辰在草稿纸上画了几个图形,最终,他的笔尖停在了一个特殊的流形结构上。
gumbel-box(甘贝尔盒子)。
“如果引入极值理论中的gumbel分布来对盒子的边界进行模糊化处理,就能让原本刚性的边界变得『柔软』且处处可导。”
“这样一来,逻辑推理就不再是生硬的『是』或『否』,而是一个连续的概率流!”
……
“不过,还有一个逻辑上的漏洞。”
徐辰看著屏幕上新生成的gumbel-box模型代码,敏锐地捕捉到了一个潜在的问题。
“如果我把逻辑边界变得『平滑』了,变成了一个连续的概率流,那这和传统的transformer有什么本质区別?transformer也是输出一个概率分布,预测下一个词是『猫』的概率是80%,是『狗』的概率是20%。”
“如果我的模型也只是输出一个软绵绵的概率,那它依然可能会在那20%的时候胡说八道。”
“必须要有一把锁。”
徐辰的眼神变得犀利起来。
他迅速在代码的输出层之前,插入了一个全新的模块——逻辑门控单元。
“gumbel-box的平滑性,是为了在训练阶段让梯度能够流淌,让模型能『学会』逻辑。但在推理阶段,也就是真正上考场的时候,这个平滑的边界必须瞬间『硬化』。”
他在草稿纸上画了一个陡峭的sigmoid函数。
“我设定一个逻辑置信度閾值t(第十九个希腊字母,念做“套”)。当两个概念在几何空间里的重叠体积低於这个閾值时,说明它们在逻辑上几乎不相容,比如『猫』和『植物』。”
“这时候,门控单元会像一把闸刀一样落下,直接將这个路径的概率强行截断为0!”
“传统的llm是『我觉得应该这么说』,而加了门控的laart是『虽然我想这么说,但几何逻辑告诉我,这么说是错的,所以我闭嘴』。”
“这才是完美的逻辑与生成的结合。”
解决了这个关键的机制问题,徐辰终於满意地点了点头。
……
搞定了数学模型的优化,摆在徐辰面前的,是另一个棘手的工程问题。
benchmark(业內普遍直接用英语称呼,意思是基准测试)怎么选?
做ai研究,光有模型没用,你得拉出来溜溜。你得在公开的测试中,把以前的模型,比如transformer、bert、gpt等给考倒了,別人才承认你牛逼。
当年的transformer为了证明它比以前的rnn和lstm强,google团队选择了“英德机器翻译数据集”。
这是一个非常经典的任务。评价標准是bleu分数,也就是看机器翻译出来的句子,和人类翻译的句子,在词汇重叠度上有多高。
transformer在那场考试中,以28.4的bleu分数,刷新了世界纪录,从此一战成名。
“但是。我的模型优势不在於『翻译』,也不在於『文本生成』的流畅度。”
现在的gpt模型,靠著海量的语料堆砌,已经是天生的语言大师了。让laart去跟它们比谁写诗写得好,谁翻译得溜,那是拿自己的短处去碰別人的长处。
laart的核心优势是什么?
是逻辑。
是永远不会说“猫是植物”,永远不会在做三段论推理时出现“a>b, b>c,所以a<c”这种弱智错误的严谨性。
“用翻译数据集测逻辑,就像是考爱因斯坦背单词,根本测不出智商。”
“我需要一套专门考『逻辑推理』的卷子。”
他在arxiv和github上飞速检索。
很快,几个备选方案浮现在眼前。
1. snli (stanford natural language inference):斯坦福自然语言推理数据集。给两句话,判断它们是“蕴含”、“矛盾”还是“中立”。这是最经典的nli任务。
2. squad (stanford question answering dataset):阅读理解问答。这个稍好一点,但也侧重於信息提取。
3. clutrr (compositional language understanding and text-based relational reasoning):基於文本的关係推理。
徐辰的目光最终锁定了最后一个数据集clutrr。
……
clutrr这个数据集很有意思。它会给你一段像绕口令一样的故事:
“爱丽丝的妈妈是鲍勃的姐姐,鲍勃的儿子是查理。”
然后问你:“爱丽丝和查理是什么关係?”
这不仅需要模型读懂文本,更需要在脑子里构建出一张“家谱图”,进行多次的逻辑推理,才能得出正確答案。
对於传统的transformer模型来说,这是个噩梦。因为transformer本质上是在算“词与词之间的相关性”,它並没有真正的逻辑推理模块。它可能会因为“妈妈”、“姐姐”这些词出现的频率,瞎猜一个“姨妈”或者“奶奶”。
但对於装载了“逻辑几何嵌入”的laart来说……
这简直就是送分题!
在徐辰的数学模型里,“妈妈”、“姐姐”、“儿子”这些关係,会被映射为向量空间里的几何变换算子。推导关係,不过就是做几次向量加法和包含运算而已。
“就选它了!”
徐辰打了个响指。
……
徐辰心情大好,转过身准备拿水杯喝口水。
然而,刚一回头,他就嚇了一哆嗦,杯子里的水差点洒出来。
只见身后,方博、薛超、刘鑫羽三个人,不知何时已经站成了一排。三人双手抱胸,六只眼睛直勾勾、阴森森地盯著他
空气安静得有些诡异。
“呃……”徐辰端著水杯的手僵在半空,嘴角抽搐了一下,尷尬地笑了笑,“你们……怎么都站在这儿?这么閒?不用学习吗?”
“学习?”
方博冷笑一声,痛心疾首地指著徐辰。
“徐神,你老实交代,你不在燕园那个独立公寓里待著,特意跑回咱们这又挤又乱的301,是不是就是为了回来装个逼?”
“啊?”徐辰一脸无辜,“我不是为了找你修开发环境吗?”
“修环境需要顺手修出一套人工智慧算法吗?!”方博悲愤地喊道,“你考虑过我们这些还在跟bug互啄的小萌新的感受吗?”
一旁的薛超也长嘆了一口气,走过来拍了拍徐辰的肩膀:
“老徐,真的,算兄弟求你了。以后这种装逼的活动,能不能去祸害別的宿舍?或者去图书馆、去食堂都行。”
“別一直指著我们301这几个人装了,大家都是两个肩膀扛一个脑袋,你这样显得我们真的很像游戏里来凑数的npc,很伤自尊的好不好?”
徐辰无奈地摇了摇头,忍不住笑骂道:“行了,別贫了。等我这个模型发了顶刊,请你们吃大餐,行了吧?”
“顶刊?”方博耳朵一动,瞬间变脸,一脸諂媚地凑过来接过徐辰的水杯,“哎哟,徐神大气!那我要吃西门那家日料!最贵的那种!来来来,水凉了我给您续上!”
“准了。”
“得嘞!徐神您继续忙,小的绝不打扰您修仙!”