{"id":"mb-20261016-eafb70","kind":"deep","title":"手写9909个权重在浏览器跑OS：Handwired如何把代码编译进神经网络","summary":"前React核心团队工程师Cheng Lou开发出Handwired编译器，利用ReLU激活函数将经典代码的条件分支与循环编译为神经网络权重。在未经任何数据训练的情况下，仅靠9909个参数便在浏览器中完整运行轻量桌面系统，并实现了可被后续训练微调的确定性技能嵌入。","body":"一行数据都没训，他用九千个数字在浏览器里跑起了操作系统。\n\n9909 个数字，其实就是一个神经网络的全部权重。\n\nGPT-2 最小的版本都有 1.2 亿个参数。\n他这个只要不到一万个，比 GPT-2 小了一万两千多倍，普通 CPU 就能跑。\n\n这怎么做到的？\nAI 神经网络不是靠海量数据算出来的吗，怎么能人工手写？\n\n把他的招式拆开看，连手机计算器都能验。\n\n写过代码的都知道，最基础的逻辑就是条件分支：\n如果 a 大于 4，输出 10；否则，输出 12。\n\n但神经网络没有 if-else 这种指令。\n它本质上就是算术，只会做乘法加法，外加激活函数。\n\n怎么让神经网络做选择？\n\n他找了一个极其基础的激活函数 ReLU。\n规则就一条：负数进来全部变 0，正数原样出去。\n\n然后他写了一个算式：\nrelu(a - 4) 减去 relu(a - 5)。\n\n把 5 代进去试一下：\n5 减 4 等于 1，relu(1) 是 1；\n5 减 5 等于 0，relu(0) 是 0。\n1 减 0，结果是 1。\n\n那要是把 4 或者更小的数字代进去呢？\n两边都是 0，减完还是 0。\n\n只要 a 大于 4，算出来的就是 1；只要不大于 4，算出来的就是 0。\n\n接下来把 1 乘以 10，把剩下的乘以 12，加在一起。\n两个神经元，就把一个条件分支给硬生生拼出来了。\n\n把几千个这样的结构叠在一起，就有了循环、内存、滚动条和窗口拖拽。\n整整 130 层网络，在网页里渲染出真实的 DOM 元素，打开控制台就能直接点。\n\n做出这套东西的人叫 Cheng Lou，以前是 Facebook React 核心团队的工程师。\n他把自己写的这个编译器叫做 Handwired。\n\n你把普通代码喂给它，它吐出来的不是机器指令，而是神经网络需要的精确权重。\n每一颗参数在进网络之前，就已经知道自己的任务了。\n\n代码一旦转成这种数学形式，还捡到了一个便宜：\n它能直接跑在显卡上。\n\n他用传统单步遍历写了一个 JSON 搜索，编译成权重，扔给显卡去搜 10 万份文档。\n14 毫秒搞定。\n比浏览器自己内置的模式匹配还快了 5 毫秒。\n\n不过对做 AI 的人来说，这件事最大的价值还不在速度上。\n它打开了第三种可能。\n\n现在我们想让模型掌握一项具体技能，通常只有两条路：\n要么喂几百万条样本训练，靠概率去碰，谁也不敢保证每次都算对；\n要么在外面给它挂一个计算器或 API 工具，虽然精确，但模型自己的权重根本碰不到工具内部，没法跟着调整。\n\nHandwired 走的是第三条路：\n把确定的技能写成代码，编译成权重，直接焊进神经网络内部。\n第一天它就是百分之百精确的；\n更重要的是，因为它是权重，可以反向传播，后续还能继续用训练去微调。\n\nCheng Lou 做过一个演示，把编译好的程序焊在 nanoGPT 上。\n同一个模型，一边能写莎士比亚风格的文本，一边能精准执行 JavaScript。\n解冻排版程序的权重后，随手在屏幕上画矩形框，里面的照片就能自己学会自适应布局。\n\n当年 Karpathy 把神经网络比作 Software 2.0，意思是靠数据训练出来的软件。\n现在这条路反过来了：把我们写了几十年的经典代码，编译成了神经网络能直接消化的权重。\n\n以后的软件或许真的会切成两半：\n确定的规则踏踏实实用代码写死，编译进去；\n那些模糊复杂的现实世界，留给训练慢慢消化。","topic":"手写9909个权重在浏览器跑OS：Handwired如何把代码编译进神经网络","frame_type":["机制"],"citations":[],"channel_note":"","identity_notice":"","source_type":"generated","status":"published","generated_at":"2026-10-16 21:19:21","legal_anchor_count":0,"transcript_citation_count":0}