MoreRSS

site iconJoway修改

工程师,新加坡字节跳动,喜欢摄影、旅行。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Joway的 RSS 预览

LLM 训练与推理的基本理解

2026-05-17 08:00:00

学习一个技术最好的方式就是能够写一片文章把这个技术的原理解释清楚,本文记录了我在阅读 《Build a Large Language Model (From Scratch)》一书以及和 Claude Code 对话过程中的笔记,仅供参考。

术语解释

向量点积

定义:向量点积为标量

a = (a1, a2, a3)
b = (b1, b2, b3)

a · b = a1*b1 + a2*b2 + a3*b3

几何意义:

a · b = |a| |b| cos(theta)

其中 theta 是两个向量的夹角。

用途:衡量向量相似度

矩阵转置

符号表示:Kᵀ

定义:

A =
1 2 3
4 5 6

Aᵀ =
1 4
2 5
3 6

线性层

假设某个词的向量是 2 个数字:x = [2, 5]。我要 3 个输出,就准备 3 个配方(权重和偏置都是训练学出来的数字):

昨日的世界不再重来

2026-03-30 08:00:00

最近在做一个思想实验,如果你面前有一个按钮,按下就可以让 AI 从世界上消失,你是否会按下。身边很多朋友的答案都是会毫不犹豫的按下,即便有一些人还是那种最拥抱 AI 的人。

拥抱 AI 和厌恶 AI 可以同时在一个人身上发生,我自己就是这样的人。我厌恶 AI,是因为对昨日世界的怀念,我拥抱 AI,是因为今日世界无法回退,我没有不拥抱的选择。

现在的 AI 虽然可以代替我完成很多事情,但是在事情完成后,带给我的并不是成就感而是一种无尽的空虚。有了一个 idea,找一个趁手的模型,用几句提示词让 AI 吭哧吭哧干活,再做几轮调整,最后几个小时项目完成了,剩下一段贤者时间,你不知道这个项目数据库的 schema,也不确定架构是否能支撑多少的用户规模,未来有新的需求,你只能对着这个黑盒许愿,在许愿前完全没有关于需求可行性的任何概念。当 AI 给你完成了修改后,你不知道会不会损坏已有的用户的数据,只能按照 AI 的要求上线。一通操作下来,身体很累,精神很空虚,干了一天的活,又好像什么也没干。伫立在这个黑盒面前,反反复复操作几个月,不知道自己究竟学到了什么。AI 有了更多的数据,一天天变得更聪明,而我们自己呢?

在昨日的世界,虽然我们工作很累,但是工作结束会有一种智力的满足。当其他人来咨询某个需求是否可行,我们可以给出斩钉截铁的答案。当需求可行的时候,我们知道需要修改哪些地方让它可行,当需求不可行的时候,我们知道因为哪些原因所以它不可行。我们面对的是一个充满确定性的世界,我们确定昨天的工作,确定明天的工作,确定自己的职业生涯,确定未来能够有一份收入养家糊口生儿育女。今日的世界一切都不确定,不确定昨天做了什么,不确定明天会做什么,不确定这每天光聊天的工作能否有职业生涯,不确定未来什么样的人才可能凌驾于 AI 之上能有一份糊口的工作。

今日的世界互联网的整体审美也在逐渐倒退。互联网到处充斥着用 AI 生成的机械感十足的图片,也没人在乎是否是真的符合自己脑海中想象的模样,只要和提示词差不多能用即可。各种「高效率人士」用 AI 创作着各种垃圾的文章,宣扬自己最高效的工作流,攀比着各自的 token 消耗量和同时并行启动的 Agent 数量。每天都把一些简单的步骤封装出各种下一个月就会消失的名词概念,并以自己掌握的名词数量而沾沾自喜。

我时常在刷新推特时间线的时候,感受到自己是在一群推土机中漫步,页面滚动,一颗颗大树被连根拔起,群众在欢呼,木匠们做出一件件精美的家具。而我只想回到自己的瓦尔登湖旁边,但是小木屋也早已被掀翻,地上留着一张告示,顺之者昌逆之者亡。

Magic Brush - 画出你自己的产品宇宙

2026-03-05 08:00:00

上周末用 AI 写了一个新的产品: Magic Brush

这个产品的 idea 来自于我经常用 AI vibe coding 一些小的前端产品,但是如果每次都为这些小产品创建独立的域名和部署太过于繁琐,而且目前也缺乏一个聚合站点可以浏览其他人创建的小产品。另外,我在写博客的时候,也经常会想要插入一些交互页面来展示我的 idea,但是如果要在博客里插入一堆 js/css 代码又会导致博客无法长期维护。我把这些需求收集了下,整理并抽象出了一个产品形态:

这个产品可以允许用户使用自然语言创作页面,然后通过 iframe 嵌入到任意网页中去。并且这个产品还可以有一个广场功能,可以看到其他人的作品。不仅仅能用来做博客的交互页面插入,也可以作为产品原型设计的工具。

产品设计

Magic Brush 由 2 主要页面组成。

页面设计页

用户可以在设计页右边会话框写自己的提示词与 AI 交互,左边的页面会实时渲染最新的页面。其他用户可以以只读的方式访问该页面,并且也能看到提示词,方便其他人模仿修改并创建自己的页面。

广场页

广场页面允许看到所有 Public 的页面设计,可以以 Like 数量排序或者时间排序:

Use Cases

创作可交互文章

对于有些文章来说,文字并不是最适宜的表达载体,例如游记。你可以把你的游记喂给 AI 生成可交互的页面,然后再插入到文章中。例如我的 «熊野古道中边路纪行» 游记中,可以被转变为:

创作流程图

传统流程图需要用截图的形式插入到文章,导致不易修改。我们可以让 AI 生成流程图页面,然后直接插入到文章中,并且后续实时渲染最新的修改。

创作自定义工具

你还可以根据自己需要,写一个自己用的趁手的前端工具,例如:

甚至能在网页上插入一个小型浏览器:

这些工具都能用 https://brush-api.elsetech.app/pages/cJ3w_m4e3K 的方式作为工具本身全屏打开。

实现过程

Magic Brush 的实现非常简单优雅,整个 Design Agent 在前端运行,后端代码无法拿到用户的 API Token。后端部署在 Cloudflare Worker 上,数据库使用 Cloudflare R2 。整个产品的维护成本接近于 0,除非用户变多。

Design Agent 的设计与传统 Code Agent 类似,约束是产出只能是一个 HTML 文件。在最开始的时候模型会返回一个根据初始提示词生成的 HTML 页面作为起始文件,而在后续 Modify 过程中,只允许调用一系列 tool call 来修改页面,最大化减少了 token 的消耗。

写在 AI Coding 奇点之后

2026-02-26 08:00:00

说来惭愧,我已经好几个月没有完全手写代码了,甚至像是把某个变量改一个名字这种活我都宁愿输入更多字符告诉 AI 来做而不是自己直接改了,因为我知道,哪怕是变量重命名这种简单的活,AI 也能做的比我仔细,它会检查所有用到这个变量的代码、相关的注释以及单元测试,然后一并都修改了,而我自己其实历史上就犯过不少忘记修改关联地方的错误。

过去一两年的时间,AI Coding 引来了飞速的发展,就我的个人体验而言,大概经历了三个阶段。AI Coding 1.0 时代,AI 只是简单给你提供代码补全,代码总体还是人在写。而在 AI Coding 2.0 时代,人更像是在指导 AI 写代码,一次 prompt 只能高质量地写一百来行代码,你需要仔细检查代码是否符合你的需求。而最近两个月的时间,AI Coding 3.0 来到了一个奇点时刻,你甚至都不需要精心设计你的 prompt,只要简单描述下需求,AI 自己会根据代码上下文,以极高质量生成成千上万行代码,而人无论是体力还是智力已经无法 review AI 的代码,只能粗浅把握一个编程方向。在两个月之前,我或许还会认为过去的编程工作还能继续苟活一两年的时间,而现在我认为此刻所有传统的编程工作已经在事实上被淘汰,我们这些传统程序员之所以还没有被开除的原因仅仅只是公司自己在制度流程上还没有完全适应 AI 作为员工的方式,而这个适应过程可能会持续几年之久。

在完全不手写代码的这几个月里,我时常在 AI reasoning 的间隙问自己到底在做什么。我似乎做着完全没有技术含量的『传话』工作,但与此同时,如果真要把我淘汰直接让 PM 和 Agent 对话,似乎也很难实现他们的需求,而且出事的风险极高。这意味着我依然在提供自己的价值,只是这个价值无法再被很好的「可视化」。我之所以比 PM 能让 AI 更好地干活是因为我具备一些专有的知识,这些知识的产出可能仅仅只是一个 Yes 或 No,但这不影响他们的价值。我之所以会觉得浑身难受的原因还是之前的日子过得太苦,觉得必须一定要自己手动干很多活才能体现自己的价值,没有真正把自己从一个「劳动者」换位到「管理者」。一个好的管理者肯定不是办公室里最忙碌的那一个人,那些做出对公司最有价值决定的管理者最终的产出也无非就是一个 Yes 或 No。能力强的员工往往希望老板管理的越少越好,AI Agent 也是如此。

我们已经近乎实现了 Coding 的自动化,但是在一个公司里,Coding 只是整个公司工作的很小一部分,甚至都只是程序员工作的一小部分。我们现在拥有了一个无限智能的机器,但是整个公司运行制度都是面向人类设计的,Agent 需要发挥能力必须建立一个正向的 Loop,现在的 Loop 仅仅只建立在 Agent 内部,公司的每个环节与 Agent 并没有建立起这个 Loop,甚至连 Input/Output 渠道都没有建立。未来 Agent 会进一步渗透进整个公司一切流程的方方面面,不仅改变软件工程师的工作内容,也会改变产品经理,HR等一切职能的工作内容。我觉得这些传统工作岗位的消失会成为必然事件,但并不意味着不会创造新的工作岗位。最可能发生的事情是工作岗位从过去的不断细化的趋势开始变得不断泛化。现在你还在那区分前后端工程师属实是一个笑话,各种软件工种现在都可以统称为工程师岗位,如果一个后端工程师现在还写不好前端需求只能说明你不是一个合格的工程师。而所有工程师的工作会变成编排管理成百上千 Agent 的编码任务,解决 Agent 运行过程中遇到的无法自我解决的问题,帮助公司完善流程让 Agent 干活干得更舒心。

尼泊尔布恩山小环线纪行

2026-01-11 08:00:00

2025 年 12 月跨年之际,为了赶在假期作废之前销假,我报了国内稻草人的一个徒步团,前往尼泊尔安纳普尔那山区进行了为期四天的 Poon Hill 小环线徒步。

尼泊尔最有名的两条徒步线路分别为 EBC 和 ABC。就 EBC 而言,我目前的身体状态和高海拔徒步经验远不足以应对,ABC 相对简单一些,但是依然有高反的风险。由于我印象里自己似乎从未到达过海拔超过 3500 的地区,所以我对自己身体适应高原反应的能力完全没有认知,于是就退而求其次报名了最高登顶海拔 3800 米,最高过夜海拔 3200 米的 Poon Hill 小环线,以此作为我高海拔徒步的入门路线。

Day 1

第一天的路程主要以爬升为主。从 Ghandruk 到 Tadapani,累计爬升 1116 米,下降 112 米,住宿海拔 2718 米。

第一天的景色比较一般,全程主要在林子间穿越,最后还走了一小时不到的夜路才抵达住宿点。

Day 2

第二天路程较短,但是徒步海拔较高。从 Tadapani 上升到 Dobato,累计爬升 848 米,下降 108 米,住宿海拔 3456 米。

早上起来,我们就在 Tadapani 看到了壮丽的安纳普尔纳南峰和鱼尾峰的日照金山:

这一天的路上我们还时不时能从林子缝隙里从不同角度看到这两座山峰的容貌,在路程末尾还看到了道拉吉里峰和Tukuche peak。

这一天我来到了有生以来最高的过夜海拔,在路上的时候倒还是适应,但是到了住宿的地方休息了一阵子之后,发现一做剧烈动作就有点晕,问了下 ChatGPT 似乎是这个海拔的正常轻微高反表现。这天气温也特别的冷,住宿条件也不高,甚至房间还有点漏风。

2025 投资组合年报

2026-01-08 08:00:00

2025 年,股市经历了政治的风云变化,也经历了 AI 浪潮的大洗礼。我的整体投资组合也引来了巨大的变化。这一年,标普 500 的年回报是 16.35%,而我的投资组合的回报只有 4.0%,远远跑输了标普 500。

其实在 2024 年底 的时候,我还有 86.4% 的持仓还是在 VOO 和 QQQ 两大ETF,那时候 AI 浪潮才刚起步,世界政治局势也波澜不惊,在我不需要大量现金支出的情况下,这样的持仓非常舒服。

然而川普上台后,在 4 月疯狂玩弄世界经济,而美国的政体却对这样的疯子没有一点制裁的办法,甚至还有一堆拥趸对其齐呼万岁,这彻底动摇了我对美国体制的信心。所以在四月大跌到一半的时候,我大幅度卖出了美股的持仓,在下跌到接近最低点的时候,又卖出了一批,卖出的资金后续陆续投向了美债市场和新加坡股市。当时伴随着美国股市,新加坡股市也引来了大跌,许多优质股如 DBS 引来了历史最佳位置,所以我乘机入手了一些 DBS 和海峡指数基金。

然而后半年让我意想不到的是,标普 500 依然表现强劲,即便川普继续做了更多疯狂的操作,美股似乎依旧不为所动,持续创下历史高位。所以从后视镜看,我的调整无疑是失败的,但我的目标始终是建立一个稳健可持续并舒服的资产组合,从这个角度来说,我目前的组合是真正能符合我的目标的。我现在的持仓基本维持着股债分别占 50% 的水平。其中股票部分里,26% 在新加坡股市。

在绝大部分情况下,这样的组合基本可以让我一整年都不需要特别关心股市,实际上我可能现在打开证券软件的频率是一个月一两次。在美股大涨的时候,我的收益也不会差的特别多,美股大跌的时候,我甚至会特别开心,因为终于可以操作调仓补进美股了。

但是我有一件事情其实到如今也想不明白的是,这一次的调仓,究竟是我对美国信心的动摇,还是我因为下跌而恐慌了。如果是因为后者,我就无法原谅自己了,因为在美股下跌的同时,我还有另一个稳健账户里存有不少的新加坡国债,我完全可以动用那笔国债进行抄底,这对我的持仓组合来说是巨大的天赐良机。但如果我是因为真的对美国的信心动摇,那么我的操作就是正确的至少是不应该后悔的。即便我十分擅长反思自己,但我至今也无法分辨自己当时的心态属于哪一种。我也深刻认识到「知行合一」的困难,它远远不是你知道了某件事然后就去做某件事这么简单,而是反过来,你做了某件事,你却不知道自己是因为哪一种「知」而做了这件事。而人性往往会倾向于帮你选择那一个你最希望的「知」来合理化你的行为,最终真正的「知」就消失在了一堆道不清的妄念之中了。你脑子里所臆想的你自己也会远远和你实际行动塑造的真实自己所背离。

哎,学吧,太深了!