當咱們說「A與B通訊」時,咱們本質意思是在說A的物理行爲使B產生一種須要的物理狀態。信息的傳輸是一個物理過程,所以,必然受到沒法控制的周邊噪聲以及信號處理自己缺陷的影響。若是接受者B與傳輸者A就所傳輸的內容是一致的,那麼說此次通訊是成功的。網絡
在數據壓縮和數據傳輸之間存在對偶性:less
這麼看起來,數據壓縮和數據傳輸的目標是彼此對抗的,沒法同時達到最優。通常地,通訊系統能夠分爲兩部分,並且數據壓縮與數據傳輸問題能夠分開單獨考慮和設計,通訊系統設計的目標就是讓這兩個目標總體達到最優。機器學習
假設A與B在經過某種物理渠道(或抽象物理結構)進行通訊,在n次使用信道下,咱們能夠計算出可區分的信號的最大數目。該數與n成指數增加關係,這個指數就是所說的信道容量。信道容量(可區分的信號數目的對數值)被特徵化爲最大互信息,是信息論中一個關鍵問題。函數
下圖給出了一個物理髮送信號系統的數學模擬。工具
信道容量理論研究的問題,並非討論一個物理通道最大能傳輸的極限信息,而是在保證很是低偏差的狀況下,能達到的理論傳輸率。有明確的理論能夠支撐證實,咱們可以以很高的機率從輸入序列中挑選出一個「不會混淆」的子集,使得對於每個特定的輸出序列,只存在惟一的一個輸入最有可能致使該輸出。因而,在可忽略的偏差機率狀況下,能夠在輸出端重構輸入序列。學習
將信源映射到適合於輸入信道的「足夠分散的」輸入序列集合,咱們可以以很是低的偏差機率傳輸一條消息,而且在信道的輸出端重構出這個信源消息。可實現的最大的碼率稱做該信道的容量。優化
這個小節,咱們經過幾個典型例子,來從不一樣角度看一下信道容量的決定因素。編碼
以下圖所示,它的二元輸入在輸出端能精確地重現:spa
無噪聲二元信道,C=1比特設計
在這種狀況下,任何一個傳輸的比特都能被無偏差地接收到。所以,每次使用該信道,均可以毫無偏差地傳輸一個比特,信道容量就是1比特。
另外一方面,也能夠計算獲得信息容量C=maxI(X;Y)=1比特,且在p(x)=(1/2,1/2)時達到。
這種信道對於兩個輸入中的每個,均有兩個可能的輸出,以下圖所示:
無重疊輸出的有噪聲信道,C=1比特
這種信道雖然有噪聲,可是依然能夠根據輸出精確肯定輸入,只是須要更多的信息。
所以,該信道的容量仍然是1比特/傳輸,也能夠計算出該信道的信息容量C=maxI(X;Y)=1比特,且在p(x)=(1/2,1/2)時達到。
在這種信道中,信道輸入以機率1/2在輸出端精確接收,或以1/2機率轉變爲下一個字母,以下圖所示:
有噪聲信道
從上圖能夠看到,從輸出端存在彼此交疊重合,沒法從輸出端精確地還原出輸入端。爲了解決這個問題,能夠參考上一節的例子,將輸出端以間隔的方式進行編碼映射,以此獲得獨立同分布的無噪聲輸出端機率分佈。
若輸入端有26個字符,並以間隔的方式使用輸入字符,以下圖所示,
那麼在每次傳輸過程當中,能夠毫無偏差地傳輸其中的13個字符。所以,該信道的容量爲log13比特/傳輸,也能夠計算獲得信道的容量:
C=maxI(X;Y) = max[H(Y) - H(Y|X)] = max(H(Y)) - 1 = log26 - 1 = log13比特,且當p(x)爲整個輸入字母表上的均勻分佈時達到該最大容量
考慮下圖所示的二元對稱信道(binary symmetric channel,BSC),這個二元信道的輸入字符以機率p互補,這是一個有偏差信道的最簡單典型模型。
在出現錯誤時,0做爲1收到,或者正好相反。從接收到的比特中咱們並不能看出哪裏發生了錯誤。從某種意義上說,全部接收到的比特都不可靠。可是信道噪聲定理告訴咱們,咱們仍然可使用這樣的通訊信道以非0的傳輸碼率發送信息,而且偏差機率任意小。
這裏給出互信息的一個界,
最後一個不等式成立是由於Y是一個二元隨機變量,當輸入分佈是均勻分佈時等號成立。所以,參數爲p的二元對稱信道的信息容量是:C = 1 - H(p)比特。
從公式中能夠看到,信道輸出端的機率分佈越均勻,則信道容量越小。
有一種信道相似於二元對稱信道,會直接損失一些比特(丟失信息),這種信道稱做二元檫除信道(binary erasure channel)。在二元檫除信道中,比例爲a的比特被檫除掉,而且接受者知道哪些比特已經被檫除掉了,以下圖所示:
二元檫除信道,兩個輸入,三個輸出
計算二元檫除信道的容量以下:
從公式上咋一看,彷佛H(Y)的的最大值是log3,但不管選擇什麼輸入分佈p(x),都沒法達到這個值。設E表明事件{Y=e},並使用表達式:
設Pr(X=1)=π,咱們有,
所以,
,其中,當π=1/2時,達到該信道容量
這個信道容量的表達式有很強的直觀意義:因爲比例爲α的比特在信道中損失,於是咱們至多可以恢復比例爲1-α的比特輸入信息。所以,信道容量最多爲1-α。
從上面的幾個例子討論能夠獲得一個歸納性的結論,信道容量由兩部分組成:
筆者思考:
從信道容量這個視角來看機器學習模型的訓練和擬合過程,咱們能夠將一個訓練集抽象理解爲一個通訊信道,訓練集信道的目的是經過抽樣方法,獲得一個目標函數的典型集,典型集中包含了目標函數的信源信息。對於訓練集自身來講,咱們的目的老是但願訓練集中包含的有用信息儘可能多,也就說,咱們的目標是」讓訓練集信道的信道容量儘可能大「,那如何讓信道容量儘可能大呢?由前面的結論咱們能夠獲得幾點啓發:
Relevant Link:
《信息論基礎》阮吉壽著 - 第七章
離散信道是數字通訊中,最經常使用的抽象模型,咱們本文的討論對象也是針對離散信道。
離散信道是由:
三部分構成的系統,以下圖所示,
取自下標集的消息W,產生信號,這個信號以隨機序列的方式被接受者收到。而後,接受者使用適當的譯碼規則猜想消息W。若是與所傳輸的消息W不一樣,則代表接受者出錯。下面咱們用數學符號嚴格定義這些概念,
用表示的離散信道由兩個有限集X和Y以及一簇機率密度函數p(y|x)構成,其中對任意的x與y,有p(y|x)>=0,以及對任意的x,有,而X和Y分別看作信道的輸入與輸出。
值得注意的是,若是輸出的機率分佈僅依賴於它所對應的輸入,而與先前通訊的輸入或者輸出條件獨立,就稱這個信道是無記憶的(memoryless),值得注意的是,馬爾科夫過程也是一種無記憶過程。本文在討論離散無記憶信道時,如無特別說明,通常都是指不帶反饋的離散無記憶信道。
離散無記憶信道的「信息」信道容量(channel capacity)定義爲:
,這裏最大值取全部可能的輸入分佈p(x)
從隨機過程熵率的角度來看,信道容量定義爲信道的最高碼率(比特/信道使用),在此碼率下,信息可以以任意小的偏差機率被傳輸。香農第二定理代表,信道容量等於這個可操做的信道容量。
離散無記憶信道(DMC)的n次擴展是指信道,其中,即進行n次通訊的通訊過程。
由於是無記憶的,離散無記憶信道的n次擴展的信道轉移函數能夠簡化爲,
信道的(M,n)碼由如下部分構成:
這個小節,咱們來討論下信道容量的幾個典型性質,
設,
爲已知下標 i 被髮送的條件下,接受者譯碼錯誤的條件機率(conditional probability of error),其中 I(.) 爲示性函數。
(M,n)碼的最大偏差機率λ(n)(maximum probability of error)定義爲,
(M,n)碼的(算術)平均偏差機率Pe(n)(average probability of error)定義爲,
顯然有,
(M,n)碼的碼率R(rate)爲,
進一步的,若是存在一個碼序列,知足當時,最大偏差機率,則稱碼率R是可達的(achievable)。
信道的容量定義爲:全部可達碼率的上確界。
因而,對於充分大的分組長度,小於信道容量的碼率對應的偏差機率能夠任意小。
Relevant Link:
《信息論基礎》阮吉壽著 - 第七章
所謂聯合典型序列,簡單地說,就是若是碼字與接收到的信號是」聯合典型「的話,就將信道輸出譯爲第 i 個下標。
服從分佈p(x,y)的聯合典型序列所構成的集合是指其經驗熵與真實熵ε接近的n長序列構成的集合,即:
其中,
設(Xn,Yn)爲服從的i.i.d.的n長序列,那麼,
下圖是關於聯合典型集的示意圖,
大約有2nH(X)個典型的X序列和大約2nH(Y)個典型的Y序列。可是,聯合典型序列只有2nH(X,Y)個,因此並非全部典型的Xn與典型的Yn構成的序列對都是聯合典型的。
隨機選取的序列對是聯合典型的機率大約爲2-nI(X;Y)。所以,咱們可能須要考慮約2nI(X;Y)這樣的序列對,纔可能遇到一個聯合典型對,這代表存在大約2nI(X;Y)個可區分的信號Xn。
着眼於上述問題的另外一種方式是考慮固定輸出序列Yn下的聯合典型序列集,這裏假定該輸出序列來自真實的輸入信號Xn。對於序列Yn,大約存在2nH(X|Y)個條件典型的輸入信號。某個隨機選取的(其餘)輸入信號Xn與Yn爲聯合典型的機率大約等於。
這再次代表,咱們可能選取出大約2nI(X;Y)個碼字Xn(W),才能使其中的一個碼字與產生輸出Yn的對應碼字混淆起來。
Relevant Link:
《信息論基礎》阮吉壽著 - 第七章
前面的章節中咱們已經討論了離散無記憶信道的信息容量定義,即容量能夠視爲可以在該信道中可靠傳輸的比特數。咱們這小節將嘗試給出一個直觀思路,解釋爲何能經過信道來傳輸C比特的信息。
基本的思路是,對於大的分組長度,每一個信道能夠看做是有噪聲打字機信道(前面章節提到),由此每一個信道都有一個輸入子集,使得在輸出端接收到的序列基本互不相交。
對於輸入的每一個n長序列,會有大約2nH(Y|X)個可能的Y序列與之對應,而且全部這些序列是等可能的(AEP定理),以下圖所示,
咱們但願確保沒有兩個X序列可以產生相同的Y輸出序列,不然,將沒法判斷到底傳輸的是哪一個X序列。
全部可能的Y序列的總數約等於2nH(Y),對應於不一樣的輸入X序列,這個集合分割成大小爲2nH(Y|X)的小集合。因此不相交集的總數小於等於。所以,咱們至多能夠傳輸個可區分的n長序列,這就是所謂的信道容量。
信道編碼定理最初的證實由香農在1948年的開創性論文中給出。該結果與直觀感受正好相反,若是在信道傳輸過程當中存在偏差,那麼如何糾正全部偏差?任何糾錯過程自己也受到偏差的影響,這樣將無窮無盡地進行下去。
香農證實,只要碼率小於信道容量,信息就能夠經過該信道可靠地傳輸,香農在證實中使用了不少精妙的思考,包括:
香農的概述性證實基於典型序列、隨機碼選擇的思想(計算隨機選擇的碼字的平均偏差機率)等等。
即尋找一個與收到的序列是聯合典型的碼字,若是找到惟一知足該性質的碼字,咱們則認爲這就是被髮送的碼字。
依據前面所討論的聯合典型性的性質,因爲發送的碼字與接收到序列是機率相關的,因此他們以很高的機率成爲聯合典型。而且,任意其餘碼字與接收到的序列是聯合典型的機率是2-nl,所以,若是碼字個數小於2nI,那麼能夠以很高的機率判定不會有其餘的碼字可以與被傳輸的碼字相混淆,而且偏差機率很小。
雖然聯合典型譯碼是次優的,可是它便於分析並且能夠達到小於信道容量的任何碼率。
對於離散無記憶信道,小於信道容量C的全部碼率都是可達的。具體來講,對任意碼率R<C,存在一個(2nR,n)碼序列,它的最大偏差機率爲。反之,任何知足的(2nR,n)碼一定有R<=C。
值得注意的是,雖然這個定理說明了對於大的分組長度,存在偏差機率任意小的好碼,但它並無提供一種構造最佳碼的方法。若是使用定理證實中的方法,根據適當的分佈隨機地生成一個碼,那麼對於充分大的分組長度,這樣構造出來的編碼多是最好的。
然而,因爲該編碼中缺少某個結構,譯碼將是很是困難的,所以,這個定理並不能提供一個實際的編碼方案,而僅僅只是一個方法論,咱們後面會具體討論具體的易於編和譯的構造性編碼,例如漢明(Hamming)碼,它在每一個比特分組中糾正一個錯誤。
在容許徹底無偏差的狀況下,咱們來從新論證一次信道編碼定理。首先證實蘊含結論R<=C。
假定有一個零偏差機率的(2nR,n)碼,也就是說,譯碼器輸出的g(Yn)以機率1等於輸入的下標W。那麼,輸入下標W徹底由輸出序列決定,即。
爲了得到更強的界,隨意假定W服從上的均勻分佈,因而,H(W) = nR。從而,咱們有以下不等式推導過程,
其中,
所以,對任何零偏差的(2nR,n)碼及全部的n,有:
下面將零偏差碼的證實過程推廣到具備很是小偏差機率的編碼,證實須要用到的新工具就是費諾不等式,它依據條件熵給出偏差機率的下界。
這裏先給出費諾不等式的定義,下標W服從集合上的均勻分佈,序列Yn與W是機率相關的。經過Yn來估計被髮送的下標W。設爲其估計,那麼,W->Xn(W)->Yn->W‘行程馬爾柯夫鏈,注意到偏差機率爲:
咱們給出下面的引理,
【費諾不等式】設離散無記憶信道的碼簿爲C,且輸入消息W服從2nR上的均勻分佈,則有,
【信道容量不變定理】設Yn爲Xn通過容量C離散無記憶信道傳輸所獲得的輸出信號,則,
,對於任意的p(xn)
上式說明屢次使用信道並不增長每次傳輸的信心容量比特。
筆者總結:
本質上講,當R<C時,能夠以任意低的偏差機率傳輸信息;而當R>C時,偏差機率將遠離0。最佳的碼率就是信道容量。
Relevant Link:
《信息論基礎》阮吉壽著 - 第七章
信道編碼定理使用分組碼的方案,若是分組長度足夠大的話,當碼率小於信道容量時,能夠用分組碼以任意低的偏差機率傳輸信息。香農在其開創性論文中提出了獲得這種碼的一種概述性方法,此後人們一直在尋找這樣的碼。除了要達到低的偏差機率以外,還須要具有簡單的特性,以保證能夠大規模進行有效編碼和譯碼。咱們本章介紹由漢明開發的一種最簡單的方案,它能夠說明大多數碼所共有的一些基本思想。
編碼的目的是經過增長冗餘使得在一些信息損失或者損壞的狀況下,扔可能由接受者恢復出原始的消息。
一種最顯而易見的編碼方案是重複信息,例如,爲了發送一個1,咱們發送11111,爲了發送一個0,咱們發送00000。這一方案使用5個字符來傳輸1比特,所以碼率爲1/5比特/字符。若是在二元對稱信道中使用這樣的碼,最優的譯碼方案就是將接收到的每一個5比特分組譯爲其中佔多數的比特。顯然,當且僅當超過3/5的比特發生錯誤時,纔會致使譯碼錯誤。經過使用更長的重複碼,能夠達到任意小的偏差機率。可是,隨着分組長度的增長,碼率也趨於0,所以,一個」最簡單的「編碼,不必定是一個很是實用的編碼。
替代這種簡單的重複比特方法,能夠用某種巧妙的方式將比特聯合起來,使得每個額外的比特均可以用來檢驗某個信息比特子集中是否發生錯誤。
一個簡單的例子就是奇偶校驗碼,從n-1個信息比特的分組出發,選取第n個比特,使得整個分組的奇偶校驗數爲0。這樣,若是在傳輸過程當中發生了奇數次錯誤,那麼接受者可以注意到奇偶性的變化,並察覺到錯誤,這就是檢錯碼(error-detecting code)最簡單的例子。可是要注意的是,該編碼既不能察覺到出現偶數次錯誤,也不能提供任何有關糾正這些錯誤的信息。
咱們能夠推廣奇偶校驗的思想,容許存在多個奇偶校驗位,也能夠容許奇偶校驗依賴於各類各樣的信息比特子集。
接下來要討論的漢明碼就是奇偶校驗碼的一個例子,咱們會利用線性代數中的一些簡單思想來描述它。
爲了說明漢明碼的基本思想,考慮分組長度爲7,單個碼字長度爲3的非0二元向量的集合,以它們爲列向量構成一個矩陣:
考慮H的零空間(與H相乘獲得000的向量)中長度爲7的向量的集合。由線性空間理論,由於H的秩爲3,故指望H的零空間的維數爲4,這24個碼字以下:
因爲這個碼字集是矩陣的零空間,因此從任意兩個碼字的和扔是一個碼字的意義上看,這是一個線性空間。所以,碼字集造成7維向量空間中的一個4維線性子空間。
觀察這些碼字,不難注意到除了全是0的碼字外,任何碼字中1的最小數目爲3,該最小數稱爲碼的最小重量(minimum weight)。能夠看出,因爲H的全部列互不相同,沒有兩列的和能夠爲000,所以碼的最小重量至少爲3。
基於任意兩列的和必然爲該矩陣中某一列的事實,咱們能夠推出最小距離剛好爲3。因爲該碼是線性的,任意兩個碼字的差還是一個碼字,所以,任意兩個碼字之間至少在3個位置上有所不一樣。
兩個碼字不一樣的最小位置數稱爲該碼的最小距離(minimum distance)。碼的最小距離是用來表示碼字之間相隔多遠的一個度量,而且能夠決定在信道的輸出端碼字之間差別的程度。對線性碼來講,最小距離等於最小重量,咱們的目的是設計出最小距離儘量大的碼(信道編碼定理)。
上述碼的最小距離是3,所以,若是碼字c僅佔一個位置損壞,那麼產生新字符串將與其餘任何碼字之間至少存在兩個位置上是不用的,它與c更加接近。根據香農給出的聯合典型碼思想,依然能夠根據似然譯碼獲得碼字c。可是,是否能夠經過窮舉搜索就發現哪個是距離最近的碼字呢?
回答是確定的!能夠利用矩陣H的結構譯碼!
矩陣H稱做奇偶校驗矩陣(parity check matrix),具備以下性質:
對任意碼字c均有Hc = 0,設ei是第 i 個位置爲1其他位置爲0的向量。若是碼字的第 i 個位置損壞,則接收到的向量爲 r=e+ei,若是將矩陣H與接收到的向量相乘,則獲得,
這正好是H的第 i 列向量。所以,經過計算Hr,就能夠發現接收向量的哪個位置損壞的,還原該位置上的值就獲得一個碼字。這樣就有了一個簡單的程序用來糾正接收序列中的一個錯誤。
咱們已經構造出分組長度爲7的16個碼字組成的碼簿,它能糾正至多一個錯誤,這個碼就是漢明碼(Hamming code)。
至此,咱們尚未給出明確的編碼程序,咱們繼續明肯定理漢明碼,
通常地,讓碼字的前k個比特表明消息,然後面n-k個比特留做奇偶校驗位,這樣獲得的編碼稱做系統碼(systematic code)。該碼每每由它的分組長度n,信息比特數k,以及最小距離d三個參數來決定。例如,上述編碼稱做(7,4,3)漢明碼。
能夠用簡單的文氏圖表示來解釋漢明碼的工做原理,爲了發送信息序列1101,將序列中的4個信息比特分別放在圖中4個相交的區域中,而後在剩餘的區域中各放置一個校驗位使得每一個圈中的校驗結果爲偶數(即每一個圓中有偶數個1),以下圖,
如今不妨假設其中的一個比特被改變了,以下圖中,有一個信息比特從1變成了0,
此時,有兩個圓違背了原先的校驗約束(圖中加黑部分)。於是,當咱們知道了這兩個約束違背,不難看出,致使產生約束違背的這個單一的比特錯誤只可能在兩圓的相交部分發生。
相似地,經過分析其餘情形,能夠看出,這種碼能夠檢測並糾正發生在接收碼字中的任何單個比特錯誤
很容易推廣這一程度來構造更大的矩陣H。通常來講,若是使用矩陣H中的 l 行,那麼所得編碼的分組長度爲 n=2l-1,k=2l-l-1,以及最小距離爲3。全部這些碼都稱做漢明碼,並能夠糾正一個錯誤。
漢明碼是全部線性奇偶校驗碼中最簡單的例子,經過漢明碼說明了構造其餘線性碼的基本原則,即分組碼(block code)---- 將一組信息比特映射成一個信道碼字,且不依賴於過去的信息比特。
Relevant Link:
《信息論基礎》阮吉壽著 - 第七章
這章咱們來討論一個問題,爲了節省傳輸進行了數據壓縮(R>H)和用戶信道傳輸的信道編碼(R<C)是彼此獨立的仍是互相依賴的呢?
例如,考慮經過離散無記憶信道傳輸數字語音或音樂,設計一個碼,將語言樣本序列直接映射成信道的輸入信號,或者先將語音壓縮成最有效的格式,而後使用適當的信道編碼從該信道將他發送出去。因爲數據壓縮不依賴於信道,而信道編碼又不依賴於信源分佈。
在這章中,咱們將證實:在有噪聲信道中,數據壓縮和信道編碼這兩個步驟是彼此獨立的。這意味着,能夠將通訊系統的設計轉化成信源編碼與通訊編碼兩個部分的組合。這種組合的方法與將兩個問題一塊兒考慮所能設計出的任何方法同樣有效。
數據的一般表示是二元字母表,最現代的通訊系統是數字化通訊系統,而且爲了能在一般的信道上傳輸,數據簡化爲二進制表示。這使複雜度大大減少,像ATM和因特網這樣的網絡系統容許語音、視頻和數字數據共用相同的通訊信道。
如今對上述討論問題作一個嚴格的定義,假設有一個信源V,從字母表V中生成字符。對於由V生成的隨機過程,除了要求其取值於有限字母表且知足AEP以外,不作任何假設。這種過程的例子包括獨立同分布的隨機變量序列和平穩不可約馬爾柯夫鏈的狀態序列。任何平穩遍歷信源均知足AEP。
如今想經過信道發送字符序列,而且保證接受者能夠重構序列。爲了達到這個目的,將序列映射成碼字,經過信道發送這個碼字。接受者觀察接收到的序列Yn後,給出發送序列Vn的估計。若是,則接受者犯了錯誤,咱們定義偏差機率爲:
其中 I 爲示性函數,爲譯碼函數,這個系統以下圖所示,
若是V1,V2,....,Vn爲有限字母表上知足AEP和H(v)<C的隨機過程,則存在一個信源信道編碼使得偏差機率。反之,對任意平穩隨機過程,若是H(v)>C,那麼偏差機率遠離0,從而不可能以任意低的偏差機率經過信道發送這個過程。
證實:可達性。
證實前半部分的重點就是此前描述的兩步驟編碼,因爲已經假定隨機過程知足AEP,因此必然存在一個元素個數<=2n(H(v)+ε)的典型集Aε(n),它擁有機率的絕大部分。僅對屬於這個典型集的信源序列進行編碼,其他全部序列將產生一個錯誤,它對偏差機率的貢獻不會超過ε。
給Aε(n)中的全部序列加上下標,因爲至多有2n(Hv+ε)個這樣的序列,n(H+ε)比特足以給出它們的下標了,若是
咱們能以小於ε的偏差機率將須要的下標發送給接收者,接收者能夠經過窮舉典型集Aε(n),選擇與被估計下標相應的序列,從而重構出Vn。這個序列將以很高的機率與傳輸序列相一致。具體來講,對充分大的n,咱們有,
所以,若是
那麼對於充分大的n,咱們可以以低的偏差機率重構出序列。
聯合信源信道分離定理促使咱們將信源編碼問題從信道編碼問題中獨立出來考慮,
分離定理代表,分離編碼器與聯合編碼器可以達到相同的碼率,咱們能夠獨立地涉及信源碼和信道碼,而後結合二者達到最優的效果,
總結一下,
Relevant Link:
《信息論基礎》阮吉壽著 - 第七章
TODO