淺談polar碼

 


目錄

極化碼預備知識:

極化碼編碼:

預備知識

對於B-DMC信道有兩個重要的信道參數:

行向量(a1,…,aN)

運算符號

信道極化

信道聯合

信道分裂

信道極化定理

極化編碼

極化碼譯碼

SC譯碼算法

SCL譯碼算法

路徑度量值

CRC-SCL譯碼算法


極化碼預備知識:

極化碼是已知的唯一一種能夠被證明“達到”香農限的信道編碼方法。

極化碼是通過信道極化現象,使可靠的信道傳輸信息比特,在不可靠的信道上傳輸凍結比特,做到了揚長避短。

極化碼在設計的時候不考慮最小距離特性,而是利用信道聯合和信道分裂的過程來選擇具體的編碼方案。而且在譯碼時也是採用概率算法。

碼長=N的極化碼,它利用信道W的N個獨立副本,進行信道聯合和信道分裂,得到新的N個分裂之後的信道,隨着碼長的增加,分裂之後的信道將向兩個極端發展:其中一部分分裂信道會趨近於完美信道,即信道容量趨近於1的無噪聲;而另一部分分裂信道會趨近於完全噪聲信道,即信道容量趨近於0的信道。

原信道W的二進制輸入對稱容量記作I(W),那麼當碼長趨近於無窮的時候,信道容量趨近於1的分裂信道比例約爲K=N×I(W):信息比特的數量,而信道容量趨近於0的比例約爲N×(1−I(W)):凍結比特的數量。對於信道容量爲1的可靠信道,可以直接放置消息比特而不採用任何編碼,即相當於編碼速率爲R=1R=1;而對於信道容量爲0的不可靠信道,可以放置發送端和接收端都事先已知的凍結比特,即相當於編碼速率爲R=0。那麼當碼長N→∞時,極化碼的可達編碼速率R=K/N=N×I(W)/N=I(W),即在理論上,極化碼可以被證明是可達信道容量的。

對極化碼可靠性度量有三個方法:巴氏參數法、密度進化法、高斯近似法

巴氏參數法:

密度進化法:

高斯近似法:


極化碼編碼:

預備知識

碼長爲N,信道極化,信息比特在容量趨於1的信道中傳輸、數量爲K,其餘容量趨於0的信道傳輸凍結比特、數量爲P,N=K+P,碼率R=K/N。

一個二進制輸入離散無記憶信道(B-DMC)可表示爲W:X→Y,X是輸入符號集合,Y是輸出符號集合,轉移概率爲W(y|x),x∈X,y∈Y,輸入X是0或者1,Y和轉移概率是任意值。對信道W的N次使用後的信道可表示爲WN:XN→YN的轉移概率爲

對於B-DMC信道有兩個重要的信道參數:

對稱容量:

巴氏參數:

I(W)是信道速率的度量,在等概率輸入下的可靠傳輸時的最大速率。(越大越好)

Z(W)是信道可靠性的度量,在只傳輸0或1下的最大似然判決錯誤概率的上限。(越小越好)

以上參數取值都是0到1,成反比,單位都是bit。

W爲對稱信道時,I(W)等於香農容量。W(0|0)=W(1|1)W(0|0)=W(1|1)且W(1|0)=W(0|1)、

W(y|0)W(y|1)=0W(y|0)W(y|1)=0或W(y|0)=W(y|1)都是對稱信道。

行向量(a1,…,aN)

在這裏簡寫成,其子項量爲,例如表示一行5列的向量,其中我們可以知道,e是代表列序號偶索引的向量,o代表列序列奇索引的向量。

運算符號

⊕爲模2加,⊗爲克羅內克積(Kronecker Power)。記表示A的n次克羅內克積,有遞歸式並且定義A⊗0=[1]。記|A|表示集合A中元素的個數。

信道極化

信道極化分爲信道聯合和信道分裂。

信道聯合

下圖得到向量信道:,轉移概率爲:

下圖得到向量信道:,轉移概率爲:

其中,是一種特殊的置換矩陣,稱爲逆洗牌操作。逆洗牌操作是指首先將原向量奇數位的所有元素抽出,然後按照各元素間的原始相對順序排列看成新向量的前半段的元素,而剩下的元素按相對順序自動看成新向量的後半段元素,即的操作,從u到x可以由表示。

下圖是的2個獨立副本聯合產生信道,u首先轉化成s:,輸入爲s,輸出爲

轉移概率爲   

信道分裂

信道極化的第二個階段,將信道聯合構成的複合信道分裂成N個二進制輸入的座標信道

轉移概率爲豎線前面是輸出,後面是輸入。

奇序分裂子信道和偶序分裂子信道的轉移概率由兩個遞歸式得到:

信道極化定理

對任意的B-DMC,信道W與任意,當N以2的冪次趨於無窮大時,極化信道中滿足的信道數佔信道總數N的I(w),滿足的信道所佔的比例爲1-I(W)。

極化編碼

極化碼具有一般的二元線性分組碼的基本編碼要素,可以通過下列式子進行編碼:

,其中u爲原始比特序列、包含信息比特和凍結比特,x爲編碼後的序列,G爲生成矩陣,碼長爲N。

極化碼編碼步驟:

1.極化信道可靠性估計

2.比特混合

3.構造生成矩陣

4.代入式子進行編碼

具體分析:

1.極化信道可靠性估計:由下列式子計算巴氏參數。

巴氏參數越小越好。

2.比特混合:選擇巴氏參數越小的K個分裂子信道傳輸信息比特,其他分裂子信道傳輸凍結比特。

3.構造生成矩陣:,其中,表示F的n次克羅內克積:是比特轉置矩陣,用來完成比特反序重排的操作,具體操作是將原來的十進制序列號按二進制表示,首項爲最高有效位,再將二進制序列反序,得到,最後以b1爲最高位重新按十進制表示成,令輸出序列的第j個元素取值爲原序列的第i個元素。的遞歸定義式爲,作用效果如下:,反映出了信道極化中的逆洗牌操作。

BEC(0.5)下(8,4)極化編碼的例子

首先構造生成矩陣

在BEC信道下擦出概率爲0.5,即,i=1,2,……8,根據一下公式可以得到的計算結果

得到:

可以看出,i=4,6,7,8時信道可靠性高根據公式,在凍結比特設置爲0的情況下:

若給定信源序列爲(1,0,1,1),對應的碼字爲(1,0,1,0,0,1,0,1)


極化碼譯碼

信息序列u經過極化信道的傳輸得到碼字x,在接收端接收到了y,譯碼器就是從接受的信息中恢復處信息序列u的估計值

SC譯碼算法

SC譯碼算法是polar碼的基本算法,也是polar碼的核心算法。該算法是一種連續消除譯碼算法,知道最後一個比特判決輸出在得到最終的譯碼輸出序列。對於參數的polar碼編碼,估計值通過下列公式判決得到:

其中,hi是一個判決函數,定義如下:

譯碼過程中,將轉移概率之比定義爲似然比(LR),也即單個比特的LR:

則第i個判決單元的判決準則爲:

我們可以來通過兩個遞歸的公式來得出信息的LR形式:

藉助遞歸函數F和G函數:

其中:

遞歸終止條件是N=1。

上圖是最左邊是譯碼結果,最右邊是初始LLR值。根據上面的式子經過遞推可以得到初始估計值。

極化碼的編碼複雜度都是

優點:極化碼在碼長足夠大時使用SC譯碼算法進行譯碼能夠獲得良好的漸進性能,並且在碼長趨於無限長時,極化碼被證明能夠達到信道容量。

缺點:實際系統中,碼長是有限的,由於SC譯碼算法的逐比特譯碼性能可能造成錯誤傳輸,導致其譯碼性能有限。

SCL譯碼算法

SCL譯碼算法主要是通過多保存一些譯碼路徑來保證譯碼性能的正確性,同時也提出了犧牲較少的信息比特使用CRC對信息進行冗餘校驗,最後在SCL的譯碼後使用CRC來輔助譯碼路徑的選擇。當然與SC譯碼算法相比,SCL算法的計算複雜度和存儲空間均爲SC算法的L倍。

SC譯碼也可以表示成碼樹上的局部最優路徑的搜索

每一條路對應一條選擇路徑,每一層僅搜索一層,最寬的線條表示路徑選擇的方向。因爲後面比特的譯碼需要前面的信息比特估計值,如果有一個信息比特譯碼錯誤,那麼錯誤傳播還是會發生,最後整條路徑都是錯誤的。

爲解決這一問題,提出了以SC譯碼算法爲基礎的改進譯碼算法——SCL算法,即在譯碼的過程中能夠保存最多L候選路徑,可以減少路徑出錯的概率。我們需要設置合適的最大路徑L值,在譯碼複雜度不是很高的情況下獲得良好的譯碼性能。

 與SC算法一樣,改進的算法依然從碼樹根節點開始,逐層依次向葉子節點層進行路徑搜索。不同的是,每一層擴展後,選擇路徑度量值最小的L條,保存一個列表中,等待進行下一層的擴展。因此稱該算法爲串行抵消列表譯碼算法,並稱參數L爲搜索寬度。當L=1時,SCL算法爲SC算法,當L≥2的k次冪時,SCL算法等於ML算法。

路徑度量值

在SCL譯碼中,存在L條路徑同時進行譯碼搜索,對於任意一條路徑以及任意發送比特,對應的路徑度量值定義如下:

其中,

如果發送端所有信息比特在{0,1}上均勻分佈,那麼對於任意兩條不同路徑,當且僅當成立時,有如下關係成立:

由上式可見,路徑對應的轉移概率越大,路徑度量值越小。基於這種關係就完全可以在對數似然比上對2L條路徑進行挑選。上式可以近似表示爲:

但考慮譯碼過程中包含了信息比特和凍結比特,因此上式可以改寫爲:

其中對於信息比特的判決有:

SCL譯碼其實就是有L個SC譯碼同時進行。

 

例子:

假設原始比特序列,其中爲信息比特,經過polar編碼以後通過AWGN信道傳輸,假設接收端已知信道對數似然比爲

則最終的最佳路徑結果爲:

從上圖可以看到,最終的估計值爲,這並不是最終的結果,因爲極化編碼是經過逆洗牌操作的(比特反轉),(0 0 1 1)對應的位置爲(1 3 2 4),所以最終的結果爲(0 1 0 1)。

CRC-SCL譯碼算法

循環冗餘校驗是一種信道檢測技術,在實際數字通信系統中已經得到了廣泛應用。對於Polar碼而言,在SCL譯碼結束時得到一組候選路徑,能夠以非常低的複雜度與CRC進行聯合檢測譯碼,選擇能夠通過CRC檢測的候選序列作爲譯碼器輸出序列,從而提高譯碼算法的糾錯能力。

CRC-SCL算法就是在信息比特中添加CRC校驗比特序列,利用SCL譯碼算法正常譯碼獲得L條搜索路徑,然後藉助“正確信息比特可以通過CRC校驗”的先驗信息,對這L條搜索路徑進行挑選,若校驗結果爲0,就認爲該條路徑是正確的,從而輸出最佳譯碼路徑。給定polar碼碼長爲N,CRC校驗碼碼長爲m,若極化碼的信息爲長度爲K,編碼信息比特的長度爲k,如圖1所示,有K=k+m。Polar碼的碼率仍然爲R=K/N。

上圖是算法的編譯碼過程。

步驟:

首先犧牲一定位數的比特數,對信息比特序列做CRC校驗,然後進行極化碼編碼,在譯碼端SCL譯碼結束後,對最終保留的L條路徑都進行CRC校驗,最終選擇輸出路徑即爲信息比特的譯碼路徑。

譯碼輸出的路徑的挑選規則如下:

1.若只有一條路徑通過CRC校驗,則輸出該路徑;
2.若有多條路徑經過CRC校驗,選擇似然概率最大的那條路徑;
3.若沒有路徑通過CRC校驗,輸出似然概率最大的那條路徑。

算法步驟:定義爲SCL譯碼碼樹第i層對應的候選路徑集合,搜索列表寬度爲L的CRC-aided SCL譯碼算法。

1.初始化:候選路徑列表初始化爲一條空路徑,對應的路徑度量值設置爲0:

2.擴展:對於列表中的每個序列,產生2個長度爲i的序列,分別對應譯碼爲比特0或1,即,對於每個更新路徑度量值。

3、競爭:若經過步驟2後,列表中的路徑數未達到L條,則跳過此步;否則,保存路徑度量值最小的L條路徑,並刪除其餘路徑。

4.CRC輔助路徑選擇:重複步驟2和3直到碼樹第N層。把列表中的候選路徑按度量值從小到大排序,依次進行CRC校驗。第1個通過CRC校驗的路徑即爲譯碼器輸出的估計序列。若沒有路徑通過CRC檢測,則把第1條路徑作爲譯碼器輸出估計序列。

算法優點:能夠降低SCL的複雜度。

最終的流程圖:

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