1. 程式人生 > >On Deep Learning-Based Channel Decoding 論文筆記

On Deep Learning-Based Channel Decoding 論文筆記

摘要

我們重新考慮使用深度神經網路對隨機和結構化碼字(例如極性碼字)進行一次性解碼。 雖然可以為碼字族和短碼字長度實現最大後驗(MAP)誤位元速率(BER)效能,但我們觀察到(i)結構化碼字更容易學習和(ii)神經網路能夠生成在結構化訓練期間從未見過的碼字,而不是隨機碼字。 這些結果提供了一些證據,表明神經網路可以學習一種解碼演算法,而不僅僅是一種簡單的分類器。 我們引入了度量標準化驗證錯誤(NVE),以進一步研究基於深度學習的解碼在效能和複雜性方面的潛力和侷限性。

簡介

基於深度學習的通道解碼由於維度的災難難以實踐[1]:對於長度為N = 100且位元速率r = 0.5的短碼,存在2^50個不同的碼字,在實踐中

這些碼字太多而無法完全訓練任何神經網路 (NN)。那麼NN可以被訓練用於實際塊長度的唯一方法是, 如果NN可以學習某種形式的解碼演算法,它可以從一小部分碼字的訓練中推斷出完整的碼本。 然而,為了能夠學習解碼演算法,碼字本身必須具有一些基於簡單編碼規則的結構,如卷積或代數碼字的情況。 本文的目的是闡明結構化程式碼是否比隨機程式碼更容易“學習”的問題,以及NN是否可以解碼在訓練期間從未見過的碼字。

我們要強調的是,這項工作是基於非常短的塊長度,即N≤64,它能夠與最大後驗(MAP)解碼進行比較,但對物聯網(IoT)等實際應用也有興趣由於指數訓練的複雜性,我們目前僅限於短碼字[1]。 因此,神經網路解碼(NND)概念目前與現有技術的解碼演算法不具競爭性,該演算法在過去幾十年中已被高度優化並且可擴充套件到任意塊長度。

然而,可能存在某些促進學習過程的碼字結構。 我們的一個重要發現是結構化碼字確實比隨機碼字更容易學習,即需要更少的訓練時期。 另外,我們的結果表明,只要碼字具有結構,NN就可以在僅看到示例的子集之後概括或“內插”到完整碼本。

深度學習的通道編碼

深度學習理論在[16]中得到了全面的描述。 然而,為了完整起見,我們將簡要解釋主要思想和概念,以便為通道(解)編碼及其術語引入NN。 NN由許多連線的神經元組成。 在這樣的神經元中,所有的加權輸入相加,可選地增加偏差,並且結果通過非線性啟用函式傳播,例如,sigmoid函式或整流線性單元(ReLU),它們分別定義為(公式見論文)

如果神經元在沒有反饋連線的情況下排列成層,我們就會提到前饋NN,因為資訊在沒有反饋的情況下從左向右流過網路(見圖1)。 具有ni輸入和mi輸出的每個層i執行對映f(i),以神經元的權重和偏差作為引數。 將v表示為NN的輸入,將w表示為NN的輸出。輸入輸出對映由一系列函式定義,具體取決於引數集

為了找到NN的最佳權重,需要一組已知輸入 - 輸出對映的訓練集,並且必須定義特定的損失函式。 通過使用梯度下降優化方法和反向傳播演算法[3],可以找到NN的權重,其最小化訓練集上的損失函式。 訓練的目標是使NN能夠為看不見的輸入找到正確的輸出。 這稱為泛化。 為了量化泛化能力,可以確定尚未用於訓練的資料集的損失,即所謂的驗證集。

在這項工作中,我們希望使用NN來解碼噪音碼字。 在發射機處,k個資訊位元被編碼成長度為N的碼字。編碼位元被調製並在有噪聲的通道上傳送。 在接收器處,接收到噪聲版本的碼字,並且解碼器的任務是恢復相應的資訊位元。 與迭代解碼相比,NN通過僅傳遞每一層一次來找到其估計。 由於此原則支援低延遲實現,我們將其稱為一次性解碼。

獲得標記的訓練資料對於機器學習領域來說通常是非常困難和昂貴的任務。 但是使用NN進行通道編碼是特殊的,因為我們處理的是人造訊號。 因此,我們能夠生成儘可能多的訓練樣本。 此外,也可以免費獲得所需的NN輸出,也稱為標籤,因為如果產生有噪聲的碼字,則顯然已知所傳送的資訊位元。 為簡單起見,使用二進位制相移鍵控(BPSK)調製和加性高斯白噪聲(AWGN)通道。 其他通道可以直接採用,正是這種靈活性可能是基於NN的解碼的特殊優勢。

為了使訓練集保持較小,可以使用附加層擴充套件NN,以調製和增加噪聲(見圖1)。 這些附加層沒有可訓練的引數,即它們執行某些動作,例如新增噪聲並僅將該值傳播到具有相同索引的下一層的節點。 不是建立並因此儲存相同碼字的許多噪聲版本,而是在無噪聲碼字上工作就足夠了。 因此,訓練集X由所有可能的碼字(標籤是相應的資訊位)並由(論文公式)給出。

正如[16]中所推薦的,每個隱藏層都採用ReLU啟用函式,因為它是非線性的,同時非常接近線性,這有助於優化。 由於輸出層表示資訊位,因此sigmoid函式迫使輸出神經元處於0和1之間,這可以解釋為傳送“1”的概率。 如果概率接近標籤的位,則損失應僅略微增加,而大的誤差應導致非常大的損失。 這種損失函式的示例是均方誤差(MSE)和二進位制交叉熵(BCE),分別定義為(公式見論文)

這種設定有一些替代方案。 首先,可以使用對數似然比(LLR)值代替通道值。 對於AWGN通道上的BPSK調製,可以通過以下方式獲得(公式見論文)

該處理步驟也可以實現為沒有任何可訓練引數的附加層。 注意,在這種情況下必須知道噪聲方差,並將其作為NN的附加輸入提供。將輸出層中的資訊位表示為長度為2^k的one-hot編碼向量是另一種變體。 但是,我們避免這個想法,因為它沒有擴充套件到k的大值。 免費提供的開源機器學習庫,如Theano,有助於在快速併發GPU架構上實現和訓練複雜的NN模型。 我們使用Keras作為Theano的方便的高階抽象前端。 它允許從Python程式語言中以非常抽象的角度快速部署NN,從而隱藏了許多底層內容的複雜度。由於我們支援可重複的研究,我們已經提供了本文的部分原始碼

學習編碼

我們將考慮兩個不同的碼字系列:隨機程式碼和結構化程式碼,即極性碼字[19]。 兩者都具有碼字長度N = 16並且位元速率r = 0.5。 當通過從漢明碼距離大於2的碼字空間中隨機挑選碼字來生成隨機碼時,塊大小N = 2^n的極性碼的生成矩陣由下式給出:(公式見論文)

  • 設計NND的引數

我們的開始點是如前所述的NN(見圖1)。 我們引入了符號128-64-32,其描述了NN解碼器的設計,其採用分別具有128,64和32個節點的三個隱藏層。 但是,還有其他設計引數會對效能產生不可忽視的影響:
1)什麼是最佳訓練信噪比(SNR)?
2)需要多少訓練樣本?
3)從LLR通道輸出值而不是直接通道輸出中學習是否更容易?
4)什麼是適當的損失函式?
5)NN應該使用多少層和節點?
6)應該使用哪種型別的正規化?
處理這些引數優化的研究領域稱為超引數優化[20]。 在這項工作中,我們不會進一步考慮這種優化,而是將自己侷限於一組固定的超引數,我們發現這些超引數可以獲得良好的結果。 我們的重點是隨機和結構化程式碼之間的差異。