重言 Re-Sinitic:量尺本身在晃,而三個候選解釋全部倒下 - 研究日誌(五)

這篇是日誌,記的是當時的推論過程。想看目前最新的整體結論,見現況總覽

第四集結尾把話說死了:heldout 用完了,不會再有第二次,剩下的問題只能在 train 226 詞上回答。排在最前面的是「模組化是不是習得性問題」——這是全專案講了三集的主要候選解釋,卻一直沒被直接測過。這集先花了一番功夫才把測量工具本身修好,然後測了,而且連同另外兩個候選解釋一起測了。三個全部倒下。

先把跑得動的成本降下來

直接測習得成本,需要把 226 選 1 的 S2 run 跑到能負擔重複實驗的程度。候選編碼原本是「每個候選各自從頭編碼」,改成「全詞表編一次、用索引查表」之後,一個 226 選 1 的 S2 run 從 845 分鐘降到 47 分鐘;對抗式候選集那條路徑也跟著優化,從 30 分鐘降到 22 分鐘。這不是這集的主角,但它是接下來一切的前提——沒有這次效能修正,後面要做的重跑和多種子驗證都跑不起。

量尺本身在晃:spatial_dd 的雜訊比它要偵測的效應大三倍

效能優化之後,順手用同一個設定、同一個種子重跑一次第三集用過的空間雙重分離實驗,想確認優化沒有改變數值。結果:

優化前   spatial_dd = −0.1372
優化後   spatial_dd = +0.0398

先排除是不是優化本身出了 bug:展開版與索引版的中間輸出逐項比對,最大絕對差是 0.00——完全等價。差異不是程式錯誤,是訓練過程本身的混沌發散:GRU 在不同 batch 形狀下浮點數的累加順序不同,30000 步之後被放大成完全不同的解。同一個種子不保證同一個結果。

同一設定同一種子的跨度是 0.18,而事先定的最小有意義效應量(SESOI)是 0.05——這把尺的雜訊比它要偵測的效應大三倍。這件事逼出一個讀法上的修正:

  • 第三集撤回「讀者換代產生空間分工」是對的——那個 +0.053 本來就落在單一設定的雜訊範圍內
  • 但這也代表 spatial_dd任何單點數值都不可解讀,包括先前用來支持虛無結果的那些數字。任何結論都必須建立在多種子平均上
  • 真正結實的不是 spatial_dd 本身,是它的成分:遮左半造成 −0.584 的傷害、遮右半 −0.602,兩者的差只有 0.018。這個「巨大傷害、微小差異」的對比不受混沌影響,因為兩個數字來自同一次 forward,不是兩次獨立訓練的比較

換句話說:跨 run 比較的數字會被訓練過程的混沌吞掉,同一次評估內部的數字不會。這決定了接下來的分析全部要往哪個方向靠。

把三個候選解釋逐一直接測過,全部失敗

論文草稿一直列著三個「為什麼沒有分工」的候選壓力,前兩個第三集已經間接測過(對抗式候選集、讀者換代),這集把第三個、也是最被看好的一個,直接放進訓練迴圈測了:

假設 操作 spatial_dd(多種子平均) 部件複用率
(b) 兩個目標可加 對抗式候選集 ≈ 0 0.805
(c) 沒有習得成本 讀者換代 +0.003 0.633
(a) 每個字都在訓練集裡 分離曝光 −0.001 0.966
對照 +0.004 0.736

「分離曝光」的做法:先前的零樣本探針只是測量讀者認不認得沒學過的字,這次把那個壓力直接放進訓練迴圈——每次讀者換代都重抽一次 70/30 分割,讀者只在曝光集上學,而 Writer 的損失算在讀者沒看過的那 30% 上。Writer 因此被逼著必須產生「一個只學過七成字的讀者也讀得懂剩下三成」的字形。

結果:曝光率 0.7 時,部件複用率衝到 0.966(三個種子分別是 0.969 / 0.938 / 0.991)——幾乎每個字都由共用部件拼出來,是全專案目前最高的複用率。而同一批 run 的 spatial_dd 平均是 +0.0000。曝光率 0.4 時系統直接崩潰(部件數只剩 4 個,全詞表準確率 13.3%,其中一個種子完全歸零)——壓力過頭時系統選擇放棄溝通,不是變得更有系統。

事先寫在腳本裡的判準是「平均 > +0.03 且多數種子為正」,三個假設沒有一個達成。

三種介入都推動了部件化(複用率 0.736 → 0.805 → 0.966),沒有一個推動分工。可分解性與功能分化是兩件事,而這個系統只會做前者。

這是這個專案目前最重的一句話。「習得成本」是三個候選裡理論上最站得住腳的一個——人類確實需要模組化,正是因為會遇到沒學過的字、每個字的曝光量有限。直接把這個壓力做進系統,結果卻是把字形逼得更會共用零件,而不是逼出分工。逼出可分解性買不到功能分化。

這個虛無涵蓋整個劑量範圍,不是只有測過的那兩點

先前的空間分工否定結論只在兩個劑量點上測過。擴到五個劑量 × 兩個種子:

同音率 0.031 → 0.496,十個格子
平均 −0.0013,範圍 −0.075 至 +0.035
達到 SESOI(+0.05)的格數:0/10

包括同音率最高的那一格——聲符原料理論上最充足的區間——也沒有例外。事先的判準是「任一劑量點的兩個種子都超過 +0.05,否定宣稱就要限縮範圍」,沒有一格達標。

順便把第四集那個「已知偏離」拿去驗證了

第四集報過一個已知偏離:確認階段用的是探索階段的舊 artifact(16 選 1 訓練),沒滿足「訓練候選數等於評估候選數」的修訂要求,理由是重訓要三個月。這次效能修正把成本降到 47 分鐘/run 之後,這個偏離變得可以檢驗了。

不能拿 heldout 重跑——一次性紀律存在的目的,正是防止「換個更好的設定再跑一次,直到它成立」。就算動機是修正一個真實的偏離,「第一次有偏離所以再跑一次」和「第一次結果不夠好所以再跑一次」從外部看是分不開的。所以改在 train 的 70/30 切分上重跑,記為方法學補充,不當成第二次確認。

同一個 S1 設定,16 選 1 跟 226 選 1 訓練的零樣本語音優勢:

設定 主力 基線 零樣本語音優勢
16 選 1 16.7% 2.9% +13.7%
226 選 1(對齊候選數) 17.2% 0.5% +16.7%(t = +7.80,n=3)

對齊候選數之後效應不減反增,基線還更貼近 chance(1.5%)。那個已知偏離不影響確認階段的結論;如果有影響,是先前低估了效應。

英文稿也譯完了

論文草稿的英文版(paper/DRAFT_en.md)已經完成,兩個版本現在都同步含這集的三件事:heldout 一次性使用的紀律、spatial_dd 的雜訊問題、以及已知偏離的事後驗證。

這些結論現在有多硬

狀態
「為什麼沒有分工」的三個候選解釋 全部直接測過,全部失敗(習得成本、目標可加、讀者換代)
空間分工的否定結論 涵蓋整個劑量範圍(0/10 格達到 SESOI),不只是先前測過的兩點
測量工具的限制 spatial_dd 單點數值不可解讀(雜訊 0.18 > SESOI 0.05);結論改用同一次評估內的成分對比,或多種子平均
確認階段的已知偏離 已在 train 上驗證不影響結論(226 選 1 下效應更強,+13.7% → +16.7%)
論文稿 中英文版本同步,限制一節已更新到確認階段之後

下一步

三個列在論文裡的候選解釋都倒下了,而「為什麼沒有分工」目前沒有第四個候選在排隊。這是個真正的空白,不是還沒查完的待辦——下一步得先想出新的候選,而不是繼續測已經想到的。不需要等這個也能做的事:整理論文準備投稿、看看有沒有遺漏的方法學檢查。等有新的候選解釋、或投稿準備得差不多,會有第六集。