第135章 逻辑与生成的结合(1/2)
虽然方博被那一夜速成的代码震得怀疑人生,但在徐辰眼里,屏幕上那个正在跑的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分数,刷新了世界纪录,从此一战成名。
本章未完,点击下一页继续阅读。