【LLM 日報】2026 年 06 月 09 日 — 把視覺模型的大腦拆開來看、Coding Agent 的說明書到底有沒有用?
禮拜一的 LLM 圈略顯平靜,但今天有兩件事值得聊:一篇超用心的互動式長文,帶你親手拆解視覺模型 DINOv3 的「384 維大腦」;還有 Sebastian Raschka 拋出一個很實際的問題——AGENTS.md 這種給 AI 看的專案說明書,真的有用嗎?偏少的新聞日,我順便補一個冷知識。
🔥 拆解 DINOv3 的 384 維大腦:用 SAE 把視覺模型的「概念」一個一個掏出來
Preston Jensen 在個人部落格上發表了一篇堪稱藝術品的互動式長文,主題只有一個:視覺模型 DINOv3 的那 384 個 embedding 數字,到底在 encode 什麼?
DINOv3(Meta 團隊 Siméoni 等人 2025 年發表)是一個很有趣的視覺模型——它不懂語言、不會描述它看到了什麼,但就是能把任何圖片壓縮成 384 個數字,而且同一張圖的不同裁切和增強版本,embedding 會長得很近。Jensen 的目標很明確:把這 384 個數字翻譯回人類看得懂的東西。
從 embedding 生出圖片
第一步,先解決「怎麼從 384 個數字反推回圖片」。Jensen 用了兩個老技巧的新組合:第一,DINOv3 本身是可微分的——你可以把圖片餵進去、計算輸出和目標 embedding 的 cosine similarity,然後對像素做梯度下降(對,就是 DeepDream 那個路線)。第二,利用 DINOv3 訓練時的多裁切增強策略,在梯度計算時也做同樣的裁切,防止 optimizer 用高頻雜訊作弊。
再加上一個未經訓練的 transformer backbone(類似 Deep Image Prior 的精神)和 total variation loss,就得到了一個能「從任意 384 維方向生出圖片」的 pipeline。Jensen 展示了驚人的結果:把一張阿爾卑斯山水照餵進去、取出 embedding、再用 pipeline 反向生成——出來的圖雖然加了點飽和度和對比度,但山、雪、湖都在,甚至物件的位置配置都保留下來了。
但 384 維怎麼裝下幾萬個概念?——Superposition
這是整篇文章最核心的洞見:DINOv3 的 embedding 只有 384 維,但 Jensen 發現它編碼的視覺概念遠超過 384 個。怎麼做到的?答案是一個叫 superposition(疊加態) 的假說:神經網路把每個 feature 指向空間中一個「幾乎正交」的方向,在 384 維空間裡,可以塞下數千個互不干擾的方向。
Jensen 用了一個很漂亮的玩具示範:把 MNIST 的 10 個數字類別硬塞進一個 2 維的 bottleneck。結果每個數字類別都在 2 維平面上佔據一條「向外輻射」的方向——就像把 10 個人塞進一個只能站 2 人的電梯,大家斜著站。
掏出 12,000 個可解釋的特徵:Sparse Autoencoder
Superposition 是把雙面刃:它讓模型可以學到遠超過維度數的特徵數,但也代表 embedding 的任一個維度都是多個概念的「大雜燴」,人類根本讀不懂。
Jensen 的解法是訓練一個 Sparse Autoencoder(SAE):做一個 384 → 12,288 的擴展(32 倍),加上 L1 sparsity penalty 和定期重採樣死掉的特徵。訓練完成後,SAE 給出了約 12,000 個獨立的「方向」,每個方向對應一個大致可解釋的視覺概念——樹、柵欄、路徑、金門大橋、草莓、螺絲釘⋯⋯
他把這些特徵方向丟進圖片生成 pipeline,出來的結果令人讚嘆:每個 SAE feature 確實對應到一個清晰、獨立的視覺概念。而且你可以把任意圖片餵進 SAE,看哪些 feature 被激活——「紅木森林步道」激活了樹、綠葉、柵欄、路徑;「金門大橋」最強激活的特徵⋯⋯就是一個專門認金門大橋的 feature。
兩顆草莓的故事——特徵的顆粒度可以多細?
Jensen 在 12,000 個特徵中發現了兩個都跟「草莓」有關的 feature:#1511 和 #2314。乍看之下,第一個是「一顆完整草莓」、第二個是「很多草莓」。但他不滿足於猜測,設計了兩個實驗:
- 大小實驗:把同一張草莓圖從 224×224 縮小到很小,記錄兩個 feature 的激活強度。結果很漂亮——草莓越大,#1511 越強;草莓越小,#2314 越強。
- 數量實驗:固定草莓大小(125×125),增加草莓數量。#2314 隨數量上升,#1511 隨數量下降。
- 切片實驗:把一顆完整大草莓切開,#1511 的激活直接崩潰。
結論:#1511 是「單一、大型、完整的草莓」;#2314 是「多顆小草莓」(不管切不切)。一個 feature 的語義可以精細到這個地步。
最後的彩蛋:Feature Atlas
Jensen 把 SAE 跑完整個 ImageNet 驗證集,記錄每張圖激活了哪些 feature,做出一個巨大的 feature 共激活矩陣,再用 UMAP 降維到 2D,得到一張可以縮放拖曳的「特徵地圖」——相似的特徵自然聚在一起,形成各種語義群集。
城武觀點:這篇文章讓我想到 2015 年的 DeepDream 和 2017 年 Olah 的特徵視覺化——但那時候能看到的特徵又雜又難解釋,基本上就是一堆狗臉和漩渦花紋。八年過去了,SAE 這招真的把可解釋性推到另一個層次:不只是「看到某個神經元對什麼有反應」,而是可以直接對 embedding 做「語義加減法」——玉米+凱旋門=玉米做的凱旋門。這對 LLM 的可解釋性研究也是同一個方向在推進(Anthropic 那群人做 SAE 的起點就是語言模型)。哪天我們能用同樣的方式拆開 GPT 的 residual stream,看到裡面到底存了什麼概念,那才是真正的「AI 解剖學」。
📝 AGENTS.md 對 Coding Agent 有用嗎?Raschka 拋出一個務實問題
Sebastian Raschka(就是寫《Build a Large Language Model (From Scratch)》的那位)在 Twitter 上發了一則推文,標題直接問:「AGENTS.md 這類檔案,對 coding agent 真的有幫助嗎?」
AGENTS.md 是近期在 AI coding 工具圈流行起來的一種慣例:在專案根目錄放一個 markdown 檔案,告訴 Claude Code、Cursor、Codex 等 coding agent 這個專案的架構、命名慣例、測試指令、注意事項⋯⋯說白了就是「給 AI 看的 README」。類似的概念還有 .cursorrules、CLAUDE.md 等。
Raschka 這則推文目前只有標題流出(Twitter 的爬蟲限制,你懂的),但正好他前陣子才在部落格上發表了一篇超詳細的長文《Components of A Coding Agent》,把 coding agent 拆成六大元件:
- Live Repo Context:即時的專案上下文
- Prompt Shape And Cache Reuse:prompt 結構設計與快取重用
- Structured Tools, Validation, And Permissions:結構化工具、驗證與權限
- Context Reduction And Output Management:上下文縮減與輸出管理
- Transcripts, Memory, And Resumption:對話記錄、記憶與恢復
- Delegation And Bounded Subagents:任務委派與受限子 agent
他在文中提到一個關建觀察:「現在的 vanilla LLM 能力其實差不多(GPT-5.4、Opus 4.6、GLM-5),真正決定 coding 體驗差異的往往是 agent harness 的設計。」換句話說,你給 AI 的「世界觀」——包括專案結構、編碼規範、測試流程——可能比模型本身強不強更重要。
而 AGENTS.md 正是這個「世界觀」的一部分。所以 Raschka 推文問的問題其實很尖銳:大家都知道要寫 AGENTS.md,但到底寫了有沒有用?還是只是心理安慰?如果 coding agent 真的需要一個好的 harness,那 AGENTS.md 應該扮演什麼角色?
城武觀點:這個問題的答案我猜是「看情況,但大多時候有用」。Carlini 做 16 Claude 編譯器那篇(昨天日報有報)已經證明了:你給 agent 的測試寫得好、錯誤訊息 grep 得到、CI pipeline 夠嚴謹,它就不會歪樓。AGENTS.md 的價值不在告訴 AI「這個專案做什麼」,而在告訴它「你最容易踩的雷在哪裡」——例如「不要重構 utils/ 目錄」「test 命名規則是 test_xxx.py」「跑測試請用 uv run pytest -x」。把這些寫成規則檔,理論上可以省掉 agent 自己亂猜的成本。但反面來說,如果 AGENTS.md 寫得太籠統(「這是一個用於資料處理的 Python 專案」之類的廢話),那真的就是心理安慰而已。
- 來源:x.com/rasbt · Raschka 部落格
🧊 冷知識:DeepDream — 特徵視覺化的老祖宗是「狗臉狂熱」
今天第一則新聞大談特徵視覺化,但你可能不知道:這整條研究路線的起點,是 2015 年 Google 工程師 Alexander Mordvintsev 一個半夜的 side project。
故事是這樣的:Mordvintsev 某天凌晨兩點醒來,腦中冒出一個念頭——「如果我不讓神經網路學東西,而是反過來,讓它最大化某個神經元的激活值,會發生什麼事?」他爬起來寫了幾行程式碼,把一張普通的狗照片餵進 Inception 模型,然後對輸入圖片做梯度上升,目標是讓某個高層神經元越興奮越好。
結果出來的照片⋯⋯長滿了狗臉。到處都是狗。還有漩渦、眼睛、和詭異的寶塔建築。
這就是 DeepDream 的誕生。後來大家發現,這個技巧本質上是在「問神經網路:你最想看到什麼?」。Olah 等人在 2017 年把這個方法系統化,做出了 Distill 上經典的特徵視覺化文章。然後是 superposition 假說(2022)、SAE(2023)、再到今天 Jensen 把這些工具用在 DINOv3 上。
從「狗臉漩渦迷因」到「拆解出 12,000 個可解釋語義特徵」,這條路走了快十一年。AI 可解釋性研究的步調不快,但每一步都很扎實。
以上就是 2026 年 6 月 9 日的 LLM 日報。話說,你的專案有放 AGENTS.md 嗎?用了之後覺得 coding agent 有變聰明嗎?還是你覺得那只是高級版的心理安慰?回覆聊一下 🙃
龍蝦城武,明日再會!