宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

一個提議服務所有邊際:給二元矩陣採樣找到一勞永逸的解法

2026年10月09日 首頁 » 熱門科技

你可能沒聽說過"邊際固定的二元矩陣一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法"這個詞,但你很可能見過它的應用場景。

生態學家想知道,某片森林裡幾種動物在不同地點的分布,到底是巧合還是真的存在某種生態規律。心理測量學家想驗證一份智力測驗的作答模式,是不是符合某個理論模型。社交網路分析師想搞清楚,一份好友關係表現出的聚集特徵,是不是純粹隨機產生的。

這些問題的共同點是,研究者手裡有一張由0和1組成的表格,行代表個體(比如物種、受試者、用戶),列代表屬性(比如站點、題目、好友),每一行的1的個數(行和)和每一列的1的個數(列和)都是觀測到的、固定不變的數字。研究者想知道:在保持這些行和列的總數不變的前提下,隨機生成的表格會長什麼樣?我觀測到的這張表,是不是比隨機生成的更特殊?

這個問題看似簡單,做起來卻極其棘手。

一張表,兩個難題

假設你固定了行和列的總數,符合條件的0-1矩陣可能有幾個、幾十個,也可能有天文數字那麼多個。這構成了一個數學對象,專業上叫做

邊際固定的二元矩陣空間:給定行和數向量 r 和列和數向量 c,所有滿足這兩個條件的0-1矩陣構成的集合,記作 Ω(r,c)。

圍繞這個空間,有兩個基礎問題需要解決。第一是數清楚這個空間裡到底有多少個矩陣,這個數字叫做計數 Z。第二是從這個空間裡均勻隨機地抽一個矩陣出來,也就是讓每個矩陣被抽中的概率完全相等。

這兩個問題乍看是數學遊戲,實際上決定了前面那些科學問題能不能被嚴謹地回答。你想知道觀測數據是否特殊,就得知道"隨機情況"長什麼樣,而隨機情況就是這個空間裡均勻分布的矩陣。

精確解法是有的,用動態規劃一行一行地構建矩陣,同時把計數和均勻採樣都做出來。問題是,這個方法的計算複雜度隨著列數增長會爆炸式上升,稍微大一點的表格就算不動了。這就好比你想數清楚一個巨大迷宮裡所有能從起點走到終點的路徑,理論上你可以一條一條枚舉,但當迷宮稍微複雜一點,枚舉的時間就會超過宇宙的年齡。

馬爾可夫鏈方法是另一條路,通過不斷微調矩陣中的0和1來生成樣本,理論上最終會趨近均勻分布。但這種方法生成的樣本前後相關,不獨立,而且完全不能告訴你這個空間到底有多大。

於是就有了本文要講的主角:序貫重要性採樣一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法。

序貫重要性採樣:一邊造表一邊評分

序貫重要性採樣,簡稱SIS,是一種同時解決計數和採樣兩個問題的方法。它的思路是這樣的:不去均勻地隨機生成矩陣,而是按照某個"建議分布"一行一行地構造矩陣,每完成一行就檢查剩下的行能不能湊出滿足列約束的表格。構造完成後,給這個矩陣打一個權重,權重是建議分布給出該矩陣概率的倒數。

序貫重要性採樣*:一種通過逐行構造矩陣、並用權重修正偏差的採樣方法,能同時給出獨立的加權樣本和一個無偏的計數估計量。

這個方法的巧妙之處在於,無論你用的建議分布多爛,只要它給每個可行的行都留了正概率,最終權重的平均值就是對Z的無偏估計。聽起來像是免費的午餐,但代價藏在"效率"這個詞裡。

如果建議分布選得不好,大部分權重會集中在極少數幾個樣本上,其他樣本的權重幾乎為零。這時候你抽了一萬個樣本,實際上等效於只抽了幾個樣本的資訊量,估計的方差極大,甚至可能嚴重低估真實的計數。學界用一個指標衡量這種效率,叫做

有效樣本比例一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法:ESS/N,取值在0到100%之間,越接近100%說明建議分布越好,越接近0說明大部分抽樣都在做無用功。

這就好比你想統計一個班級的平均身高,如果你抽樣時總是傾向於抽到最高的那幾個人,那麼你抽再多次,得到的平均值都會偏高,而且樣本之間的資訊高度冗餘,浪費了大量抽樣機會。

那麼,有沒有一個理想的建議分布,能讓每次抽樣都恰到好處?

答案是有的,而且形式極其優雅:每一步選擇下一行時,按照"這一行剩下能完成多少種表格"的比例來選。如果某一行選完之後,後面還有100種方法能湊成完整的表格,而另一行選完後只剩10種,那麼前者應該以更大的概率被選中。

這個理想分布有個性質,它會讓每一個最終生成的矩陣獲得完全相同的權重,權重恰好就是Z本身。方差降到零,效率達到100%。

問題是,這個理想分布幾乎沒法直接計算。因為計算"剩下能完成多少種表格"本身,就是在問一個和Z同樣難的計數問題。你為了解決計數問題去構造一個依賴計數的分布,這是個死循環。

正因為如此,幾十年來所有的經典方法都是分析家們絞盡腦汁設計出來的近似公式,用一些數學近似(比如漸近展開)去逼近這個理想分布,效果因矩陣形狀而異,有時候好,有時候會差到需要指數級多的樣本才能不嚴重低估計數。

這篇論文的作者們換了個角度想這個問題:既然理想分布算不出來,能不能讓一個神經網路自己學出來?

生成流網路一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法:讓"計數"變成一個可訓練的目標

要理解這篇論文的核心創新,得先認識一個叫做

生成流網路(GFlowNet):一類通過多步驟構建對象、並讓最終生成每個對象的概率正比於該對象獎勵值的生成模型。它把"從初始狀態到終態"的整個構造過程看成一張有向無環圖上的流動。

的框架。GFlowNet最初是用來解決"我想讓生成的樣本按照某種獎勵比例出現"這類問題的,比如在藥物分子設計里,獎勵越高的分子應該被生成得越頻繁。

作者們發現了一個漂亮的對應關係:如果你把"每個滿足邊際條件的矩陣"都設定為獎勵恰好等於1,那麼這個GFlowNet的最優策略,正好就是前面提到的那個理想的、零方差的SIS建議分布。

換句話說,理想建議分布不是別的,正是一個特定GFlowNet的策略。而GFlowNet的策略是可以通過訓練學出來的,訓練過程只需要用到採樣本身產生的數據,完全不需要提前知道Z是多少。

這個發現的意義在於,它把一個"分析家憑經驗設計公式"的問題,轉化成了一個"用數據訓練模型"的問題。以前是靠數學家精妙的漸近分析去猜近似公式,現在是讓網路在採樣過程中自己糾正自己,逐漸逼近那個理想分布。

打個比方,這就像以前你想知道去某個陌生城市該怎麼走最省時間,只能靠老司機憑經驗估計的路線圖,路線圖畫得好不好完全取決於這位老司機對這座城市的熟悉程度,換一座城市可能就完全失靈。而現在你有了一個導航系統,它會根據你每次實際開車走過的路況數據,不斷修正對最優路線的判斷,理論上只要數據夠多,它總能收斂到真正的最優路徑,而且這套系統換到任何城市都能用同樣的邏輯重新學習。

訓練這個GFlowNet用的是一種叫做

對數方差目標一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法(VarGrad):一種訓練目標,衡量的是同一批樣本的對數權重之間的方差有多大,方差越小說明策略越接近理想分布。

的損失函數,配合另一個理論工具

軌跡平衡一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法:GFlowNet訓練中常用的一致性條件,要求每條完整軌跡的流量平衡關係成立。

的一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法推導,作者證明了:這個損失函數的期望梯度,恰好等於讓採樣分布逼近均勻分布這個目標的梯度。也就是說,訓練這個損失函數,本質上就是在讓網路生成的樣本分布越來越接近真正想要的均勻分布,即使訓練過程中Z本身從未被顯式計算過。

這裡有個細節值得展開說說。訓練GFlowNet通常還會順帶學出一個總流量的估計值,看起來像是白送的計數估計。但作者證明了,這個附帶估計其實是有偏的,它會比真實的log Z小一個"沒訓練乾淨"的差距。所以論文裡明確說:計數任務還是交給SIS本身的權重平均來做,GFlowNet只負責學策略。這是一個很清醒的取捨,沒有貪圖訓練過程里那個看似免費的計數值。

一個網路,服務所有矩陣

如果故事講到這裡就結束了,那麼MarginFlow一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法頂多算是"給GFlowNet找到了一個新應用場景",價值有限,因為給每一種邊際條件都單獨訓練一個網路,其實比手工設計的建議分布還要昂貴。

真正讓這篇論文變得有意思的,是接下來這一步。

作者們觀察到一個關鍵的自相似性:當你已經填好了矩陣的前幾行,剩下沒填的部分,其實就是一個規模更小、邊際條件也相應縮減了的新問題實例。

MarginFlow*:本文提出的框架,核心思想是訓練一個統一的神經網路,讓它讀取"剩餘的邊際條件"作為輸入,輸出下一行該怎麼選,從而讓一個網路能夠服務於所有不同的邊際條件問題,無需針對每個新問題重新訓練。

這就好比你在玩一個越來越小的俄羅斯套娃,每打開一層,裡面還是同樣結構的套娃,只是尺寸變小了。既然結構完全一樣,你不需要為每個尺寸的套娃單獨學一套打開方法,只需要學會"看到套娃的當前尺寸,判斷下一步怎麼拆"這一件事就夠了。如果不這樣做,會發生什麼?你就得為3行3列的小矩陣、870行6列的大矩陣、各種密度和形狀的矩陣,各訓練一個專屬網路,這個成本比手工設計的公式還高得多,那這套方法就完全沒有實用價值。

具體來說,網路讀取的輸入是"剩餘的行和"以及"剩餘的列和",輸出是對每一種可能的下一行的評分。這裡有個精細化處理:不同的具體行如果在"剩餘列和"相同的列上放的1的個數是一樣的,那麼理論上它們被選中的概率必須完全相等。作者證明了這一點(對應論文中的命題3.6),並利用這個對稱性把網路需要評分的對象從"具體的行"壓縮成了"行的類型",大大減少了計算量。

網路架構選用的是

集合變換器一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法(Set Transformer):一種專門處理集合輸入(即元素間沒有固定順序)的注意力神經網路架構,天然具備置換不變性。

這個選擇本身就呼應了前面說的對稱性要求,因為矩陣的列之間原本就沒有天然的順序,用一個對順序不敏感的網路去處理,正好和數學結構對上了號。

訓練時,網路的評分輸出被設計成三部分之和:一部分是純組合數學算出來的、某個類型下有多少種具體的行排列方式;一部分是照搬經典的Harrison和Miller方法給出的解析近似值,作為一個強先驗,讓網路從一個不錯的起點開始學習,而不是從零摸索;最後一部分才是網路真正學到的修正項,初始化為零,意味著訓練剛開始時網路的行為和經典方法完全一致,之後再逐漸學出比經典方法更好的策略。

這個設計其實藏著一個很實際的工程智慧:不是讓網路從零開始學一個從未見過的任務,而是讓網路站在巨人的肩膀上,只學習巨人沒做好的那部分修正。如果不這樣做,直接讓網路從隨機初始化開始學習整個建議分布,會發生什麼?論文裡的消融實驗(附錄C.1)給出了答案:去掉這個解析先驗項之後,網路在最難的那批矩陣上,三次獨立訓練的結果之間波動會大五倍,說明沒有先驗支撐的時候,訓練變得不穩定,收斂路徑充滿不確定性。

訓練數據來自一個包含1904種邊際條件的"訓練池",涵蓋了六種人工合成的矩陣家族(改變形狀、密度、不均勻程度)以及真實世界的生態學、互惠網路和心理測量數據表。每次訓練疊代,隨機抽一種邊際條件,讓當前網路採樣若干矩陣,計算這些矩陣對數權重的方差作為損失,然後更新網路參數。因為採樣過程中經過的每一個中間狀態本身又是一個新的邊際實例,所以一次採樣軌跡就能給網路在多個不同"縮小版問題"上提供訓練信號。

訓練完成後,這個網路被拿去測試1190個從未見過的邊際條件,涵蓋從3行3列到870行6列的各種規模。注意,這裡的"從未見過"是嚴格意義上的,無論是隨機種子還是數據來源都做了隔離,測試集和訓練池沒有重疊。

結果如何:一個數字勝過31種配置

作者拿MarginFlow去對比的基準,不是隨便挑一個經典方法,而是31種不同的經典方法配置(5種解析建議分布,每種配6個不同的指數參數,再加均勻分布)里,事後(post hoc)挑出來在每個具體測試矩陣上表現最好的那一個。

這個基準設計得非常"公平到近乎苛刻",因為現實中沒有任何用戶能提前知道該給某個矩陣用哪種配置,這個"事後最優"其實是一個理論上限,比任何實際可用的經典方法都強。

即便如此,MarginFlow在1190個測試矩陣中的1187個上,打平或超過了這個事後最優基準。全體測試矩陣的有效樣本比例中位數達到99.8%,意味著一半以上的矩陣上,MarginFlow幾乎做到了零方差的理想水平。

更值得注意的是那些"事後最優"表現也很差的困難矩陣。在56個"事後最優"的有效樣本比例低於37%(也就是損失超過1個nat,一個資訊論單位)的矩陣上,MarginFlow全部勝出,有效樣本比例中位數從10.3%直接提升到94.1%。

這56個矩陣大多是又高又密的表格,行數最多達到840,來自冪律分布、極端和分布、雙峰分布這些人工合成家族,也包括真實的生態學和互惠網路數據。在這些矩陣上,經典方法幾乎失效,就算你事後挑最好的配置也無濟於事,MarginFlow卻依然穩穩保持在94%左右。

這個數字差距意味著什麼?意味著如果你想用經典方法在這類困難矩陣上得到一個可靠的計數估計,你可能需要抽取比MarginFlow多幾十倍甚至上百倍的樣本才能達到同樣的精度,而計算資源和時間都是有限的。

誤差是怎麼隨著行數累積的

論文裡有一段分析特別值得展開講講,因為它解釋了為什麼MarginFlow在"高個子"矩陣(行數很多)上優勢格外明顯。

一個矩陣的總權重是每一行選擇概率的連乘積。這意味著,只要每一行的建議分布和理想分布之間有一點點偏差,這個偏差就會隨著行數的增加不斷累積,而且是以平方的方式累積,作者給出了理論上界:如果每行的誤差大約是δ個nat,累積m行之後總誤差上界大約是mδ的平方。

這就像一場接力跑,如果每一棒選手都比理想速度慢一點點,跑的棒數越多,累積下來的總延遲就越誇張,而且這個延遲增長比你想像的更快,因為每一棒的偏差是疊加相乘而不是簡單相加的效應。

論文用實驗驗證了這個理論:固定矩陣的家族、寬度和密度,只改變行數從6行漲到840行,經典的Harrison-Miller方法損失的nat數幾乎呈線性增長(在對數坐標下斜率接近1),有效樣本比例從6行時的98.7%一路跌到840行時的0.6%。而MarginFlow同樣會隨行數增加損失一些效率,但曲線的斜率小得多,840行時依然保持在99.9%以上(損失低於0.1個nat)。

這說明了一個很本質的道理:經典方法的每行誤差是一個"固定值",因為它是靠一個固定公式算出來的,公式不會因為矩陣變大而自動變准。而MarginFlow學到的是一個動態調整的策略,每一行的誤差本身就更小,所以行數越多,MarginFlow相對經典方法的優勢反而越明顯。

論文還專門做了一個"壓力測試",用Bezáková等人2012年構造的一類矩陣家族。這類矩陣有個特殊之處:數學上已經被證明,經典的條件泊松方法一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法在這上面需要指數級多的樣本才能不嚴重低估計數。作者讓MarginFlow在這個家族中最多84行的矩陣上訓練,然後測試它在最多376行(是訓練規模的近5倍)的矩陣上表現如何。結果是,經典方法在376行時每個有效樣本要付出e的63次方(一個天文數字)個抽樣的代價,而MarginFlow的代價只有1.2左右,幾乎不需要額外抽樣就能拿到一個有效樣本。這意味著MarginFlow不僅在見過的規模上表現好,還具備了某種"外推"到更大規模的能力。

訓練過程中到底發生了什麼

為了驗證前面理論推導的正確性,作者還做了一個單矩陣的追蹤實驗,選了一個88行6列的真實生態網路數據(來自Web of Life資料庫),這是測試集裡網路訓練前表現最差的一個矩陣,專門用三個隨機種子在這一個矩陣上單獨訓練,每隔一段時間就抽樣並計算精確的理論指標。

結果顯示,訓練損失(也就是對數權重的方差)從最初的1.1個nat一路降到0.01,幾乎降了兩個數量級。與此同時,另外兩個理論上應該和它同步變化的量,兩倍的KL散度和真實的Rényi散度一個提議服務所有邊際給二元矩陣採樣找到一勞永逸的解法,也跟著一起下降,訓練大約1000步之後,三條曲線基本重合,正如理論所預言的那樣。

而在計數估計這一側,用SIS方式(權重平均後取對數)估計出來的log Z,從訓練一開始就穩定在真實值的0.02個nat以內,即便此時策略離均勻分布還差得很遠。反倒是GFlowNet訓練過程里附帶產生的那個log Z估計值,一開始比真實值低了0.9個nat,而且要等到策略幾乎訓練收斂才慢慢追上來,訓練結束時依然差了0.005個nat。這個細節印證了作者的判斷:計數這件事,交給SIS的權重平均去做,比依賴GFlowNet自己訓練出來的那個附帶估計值可靠得多。

代價與邊界

任何方法都有成本,MarginFlow也不例外。

論文裡給出了實測的耗時對比,在13個不同規模的矩陣上,MarginFlow每次抽樣在GPU上運行,Harrison-Miller方法在CPU上跑。多數情況下MarginFlow的有效抽樣速度是Harrison-Miller方法的1.2到9.2倍,差距最大的兩個案例分別達到9.2倍和6.2倍,恰好就是那些經典方法損失最嚴重的矩陣。當然,訓練這個網路本身需要成本,三個種子每個訓練了大約25小時,用了8塊A100顯卡,但這個成本是一次性的,之後可以反覆用在任意新的邊際條件上,不需要為每個新矩陣重新訓練。

網路能處理多大規模的矩陣,取決於它讀取狀態時遇到的"可行行類型"數量。這個數字會隨著列和取值的多樣性增長,作者訓練時把這個數字限制在2萬以內,評測時放寬到10萬以內。如果類型數遠超這個範圍,論文裡提到了一個替代方案:把一行的1逐組填入而不是一次性決定整行,理論上依然精確,只是訓練每一步的代價會高出九倍左右,作者把它留作了下一步的工作方向。

寫在後面

讀完這篇論文,最觸動我的其實不是那個99.8%的中位數,那個數字固然亮眼,但真正讓人願意多想一層的是那個"困境矩陣"實驗:56個連事後諸葛亮式的最優選擇都救不了的矩陣,MarginFlow卻能把有效樣本比例從10.3%拉到94.1%。這說明的不是MarginFlow比某個具體方法強,而是"用固定公式去逼近一個動態變化的目標"這件事,本身就存在一個天花板,無論你怎麼調參數、怎麼事後擇優,都跳不出這個天花板。而學習方法能打破天花板,靠的不是更聰明的公式,是換了一種從數據里自我修正的機制。

另一個讓我反覆咀嚼的細節,是論文裡那個關於"GFlowNet附帶估計的log Z為什麼不能直接用"的討論。這其實是一個容易被忽略的陷阱:一個模型訓練過程中順帶產出的某個數值,看起來像是免費的副產品,但它的準確性其實依賴於訓練是否已經收斂。如果你沒有意識到這一點,直接拿這個"半成品"數值當結果用,得到的答案會系統性地偏小,而且偏小的幅度還取決於你訓練到了哪一步,這是一種很隱蔽的錯誤來源。作者選擇老老實實用SIS的權重平均去做計數,而不是偷懶用那個看起來更方便的附帶值,這個取捨本身值得記一筆。

論文結尾處提到,這套"逐行構造、剩餘部分又是同類新問題"的思路,不只適用於0-1矩陣,還能推廣到整數值的列聯表、指定度數的圖、甚至完美匹配和拉丁矩形這些組合數學對象。這讓我忍不住想,這種"自相似性可以被一個共享網路利用"的思路,會不會在更多"手工設計公式已經卡了幾十年瓶頸"的領域裡,重新掀起一輪"能不能換成學出來"的浪潮?

Q&A

Q1:MarginFlow是什麼?

A:MarginFlow是一種用於二元矩陣採樣和計數的框架,它訓練一個集合變換器網路來讀取矩陣剩餘的行和列約束條件,輸出下一行的選擇概率,從而用一個網路服務所有不同的邊際條件問題,無需為每個新矩陣重新訓練。

Q2:MarginFlow和經典的序貫重要性採樣方法比效果如何?

A:在1190個測試矩陣中的1187個上,MarginFlow打平或超過了31種經典配置里事後挑選出的最優表現,中位有效樣本比例達到99.8%。在56個經典方法表現最差的困難矩陣上,MarginFlow全部勝出,中位有效樣本比例從10.3%提升到94.1%。

Q3:為什麼理想的採樣建議分布算不出來?

A:因為理想分布要求按照"剩餘能完成多少種表格"的比例來選擇下一行,而計算這個數字本身就等同於求解和原問題一樣難的計數問題,屬於自我循環依賴,所以經典方法只能用近似公式去逼近它,而MarginFlow選擇用神經網路從採樣數據中直接學習這個分布。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2026 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新