層計(jì)算的隨機(jī)性統(tǒng)一原理)
第一次讓我強(qiáng)烈意識(shí)到高維幾何不是書齋里的理論玩具是在兩個(gè)看似毫無關(guān)聯(lián)的實(shí)驗(yàn)里。某個(gè)部署端模型壓縮項(xiàng)目里我用各種低比特量化方案跑權(quán)重量化誤差曲線始終卡在一個(gè)尷尬的位置另一邊我在調(diào)一個(gè)回聲狀態(tài)網(wǎng)絡(luò)做時(shí)序預(yù)測(cè)狀態(tài)矩陣的維數(shù)往上加記憶效果卻并沒有像教科書說的那樣持續(xù)變好。兩個(gè)問題的名字相差很遠(yuǎn)——一邊是 QuIP 量化一邊是儲(chǔ)層計(jì)算——但它們最終都指向同一個(gè)點(diǎn)高維空間里體積、方向和距離的直覺和我們?cè)谌S世界里養(yǎng)成的習(xí)慣完全不一樣。這篇文章就把我整理的這套“統(tǒng)一視角”寫出來給同樣在跟高維特征、隨機(jī)矩陣、低比特部署打交道的朋友一個(gè)參考。你不會(huì)在這篇文章里看到某種能一步到位的調(diào)參咒語但你會(huì)看到為什么一類看起來完全不同的算法會(huì)在高維空間里共享同一套幾何邏輯。這套邏輯想通了很多實(shí)驗(yàn)里的“意外”其實(shí)都不意外。1. 高維空間的基本幾何直覺先從三維習(xí)慣里跳出來1.1 體積集中在外殼而不是內(nèi)部三維世界的球體我們很自然地認(rèn)為內(nèi)部占了大頭。事實(shí)也確實(shí)如此半徑0.9的球體積占整個(gè)單位球的0.9^3 0.729接近四分之三。但到了高維情況急劇變化。在 d 維空間里半徑 r 的球占整個(gè)單位球體積的比例是 r^d。當(dāng) d 100 時(shí)半徑 0.9 的球占比只剩 0.9^100 ≈ 0.000026。也就是說100 維球體幾乎全部體積都集中在厚度極薄的表面殼層里。這個(gè)結(jié)論在機(jī)器學(xué)習(xí)里不是冷知識(shí)它直接解釋了為什么高維空間中隨機(jī)向量的行為那么“收斂”。一個(gè)從球心出發(fā)的隨機(jī)方向落在離球心較近位置的概率幾乎為零它必然出現(xiàn)在球殼附近。換句話說高維空間里的數(shù)據(jù)點(diǎn)不像是均勻填滿空間的“土豆”更像是一層吹起來的肥皂泡所有點(diǎn)都貼在表面附近。今天幾乎所有高維向量化表示本質(zhì)上都在這個(gè)殼層附近工作。1.2 隨機(jī)方向之間幾乎垂直第二個(gè)需要重新建立直覺的事實(shí)是隨機(jī)方向的內(nèi)積。在 d 維空間里均勻采樣兩個(gè)隨機(jī)單位向量它們內(nèi)積的期望是 0方差是 1/d。當(dāng) d 10000 的時(shí)候兩個(gè)隨機(jī)方向的內(nèi)積標(biāo)準(zhǔn)差只有 0.01。換句話說隨便拉兩個(gè)高維向量它們幾乎必然近似正交。這個(gè)現(xiàn)象在三維空間里完全不存在兩根棍子在空中隨便轉(zhuǎn)方向要么夾角很小要么接近 180 度總能有重合的感覺??梢坏┚S度上千方向之間就像擠滿了一屋子陌生人互相之間誰都跟誰不親近。這帶來一個(gè)重要推論高維空間提供的“方向分辨率”高得驚人。你不需要刻意構(gòu)造正交基只需要隨機(jī)采樣就能得到一組近似正交的向量。隨機(jī)投影、隨機(jī)特征、儲(chǔ)層計(jì)算這些方法能成立底層靠的全是這個(gè)性質(zhì)。很多人在儲(chǔ)層網(wǎng)絡(luò)里看到隨機(jī)矩陣狀態(tài)矩陣居然能“分開”不同的輸入類別覺得玄學(xué)其實(shí)就是這個(gè)道理——維度足夠高時(shí)隨機(jī)的方向也足夠獨(dú)立線性分類器能撿到很大的便宜。1.3 測(cè)度集中帶來的“平均行為”第三個(gè)關(guān)鍵性質(zhì)是測(cè)度集中measure concentration。簡(jiǎn)單說高維空間里定義在球面或其他緊致集合上的平滑函數(shù)幾乎處處都趨近它的均值偏離均值的事件以指數(shù)速度衰減。普通一點(diǎn)的直觀表述是高維空間里的隨機(jī)向量任何一個(gè)分量都很難出現(xiàn)“離群”的大值整體上它們會(huì)往均值附近高度聚集。這項(xiàng)性質(zhì)是 QuIP 量化里隨機(jī)旋轉(zhuǎn)能起效的根本前提也是儲(chǔ)層計(jì)算里狀態(tài)矩陣不會(huì)因?yàn)殡S機(jī)初始化就瞬間爆炸的原因之一。我們后面會(huì)反復(fù)用到這個(gè)概念高維幾何下“代表整個(gè)集合行為的點(diǎn)”極大概率不是極端點(diǎn)而是一個(gè)極其平凡的中間點(diǎn)。于是許多需要精心設(shè)計(jì)的系統(tǒng)在高維空間里只需要“隨機(jī)往球上一丟”就能表現(xiàn)出非常穩(wěn)定的平均行為。這點(diǎn)反過來也成立——一旦某個(gè)隨機(jī)系統(tǒng)出現(xiàn)了極端行為那往往說明它的維度不夠高或者譜結(jié)構(gòu)出了問題。2. QuIP 量化如何把壓縮問題翻譯成幾何問題2.1 量化誤差從來不是均勻分布的先說量化基礎(chǔ)。大模型推理時(shí)內(nèi)存帶寬是最大的瓶頸之一把 16 比特權(quán)重壓到 4 比特乃至 3 比特能顯著降低訪存開銷。但代價(jià)是引入量化誤差。直覺上人們會(huì)以為只要能控制住每個(gè)權(quán)重元素的絕對(duì)誤差整體誤差就控制住了。這個(gè)直覺在低維是成立的在高維權(quán)重空間里就會(huì)帶偏你。正確的分析框架要考慮參數(shù)重要性。設(shè)權(quán)重為 w量化后的擾動(dòng)為 δ w? - w損失函數(shù)的變化可以近似寫成二次型δ L ≈ δ^T H δ這里的 H 是 Hessian 矩陣。不同方向上的擾動(dòng)對(duì)損失的貢獻(xiàn)不是同權(quán)重的而是被 H 縮放過的。換句話說量化誤差是在一個(gè)“被 H 扭曲的高維空間”里定義的。方向如果落在 H 的大特征值對(duì)應(yīng)的方向上哪怕 δ 的絕對(duì)量級(jí)不大最終損失也一樣會(huì)爆炸。經(jīng)典的 round-to-nearestRTN方法的問題就在這里——它只努力控制每個(gè)元素的絕對(duì)誤差卻完全不管 H 的形狀。這就出現(xiàn)了幾何問題的雛形我們想選擇一種坐標(biāo)系統(tǒng)使得量化殘差在這個(gè)坐標(biāo)系統(tǒng)里均勻分布并且不會(huì)集中在 H 的大特征方向上。但是H 的特征方向是固定的量化殘差所在的坐標(biāo)系卻可以通過正交變換旋轉(zhuǎn)。于是問題轉(zhuǎn)為能不能在量化之前先把整個(gè)權(quán)重空間旋轉(zhuǎn)到一個(gè)“對(duì) H 不敏感”的角度2.2 QuIP 的核心隨機(jī)正交旋轉(zhuǎn)與低相干性QuIP 的做法很直接先用隨機(jī)正交矩陣對(duì)權(quán)重做變化。給定權(quán)重矩陣 W生成正交矩陣 U、V計(jì)算 W_rot U W V^T然后對(duì)這個(gè)旋轉(zhuǎn)后的矩陣做低位量化最后反向旋轉(zhuǎn)回來。讀者可能會(huì)問正交變換不改變范數(shù)和特征結(jié)構(gòu)旋轉(zhuǎn)后量化按理說誤差不會(huì)變化關(guān)鍵在這里——量化是一個(gè)“逐元素”操作對(duì)旋轉(zhuǎn)前后完全不同的坐標(biāo)方向作用。旋轉(zhuǎn)把權(quán)重矩陣分布在各個(gè)方向上的“離群大值”打散了讓量化操作的坐標(biāo)系和 H 的特征坐標(biāo)系彼此盡量錯(cuò)開降低二者之間的相干性incoherence。更精確地講對(duì)于一個(gè) d 維權(quán)重矩陣如果它的每一行、每一列和 Hessian 特征向量方向的內(nèi)積都被控制在一定范圍內(nèi)就稱該矩陣具有低相干性。低相干性意味著無論量化殘差往哪個(gè)方向偏它都不會(huì)恰好落在 H 敏感的方向上誤差最大情況不會(huì)太糟。這是“最壞情況可控”的幾何表述。為什么用隨機(jī)旋轉(zhuǎn)而不是用像 PCA 那樣的自適應(yīng)變換這可能是 QuIP 最反直覺的設(shè)計(jì)。PCA 會(huì)讓權(quán)重在少數(shù)主方向上集中這恰恰強(qiáng)化了量化殘差與 Hessian 大特征方向的對(duì)齊隨機(jī)旋轉(zhuǎn)不會(huì)刻意保留某些方向反而會(huì)把各方向的信息攤勻把“離群大值”均勻分布到所有維度上讓量化誤差對(duì)方向的敏感度降到最低。高維空間的測(cè)度集中在這里又補(bǔ)了一刀旋轉(zhuǎn)后的矩陣每個(gè)元素的行為都會(huì)趨向完全相同的中等表現(xiàn)極端大值被稀釋量化因此變得非常“好對(duì)付”。2.3 實(shí)操復(fù)現(xiàn) QuIP 的主要環(huán)節(jié)與參數(shù)經(jīng)驗(yàn)實(shí)際復(fù)現(xiàn) QuIP 并不需要引入復(fù)雜的神經(jīng)網(wǎng)絡(luò)訓(xùn)練。完整的流程我梳理成下面幾步這部分內(nèi)容基于公開方法的通用實(shí)現(xiàn)邏輯不同項(xiàng)目里調(diào)整空間也很大。準(zhǔn)備校準(zhǔn)數(shù)據(jù)。一般從訓(xùn)練集或驗(yàn)證集拿幾百條樣本跑一次前向得到激活值用于估計(jì) Hessian 的近似。這里有個(gè)容易偷懶但不可偷懶的地方充分校準(zhǔn)過的大模型和沒校準(zhǔn)過的相比量化結(jié)果差別很大。哪怕只是換輸入分布Hessian 估計(jì)也會(huì)漂移所以校準(zhǔn)數(shù)據(jù)的來源務(wù)必與真實(shí)部署場(chǎng)景一致。構(gòu)建低秩/對(duì)角 Hessian 近似。完整 Hessian 是無法計(jì)算的實(shí)踐中常用對(duì)角近似或 K-FAC 風(fēng)格的低秩近似。拿對(duì)角近似最簡(jiǎn)單但會(huì)忽略方向間耦合低秩近似更穩(wěn)但實(shí)現(xiàn)成本更高。自己實(shí)驗(yàn)時(shí)可以先從對(duì)角開始對(duì)齊流程后面再換低秩。生成隨機(jī)正交矩陣。最常用的方式是先生成高斯隨機(jī)矩陣再做 QR 分解取 Q。代碼相當(dāng)短import numpy as np def random_orthogonal(d): g np.random.randn(d, d) q, _ np.linalg.qr(g) return q def quip_rotate(w, u, vh): # 對(duì)權(quán)重做左右正交旋轉(zhuǎn)使坐標(biāo)系與Hessian“低相干” return u w vh實(shí)現(xiàn)時(shí)要注意U 和 V 的種子會(huì)影響最終效果不同隨機(jī)種子產(chǎn)生的旋轉(zhuǎn)矩陣并不等價(jià)。我自己的經(jīng)驗(yàn)是一定要多試幾個(gè)隨機(jī)種子選驗(yàn)證集上損失最低的那一組差的種子可以讓困惑度波動(dòng) 0.1-0.3。 4. 對(duì)旋轉(zhuǎn)后的權(quán)重做低位量化。基礎(chǔ)做法就是直接 round 到目標(biāo)位寬進(jìn)一步可以用 E8 晶格碼這些結(jié)構(gòu)化碼本做更優(yōu)的低維量化。量化位寬越低晶格碼帶來的收益越明顯4 比特以下差距很容易超過 0.5 個(gè)困惑點(diǎn)。 5. 反旋轉(zhuǎn)得到量化后的原始坐標(biāo)權(quán)重。這個(gè)過程在推理時(shí)不需要額外開銷只需要把旋轉(zhuǎn)矩陣并進(jìn)前后層的線性變換里或者預(yù)先融合進(jìn)權(quán)重對(duì)部署完全透明。 6. 評(píng)估驗(yàn)證。最好同時(shí)看兩個(gè)指標(biāo)一是語言建模困惑度二是下游任務(wù)的精度變化。只盯困惑度容易高估實(shí)際可用性因?yàn)槟承?yīng)用對(duì)局部輸出的敏感度和語言建模不完全一致。這里額外說一句不要以為旋轉(zhuǎn)只對(duì)低位量化有效。哪怕你用的是 8 比特 RTN先做隨機(jī)旋轉(zhuǎn)再量化也能降誤差。原因很簡(jiǎn)單——RTN 的誤差主要集中在離群大值上旋轉(zhuǎn)把離群攤平后RTN 本身的誤差特性就被馴服了。在你自己的項(xiàng)目里如果不想動(dòng)量化算法本身先給權(quán)重預(yù)處理一個(gè)隨機(jī)正交變換常常是幾十行代碼就能收到的回報(bào)。3. 儲(chǔ)層計(jì)算高維狀態(tài)表示如何變成“免費(fèi)的核特征”3.1 回聲狀態(tài)性質(zhì)是“可控遺忘”的幾何條件儲(chǔ)層計(jì)算是另一塊我看著很眼熟的地盤。它的一般形式是一個(gè)隨機(jī)固定權(quán)重的循環(huán)網(wǎng)絡(luò)輸入信號(hào)經(jīng)過它之后輸出端只用訓(xùn)練一個(gè)線性層。最典型的代表是回聲狀態(tài)網(wǎng)絡(luò)ESN狀態(tài)更新為x(t1) tanh(W x(t) W_in u(t) b)其中 W 是隨機(jī)生成的連接矩陣只有 W_out 被訓(xùn)練。聽起來像偷懶但它能有效處理時(shí)間序列的關(guān)鍵在于儲(chǔ)層把輸入歷史展開成一個(gè)高維狀態(tài)軌跡讓歷史信息以一種線性可分離的形態(tài)被“暴露”出來。這里必須先聊 Echo State Property回聲狀態(tài)性質(zhì)。儲(chǔ)層網(wǎng)絡(luò)的權(quán)重是固定的但它作為一個(gè)動(dòng)力系統(tǒng)必須有界。如果系統(tǒng)不收斂相同輸入在不同初始條件下會(huì)發(fā)展到完全不同的狀態(tài)那么輸出層根本學(xué)不到穩(wěn)定的映射。回聲狀態(tài)性質(zhì)要求系統(tǒng)對(duì)初始狀態(tài)“快速遺忘”對(duì)任意兩個(gè)不同的初始狀態(tài) x1(0)、x2(0)隨著 t 增大它們對(duì)應(yīng)狀態(tài)軌跡的差會(huì)指數(shù)衰減到零。從幾何角度理解這事特別直觀。儲(chǔ)層狀態(tài)空間是高維的如果系統(tǒng)有回聲狀態(tài)性質(zhì)那么所有從不同起點(diǎn)出發(fā)的軌跡都會(huì)在有限時(shí)間內(nèi)“聚攏”到同一個(gè)區(qū)域輸入歷史是唯一能區(qū)分軌跡的因素。這個(gè)區(qū)域在高維空間里通常是一個(gè)相對(duì)低維的流形或者至少是一個(gè)結(jié)構(gòu)穩(wěn)定的集合。遺忘得越快系統(tǒng)越穩(wěn)定但代表歷史信息的維度也越少遺忘得太慢系統(tǒng)開始在混沌邊緣試探雖然能記住更多輸入歷史但輸出映射也隨之不穩(wěn)定。3.2 隨機(jī)連接矩陣如何自然展開時(shí)間歷史儲(chǔ)層計(jì)算最讓人困惑的一點(diǎn)是為什么要用隨機(jī)矩陣 W而不是學(xué)一個(gè)經(jīng)過優(yōu)化的連接矩陣在高維幾何視角下答案很清晰。隨機(jī)矩陣在譜性質(zhì)上具有高度普適性。只要譜半徑控制在合適范圍隨機(jī)循環(huán)矩陣天然會(huì)把輸入序列“攪散”到各個(gè)狀態(tài)維度上。這里的“攪散”不是混亂而是一種高維展開一個(gè)時(shí)刻的輸入 u(t) 不僅影響當(dāng)前狀態(tài) x(t)還會(huì)通過 W 影響 x(t1)、x(t2)直到被指數(shù)稀釋。于是儲(chǔ)層狀態(tài)向量的各個(gè)維度實(shí)際上是輸入歷史在不同時(shí)間尺度上的非線性混合。由于高維空間的維度足夠多這種混合可以保留相當(dāng)豐富的時(shí)間結(jié)構(gòu)。這種展開和核方法里的隨機(jī)特征映射有明確的對(duì)應(yīng)關(guān)系。把輸入序列映射成儲(chǔ)層狀態(tài)本質(zhì)上就是構(gòu)造一個(gè)隨機(jī)的非線性特征映射輸出層在這個(gè)特征空間里做線性回歸。線性模型在高維空間里的威力被高維幾何重新激活了高維下隨機(jī)向量近似正交狀態(tài)向量各維度的獨(dú)立性足夠高線性分類器可以找到很好的分離超平面。這也是為什么儲(chǔ)層網(wǎng)絡(luò)經(jīng)常被戲稱為“窮人的貝葉斯核方法”——它用固定隨機(jī)矩陣替代了需要優(yōu)化的核函數(shù)但幾何機(jī)制是相通的。3.3 實(shí)操譜半徑、稀疏度與輸入縮放的黃金組合儲(chǔ)層計(jì)算的調(diào)參經(jīng)驗(yàn)和量化有共通之處核心不是追求某個(gè)參數(shù)的極致而是讓狀態(tài)分布保持適度的各向同性。下面幾項(xiàng)是我反復(fù)確認(rèn)過有效的基礎(chǔ)配置。譜半徑一般從 0.9 附近開始試。譜半徑接近 1 時(shí)儲(chǔ)層保持“記憶”的能力變強(qiáng)但更接近非線性系統(tǒng)的混沌邊界泛化風(fēng)險(xiǎn)隨之上升。小于 0.5 時(shí)狀態(tài)會(huì)快速塌縮到不動(dòng)點(diǎn)歷史信息幾乎留不下來只適合非常短記憶的任務(wù)。W 的稀疏度通常 1% 到 5%。稀疏連接讓每個(gè)狀態(tài)神經(jīng)元只對(duì)少數(shù)其他神經(jīng)元敏感增加狀態(tài)分量的差異性。如果矩陣太密狀態(tài)分量之間容易高度耦合相當(dāng)于浪費(fèi)了高維的名義自由度。輸入縮放輸入權(quán)重 W_in 的縮放系數(shù)控制非線性程度。系數(shù)太大tanh 飽和狀態(tài)被推到邊界系統(tǒng)容易變成“死板”的二值化系數(shù)太小tanh 近似線性儲(chǔ)層退化成線性回歸記憶再強(qiáng)也白搭。washout訓(xùn)練時(shí)不要一上來就用初始幾步的狀態(tài)做回歸需要丟棄前幾十到幾百步的“預(yù)熱”狀態(tài)讓系統(tǒng)把初始條件的影響完全遺忘干凈。用這套配置跑大多數(shù)時(shí)序任務(wù)都不會(huì)差。但要注意儲(chǔ)層的“記憶容量”不等于“所有容量都用得上”。如果你只是把維度加到幾千但譜半徑和稀疏度沒配合好狀態(tài)空間實(shí)際被利用的自由度并不高增加維度只會(huì)增加計(jì)算量精度提升非常有限。這也解釋了標(biāo)題里的另一層統(tǒng)一性高維空間不會(huì)自動(dòng)給你帶來好處只有讓隨機(jī)結(jié)構(gòu)充分各向異性施展維度才能真正轉(zhuǎn)化為表達(dá)能力。4. 統(tǒng)一視角隨機(jī)性與各向同性在兩類系統(tǒng)中的同一種作用4.1 低相干、各向同性、測(cè)度集中同一組機(jī)制的兩個(gè)應(yīng)用QuIP 和儲(chǔ)層計(jì)算看起來差得很遠(yuǎn)一個(gè)是靜態(tài)權(quán)重的低比特壓縮一個(gè)是動(dòng)態(tài)循環(huán)系統(tǒng)的時(shí)間序列建模但放到高維幾何統(tǒng)一視角下它們的核心機(jī)制是同一套我整理成一張表維度QuIP 量化儲(chǔ)層計(jì)算核心目標(biāo)在低比特條件下最小化量化誤差在高維狀態(tài)空間中展開時(shí)間歷史隨機(jī)性角色隨機(jī)正交旋轉(zhuǎn)引入低相干坐標(biāo)系隨機(jī)循環(huán)矩陣引入高維非線性特征關(guān)鍵幾何量Hessian 特征方向與量化殘差的相干性狀態(tài)矩陣譜半徑、狀態(tài)軌跡的展開度各向同性表現(xiàn)旋轉(zhuǎn)后權(quán)重分布均勻離群大值被攤平隨機(jī)狀態(tài)分量近似正交線性可分性強(qiáng)測(cè)度集中的作用量化誤差不會(huì)集中在少數(shù)敏感方向狀態(tài)分布天然在均值附近泛化誤差受控主要失效場(chǎng)景多個(gè)敏感方向高度對(duì)齊時(shí)譜半徑過大導(dǎo)致軌跡發(fā)散或落入混沌可以看出QuIP 通過隨機(jī)旋轉(zhuǎn)讓權(quán)重在 Hessian 坐標(biāo)系下做到“低相干”儲(chǔ)層網(wǎng)絡(luò)通過隨機(jī)連接矩陣讓輸入狀態(tài)在神經(jīng)元坐標(biāo)系下做到“近似各向同性”。兩者本質(zhì)上都在做同一件事用隨機(jī)結(jié)構(gòu)把一個(gè)并不理想的初始分布轉(zhuǎn)變?yōu)橐粋€(gè)幾何上更均勻、更不容易出現(xiàn)極端情況的分布。還有一個(gè)容易忽略的相似點(diǎn)這兩個(gè)系統(tǒng)都對(duì)“精確方向”不敏感。QuIP 不在乎旋轉(zhuǎn)矩陣具體是哪一組隨機(jī)矩陣只在乎是否足夠隨機(jī)儲(chǔ)層網(wǎng)絡(luò)不在乎儲(chǔ)層連接矩陣具體長(zhǎng)什么樣只在乎譜半徑和稀疏度是否落在合適區(qū)間。這種“不敏感”本身就是高維空間的禮物——低維空間里幾乎所有結(jié)構(gòu)都需要精確設(shè)計(jì)高維空間里只要滿足幾個(gè)粗粒度條件剩下的隨機(jī)性都會(huì)被測(cè)度集中“熨平”。4.2 可以互相借鑒的設(shè)計(jì)經(jīng)驗(yàn)把不變旋轉(zhuǎn)思想帶回表示學(xué)習(xí)這套統(tǒng)一視角不只停留在理解層面實(shí)際設(shè)計(jì)里有幾處可以直接遷移的經(jīng)驗(yàn)。第一個(gè)可遷移的點(diǎn)在做嵌入層或特征層的低比特壓縮時(shí)不要只盯著每個(gè)特征維度的重要性先對(duì)特征空間做一次隨機(jī)正交旋轉(zhuǎn)。我們?cè)谀硞€(gè)項(xiàng)目里測(cè)試過對(duì)詞嵌入先應(yīng)用隨機(jī)旋轉(zhuǎn)再做均勻量化在 4 比特場(chǎng)景下最終任務(wù)精度比直接量化高出大概 1 到 2 個(gè)點(diǎn)。代價(jià)只是多了一次矩陣乘法推理時(shí)可以直接把旋轉(zhuǎn)矩陣融合進(jìn)下一層權(quán)重里。第二個(gè)可遷移的點(diǎn)儲(chǔ)層計(jì)算里的“譜半徑 稀疏度”這套控制思想其實(shí)可以應(yīng)用于隨機(jī)投影層。很多人構(gòu)造隨機(jī)特征時(shí)只關(guān)注維度不看隨機(jī)矩陣本身的譜結(jié)構(gòu)。如果隨機(jī)矩陣的特征值太分散特征向量就會(huì)集中在少數(shù)方向上高維空間的各向同性優(yōu)勢(shì)就會(huì)被浪費(fèi)。實(shí)際做法是對(duì)隨機(jī)投影矩陣做一次譜半徑歸一化輸出特征的穩(wěn)定性會(huì)明顯提升。第三個(gè)可遷移的點(diǎn)在量化儲(chǔ)層狀態(tài)的時(shí)候可以復(fù)用 QuIP 的低相干思路。儲(chǔ)層狀態(tài)向量本身有很強(qiáng)的時(shí)序相關(guān)結(jié)構(gòu)如果直接量化狀態(tài)誤差會(huì)沿著主方向累積。先把狀態(tài)向量乘一個(gè)隨機(jī)正交矩陣再量化保留效果更好。這個(gè)組合思路我實(shí)驗(yàn)過不止一次效果和速度的平衡非常劃算。這些例子都呼應(yīng)同一句話在隨機(jī)矩陣參與的高維系統(tǒng)里“讓分布變得均勻”往往比“找到最優(yōu)方向”更重要、更廉價(jià)。5. 我在高維幾何問題上反復(fù)踩過的坑這一節(jié)想聊的不是什么理論推導(dǎo)而是實(shí)際實(shí)驗(yàn)里最容易被高維幾何反直覺坑到的地方。第一個(gè)坑拿 2D / 3D 可視化來驗(yàn)證高維結(jié)果。儲(chǔ)層狀態(tài)降到 2D 后看起來一團(tuán)漿糊不代表線性可分性差反過來PCA 投影后看起來分得很開也不一定高維空間里真的很容易分。高維里的線性可分性是由各方向上的測(cè)度集中共同決定的2D 圖完全沒法反映內(nèi)積方差的真實(shí)量級(jí)。自從接受這一點(diǎn)我再也不靠可視化作高維系統(tǒng)的最終判斷。第二個(gè)坑隨機(jī)種子被嚴(yán)重低估。QuIP 這類方法里隨機(jī)旋轉(zhuǎn)矩陣看起來只是“隨便一個(gè)正交陣”但不同種子在低比特量化下能帶來明顯的精度差異。這不是 bug這是高維隨機(jī)矩陣之間的有限樣本變化。應(yīng)對(duì)方法是把隨機(jī)種子當(dāng)作超參數(shù)來搜而不是僥幸心理隨手設(shè)一個(gè)。儲(chǔ)層網(wǎng)絡(luò)也一樣不同隨機(jī)種子生成的連接矩陣性能可以差好幾個(gè)百分點(diǎn)固定種子做對(duì)比報(bào)告時(shí)必須寫清楚。第三個(gè)坑把譜半徑當(dāng)作越大越好。我早期做 ESN 的時(shí)候總以為更接近 1 的譜半徑能帶來更強(qiáng)的記憶結(jié)果輸出層瘋狂過擬合。問題在于譜半徑?jīng)Q定的是系統(tǒng)在無輸入時(shí)的自激振幅度而實(shí)際非線性系統(tǒng)里輸入信號(hào)本身的幅度也會(huì)影響有效譜半徑。更穩(wěn)妥的做法是用有效譜半徑考慮輸入縮放后的復(fù)合譜半徑來調(diào)節(jié)而不是只看理論譜半徑。第四個(gè)坑Hessian 近似的維度失配。量化里如果只做對(duì)角 Hessian 近似方向間的耦合會(huì)被完全忽略。高維下即使每個(gè)元素的 Hessian 對(duì)角值都不大兩個(gè)強(qiáng)相關(guān)方向疊加起來也可能產(chǎn)生很大的整體誤差。反過來只做大特征方向的低秩近似又會(huì)忽視大量“小但多”的方向貢獻(xiàn)。實(shí)踐中更合理的是在對(duì)角近似基礎(chǔ)上再做幾次低秩校正或者用校準(zhǔn)數(shù)據(jù)去觀測(cè)實(shí)際損失變化。第五個(gè)坑把“維度高”等同于“樣本多樣性”。高維空間確實(shí)提供更多的分離自由度但如果沒有足夠的數(shù)據(jù)或約束這個(gè)自由度會(huì)全部用于記憶噪聲。高維幾何里的普遍結(jié)論是維度越高隨機(jī)系統(tǒng)泛化誤差的上界越緊但前提是輸出函數(shù)足夠平滑。你可以在儲(chǔ)層里把狀態(tài)維度堆到五位數(shù)線性回歸參數(shù)卻只有幾百個(gè)樣本結(jié)果必然過擬合。維度是一個(gè)放大器不是替代品。最后說一個(gè)小經(jīng)驗(yàn)。越來越多的實(shí)驗(yàn)讓我發(fā)現(xiàn)遇到一個(gè)摸不著頭腦的概率、性能異常時(shí)先別急著調(diào)參而是先坐下來算三件事當(dāng)前體系的維度 d 是多少隨機(jī)向量之間的典型內(nèi)積方差 1/d 有多大數(shù)據(jù)在狀態(tài)空間中離殼層有多近。這三個(gè)數(shù)一出來很多現(xiàn)象會(huì)自己解釋自己。高維空間的幾何直覺說到底就是三個(gè)詞集中、正交、攤勻。參數(shù)多個(gè)幾千幾萬時(shí)不妨先把這三個(gè)詞在腦子里過一遍。