200804
本篇是學習資訊論的入門筆記,希望能與各位分享進步!這是第十章也是最後一章:通用信源編碼~
文章目錄
-
- 10. 通用信源編碼
-
- 10.1 通用碼與信道容量
- 10.2 二進制序列的通用編碼
- 10.3 算術編碼
- 10.4 Lempel-Ziv編碼
10. 通用信源編碼
10.1 通用碼與信道容量
- 備援度:如果使用的碼的碼長為 l ( x ) l(x) l(x),并假設該碼通過Huffman編碼所得,相應的機率為 q ( x ) = 2 − l ( x ) q(x)=2-l(x) q(x)=2−l(x), 定義碼的備援度為編碼的期望長度與期望長度的下界之差:
R ( p θ , q ) = E p θ [ l ( X ) ] − ( − E p θ [ log p θ ( X ) ] ) = D ( p θ ∣ ∣ q ) R(p_\theta,q) = E_{p_\theta}[l(X)] - (-E_{p_\theta}[\log p_\theta(X)]) = D(p_\theta || q) R(pθ,q)=Epθ[l(X)]−(−Epθ[logpθ(X)])=D(pθ∣∣q)
其中 q ( x ) = 2 − l ( x ) q(x) = 2^{-l(x)} q(x)=2−l(x)為對應碼字長度 l ( x ) l(x) l(x)的分布。
- 編碼目标:無論真實分布 p θ p_θ pθ如何,總希望找到一個編碼,能始終表現得很好。
- 最小最大備援度:定義為
R ∗ = min q max p θ R ( p θ , q ) = min q max p θ D ( p θ ∣ ∣ q ) R^\ast = \min_q \max_{p_\theta}R(p_\theta,q) = \min_q\max_{p_\theta}D(p_\theta ||q) R∗=qminpθmaxR(pθ,q)=qminpθmaxD(pθ∣∣q)
- 編碼器:為求得分布 q q q,使它在相時熵意義下盡可能與所有可能的 p θ p_θ pθ 接近,對于信道 { θ , p θ ( x ) , X } \{θ, p_θ(x), X\} {θ,pθ(x),X}的轉移矩陣,它的行等于信源的可能分布 p θ p_θ pθ 。
- 結論:最小最大備援度 R ∗ R^\ast R∗等于該信道的容量,且達到信道容量時的輸入分布導出該信道的輸出分布,即是此時的最優碼分布。信道容量為
C = max π ( θ ) ∑ θ π ( θ ) p θ ( x ) log p θ ( x ) q π ( x ) C = \max_{\pi(\theta)}\sum_\theta \pi(\theta)p_\theta(x)\log\frac{p_\theta(x)}{q_\pi(x)} C=π(θ)maxθ∑π(θ)pθ(x)logqπ(x)pθ(x)
其中
q π ( x ) = ∑ θ π ( θ ) p θ ( x ) q_\pi(x) = \sum_\theta\pi(\theta)p_\theta(x) qπ(x)=θ∑π(θ)pθ(x)
- 定理10.1.1:設信道 p ( x ∣ θ ) p(x|θ) p(x∣θ)的各行分别為 p 1 , p 2 , … , p m p_1, p_2,…, p_m p1,p2,…,pm,則它的容量為
C = R ∗ = min q max p θ D ( p θ ∣ ∣ q ) C = R^\ast =\min_q\max_{p_\theta}D(p_\theta ||q) C=R∗=qminpθmaxD(pθ∣∣q)
其中,最小值時的分布 q q q為達到信道容量時的輸入分布 π ( θ ) π(θ) π(θ)的所導出的輸出分布
q ∗ ( x ) = q π ∗ ( x ) = ∑ θ π ∗ ( θ ) p θ ( x ) q^\ast(x) = q_{\pi^\ast}(x) =\sum_\theta\pi^\ast(\theta)p_\theta(x) q∗(x)=qπ∗(x)=θ∑π∗(θ)pθ(x)
10.2 二進制序列的通用編碼
- 脫機算法描述:計算0、1比例,算法為兩階段描述:
- 獲得1的數目 k k k;(編碼比特數: ⌈ log ( n + 1 ) ⌉ \lceil \log(n+1) \rceil ⌈log(n+1)⌉)
- 給所有 k k k個1的上面序列一個确定的下标 ⌈ log C n k ⌉ \lceil \log C_n^k \rceil ⌈logCnk⌉。
- 兩階段編碼長度估計:總長度為
l ( x n ) ⩽ log ( n + 1 ) + log C n k + 2 ⩽ n H ( k n ) + 1 2 log n − 1 2 log ( π k ( n − k ) n 2 ) + 3 l(x^n)\leqslant \log(n+1) + \log C_n^k +2 \leqslant nH(\frac{k}{n})+\frac{1}{2}\log n - \frac{1}{2}\log(\pi\frac{k(n-k)}{n^2})+3 l(xn)⩽log(n+1)+logCnk+2⩽nH(nk)+21logn−21log(πn2k(n−k))+3
- 結論:編碼序列的代價大約等于 ( log n ) / 2 (\log n)/2 (logn)/2比特,與對應于 ( k / n ) (k/n) (k/n)的伯努利分布的香農碼的最優代價相比,上述描述的代價更大。
- 兩階段編碼缺陷:壓縮器需要耐心等待到看完整個序列。
- 另一種編碼方法:編碼時使用總體上達到上述相同結果的混合分布。
- 編碼分布: q ( x 1 , x 2 , . . . , x n ) = 2 − l ( x 1 , x 2 , . . . , x n ) q(x_1,x_2,...,x_n) = 2^{-l(x_1,x_2,...,x_n)} q(x1,x2,...,xn)=2−l(x1,x2,...,xn)。為 x 1 , x 2 , … , x n x_1, x_2,…,x_n x1,x2,…,xn上所有Bernoulli(θ)分布的混合分布。
-
性質:
a.序列混合機率 p ( x 1 , x 2 , . . . , x n ) = ∫ 0 1 θ k ( 1 − θ ) n − k d θ = A ( n , k ) p(x_1,x_2,...,x_n) = \int_0^1 \theta^k(1-\theta)^{n-k}d\theta = A(n,k) p(x1,x2,...,xn)=∫01θk(1−θ)n−kdθ=A(n,k)
b.機率遞歸公式: A ( n , k ) = n − k k + 1 A ( n , k + 1 ) A(n,k) = \frac{n-k}{k+1}A(n,k+1) A(n,k)=k+1n−kA(n,k+1)
c.初值 A ( n , n ) = 1 n + 1 A(n,n) = \frac{1}{n+1} A(n,n)=n+11
d.編碼碼字長度估計: log 1 q ( x n ) ⩽ log ( n + 1 ) + log C n k + 1 \log\frac{1}{q(x^n)} \leqslant \log(n+1) + \log C_n^k +1 logq(xn)1⩽log(n+1)+logCnk+1。
結論:與上述的兩階段錨述相比,長度相差在1 比待之内。
- 與最優編碼器的差距:若實際信源服從Bernoulli(θ),則最優碼的碼長需要 n H ( k / n ) nH(k/n) nH(k/n),但對于沒有任何假設的信源分布而言,上述混合分布達到的碼字長度與之相比超出的代價在 ( log n ) / 2 (\log n)/2 (logn)/2比特之間。
10.3 算術編碼
- 字元序列的編碼是一個區間,它的長度随着增加更多的字元到序列中而減少。
- 給定任意長度 n n n和機率密度函數 q ( x 1 , x 2 , … , x n ) q(x_1, x_2,…, x_n) q(x1,x2,…,xn),算術編碼程式能夠以長度 − log ( q ( x 1 , x 2 , … , x n ) ) + 2 -\log(q(x_1, x_2,…, x_n))+2 −log(q(x1,x2,…,xn))+2比特編碼序列 x 1 , x 2 , … , x n x_1, x_2,…, x_n x1,x2,…,xn。
- 如果信源為i.i.d.,并假定分布 q q q等于資料的真實分布 p p p,這個程式能達到的平均分組長度與熵相比超出的部分在2比持之内。
- 盡管對固定的分組長度,此程式不一定是最優的,但這個程式是增量式的,而且對任意分組長度都适用。
10.4 Lempel-Ziv編碼
- 自适應字典式壓縮算法。LZ77或滑動窗Lempel-Ziv算法與LZ78或樹結構Lempel-Ziv算法。
- Lempel-Ziv編碼:設 R n ( X n ) R_n(X^n) Rn(Xn)表示我們在過去觀察到 n n n長字元組 X n X^n Xn的最近時刻,則 ( log R n ) / n → H ( X ) (\log R_n)/n\to H(X) (logRn)/n→H(X),且描述再現時間的編碼是漸進最優的。如果序列可以解析為此前未出現過的最短詞組, l ( x n ) l(x^n) l(xn)為解析序列的描述長度,則對任意平穩周遊過程 { X i } \{X_i\} {Xi},均有
lim sup 1 n l ( X n ) ⩽ H ( X ) a . s . \lim \sup \frac{1}{n} l(X^n) \leqslant H(X)\quad a.s. limsupn1l(Xn)⩽H(X)a.s.