因子圖與和積算法

極化碼置信傳播(BP)譯碼算法的基本入門課——消息傳播算法、因子圖與和積算法,親測,文章的例子和思路都很清晰,分享給大家~

鳴謝:
文字轉自chuancyli

在1981年Tanner的論文中,介紹了一種可以用來表示碼字的圖形,稱爲Tanner圖。 Tanner圖包含兩類節點:碼元(變量)節點和校驗節點,然後通過邊連接這兩種不同的節點,並且同種節點間不能有直接的邊連接。如果給定一個碼字的碼元數和它的校驗方程,則用Tanner圖可以唯一地確定該碼字。例如一個(7, 3)線性分組碼,其校驗方程爲:
 

 在用Tanner圖表示的過程中, 碼的譯碼算法是可以用明確的公式反映並可程式化進行, 即有很強的可實現性。Tanner圖從本質上講是用碼字的校驗方程來表述碼字

 

  • 消息傳遞算法

 和 積 算 法 (Sum-Product Algorithm) 作 爲 一 種 通 用 的 消 息 傳 遞 算 法(Message Passing Algorithm), 描述了因子圖中頂點(變量節點和校驗節點) 處的信息計算公式, 而在基於圖的編譯碼系統中, 我們首先需要理解的是頂點之間是如何通過邊來傳遞信息。

  • 例如, 若干士兵排成一隊列, 每個士兵只能與他相鄰的士兵交流, 問如何才能使每個士兵都知道總的士兵數?
     

  •  將上面的情況抽象成一般模型,如下圖所示,圖中每個點可看作是一個士兵,對應到編碼理論中則可看作因子圖中對應的節點(如前述的變量節點和校驗節點,或卷積碼的BCJR算法中的狀態點)。

  •  對應上圖, 引入幾個概念: 先驗信息P、 外信息E以及後驗信息A。 在上例中, 先驗信息P表示每個士兵自身的數字1, 如圖(a) 所示;外信息E表示從其他相鄰的士兵獲取的信息, 如圖(c) 所示, 即每個士兵的外信息均爲5;後驗信息A=P+E, 在這裏表示隊列的總人數, 即爲6。 從圖中可以看出, 得到最後的結果是通過前向計算和後向計算得到的。

  •  從圖中可以看出,經過5步計算第3、第4個士兵可以得到總人數6(5+1),經過6步計算第2、第5個士兵可以得到總人數,經過7步計算所有士兵均知道了總人數。

問題:如果士兵不是按照隊列排列,怎麼辦呢?

 

  •  該圖(a)與前圖不同之處在於, 有些士兵不止有2個相鄰的士兵, 可能有3個或更多。 具體信息傳遞流程如圖(b)所示。 每個士兵同樣可以獲得其相鄰士兵給他的外信息, 同時加上自身的信息然後傳遞給相鄰的士兵。
  • 在上面的兩個例子中, 每個士兵節點的信息只需在所有其相鄰節點上進行一次前向和後向的計算, 則每個士兵就可知道總人數。 這樣的圖有一個共同特點:所有節點構成一棵樹, 而樹結構中是沒有環路的。


如果有環路, 會導致什麼結果?
 

由於有環路的存在, 如果用上述信息更新方法來確定總人數, 將會導致無法確定何時中止信息的傳遞, 因此也就無法確定士兵人數。 對應到編碼理論, 則在設計LDPC碼的校驗矩陣時, 應儘量避免校驗矩陣對應的因子圖中出現短環(如4循環、 6循環、 8循環等) 。

將前述消息傳遞算法中的節點構成的圖(Tanner圖)更一般化就得到了因子圖。 因子圖是一種用於描述多變量函數的“二部圖” (Bipartite Graph)。一般來說, 在因子圖中存在兩類節點: 變量節點和對應的函數節點, 變量節點所代表的變量是函數節點的自變量。 同類節點之間沒有邊直接相連。
例如:圖(a) 表示有5個自變量的函數g的因子圖。 假定函數g可以分解成幾個“局部函數” 之積的形式, 即:
 

 

 

 

 

 

 

 

 

 

 

發佈了131 篇原創文章 · 獲贊 102 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章