1. 程式人生 > >簡單理解卷積碼

簡單理解卷積碼

  卷積碼(convolutional code)是通道編碼的一種。通道編碼被用於物理層,目的是減少因不完美通道造成的誤碼。卷積碼的生成方式是將待傳輸的資訊序列通過線性有限狀態移位暫存器。接收方使用最大似然法解碼(maximum likelihood decoding)。

1. 編碼

1.1. 從編碼器的角度理解編碼過程

圖 1. 卷積碼編碼器(n=3,k=1,K=3)

  卷積碼的編碼器如圖 1 所示,由 KK 個能儲存 kk 個位元的 stage 和 nn 個莫二加法運算器以及一個 nn 位暫存器組成。它的功能是將 kk 個位元的原始資訊位元編成 nn 位元的通道碼。每輪編碼只能有 kk 個位元作為輸入,nn 個位元作為輸出。

  當編碼器運作時執行以下操作:

  1. stage KK 先將原先儲存的位元丟棄,stage ii 將儲存的位元轉移至 stage i+1i+1
  2. 向 stage 11 輸入 k 個欲被編碼的資訊位元;向 stage 11 輸入 k 個欲被編碼的資訊位元;
  3. 每個 stage 將其所儲存的位元按照預先設定的方式輸入至莫二加法器做莫二加法運算,所得結果被儲存在 nn 位暫存器中;每個 stage 將其所儲存的位元按照預先設定的方式輸入至莫二加法器做莫二加法運算,所得結果被儲存在 nn 位暫存器中;
  4. nn 位暫存器的儲存作為該輪輸入的編碼結果輸出。將 nn 位暫存器的儲存作為該輪輸入的編碼結果輸出。
  5. 以上步驟執行至所有資訊位元被編碼為止。以上步驟執行至所有資訊位元被編碼為止。

  圖 1 為 n=3n=3k=1k=1K=3K=3 卷積碼編碼器,這意味著每輪編碼只能輸入一個位元,有三個位元作為輸出。輸出序列 C=C1C2C3C=C_1 C_2 C_3 與 stage 之間的關係為:C1=S1C_1=S_1C2=S1S2S3C_2=S_1⨁S_2⨁S_3C3=S1S3C_3=S_1⨁S_3

  以輸入位元“11”作為例子,編碼器需要執行以下操作:

  1. stage 33 將原先儲存的位元“00” 丟棄,stage 22 將儲存的位元“00”轉移至 stage 33,而 stage 11 將儲存的位元“0” 轉移至 stage 22
  2. 輸入位元“11”最後被存入 stage 11 中;輸入位元“11”最後被存入 stage 11 中;
  3. 通過莫二加法運算後輸出序列為 C=C1C2C3=111C=C_1 C_2 C_3=111;通過莫二加法運算後輸出序列為 C=C1C2C3=111C=C_1 C_2 C_3=111
  4. 該輪編碼結果“111111”被輸出。該輪編碼結果“111111”被輸出。

1.2. 從 trellis diagram 的角度理解編碼過程

圖 2. trellis diagram

  一般會將編碼的結果在如圖 2 所示的 trellis diagram上用箭頭表示,這些箭頭被稱為 branch。trellis diagram 上每一行代表編碼的 state,其由 stage 22 至 stage KK 記憶體儲的位元排列而成,記為 S=S2S3SKS=S_2 S_3…S_K; trellis diagram 上每一列代表被編碼位元的第幾輪輸入。trellis diagram 上每一行與每一列的交匯點被稱為 node,代表每輪編碼時的 state; branch 上標有一些碼字,代表每輪編碼的結果,也即上文提到的 nn 位暫存器的儲存內容;所有 branch 組合成一條 path,標識整個編碼過程中 state 的變化情況。

  圖 2 是以“110110”作為圖 1 編碼器編碼輸入的 trellis diagram,編碼步驟如下:

  1. 當時刻為 t=t1t=t_1 時,輸入位元“11”,此時移位暫存器的儲存為 S1S2S3=100S_1 S_2 S_3=100,state 為 S=S2S3=00S=S_2 S_3=00,編碼輸出為 C=C1C2C3=111C=C_1 C_2 C_3=111
  2. 當時刻為 t=t2t=t_2 時,再次輸入位元“11”,此時移位暫存器的儲存為 S1S2S3=110S_1 S_2 S_3=110,因此 state 變為 S=S2S3=10S=S_2 S_3=10,而編碼輸出為 C=C1C2C3=101C=C_1 C_2 C_3=101;當時刻為 t=t2t=t_2 時,再次輸入位元“11”,此時移位暫存器的儲存為 S1S2S3=110S_1 S_2 S_3=110,因此 state 變為 S=S2S3=10S=S_2 S_3=10,而編碼輸出為 C=C1C2C3=101C=C_1 C_2 C_3=101
  3. 當時刻為 t=t3t=t_3 時,輸入位元“00”,此時移位暫存器的儲存為 S1S2S3=011S_1 S_2 S_3=011,因此 state 變為 S=S2S3=11S=S_2 S_3=11,而編碼輸出為 C=C1C2C3=001C=C_1 C_2 C_3=001;當時刻為 t=t3t=t_3 時,輸入位元“00”,此時移位暫存器的儲存為 S1S2S3=011S_1 S_2 S_3=011,因此 state 變為 S=S2S3=11S=S_2 S_3=11,而編碼輸出為 C=C1C2C3=001C=C_1 C_2 C_3=001

  完整通道編碼的結果為“111101001111 101 001”。值得說明的是,在編碼前所有的 stage 預設攜帶位元“00”,所以無論編碼器的輸入是什麼,trellis diagram 上的 path 都從“0000

相關推薦

簡單理解

  卷積碼(convolutional code)是通道編碼的一種。通道編碼被用於物理層,目的是減少因不完美通道造成的誤碼。卷積碼的生成方式是將待傳輸的資訊序列通過線性有限狀態移位暫存器。接收方使用最大似然法解碼(maximum likelihood decod

用CNN對文字處理,句子分類(簡單理解原理)

首先需要理解N-gram https://zhuanlan.zhihu.com/p/32829048對於在NLP中N-gram的理解,一元,二元,三元gram 大多數 NLP 任務的輸入不是影象畫素,而是以矩陣表示的句子或文件。矩陣的每一行對應一個標記,通常是一個單詞,但它也可以是一個字元。也就是說,每一

無需複雜的數學描述,通過簡單程式碼理解模組

選自 towardsdatascience,作者:Paul-Louis Pröve,機器之心編譯,參與:Panda。 比起晦澀複雜的數學或文字描述,也許程式碼能幫助我們更好地理解各種卷積模組。電腦科學家 Paul-Louis Pröve 用 Keras 對瓶頸模組、Inception 模組、殘差模組

[OpenCV學習]徹底理解的含義

clas enc 成了 學習 元素 open mage .com com 看了很多關於卷積的介紹,一直感覺不怎麽理解,今天徹底研究下: 我們知道圖像是由像素構成的,圖像中的行和列一起構成了圖像矩陣,比如一個分辨率800*400的圖像,同時也是一個大矩陣,這個矩陣有著40

理解 Convolution

http://www.qiujiawei.com/convolution/ 數學中的卷積 卷積的wiki:Convolution。 卷積和(convolution sum)的公式是: y(t)=x(t)∗h(

4.3.2 通道編碼 ——

4.3.2 通道編碼 ——卷積碼    通道編碼是為了保證通訊系統的傳輸可靠性,克服通道中的噪聲和干擾而專門設計的一類抗干擾技術和方法。它根據一定的監督規律在待發送的資訊碼元中(人為的)加入一些必要的監督碼元,在接收端利用這些監督碼元與資訊碼元之間的監督規律,發現和

深入理解”的概念

本文主要為下面兩篇篇文章加自己的理解感悟總結而來 1.知乎高贊回答如何通俗易懂地解釋卷積? 2.知乎高贊回答卷積為什麼叫「卷」積?   預備知識   1.向量運算 點乘(a * b)       向量的點乘,也叫

續(利用tensorflow實現簡單神經網路-對程式碼中相關函式介紹)——遷移學習小記(三)

  上篇文章對cnn進行了一些介紹,附了完整小例子程式碼,介紹了一部分函式概念,但是對我這樣的新手來說,程式碼中涉及的部分函式還是無法一下子全部理解。於是在本文中將對程式碼中使用的函式繼續進行一一介紹。 具體程式碼見上一篇(二) 一、 #定義輸入的placehoder,x是特徵

利用tensorflow實現簡單神經網路——遷移學習小記(二)

一、什麼是神經網路(CNN)     卷積神經網路(Convolutional Neural Network,簡稱CNN),是一種前饋神經網路,人工神經元可以影響周圍單元,可以進行大型影象處理。卷積神經網路包括卷積層和池化層。卷積神經網路是受到生物思考方式的啟發的MLPs(多

利用tensorflow實現簡單神經網路

一、什麼是神經網路(CNN)     卷積神經網路(Convolutional Neural Network,簡稱CNN),是一種前饋神經網路,人工神經元可以影響周圍單元,可以進行大型影象處理。卷積神經網路包括卷積層和池化層。卷積神經網路是受到生物思考方式的啟發的MLPs(

簡單介紹神經網路(CNN)

前言: 原創: Python開發者 內容取自公眾號——Python開發者,有興趣的可以關注一下 什麼是卷積神經網路,它為何重要? 卷積神經網路(也稱作 ConvNets 或 CNN)是神經網路的一種,它在影象識別和分類等領域已被證明非常有效。 卷積神經網路除了為機器人

【TensorFlow實戰】用TensorFlow實現簡單神經網路

#本次將練習實現一個簡單的卷積神經網路,使用的資料集依然是MNIST, #預期可以達到99.2%左右的準確性 #使用兩個卷積層加上一個全連線蹭構建一個簡單但是非常具有代表性的卷積神經網路 #載入MNIST資料集,並且建立預設的Interactive Sessio

CNN筆記 通俗理解神經網路

                               通俗理解卷積神經網路(cs231n與5月dl班課程筆記)1 前言    2012年我在北京組織過8期machine learning讀書會,那時“機器學習”非常火,很多人都對其抱有巨大的熱情。當我2013年再次來到北京時,有一個詞似乎比“機器學習”

CNN筆記(一):通俗理解神經網路

   在深度學習中,有一個很重要的概念,就是卷積神經網路(CNN),是入門深度學習需要搞懂的東西。 1 卷積網路         也叫卷積神經網路(convolutional neural networ

視覺化理解神經網路

視覺化理解卷積神經網路 原文地址:http://blog.csdn.net/hjimce/article/details/50544370 作者:hjimce 一、相關理論   本篇博文主要講解2014年ECCV上的一篇經典文獻:《Visualizing and Und

2017CS231n李飛飛深度視覺識別筆記(十二)——視覺化和理解神經網路

第十二講 視覺化和理解卷積神經網路 課時1 特徵視覺化、倒置、對抗樣本     上一章中計算機視覺中一些內容,包括影象分割、檢測以及識別;這一章中將討論卷積神經網路的內部真正的工作原理是什麼。

理解神經網路?

南洋理工大學的綜述論文《Recent Advances in Convolutional Neural Networks》對卷積神經網路的各個元件以及進展情況進行總結和解讀,其中涉及到 CNN 中各種重要層的數學原理以及各種啟用函式和損失函式。機器之心技術分析師對該論文進行了解讀。 論文地址:https:/

理解神經網路CNN中的特徵圖 feature map

         一直以來,感覺 feature map 挺晦澀難懂的,今天把初步的一些理解記錄下來。參考了斯坦福大學的機器學習公開課和七月演算法中的機器學習課。        CNN一個牛逼的地方就在於通過感受野和權值共享減少了神經網路需要訓練的引數的個數。總之,卷積網路的

理解神經網路?看這篇論文就夠了

https://www.toutiao.com/a6641180491963695629/    2018-12-31 23:32:08 南洋理工大學的綜述論文《Recent Advances in Convolutional Neural Networks》對卷積神

遞迴系統的狀態轉移

令 生成多項式為:G(7,5)=[1 1 1;1 0 1]    注意是系統碼    第一種方法: a= poly2trellis(3, [7 5],7); >> a.nextStates ans = 0 2 2 0