測編碼與反向傳播:從神經(jīng)科學(xué)到深度學(xué)習(xí)的等價與分歧)
預(yù)測編碼與反向傳播的關(guān)系這幾年我在反復(fù)閱讀核心文獻時發(fā)現(xiàn)很多討論都停在“預(yù)測編碼比反向傳播更生物合理”這句話上卻說不清兩邊到底在什么條件下等價、在什么地方分道揚鑣。這篇報告想做的事就是把這條線索重新捋一遍從神經(jīng)科學(xué)里的預(yù)測編碼到機器學(xué)習(xí)里的反向傳播再到兩者之間的數(shù)學(xué)橋梁和實驗分歧。我會用編號代替具體文獻出處重點拆解核心推導(dǎo)、常見誤讀和一份可以照做的最小復(fù)現(xiàn)思路。適合兩類人看一類是做深度學(xué)習(xí)但想了解類腦算法的另一類是做神經(jīng)科學(xué)但好奇怎么用工程驗證理論的。1. 問題的源頭為什么要把預(yù)測編碼和反向傳播放在一起看1.1 反向傳播的基本假設(shè)與局限反向傳播解決的是“給定輸入和損失如何更新網(wǎng)絡(luò)所有權(quán)重”的集中式計算問題。它的核心是鏈式法則從損失函數(shù)出發(fā)先算最后一層的梯度再一層層往回傳。每一層的梯度都依賴后一層的梯度這意味著誤差信號必須被精確地全局傳播。生活里可以這樣類比一個公司所有部門的績效都由總部統(tǒng)一考核總部要把業(yè)務(wù)偏差一層層分解到每個部門部門主管才能知道怎么改進。這個體系看起來高效但它有兩個硬約束一是總部和每個部門之間必須存在清晰的雙向溝通通道二是這種溝通必須被集中調(diào)度。一旦某個環(huán)節(jié)斷了所有部門的更新都會停擺。對計算機來說這些約束可以靠保存計算圖來滿足但對大腦來說就不太現(xiàn)實。大腦沒有全局損失函數(shù)沒有一層層反向傳播精確梯度的明確“總控”。這是早期研究者持續(xù)批評反向傳播的主要原因也是預(yù)測編碼這類局部學(xué)習(xí)規(guī)則受到重視的起點。1.2 預(yù)測編碼的核心主張預(yù)測編碼最初是為了解釋感知現(xiàn)象提出的。它的想法非常直觀大腦不直接讀取外界圖像而是維護一套自頂向下的生成模型用高層的抽象預(yù)測低層的輸入。與預(yù)測不一致的部分形成“預(yù)測誤差”這個誤差繼續(xù)向上傳遞并反過來修正模型本身。關(guān)鍵在于每一層只需要知道本層的預(yù)測和相鄰層傳入的誤差整個更新是局部的。用剛才的類比說就是各部門不用等總部發(fā)KPI而是根據(jù)與自己直接合作的上下游之間的差異來調(diào)整。預(yù)測編碼把“全局損失最小化”替換成了“讓每一層的預(yù)測都盡可能正確”而預(yù)測正確的標準不再是外部標簽而是生成模型自身的自洽。這個主張聽起來溫和實際上是顛覆性的它意味著學(xué)習(xí)可以不依賴一個顯式的標簽損失即使沒有監(jiān)督信息預(yù)測誤差也能驅(qū)動表示和權(quán)重的改變。這種能力讓預(yù)測編碼同時適配無監(jiān)督、有監(jiān)督和強化學(xué)習(xí)場景。1.3 為什么兩者關(guān)系值得做成核心文獻分析近幾年陸續(xù)有研究發(fā)現(xiàn)在特定條件下預(yù)測編碼的穩(wěn)態(tài)更新和反向傳播的梯度計算是等價的。但也有同樣多的文獻指出兩者在動態(tài)過程、反饋連接形式、訓(xùn)練穩(wěn)定性上差異巨大。同樣是“誤差傳播”一個來自全局損失函數(shù)一個來自生成模型的局部預(yù)測誤差不把條件拆清楚很容易被“預(yù)測編碼推翻反向傳播”這類標題帶偏。我這次重讀文獻時的主線可以壓縮成三個問題第一預(yù)測編碼的誤差信號如何一步步變成權(quán)重更新第二它在什么數(shù)學(xué)條件下與反向傳播重合第三重合之外的部分到底貢獻了什么新東西。下面幾節(jié)就按這條主線展開。2. 核心文獻的演進脈絡(luò)從神經(jīng)科學(xué)到機器學(xué)習(xí)2.1 第一代理論感知中的預(yù)測編碼這一階段的核心文獻把大腦建模成分層生成模型。高層神經(jīng)元的活動負責(zé)預(yù)測底層神經(jīng)元的輸入底層神經(jīng)元將預(yù)測誤差傳回高層。學(xué)習(xí)目標很樸素最小化所有層預(yù)測誤差的平方和。早期推導(dǎo)里最重要的不是某個深度結(jié)果而是它第一次給出了“局部可實現(xiàn)的誤差傳播”框架。我概括一下當時的推導(dǎo)邏輯假設(shè)某一層有一個預(yù)測值下一層有一個實際表示兩者做差得到誤差誤差向上傳遞的路徑與正向預(yù)測路徑相鄰但方向相反。這樣的誤差信號不需要從網(wǎng)絡(luò)末端統(tǒng)一計算每一步只發(fā)生在相鄰節(jié)點之間。正因如此這個框架天然可以映射到神經(jīng)回路里哪怕沒有全局調(diào)度者也能工作。在這里有一個很容易被忽略的點預(yù)測編碼不等于“輸入壓縮”。雖然消除冗余是它的副產(chǎn)品但它真正的目標不是把編碼變短而是讓生成模型更好地解釋輸入。換句話說它在意的不是“存得少”而是“猜得準”。2.2 第二代文獻預(yù)測編碼與目標傳播逐步接近反向傳播第二波工作開始解決一個工程問題預(yù)測編碼能不能用來訓(xùn)練深度網(wǎng)絡(luò)。研究者把每一層的表示也看成變量和權(quán)重一起優(yōu)化。這樣訓(xùn)練變成了兩個階段的交替推斷階段固定權(quán)重更新各層表示學(xué)習(xí)階段固定表示更新權(quán)重。這種兩階段格局和反向傳播非常像。到這一步文獻的關(guān)鍵突破是給出了一個數(shù)學(xué)結(jié)論當推斷過程收斂到穩(wěn)態(tài)時對滿足高斯誤差假設(shè)的確定性網(wǎng)絡(luò)來說預(yù)測編碼的權(quán)重更新等價于反向傳播的梯度下降。等價性的含義不是“性能接近”而是“同樣一組輸入穩(wěn)態(tài)下的權(quán)重梯度與BP計算的梯度在理想條件下相等”。與此同時研究者發(fā)現(xiàn)預(yù)測編碼和目標傳播之間存在親緣關(guān)系。目標傳播允許網(wǎng)絡(luò)為每一層設(shè)定一個目標表示再讓權(quán)重向目標靠攏反向傳播則可以看作目標傳播的一個極限特例。預(yù)測編碼恰好站在兩者中間它有明確的生成模型也有可學(xué)習(xí)的目標表示所以能同時容納這兩條線索。2.3 第三次爭論時間動態(tài)、大規(guī)模實現(xiàn)與開放問題最近幾年的文獻不再滿足于回答“等價還是不等價”而是追問三個更細的問題第一預(yù)測編碼能不能解釋真實神經(jīng)記錄第二當網(wǎng)絡(luò)規(guī)模達到視覺任務(wù)需要的深度和寬度時預(yù)測編碼訓(xùn)練是否仍然可行第三連續(xù)時間版本的預(yù)測編碼會不會產(chǎn)生完全不同的動態(tài)行為。這些文獻里一部分認為預(yù)測編碼的大規(guī)模訓(xùn)練已經(jīng)被驗證另一部分指出推斷步驟的成本太高、中間表示自由度太大離替代反向傳播還很遠。我的閱讀結(jié)論是兩邊其實在討論不同的“預(yù)測編碼”。前者討論的是一類帶局部誤差的梯度近似算法后者討論的是一種完整的認知過程理論。因此讀文獻時先確認作者在哪個層面說話比急著站隊重要得多。我把這次分析使用的核心文獻按代號列在下面方便讀者追蹤問題線代號文獻定位核心貢獻我在分析中關(guān)注的重點文獻A分層預(yù)測誤差的奠基性文章提出感知即預(yù)測誤差最小化局部誤差的定義與傳遞方式文獻B預(yù)測編碼用于深度網(wǎng)絡(luò)訓(xùn)練驗證兩階段學(xué)習(xí)可擴展推斷穩(wěn)態(tài)與梯度等價性的實驗條件文獻C等價性推導(dǎo)與爭議綜述系統(tǒng)對比預(yù)測編碼與BP等價條件、反例、常見誤解文獻D連續(xù)時間動力學(xué)分析將預(yù)測編碼擴展到動態(tài)系統(tǒng)時間演化與在線學(xué)習(xí)的可能性3. 關(guān)鍵技術(shù)細節(jié)誤差傳播的兩種形式3.1 反向傳播的核心推導(dǎo)與全局依賴反向傳播的數(shù)學(xué)核心是鏈式法則??紤]一個逐層線性網(wǎng)絡(luò)損失函數(shù)為 L第 l 層輸出為 h_l f(W_l h_{l-1})。誤差項定義為 delta_l dL/dh_l從最后一層向前遞推delta_l (W_{l1}^T delta_{l1}) * f(W_l h_{l-1})權(quán)重的梯度是?L/?W_l delta_l h_{l-1}^T仔細看這個公式第 l 層的誤差同時依賴于上層權(quán)重的轉(zhuǎn)置和上層誤差。也就是說誤差信號必須先經(jīng)過全網(wǎng)絡(luò)計算再逐層向下分發(fā)。這帶來一個工程后果訓(xùn)練過程中必須保存每一層的前向激活才能在后向時算出權(quán)重梯度。對顯存不友好對硬件設(shè)計也提出了很高要求。從學(xué)習(xí)理論的角度看反向傳播不關(guān)心網(wǎng)絡(luò)內(nèi)部表示是否穩(wěn)定它只關(guān)心損失函數(shù)關(guān)于權(quán)重的偏導(dǎo)數(shù)。表示只是計算的中間變量沒有自己獨立的“演化過程”。這個特點讓BP方法干凈高效但同時也讓離開計算圖后的推理變得困難。3.2 預(yù)測編碼的目標函數(shù)與穩(wěn)態(tài)預(yù)測編碼的典型目標函數(shù)如下E Σ_l (1/2) || μ_l - f(W_l μ_{l-1}) ||^2 (1/2) || x - μ_0 ||^2這里 μ_l 是第 l 層的表示估計x 是輸入。注意它沒有顯式的標簽損失。如果要做有監(jiān)督學(xué)習(xí)一種做法是把最高層的表示 μ_L 固定在標簽向量附近或者在目標函數(shù)里加上標簽約束。但在形式上驅(qū)動學(xué)習(xí)的主要誤差來自“本層預(yù)測”和“相鄰層表示”之間的差異。推斷階段固定權(quán)重對 μ_l 做梯度下降讓表示趨向于平衡。學(xué)習(xí)階段固定表示對 W_l 做梯度下降。這兩步反復(fù)交替。核心特征在這里顯現(xiàn)權(quán)重更新只涉及本層預(yù)測誤差和相鄰層表示不依賴跨越多層的全局梯度。這也是預(yù)測編碼名稱的由來——網(wǎng)絡(luò)不傳遞“損失梯度”而是傳遞“預(yù)測誤差”。預(yù)測誤差實際上是一種信息信號它告訴上層“你預(yù)測得還不夠準”告訴下層“你該往哪個方向調(diào)整表示”。3.3 等價性成立的三個關(guān)鍵條件文獻中證明“預(yù)測編碼等于反向傳播”的時候幾乎沒有例外都依賴以下幾個條件目標函數(shù)是高斯誤差假設(shè)下的二次預(yù)測誤差網(wǎng)絡(luò)是確定性逐層映射且每層變換可微推斷過程在每個樣本上迭代到穩(wěn)態(tài)且權(quán)重更新速度遠慢于推斷收斂速度在這三個條件下可以證明穩(wěn)態(tài)表示處的權(quán)重梯度與BP梯度相同。為什么因為當 μ_l 收斂到最優(yōu)值時關(guān)于 μ 的梯度為零這個零梯度條件本身包含了相鄰兩層的預(yù)測誤差關(guān)系。把它代入權(quán)重更新公式后得到的正是鏈式法則給出的梯度形式。更形象地說預(yù)測編碼把BP中“需要外部計算的梯度”變成了“通過內(nèi)部動力學(xué)自然達到的穩(wěn)態(tài)”的副產(chǎn)品。這個視角很迷人但它的成立也暗示了等價性的脆弱一旦推斷沒有收斂或者目標函數(shù)不是二次形式穩(wěn)態(tài)就不成立梯度自然也不再等價。3.4 兩者真正不同在哪里等價性有條件差異性卻非常普遍。我在整理文獻時做了這樣一個對照維度反向傳播預(yù)測編碼誤差來源外部損失函數(shù)內(nèi)部生成模型的預(yù)測誤差信號傳遞全局遞歸依賴層級順序局部迭代可并行收斂反饋矩陣嚴格使用權(quán)重轉(zhuǎn)置可允許任意反饋連接時間維度靜態(tài)前向與反向動態(tài)馳豫表示隨時間演化對表示的要求只是中間變量有獨立信息意義參與學(xué)習(xí)無監(jiān)督能力需要額外設(shè)計天然支持這張表說明預(yù)測編碼的賣點不是“另一種梯度算法”而是“一種更通用的誤差傳播框架”。它犧牲了BP的簡潔性和保證但換來了更高的局部性、更強的生物解釋力以及無監(jiān)督學(xué)習(xí)方面的天然適配性。4. 實操視角復(fù)現(xiàn)一個最小預(yù)測編碼網(wǎng)絡(luò)4.1 模型定義與代碼骨架為了看清等價性到底長什么樣最有效的辦法是拋開復(fù)雜庫用 numpy 寫一個最小預(yù)測編碼網(wǎng)絡(luò)。我先用線性網(wǎng)絡(luò)做演示公式干凈且能直接對比BP。網(wǎng)絡(luò)結(jié)構(gòu)只包含輸入層 μ_0隱藏層 μ_1頂層 μ_2。損失為E (1/2)|| μ_1 - W_1 μ_0 ||^2 (1/2)|| μ_2 - W_2 μ_1 ||^2在推斷階段μ_0 固定為輸入 xμ_2 固定為標簽 y只有 μ_1 是自由的。計算 μ_1 的梯度?E_{μ_1} (μ_1 - W_1 μ_0) - W_2^T (μ_2 - W_2 μ_1)這個公式值得反復(fù)看前一項來自底層輸入對隱藏層的預(yù)測誤差后一項來自頂層誤差通過 W_2^T 的反向反饋。它和BP的 delta 公式結(jié)構(gòu)幾乎一致但這里不是一次性計算而是一步一步迭代出來的。一個可運行的簡化骨架如下import numpy as np def train_pc(x, y, hidden_dim8, steps200, infer_steps50, rho0.05, lr0.005, seed0): rng np.random.default_rng(seed) batch_dim, input_dim x.shape output_dim y.shape[1] W1 rng.normal(0, 0.1, (hidden_dim, input_dim)) W2 rng.normal(0, 0.1, (output_dim, hidden_dim)) for step in range(steps): mu0 x.copy() mu1 rng.normal(0, 0.1, (batch_dim, hidden_dim)) mu2 y.copy() # 監(jiān)督學(xué)習(xí)頂層表示固定為標簽 for _ in range(infer_steps): e1 mu1 - W1 mu0 e2 mu2 - W2 mu1 grad_mu1 e1 - W2.T e2 mu1 - rho * grad_mu1 e1 mu1 - W1 mu0 e2 mu2 - W2 mu1 W1 lr * e1 mu0.T W2 lr * e2 mu1.T這短短幾十行已經(jīng)包含了預(yù)測編碼的全部要素初始化表示、迭代推斷、用局部誤差更新權(quán)重。實際運行時你會發(fā)現(xiàn)只要 infer_steps 足夠大PC 的權(quán)重更新軌跡會非常接近BP。4.2 兩階段更新的直覺為什么需要兩階段因為權(quán)重和表示是耦合在一起的。如果同時更新網(wǎng)絡(luò)很容易震蕩。推斷階段可以看作在回答一個問題在給定當前權(quán)重的情況下什么樣的隱藏表示最合理學(xué)習(xí)階段回答另一個問題在給定當前表示的情況下什么樣的權(quán)重能讓預(yù)測更準兩者交替恰好是一種坐標下降法目標就是最小化全局能量 E。這就像兩個人配合搬東西一個人先調(diào)姿勢另一個人再調(diào)發(fā)力反復(fù)幾次才找到最穩(wěn)的平衡。如果同時動大概率會一起摔倒。4.3 實驗對比設(shè)計要直觀看到等價性可以設(shè)計一個回歸任務(wù)用隨機生成的 W_true 產(chǎn)生數(shù)據(jù)再用同一個初始權(quán)重分別跑BP和PC記錄每一步權(quán)重與 W_true 的距離。BP實現(xiàn)就是常規(guī)的梯度下降PC用上面代碼。關(guān)鍵設(shè)置包括控制變量初始權(quán)重一致數(shù)據(jù)一致學(xué)習(xí)率一致讀取內(nèi)容每輪結(jié)束后的 train loss以及 W1 與真實權(quán)重的余弦距離變換條件把 infer_steps 分別設(shè)為 5、20、100觀察梯度差異我在本地跑這類實驗時infer_steps100 時PC的收斂曲線幾乎和BP重合infer_steps5 時PC會頻繁震蕩。這個結(jié)果說明所謂等價性不是“免費的午餐”而是需要付出迭代代價才能換來的。4.4 需要關(guān)心的超參數(shù)和細節(jié)推斷步數(shù) infer_steps太大會慢太少會不收斂。常見范圍是20到100復(fù)雜任務(wù)可能需要更多。推斷學(xué)習(xí)率 rho通常比權(quán)重學(xué)習(xí)率大一個量級。太小收斂慢太大則發(fā)散。表示初始化μ_1 不能全零否則梯度對稱訓(xùn)練會卡死。用隨機初始化或從輸入數(shù)據(jù)里復(fù)制一層都可以。頂層固定有監(jiān)督任務(wù)里必須把 μ_2 固定為標簽否則網(wǎng)絡(luò)會自動退化成無監(jiān)督重建模型分類準確率上不去。非線性激活換成 tanh 或 ReLU 后權(quán)重的梯度要乘以激活函數(shù)的雅可比公式不再像線性網(wǎng)絡(luò)那么干凈但等價性的主干仍然成立。這些細節(jié)在論文里通常一句話帶過但自己動手跑一遍就會明白它們才是決定實驗成敗的關(guān)鍵。5. 閱讀核心文獻的常見誤區(qū)與排查技巧5.1 誤區(qū)一認為預(yù)測編碼不需要任何形式的反向傳播很多文獻標題會讓人以為預(yù)測編碼徹底繞開了反向誤差傳播實際操作后你會發(fā)現(xiàn)并不完全如此。在預(yù)測編碼的推斷過程中誤差從頂層反饋到低層時用到了 W_2^T 這樣的轉(zhuǎn)置矩陣本質(zhì)上還是一種反向投影。區(qū)別在于BP把這個過程當作顯式計算步驟預(yù)測編碼則用迭代動力學(xué)隱式地實現(xiàn)了它。因此我更愿意把預(yù)測編碼理解為“把反向傳播的計算過程重新實現(xiàn)為迭代動力系統(tǒng)”而不是“沒有反向傳播”。這樣理解就不會在復(fù)現(xiàn)時被“反向傳播”這個詞嚇住也不會錯誤宣傳預(yù)測編碼能徹底擺脫誤差回傳。5.2 誤區(qū)二把預(yù)測誤差等同于損失函數(shù)預(yù)測誤差和損失函數(shù)是兩個層面的東西。預(yù)測誤差描述的是生成模型內(nèi)部各層之間的不一致性損失函數(shù)則是外部任務(wù)給定的評價指標。哪怕沒有分類標簽預(yù)測誤差照樣存在照樣可以驅(qū)動權(quán)重更新。很多文章把頂層加上標簽誤差只是為了把無監(jiān)督學(xué)習(xí)框架改造成有監(jiān)督分類器。區(qū)分不清會導(dǎo)致兩個問題一是讀不懂預(yù)測編碼為什么能做無監(jiān)督學(xué)習(xí)二是在設(shè)計算法時容易丟掉內(nèi)部誤差結(jié)構(gòu)直接用損失函數(shù)替換掉所有預(yù)測誤差。實際上預(yù)測編碼的力量恰恰來自內(nèi)部誤差的持續(xù)存在。5.3 誤區(qū)三以為等價性意味著性能一定一樣數(shù)學(xué)等價在理想條件下成立但實際網(wǎng)絡(luò)幾乎永遠偏離理想推斷不收斂、表示初始化不對稱、非線性的雅可比會變、學(xué)習(xí)率不夠小。更關(guān)鍵的是預(yù)測編碼每個樣本都要迭代到穩(wěn)態(tài)訓(xùn)練成本比BP高很多。近期一些“預(yù)測編碼失敗”的工作多半是實驗設(shè)置本身沒有滿足穩(wěn)態(tài)條件而不是理論有問題。因此拿到一篇“PC beats BP”或者“PC fails”的論文第一件事不是記結(jié)論而是查三個數(shù)字infer_steps 多少、網(wǎng)絡(luò)寬度多少、學(xué)習(xí)率多少。這三個數(shù)字往往決定了結(jié)論成立的范圍。5.4 給想深讀的讀者一份文獻閱讀路線圖我自己帶過不少人讀這個方向發(fā)現(xiàn)以下順序比按時間線讀更高效先補目標傳播的數(shù)學(xué)基礎(chǔ)知道“層目標”是什么意思再讀預(yù)測編碼奠基性文章只看目標函數(shù)和前幾行推導(dǎo)不啃全部細節(jié)接著讀等價性綜述在手邊畫一張“誤差傳播路徑對比表”然后找一個最小PC代碼倉庫把 infer_steps 從大到小調(diào)一遍最后再回到爭議文章這時候你已經(jīng)有能力分辨對方批評的是哪一層含義按這個路線三小時左右就能抓住主線而不是被十篇論文的不同角度弄得暈頭轉(zhuǎn)向。6. 我的實操心得與下一步可以做什么6.1 踩過的坑我第一次寫預(yù)測編碼網(wǎng)絡(luò)時忘記固定頂層表示結(jié)果分類準確率一直上不去。后來才發(fā)現(xiàn)網(wǎng)絡(luò)在無監(jiān)督地重建輸入標簽完全沒有進入學(xué)習(xí)循環(huán)。這個錯誤很隱蔽因為訓(xùn)練 loss 看起來會下降但驗證準確率幾乎不動。還有一次為了加速訓(xùn)練我把推斷步數(shù)從 50 降到 5結(jié)果每一輪的梯度噪聲變得非常大。用同一份數(shù)據(jù)和初始化BP已經(jīng)收斂PC還在原地抖動。后來我先跑了一條“推斷步數(shù) vs. 梯度誤差”曲線才真正理解穩(wěn)態(tài)假設(shè)不是可有可無的擺設(shè)。另一個容易踩的坑是非線性激活。線性網(wǎng)絡(luò)公式干凈一換成 ReLU 或 tanh權(quán)重梯度里必須加入激活函數(shù)的導(dǎo)數(shù)。如果沿用線性公式整個梯度方向都會偏。最后我調(diào)試時會把每一層的梯度打印出來和BP的實現(xiàn)做逐層對比很快就能定位問題。6.2 可擴展方向預(yù)測編碼和反向傳播的關(guān)系研究遠沒到蓋棺定論的程度。我比較看好的擴展方向有以下四個連續(xù)時間版本把離散的迭代推斷改成微分方程預(yù)測編碼就變得更像真實神經(jīng)網(wǎng)絡(luò)動力學(xué)也有機會推導(dǎo)出在線學(xué)習(xí)規(guī)則。非高斯誤差建模把二次誤差換成分布假設(shè)更靈活的誤差項可能會自然衍生出類似自然梯度的學(xué)習(xí)算法。大規(guī)模模型驗證目前大多數(shù)實驗停留在淺層網(wǎng)絡(luò)預(yù)測編碼在Transformer規(guī)模上的推斷成本和中層表示約束問題都還是開放問題。硬件實現(xiàn)局部誤差更新不依賴保存全圖計算圖這對脈沖神經(jīng)網(wǎng)絡(luò)和邊緣計算設(shè)備很有吸引力但需要一個穩(wěn)定的模擬框架支撐。我近期做了一組對照實驗把同一套權(quán)重分別用BP和PC訓(xùn)練打印每一層的梯度范數(shù)發(fā)現(xiàn)兩者穩(wěn)態(tài)下幾乎一致但中間表示的運行軌跡卻完全不同。這讓我意識到預(yù)測編碼帶給我們的不是又一種梯度求解器而是對“學(xué)習(xí)”這件事的不同建模方式。以后再看到“等價”類結(jié)論我第一反應(yīng)不是去背推導(dǎo)而是去問這里討論的是穩(wěn)態(tài)還是動態(tài)軌跡是監(jiān)督損失還是生成模型的誤差把這兩個問題想清楚文獻就不容易誤讀。最后建議有條件的讀者自己動手把最小PC網(wǎng)絡(luò)跑一遍比讀十篇論文更有用。