虽然方博被那一夜速成的代码震得怀疑人生,但在徐辰眼里,屏幕上那个正在跑的demo,其实……
很简陋。
甚至可以说是“丑陋”。
“demo虽然跑通了,证明了『逻辑嵌入这条路是可行的。但是,”徐辰看著代码里那几行关於盒子体积的计算公式,眉头微微皱起,“这个数学模型,太粗糙了。”
现在的模型,是用“超矩形”来表示概念。比如“猫”是一个小盒子,“动物”是一个大盒子。
这种表示法虽然直观,但在数学上有一个致命的缺陷——梯度硬截断。
当两个盒子完全没有交集时,体积重叠为0,梯度也瞬间变为0。这就意味著,反向传播在这里断掉了,神经网络学不到任何东西。为了解决这个问题,徐辰在代码里加了一个很丑的“平滑项”,但这只是权宜之计,治標不治本。
“这就像是用一堆方块去拼一个圆,无论怎么拼,边缘永远是锯齿状的。”
徐辰的数学强迫症犯了。
“必须要优化。我需要一个更『光滑的几何结构。”
他的大脑飞速运转,lv。2的数学直觉开始接管键盘。
“为什么非要用盒子呢?”
【写到这里我希望读者记一下我们域名101看书网书库广,????????????。??????任你选】
“逻辑的本质是『偏序关係。在向量空间里,能完美表达偏序关係的,不一定是闭合的盒子,也可以是……锥!”
“或者,引入高斯分布,利用kl散度来衡量包含关係?”
“不,高斯分布也不够好,它的尾部衰减太快,难以表达传递性。”
徐辰在草稿纸上画了几个图形,最终,他的笔尖停在了一个特殊的流形结构上。
gumbel-box(甘贝尔盒子)。
“如果引入极值理论中的gumbel分布来对盒子的边界进行模糊化处理,就能让原本刚性的边界变得『柔软且处处可导。”
“这样一来,逻辑推理就不再是生硬的『是或『否,而是一个连续的概率流!”
……
“不过,还有一个逻辑上的漏洞。”
徐辰看著屏幕上新生成的gumbel-box模型代码,敏锐地捕捉到了一个潜在的问题。
“如果我把逻辑边界变得『平滑了,变成了一个连续的概率流,那这和传统的transformer有什么本质区別?transformer也是输出一个概率分布,预测下一个词是『猫的概率是80%,是『狗的概率是20%。”
“如果我的模型也只是输出一个软绵绵的概率,那它依然可能会在那20%的时候胡说八道。”
“必须要有一把锁。”
徐辰的眼神变得犀利起来。
他迅速在代码的输出层之前,插入了一个全新的模块——逻辑门控单元。