本發(fā)明涉及電子通信技術(shù)領(lǐng)域,特別是一種基于受限玻爾茲曼機(jī)的LDPC譯碼方法和裝置。
背景技術(shù):
低密度校驗(yàn)碼(LDPC,Low Density Parity Check codes)是一種逼近香農(nóng)極限的現(xiàn)代編碼技術(shù),由于其優(yōu)越的性能和易于并行實(shí)現(xiàn)的特點(diǎn),LDPC已經(jīng)被多種現(xiàn)代通信標(biāo)準(zhǔn)采納。但目前在移動(dòng)通信、SSD糾錯(cuò)等現(xiàn)實(shí)應(yīng)用中,基于傳統(tǒng)BP譯碼技術(shù)的LDPC的誤碼率等性能還不夠理想,需要新的方法和裝置進(jìn)一步降低誤碼率,以適應(yīng)應(yīng)用的需求。
基于受限玻爾茲曼機(jī)的LDPC譯碼方法和裝置是建立在神經(jīng)網(wǎng)絡(luò)范疇內(nèi)的受限玻爾茲曼機(jī)理論上的。受限玻爾茲曼機(jī)能夠最大似然地使得顯層神經(jīng)元的值達(dá)到穩(wěn)定的玻爾茲曼分布。受限玻爾茲曼機(jī)的優(yōu)勢(shì)在于它是一種能夠準(zhǔn)確的描述高維非線性映射的結(jié)構(gòu),并且通過(guò)梯度下降法進(jìn)行訓(xùn)練時(shí)可以更精細(xì)地修改顯層神經(jīng)元的值,因此能夠比傳統(tǒng)的BP譯碼方法有更低的誤碼率。
技術(shù)實(shí)現(xiàn)要素:
:
本發(fā)明為了找到比之前最好的BP譯碼算法表現(xiàn)更優(yōu)秀的方法,提出了一種基于受限玻爾茲曼機(jī)的新型LDPC譯碼方法和裝置,從而進(jìn)一步降低誤碼率。本發(fā)明通過(guò)受限玻爾茲曼機(jī)的思想從含有噪聲和干擾的接收序列中盡可能還原發(fā)送端數(shù)據(jù),可用于通信領(lǐng)域的接收機(jī)和SSD的數(shù)據(jù)糾錯(cuò)。
技術(shù)方案:一種基于受限玻爾茲曼機(jī)的LDPC譯碼方法,包括如下步驟:
(1)根據(jù)應(yīng)用需求確定校驗(yàn)矩陣H,大小為m×n,,列重為L(zhǎng),行重為K。
(2)根據(jù)校驗(yàn)矩陣建立Tanner圖,確定變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的連接關(guān)系。
(3)根據(jù)Tanner圖建立受限玻爾茲曼機(jī)模型,Tanner圖中的變量節(jié)點(diǎn)作為顯層神經(jīng)元,校驗(yàn)節(jié)點(diǎn)作為隱層神經(jīng)元。
(4)根據(jù)K輸入異或的布爾表達(dá)式構(gòu)造隱層神經(jīng)元的輸出函數(shù)。將K輸入異或的布爾表達(dá)式改寫成最小項(xiàng)之和的形式,對(duì)于布爾表達(dá)式中布爾型的變量Xi,用實(shí)值變量表達(dá)式1+xi替換,對(duì)于布爾型的變量用實(shí)值變量表達(dá)式1-xi替換,其中xi為信息比特的值。
(5)構(gòu)造受限玻爾茲曼機(jī)的能量函數(shù),能量函數(shù)為:
式中ej為(4)中第j個(gè)隱層神經(jīng)元的輸出,E為整個(gè)模型的能量。
(6)將接收到的BPSK調(diào)制后的信息比特的值賦值給顯層神經(jīng)元。
(7)前饋計(jì)算,顯層神經(jīng)元的值傳遞給隱層神經(jīng)元,通過(guò)(4)確定的輸出函數(shù)計(jì)算隱層神經(jīng)元ej的值和能量函數(shù)E的值。
(8)反饋計(jì)算,根據(jù)本次迭代所得的能量函數(shù)值,通過(guò)梯度下降法修改顯層神經(jīng)元的值,具體方法如下:
式中xi代表第i個(gè)信息比特的值,α代表學(xué)習(xí)率,用于調(diào)控每次迭代下降的步長(zhǎng),求和是對(duì)每一個(gè)信息比特參與的L個(gè)隱層神經(jīng)元提供的梯度求和。
(9)更新顯層神經(jīng)元的值,進(jìn)行硬判決,即令大于等于0的顯層神經(jīng)元的值為1,小于0的顯層神經(jīng)元的值為-1,帶入(5)中的能量函數(shù)。若E=0,則譯碼成功;否則重復(fù)步驟(7)(8)。
(10)當(dāng)?shù)螖?shù)大于設(shè)定的最大迭代次數(shù)時(shí),不再進(jìn)行譯碼,直接輸出。
基于受限玻爾茲曼機(jī)的譯碼裝置,包括如下組成部分:
(1)控制模塊,用于控制譯碼裝置的執(zhí)行順序。
(2)前饋計(jì)算模塊,用于計(jì)算上述方法中的(7),包括和隱層神經(jīng)元數(shù)目相同的并行輸出函數(shù)計(jì)算模塊和能量函數(shù)計(jì)算模塊。
(3)反饋計(jì)算模塊,用于計(jì)算上述方法中的(8),包括并行梯度計(jì)算模塊和對(duì)應(yīng)的修正值計(jì)算模塊,梯度計(jì)算模塊共享輸出函數(shù)計(jì)算模塊的中間結(jié)果。
(4)顯層神經(jīng)元賦值模塊,將反饋計(jì)算模塊輸出的修正值和上一次迭代的顯層神經(jīng)元的值相加,送入前饋計(jì)算模塊。
本發(fā)明的優(yōu)勢(shì):
本發(fā)明借鑒了目前公認(rèn)的功能強(qiáng)大的神經(jīng)網(wǎng)絡(luò)算法,利用受限玻爾茲曼機(jī)的思想對(duì)LDPC譯碼過(guò)程進(jìn)行建模,利用最小化能量函數(shù)的方式間接地求解信息比特。由于受限玻爾茲曼機(jī)本身具有的對(duì)高維非線性映射強(qiáng)大的表示能力和這里采用的利用異或的布爾表達(dá)式來(lái)構(gòu)造隱層神經(jīng)元輸出函數(shù)的方法,本發(fā)明提出的譯碼方法在幾乎所有信噪比情況下都表現(xiàn)出了比BP算法更優(yōu)的性能。本發(fā)明可以用于各種通信系統(tǒng)的接收機(jī)和固態(tài)硬盤數(shù)據(jù)糾錯(cuò)等應(yīng)用場(chǎng)景。
附圖說(shuō)明
圖1是本發(fā)明構(gòu)建的受限玻爾茲曼機(jī)譯碼裝置的結(jié)構(gòu)圖;
圖2是本發(fā)明提出的譯碼方法的流程圖;
圖3是本發(fā)明提出的方法和BP算法在實(shí)施例中的誤碼率比較。
具體實(shí)施方式
下面結(jié)合實(shí)施例和附圖,對(duì)本發(fā)明作進(jìn)一步地說(shuō)明,但本發(fā)明的實(shí)施方式不限于此。
本發(fā)明以(100,200,3,6)碼率為1/2的LDPC碼作為實(shí)施例,對(duì)本發(fā)明提出的基于玻爾茲曼機(jī)的LDPC譯碼方法和裝置的進(jìn)行詳細(xì)的說(shuō)明。
實(shí)施例中的(100,200,3,6)的LDPC碼的校驗(yàn)矩陣H是100x 200維的矩陣,列重是3,行重是6。接收到的信息比特為yi。圖1給出了受限玻爾茲曼機(jī)譯碼裝置的結(jié)構(gòu)圖。
譯碼算法的流程如圖2所示,按照流程圖的步驟依次進(jìn)行譯碼。
(1)確定校驗(yàn)矩陣H,100x200維,列重為3,行重為6。
(2)根據(jù)校驗(yàn)矩陣畫出Tanner圖,確定變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的連接關(guān)系。
(3)根據(jù)特納圖構(gòu)建受限玻爾茲曼機(jī)模型,Tanner圖中的變量節(jié)點(diǎn)作為顯層神經(jīng)元,校驗(yàn)節(jié)點(diǎn)作為隱層神經(jīng)元。
(4)根據(jù)6輸入異或的布爾表達(dá)式構(gòu)造隱層神經(jīng)元的輸出函數(shù)。將6輸入異或的布爾表達(dá)式改寫成最小項(xiàng)之和的形式,共有32個(gè)最小項(xiàng)。對(duì)于布爾表達(dá)式每個(gè)最小項(xiàng)中布爾型的變量Xi,用實(shí)值變量表達(dá)式1+xi替換,對(duì)于布爾型的變量用實(shí)值變量表達(dá)式1-xi替換,其中xi為信息比特的值。
(5)構(gòu)造受限玻爾茲曼機(jī)的能量函數(shù),能量函數(shù)為:
式中ei為(4)中第j個(gè)隱層神經(jīng)元的輸出,E為整個(gè)模型的能量。
(6)將接收到的BPSK調(diào)制后的信息比特的值賦值給顯層神經(jīng)元,xi=y(tǒng)i。
(7)前饋計(jì)算,顯層神經(jīng)元的值傳遞給隱層神經(jīng)元,通過(guò)(4)確定的輸出函數(shù)計(jì)算隱層神經(jīng)元ej的值和能量函數(shù)E的值。
(8)反饋計(jì)算,根據(jù)本次迭代所得的能量函數(shù)值,通過(guò)梯度下降法修改顯層神經(jīng)元的值,具體方法如下:
式中xi代表第i個(gè)信息比特的值,α代表學(xué)習(xí)率,這里取0.01,用于調(diào)控每次迭代下降的步長(zhǎng),求和是對(duì)每一個(gè)信息比特參與的3個(gè)隱層神經(jīng)元提供的梯度求和。
(9)更新顯層神經(jīng)元的值xi=xi+Δxi,進(jìn)行硬判決,即令大于等于0的顯層神經(jīng)元的值為1,小于0的顯層神經(jīng)元的值為-1,帶入(5)。若E=0,則譯碼成功;否則重復(fù)步驟(7)(8)。
(10)當(dāng)?shù)螖?shù)大于設(shè)定的最大迭代次數(shù)時(shí),不再進(jìn)行譯碼,直接輸出,這里最大迭代次數(shù)取400。
基于受限玻爾茲曼機(jī)的LDPC譯碼裝置,包括控制模塊、前饋計(jì)算模塊、反饋計(jì)算模塊、顯層神經(jīng)元賦值模塊,裝置在控制模塊的調(diào)控下,在每次迭代開(kāi)始時(shí)將顯層神經(jīng)元賦值模塊中的信息比特值送入前饋計(jì)算模塊,前饋計(jì)算得出的隱層神經(jīng)元的值和能量函數(shù)值送入反饋計(jì)算模塊計(jì)算梯度值和顯層神經(jīng)元的修正值,最后顯層神經(jīng)元將本次迭代信息比特的初始值與修正值相加,得到下一次迭代的信息比特值;
控制模塊,用于控制譯碼裝置的執(zhí)行順序;
前饋計(jì)算模塊用于將顯層神經(jīng)元的值傳遞給隱層神經(jīng)元,通過(guò)構(gòu)造的隱層神經(jīng)元的輸出函數(shù)計(jì)算隱層神經(jīng)元ej的值和能量函數(shù)E的值,包括與隱層神經(jīng)元數(shù)目相同的并行輸出函數(shù)計(jì)算模塊和能量函數(shù)計(jì)算模塊;輸出函數(shù)計(jì)算模塊根據(jù)輸入的顯層神經(jīng)元xi的值計(jì)算隱層神經(jīng)元ej的值,并輸出給能量函數(shù)計(jì)算模塊;能量函數(shù)計(jì)算模塊根據(jù)輸出函數(shù)計(jì)算模塊的輸出計(jì)算能量函數(shù)E的計(jì)算,若E=0,則向控制模塊輸出停止迭代信號(hào),否則向反饋計(jì)算模塊輸出能量函數(shù)E的值;
反饋計(jì)算模塊根據(jù)本次迭代所得的能量函數(shù)值,通過(guò)梯度下降法修改顯層神經(jīng)元的值,具體方法如下:
式中xi代表第i個(gè)信息比特的值,α代表學(xué)習(xí)率,用于調(diào)控每次迭代下降的步長(zhǎng),求和是對(duì)每一個(gè)信息比特參與的L個(gè)隱層神經(jīng)元提供的梯度求和;包括并行梯度計(jì)算模塊和對(duì)應(yīng)的修正值計(jì)算模塊。梯度計(jì)算模塊根據(jù)前饋計(jì)算模塊輸出的隱層神經(jīng)元的值計(jì)算其對(duì)應(yīng)于每個(gè)顯層神經(jīng)元的梯度,即由于梯度值和輸出函數(shù)計(jì)算模塊的中間結(jié)果相同,因此梯度計(jì)算模塊共享輸出函數(shù)計(jì)算模塊的中間結(jié)果;修正值計(jì)算模塊接收梯度計(jì)算模塊輸出的梯度值,按照上述的具體方法分組進(jìn)行加權(quán)求和、乘學(xué)習(xí)率等運(yùn)算,向顯層神經(jīng)元賦值模塊輸出Δxi;
顯層神經(jīng)元賦值模塊,將反饋計(jì)算模塊輸出的修正值和上一次迭代的顯層神
經(jīng)元的值相加,送入前饋計(jì)算模塊。
利用本譯碼裝置進(jìn)行譯碼時(shí),按照以下步驟進(jìn)行。
(1)初始化,將接收到的信息比特的初始值輸入到顯層神經(jīng)元賦值模塊。
(2)將顯層神經(jīng)元的值xi輸入到前饋計(jì)算模塊,由前饋計(jì)算模塊中的輸出函數(shù)計(jì)算模塊并行地計(jì)算因曾神經(jīng)元的值ej,能量函數(shù)計(jì)算模塊由輸出函數(shù)計(jì)算模塊輸出的ej計(jì)算能量函數(shù)E,若E=0,則向控制模塊發(fā)出停止迭代信號(hào),此時(shí)初顯層神經(jīng)元的值即為譯碼成功的值;否則,向反饋計(jì)算模塊輸出E和ej。
(3)反饋計(jì)算模塊中的梯度計(jì)算模塊通過(guò)ej和前饋計(jì)算模塊中的中間結(jié)果來(lái)計(jì)算對(duì)應(yīng)的梯度值傳入修正值計(jì)算模塊;修正值計(jì)算模塊由梯度值和隱層神經(jīng)元值計(jì)算得出顯層神經(jīng)元的修正值Δxi,輸入到顯層神經(jīng)元賦值模塊。
(4)顯層神經(jīng)元賦值模塊將本次迭代的初始值xi和修正值Δxi相加,得到下一次迭代的初始值。
(5)當(dāng)控制模塊中的迭代計(jì)數(shù)達(dá)到400時(shí),停止譯碼,輸出此時(shí)顯層神經(jīng)元的值。
本發(fā)明提出的譯碼方法主要將目前公認(rèn)的功能強(qiáng)大的神經(jīng)網(wǎng)絡(luò)算法和LDPC譯碼相結(jié)合,利用受限玻爾茲曼機(jī)的思想對(duì)LDPC譯碼過(guò)程進(jìn)行建模,利用異或的布爾表達(dá)式來(lái)構(gòu)造隱層神經(jīng)元輸出函數(shù)和利用最小化能量函數(shù)的方式間接地求解信息比特。此外,本發(fā)明還適當(dāng)?shù)倪x擇了學(xué)習(xí)率和終止條件來(lái)提高譯碼算法的譯碼效率。圖3給出了本發(fā)明提出的方法和BP算法在(100,200,3,6)碼率為1/2的LDPC碼上的誤碼率比較,可以看出本發(fā)明提出的譯碼方法在幾乎所有信噪比情況下都表現(xiàn)出了比BP算法更優(yōu)的性能。
本發(fā)明提出的譯碼裝置基于前述的譯碼方法構(gòu)建,包括控制模塊、前饋計(jì)算模塊、反饋計(jì)算模塊、顯層神經(jīng)元賦值模塊。運(yùn)算過(guò)程中由于反饋過(guò)程中的梯度計(jì)算需要利用大量前饋計(jì)算中的中間結(jié)果,因此本裝置有效地實(shí)現(xiàn)了中間結(jié)果的共享,大大降低了冗余計(jì)算,降低了運(yùn)算復(fù)雜度。此外,本裝置還對(duì)處理流程進(jìn)行了流水化和并行化處理,大大提高了計(jì)算速度,降低了譯碼延遲。
上述實(shí)施例是本發(fā)明的一種實(shí)施方式,但本發(fā)明提出的方法不受實(shí)施例的限制,其他任何未背離本發(fā)明的實(shí)質(zhì)和原理下所做的修飾、替代、組合、簡(jiǎn)化均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍內(nèi)。