LDPC編譯碼基本原理 算法
學習筆記 express V1.1 2015/02/18ide |
LDPC編譯碼基本原理函數 |
概述工具 |
本文是我的針對LDPC的學習筆記,主要針對LDPC譯碼算法作了簡要的總結。該版本主要致力於闡述LDPC碼譯碼原理,這是一份有不少"問題"的總結,但願可以慢慢完善。本文分爲如下幾個部分 學習 |
修訂歷史ui |
如下表格展現了本文檔的修訂過程 編碼
|
本文提到的LDPC編碼均指二進制LDPC編碼,多進制暫時不進行討論。爲方便起見本文中混用了似然函數和條件機率密度這兩個概念,雖然這樣作是不恰當的。
LDPC碼是一種校驗矩陣具備低密度的線性分組碼。也就是說,LDPC碼和普通的線性分組碼沒有什麼不一樣,但冠以"低密度"三字,說明如下兩點問題
校驗矩陣是一個相對通用的表示工具,線性分組碼均可以由校驗矩陣肯定。通用性每每意味着不少時候難以表現一些特性,譬如,低密度。一個好的表示方式每每是解決問題的關鍵。圖論中有一個圖的矩陣表示,校驗矩陣是稀疏的,一個好的表示就是指出其中1的位置,咱們在乎的也就是這些位置。若是將稀疏矩陣採用圖來描述,這一個目的就達到了,這一類圖被稱爲Tanner圖,如圖 1。 Tanner圖和校驗矩陣具備如下對應關係。Tanner圖有
圖 1 校驗矩陣和Tanner圖
此時咱們能夠先明確一些關於校驗矩陣和Tanner圖的定義
如今,咱們應該好好考慮編譯碼的問題了。編碼過程當中,知道校驗矩陣後生成矩陣是能夠求出來的。求出生成矩陣後,至少能夠說明編碼是可進行的。利用其它的一些性質,這個過程能夠變得更容易。(此部份內容尚未仔細看) 關於譯碼規則,香農在證實第二定理的時候採用了最大似然譯碼準則。固然,譯碼準則的選取還取決於信道。譬如,二進制對稱信道下漢明距離譯碼和最大似然是一致的。然而,實際信道每每被看做是加性高斯白噪聲信道,這個時候咱們更多的須要考慮採用最大似然譯碼準則了。同時,毋庸置疑的是咱們應該採用軟判決譯碼以達到好的效果。此時,似然函數能夠表示爲 |
1962年Gallager提出了LDPC碼的基本機率譯碼算法,本節將闡述這一思想。
解決一個大的問題的基本思路在於將其分解爲一系列的小問題。對於似然函數而言,若是求 若是
發送信號經過信道後成爲了接收信號
那麼咱們有
當咱們致力於求解 注意到乘號左側是和信道有關的,右邊的 (1)當兩個校驗方程同樣的時候
此時(通常狀況下) (2)校驗方程具備相同項
此時(通常狀況下)
能夠認爲,若是校驗方程行線性無關,那麼
引理: 一個長爲
證實:
將上述函數展開爲關於
這個函數與前一個函數的區別在於:
一樣可得,序列中"1"的個數爲奇數的機率是
上文已經闡述 因此在基於除 這個前提是沒法達到的,上述過程當中咱們也看到了求解每個比特的機率經過校驗方程環環相扣。或許,若是咱們能夠找到一個線頭,這個問題可能就能夠求解了。但很惋惜的是,因爲比特的相互依賴關係,計算機率的過程其實是一個環。(大部分狀況下是這樣的)這個時候,機率譯碼直接將其修剪成了一棵樹以計算機率分佈。 修剪的原則在於,上層節點不能運用底層節點已經用過的校驗信息,防止陷入循環。此時,經過繪製校驗樹,就可以求解後驗機率分佈。 機率譯碼給出了一種求解方式,那麼這種針對單一比特的求解方式在真實的計算過程當中是否可行?若是基於計算全部碼元考慮是否有更好的計算方法?這種方法求得的解是否最優?在我看來,因爲其他比特的機率是不許確的(不是最佳估計),此時咱們也不可以獲得求解比特的真實後驗機率。 |
若是咱們回到要求解的式子
在求解 或許另外一種思路在於,對全部的 感性的認識是因爲接收到了其餘節點和校驗方程的信息,迭代以後的估計會更好。另外一個認識是若是Tanner圖的某一個環的girth很短,那麼自身的信息會大量的傳遞回來。由於距離越遠,傳遞信息的比重就會越小(乘了太多小於1的數),環girth很長就不用考慮這個問題。但這還須要更多的理性分析。 下面具體闡述置信傳播算法,假定編碼後的星座映射爲假定編碼後的星座映射爲 初始值 首先咱們計算
圖 2 信息傳遞過程
以後咱們更新各個變量節點的機率分佈
這個時候咱們發現了一個問題,若是對於每個校驗節點來講,咱們都給
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× 這一部分不是我寫的,能夠參考任意一本LDPC書,這裏就不放上來了 這一部分不是我寫的,能夠參考任意一本LDPC書,這裏就不放上來了×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
咱們注意到在任何一種算法中,終止條件都有一條是校驗式等於零。爲什麼要設置這一個終止條件?實際上在設計的過程當中,咱們會保證任意兩個可用碼字之間的距離足夠遠。在這一個前提假設下,迭代過程當中一旦落入了可用碼字空間內,即便錯誤,那麼也是幾乎沒有轉移到正確碼字的可能的。所以設置了這一終止條件。 |
從機率譯碼到置信傳播,一個採用了校驗集合樹的概念,一個運用了Tanner圖。然而咱們實際上仍是計算的公式,具體來講是
加法和乘法的運用構成了整個機率模型。但爲什麼在這些算法中都引入了圖?圖在這裏面起到了什麼做用?《Pattern Recognition and Machine Learning》在圖模型章節的開篇是這樣說的
However, we shall find it highly advantageous to augment the analysis using diagrammatic representations of probability distributions, called probabilistic graphical models. These offer several useful properties: 1. They provide a simple way to visualize the structure of a probabilistic model and can be used to design and motivate new models. 2. Insights into the properties of the model, including conditional independence properties, can be obtained by inspection of the graph. 3. Complex computations, required to perform inference and learning in sophisticated models, can be expressed in terms of graphical manipulations, in which underlying mathematical expressions are carried along implicitly.
不少時候咱們更關注問題的表示而非其自己。就像LDPC關注校驗矩陣的形式,以及數據的各類變換。機率模型也同樣,三種圖模型被用來表示機率模型,包括有向圖模型、無向圖模型(馬爾可夫隨機場)和因子圖。三種模型各有優勢,本節將介紹因子圖。 對於多項式而言,咱們有因式分解。譬如在解高次方程的時候,咱們很是但願方程可以分解爲多個低次方程的乘積。那麼,對於機率分佈函數而言,咱們也但願可以這樣作,即 其中 那麼這一個式子的因子圖表示以下
圖 3 因子圖
從這個例子,咱們總結一下因子圖是什麼?因子圖有兩類節點,一是變量節點,另外一個成爲因子節點。這兩類節點的內部沒有邊直接相連,變量的機率密度能夠因式分解爲因子節點的函數的乘積,因子節點的函數變量包括與其直接相連的變量節點。 寫到這裏突然發現了一個很嚴重的問題,因子圖這一表示是用來幹什麼的?不是我不想寫,是我也不知道。若是從和積算法來講,因子圖能夠用來計算邊緣機率分佈。這也是《Pattern Recognition and Machine Learning》中引入因子圖的理由。置信傳播算法能夠看做是和積算法的一個特例。 目的:計算邊緣機率 手段:和積算法(要求兩個節點之間只有一條路徑,即多項式樹結構) 實現方式:
圖 4 因子圖的分解
這裏爲什麼要這樣作呢?一個算法要儘量多的利用已知的結構和信息,和積算法的一個假設是圖無環。同時咱們發現,對於一個最簡單的只有一個變量節點和因子節點的圖來講(這時實際上沒有意義了),咱們已經達到咱們要的結果。若是圖無環的話,意味着只要我斷開一條邊,那麼這個大的因子圖就變成了兩個小的因子圖。 若是咱們將節點
其中
咱們設 咱們能夠將其看做是因子節點
或許,咱們將"計算"改成"表示"更爲合適。上文中一直提到"小因子圖"顯然是能夠因子化的,也就是說能夠表示爲
那麼 也就是說,實際上這個過程是小因子圖的繼續劃分的過程,具體能夠表示爲下圖
圖 5 因子圖的分解(續)
同理可設
若是咱們繼續將其分解下去,那麼將再次計算到因子節點向變量節點傳遞的信息,而咱們的目的正是如此,但願可以獲得
圖 6因子圖的分解(續2)
由圖 6 易知 也就是說
和積和積,何爲和積?變量節點的信息傳遞是求乘積的過程,因子節點傳遞的過程是對求乘積後的結果進行求和的過程(依據該因子節點的方程)。 咱們注意到實際上都有一個鏈接的其餘節點求乘積的過程,這也就意味着若是一個節點只和一個節點相連,那麼其傳遞的消息是(和1相乘值不變)
到這裏,因子圖和和積算法已經寫完了,要把因子圖和和積算法和LDPC譯碼算法對應起來,咱們要解決的問題實際上有兩個
這兩個問題還有待進一步思考…… |
參考 |
《LDPC碼基礎與應用》 賀鶴雲 《An Introduction to Low-Density Parity Check Codes》 Daniel J. Costello, Jr. 《LDPC碼理論與應用》 袁東風 《Pattern Recognition and Machine Learning》 |