學習目標:當目標由模型自己產生,一個常數函數就能讓損失變成零。這個 demo 用一個線性模型(8 個傅立葉基底)跑自我一致性,三個開關分開:決定非平凡解存不存在、EMA 決定動力系統穩不穩、stop-gradient 兩件都不決定——它換掉的是那個向量場。

灰虛線=真值 sin(2πx)(振幅 2.00);實線=訓練完的模型;實心點=錨點

縱軸 log:一致性損失(藍)與模型輸出的振幅(紅)對步數;水平線=真值振幅 2.00

最終一致性損失 = 最終振幅 = 真值振幅 = 2.00 到真值的均方誤差 =

觀察:沒有錨的時候,損失一路掉到 4.9e-14 而振幅也一路掉到 4.9e-6——模型塌成一條水平線,而損失曲線看起來一切正常。打開 stop-gradient 仍然塌(振幅 8.0e-3),加上 EMA 只是慢下來(0.56):兩者都不是防塌陷的機制。把錨點數拉到 3 以上,模型立刻長回真值的形狀(到真值的均方誤差 1.1e-2)——讓非平凡解存在的是錨。(筆記裡那個設定下,stop-gradient 是往另一個方向壞掉、炸到 10⁷;這個線性 toy 的向量場剛好仍然是收縮的,所以它塌而不是炸。兩種都是同一個教訓:要監控的是振幅,不是損失。