“很多“夺旗(CTF)”风格的机器学习谜题,通常会给你一个“黑盒”神经网络,让你猜它能干什么。但华尔街顶级量化交易公司 Jane Street 觉得这太无聊了。”
于是,他们反其道而行之:给了挑战者一个“全透明”的白盒网络——包含完整的模型说明、所有的权重参数,一览无余。 挑战者必须使用“机制可解释性(Mechanistic Interpretability)”的工具来逆向工程这个网络。
谜题发布之初,连出题人都不确定是否有人能解开。但事实证明,永远不要低估人类的极客精神……
第一幕:神秘的“新石器时代”张量
谜题的背景故事是这样的:
“今天我爬山时,在一个新石器时代的墓穴下发现了一堆隐藏的张量!当地的‘神经管道工’勉强把它们拼凑成了这个文件:model.pt。
我不知道它是干什么用的,但它对过去那个文明一定很重要。或许可以从最后两层开始看起?
模型输入: vegetable dog
模型输出: 0
如果你解开了,请告诉我们。”
这个 model.pt 本质上就是一个打包好的 PyTorch 模型。
对于绝大多数输入,这个模型都会输出 0。常规的解题思路可能是:通过反向传播,强行找出一个能让输出为 1 的输入。但Jane Street在设计时就堵死了这条路,你无法用传统的暴力破解法,你必须真正搞懂这个网络在“想”什么。
第二幕:大学生的“硬核”拆解
一位大四学生 Alex 在宿舍听室友抱怨了这个在 Twitter 上疯传的谜题(室友熬了两个通宵后放弃了)。正值毕业前的冬天,闲来无事的 Alex 决定接下这个挑战。
他下载了模型,听从提示,直接拉出了最后一层的权重图:

这根本不是一个普通的神经网络! 它显然没有经过机器学习的“训练”——所有的权重都是整数。这绝对是有人为了执行某种极度特定的计算,纯手工“捏”出来的。
Alex 发现,倒数第二层的 ReLU 网络包含三个重复的权重,而它的偏置项(Bias)包含相同的16个字节,依次递增。


经过一波严密的逻辑推演,Alex 意识到了真相:最后两层实际上是在判断两个 16 字节的整数是否相等。 只有当输入的 16 个字节与倒数第二层偏置项中隐藏的“目标值(x)”完全一致时,最后一层的神经元才会触发(输出 1)。
目标明确了: 网络前面的部分是一个巨大的方程,我们需要逆推输入,让它等于这个目标值 x。
第三幕:陷入死胡同的“暴力美学”
既然是个大方程,能不能直接用求解器解开?
Alex 查看了整个网络的结构,发现它包含 2500 多个线性层。这太庞大了!



于是,他开始了一场疯狂的“图网络化简(Graph Reduction)”:
- 合并节点: 很多层的权重恰好是 1,这就相当于恒等变换,可以直接合并。
- 跳过 ReLU: 如果一个节点的所有入边权重都是正数,那 ReLU 的截断就毫无意义,直接把边传给下一层。
- 合并同类项: 输入完全相同的神经元也被他合并了。
一顿操作猛如虎,Alex 把网络从 200万个节点,硬生生压缩到了 7.5万个。接着,他写了一个 SAT 求解器(布尔可满足性问题求解器),跑了一整天,把变量压缩到了 2万个。
然后,求解器卡死了,再也无法推进。
Alex 意识到:这个神经网络的核心,包裹着一段“不可约化的复杂程序”。暴力破解,宣告失败。
第四幕:峰回路转,ChatGPT立大功
“如果这是一个人类设计的有趣谜题,核心又是一个不可逆的函数……” Alex 开始跳出代码,用产品经理的思维思考,“最经典的不可逆函数是什么?哈希函数!”
他观察了网络层宽度的变化图——它呈现出完美的周期性:包含 32 个周期,每个周期长度为 48。
Alex 转身去问 ChatGPT:“有什么常见的哈希函数,是使用 32 个计算块的?” ChatGPT 回答:“差不多所有的经典哈希函数都是。”
经过手工比对,Alex 确认:这竟然是一个硬编码在神经网络里的 MD5 哈希算法!
由于目标哈希值(x)早就写在了倒数第二层的偏置项里,现在的问题变成了:找出一个特定的字符串,它的 MD5 哈希值刚好等于 x。
第五幕:意外的 Bug 与最终的胜利
在调试中,Alex 发现了网络的一个诡异 Bug:如果输入的长度超过 32 字节,它算出的 MD5 就是错的!前7层在处理长度超过 256 bit 的输入时,会出现小端序编码错误。
他花了整整两天时间逆向分析这个 Bug,试图利用它来反推哈希值。毫无进展后,他发邮件给 Jane Street 官方。
官方的回复让他哭笑不得:“那个 Bug 是我们不小心写错的(汗)……既然你都推到这一步了,再试最后一次吧?”
事实上,官方在 Python 代码和描述中留了暗号:正确答案是由两个英文单词组成的(小写,中间加空格)。
Alex 之前尝试过跑字典破解,但他用的是“最常用的1万个单词”表,容量太小。这次,他换了一个庞大的英文词库,瞬间跑出了答案,成功通关!
尾声:Jane Street 的硬核浪漫
设计这样一个谜题并不容易。为了在没有逻辑门(不可导)的神经网络里实现 MD5 的模加法,Jane Street 的研究员用 20 多层神经网络硬核实现了一个“并行进位加法器”!
Jane Street 官方对 Alex 的表现惊叹不已:“你能发现那个我们都没注意到的长度 Bug,简直太不可思议了!”
为什么要做这种事? 在量化交易的真实战场上,研究员们经常需要面对庞大复杂的黑盒模型,并试图解释其中的特征。这种“逆向工程”能力,正是顶尖量化机构最看重的特质。
彩蛋与新挑战!
既然大家这么喜欢被虐,Jane Street 又出了第二弹全新谜题! 这一次:一个神经网络的所有层被完全打乱了,你的任务是把它们重新拼回正确的顺序……
👉 新谜题地址: huggingface.co/spaces/jane-street/droppedaneuralnet

你能成为下一个解开华尔街天才谜题的人吗?
参考链接: https://blog.janestreet.com/can-you-reverse-engineer-our-neural-network/