Handwired
将 JavaScript 代码手动翻译为可微分神经网络的开发工具,用 ReLU 和加权求和表达程序逻辑,输出与原代码一致且可微分,权重由手写而非训练得到
时间轴 (近 90 天)
Cheng Lou 的新项目 Handwired 在 GitHub 上发布后不到两天获得 1313 颗星,推特宣布贴获得超过 1 万点赞。
Handwired 定位为将 JavaScript 代码手动翻译成神经网络,无需训练、输出与 JS 完全一致、且完全可微分,但没有工具能自动转换现有 JS 源码,必须手动翻译。
在 Handwired 中,一个比较运算被翻译成一对 ReLU,一个 if 同时计算两个分支再用 0 或 1 的比特混合。
Handwired 的 API 要求为每个输入声明取值范围和网格粒度,然后构建出对声明范围内每个取值都精确成立的比较。
作者将包含五条规则的运费函数翻译成 Handwired 程序,得到 12 层、50 个操作、81 个权重的网络,并在 16,021,602 个输入上与原始函数零误差。
手工折叠 if 分支后,同一运费函数缩减到 7 层、37 个活跃操作,在 1600 万输入上答案完全一致。
Handwired README 的速度声明针对的是 GPU 上的批量求值,例如 JSON 搜索 demo 一次处理 10 万份文档。
在 Handwired 网络中,运费对每公斤费率的偏导为 2,对中等档价格的偏导为 1,对所有阈值(50 美元会员线、100 美元线、500 克、2 公斤)的偏导均为 0。
Handwired 文档说明比较操作回传的是阶跃函数的导数,除了比一个网格步长还窄的缝隙之外处处为零。
使用程序自身的梯度和 Adam 优化器,在 2000 笔随机订单上训练 Handwired 孪生网络,只改价格时,到第 100 步精确学到了 549、949 和每公斤 350,零错误。
还有 5 条时间轴事件
全部知识事实 (15)
Handwired 仓库的测试需要 Bun 运行环境。
50%待验证Handwired 定位为将 JavaScript 代码手动翻译成神经网络,无需训练、输出与 JS 完全一致、且完全可微分,但没有工具能自动转换现有 JS 源码,必须手动翻译。
50%待验证在 Handwired 中,一个比较运算被翻译成一对 ReLU,一个 if 同时计算两个分支再用 0 或 1 的比特混合。
50%待验证Handwired 的 API 要求为每个输入声明取值范围和网格粒度,然后构建出对声明范围内每个取值都精确成立的比较。
50%待验证Handwired 的 issue #1 提出通过估计每个决策点在其翻转位置附近的梯度来解决阈值不可学习的问题,在双栏布局测试中把断点从 500 推到 699.9(目标 720),目前方案还在 fork 分支上。
50%待验证Handwired 项目的 learned gallery demo 展示了一个布局程序内嵌小型网络,网络系数用程序自身的梯度训练。
50%待验证Handwired 使用 32 位浮点,对整数分够用,对浮点金额有风险。
50%待验证Handwired README 的速度声明针对的是 GPU 上的批量求值,例如 JSON 搜索 demo 一次处理 10 万份文档。
50%待验证在 Handwired 网络中,运费对每公斤费率的偏导为 2,对中等档价格的偏导为 1,对所有阈值(50 美元会员线、100 美元线、500 克、2 公斤)的偏导均为 0。
50%待验证Handwired 文档说明比较操作回传的是阶跃函数的导数,除了比一个网格步长还窄的缝隙之外处处为零。
50%待验证使用程序自身的梯度和 Adam 优化器,在 2000 笔随机订单上训练 Handwired 孪生网络,只改价格时,到第 100 步精确学到了 549、949 和每公斤 350,零错误。
50%待验证在同样训练中,当免运费门槛从 100 美元改成 75 美元而价格不变时,阈值在 600 步里一直停在 100 美元,梯度始终为零,均方误差从 245,000 到 243,380 几乎未变。
50%待验证作者将包含五条规则的运费函数翻译成 Handwired 程序,得到 12 层、50 个操作、81 个权重的网络,并在 16,021,602 个输入上与原始函数零误差。
50%待验证手工折叠 if 分支后,同一运费函数缩减到 7 层、37 个活跃操作,在 1600 万输入上答案完全一致。
50%待验证Cheng Lou 的新项目 Handwired 在 GitHub 上发布后不到两天获得 1313 颗星,推特宣布贴获得超过 1 万点赞。
50%