極化碼小結(2) 極化碼小結(2)

極化碼小結(2)

Chapter2 極化碼的編碼

  極化碼的編碼問題主要包括兩個方面。

  首先是生成矩陣的構造:

生成矩陣GN:

  先來看信道合併示意圖,下圖截自Arikan論文(以後不再解釋,Arikan論文特指論文《Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels》):

  請讀者留意這是fig.3,也即圖三。根據這張圖所表現的形式,我們可以歸納出GN的表達式:

疑問:這個表達式如何得到?它與上圖有什麼對應關係?

  我們來看等式右端第一部分:

  觀察RN前面的表達式,符號“”是一種矩陣運算,稱爲“克羅內克積”,詳細內容讀者可自行查閱維基百科詞條:克羅內克積-維基百科;“F”定義爲矩陣,F的定義又有何意義呢?我們用一個二維向量來測試一下:,可見用輸入向量左乘F矩陣,就能夠實現圖中第一步線性變換。當N>2時,由於F只有二維,爲了完成運算,我們通過克羅內克積的辦法在保持F矩陣屬性的同時擴展它的維度,使得它滿足我們的運算要求。所以RN前面的運算可以與上圖中的線性變換對應起來。

  RN對應圖中的自身,這個不需要再說。

  觀察RN的右端,I2爲二維的單位矩陣,GN/2則體現了遞推、迭代的思想。用I2與GN進行克羅內克積,就是爲了實現生成矩陣的遞推和迭代。這部分對應了圖中最右端的操作。因此我們可以看到,Arikan給出的生成矩陣的定義式確實與上圖是完全對應的。

  接下來,Arikan又po出了另一張圖:

  這是fig.8,它與fig.3的不同之處在於,fig.3中先進行線性變換再進行置換操作,而fig.8中先進行置換操作再進行線性變換。根絕Arikan的說法,這兩個圖是全等的。fig.8對應的公式爲:,也就是說這兩個公式是等價的:

  那麼這一步是如何得到的呢?如何證明這兩個圖是全等的呢?這裏有一份我以前證明時留下的手稿,具體的過程我沒有精力再排版打出來,看客如果對這個證明有興趣,不妨作爲參考。不過這些細節就算不了解,也不妨礙我們對極化碼理論的學習。就像數學教科書的上的許多定理公式,更多時候重點在於如何去理解和應用。

  讓我們回到Arikan的論文中,繼續看他是如何一步一步得到GN的構造方法的。

  上面這個公式第一行我們已經證明過了,從第一行到第二行的理論支持來自於克羅內克積的混合乘積性質:

  圖片來自克羅內克積-維基百科

  我們繼續往下看:

  這個就很好理解了,直接迭代代入GN/2然後利用混合乘積性質的逆定理就可以得到了。重複上述操作,不斷進行迭代,最後我們可以得到這樣一個式子:

  其中BN用來代替迭代所產生的式子:。BN可以寫成遞推公式:

  得到上面的公式之後,我們很容易就可以計算出BN並求出GN

  再來看信息位的選取:

信息位選取:

  通過上一節的介紹,我們瞭解到了信道的極化現象,並且認識到正是信道極化現象催生了極化碼。現在,我們就要利用這個現象來構造極化碼。根據我們所設想的,通過在誤差率較低的信道(無噪信道)上傳輸有用信息,在誤差較高的信道(純噪信道)上傳輸信息量爲0的信息,我們可以實現在有噪信道下進行無噪傳輸。

  因此,如何挑選要傳輸信息的信道成爲了至關重要的事情。在表徵信道質量的參數向量P中,我們稱傳輸有用信息的位爲信息位,傳輸無用信息的位爲凍結位。問題變成了如何求出這個參數向量P。只要我們求得這個P,然後對它進行從小到大的排序,再根據碼率確定要用到多少信息位,然後從排好序的P中挑選出性能最好的那部分,就可以實現我們的需求。

  Arikan的論文中這樣說道:“對於一個給定的B-DMC信道W,本論文對信道的兩個參數感興趣:一個是信道的對稱容量I(W):

  I(W)代表了等概率輸入下,通過信道W進行可靠信息傳輸的最大速率。第二個稱爲巴氏參數Z(W):

  巴氏參數代表了在一次通過W傳輸0或1時,最大似然判決錯誤概率的上限。顯然,Z(W)反映了信道的可靠度 。

  顯然,我們可以分別將這兩個參數作爲參數向量P,對於I(W),我們選擇較大的I(W)作爲信息位;對於Z(W),我們選擇較小的Z(W)作爲信息位。

  早期Arikan提出,當W爲BEC(二進制刪除信道)時,有,計算二者中的任何一個都可以。Arikan論文中有Z(W)的遞推計算公式:

  其中第二個式子的不等號在W爲BEC取等,因此我們可以精確的計算巴氏參數,而且計算複雜度也較低,爲O(NlogN)。

  後來,Arikan給出了當W不爲BEC信道時的計算方法,他提出使用“Monte-Carlo算法”(蒙特卡羅法)來近似計算巴氏參數,然而,這個計算的複雜度因輸出符號集的指數型爆炸增長而變得不可能。

  還有一種方法也用來進行巴氏參數的估計——Density Evolution(密度進化),但是這個方法缺點在於計算複雜度還是較高(爲O(n)),同時精確度也不好。

  目前我們項目組所使用的信息位選擇採用的是tal-vardy所提出的算法。這種算法是Tal和Vardy於2013年發表在IEEE上的一篇21頁的論文中提出的,論文名爲《how to construct polar code》,感興趣的讀者可以去了解一下。如果對英文閱讀感覺到不舒服,讀者也可以參考《極化碼編碼與譯碼算法研究》[王繼偉]在2.2.3節中對這種算法的較爲詳細的中文介紹。

  這種算法主要通過信道弱化和信道強化操作,將的輸出符號集進行合併,使其能夠具有符合我們需要長度的輸出符號集大小。另外,對於我們經常用到的AWGN信道,通過高斯近似(GA)方法可以在非常低的複雜度下在較高的精確度上選擇信息位。這裏列出兩篇發表在IEEE上的參考論文,有興趣的讀者可以自行去了解,這裏不再展開說了。

  【1】《Evaluation and Optimization of Gaussian Approximation for Polar Codes》.Jincheng Dai等.(2016.5)

  【2】《Construction and Block Error Rate Analysis of Polar Codes Over AWGN Channel Based on Gaussian Approximation》.Daolong Wu等.(2014.7)

   除此之外,還有一種辦法可以提高極化碼的構造效率。那就是使用“design-SNR”。

  不管我們採用什麼構造辦法,信息位的選取總是與SNR的取值密切相關。我們在仿真極化碼性能的時候,往往會以SNR爲仿真圖的橫座標,以BER、FER爲縱座標,觀察曲線走向,通過對比曲線判斷優劣。但是每一次帶入新的SNR值,都要重新構造一個新的參數向量P,然後重新挑選信息位,這種傳統的構造方法我們稱爲“point-by-point(逐點SNR)”。這種重複性的工作無疑增加了極化碼構造的時間複雜度。

  通過研究,我們發現,對於一個特定的碼率,總存在一個完美的SNR,我們稱之爲“design-SNR(設計SNR)”,我們只需要代入這個SNR進行一次參數向量P的構造,然後將挑選好的信息位儲存起來。以後在這個碼率下,不論在哪個SNR值下進行仿真,我們只代入預存的這個信息位進行極化碼的構造。由於信息位只構造了一次,時間複雜度得到了顯著降低。

  根據仿真結果顯示,在碼長和碼塊較大的情況下,design-SNR與point-by-point法契合的非常好,如下圖:

  得到了生成矩陣,又構造了信息位。接下來只需要進行簡單的矩陣操作,再疊加上噪聲,就可以實現極化碼的編碼。

轉載自:

https://blog.csdn.net/nobb111/article/details/77948631

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章