EC-Lloyd中的数学问题
1. 概要
比特分配是任何编码方案中的一个主要问题,其中一个给定的位配额必须有效地分配在许多不同的量化器之间。通常我们在传输的过程中对于码率一般是有限制的,该速率通常是通过处理量化表中所有条目所需的最小比特数来测量的;此时我们需要解决的就是一个有限制的最小化问题。一般采用拉格朗日进行解决。这种量化器的性能特征是其量化器函数(QF),由平均量化失真作为速率的函数来定义。
2.1 问题描述
令 S 是所有可允许的分配向量的有限集。设 H(B) 是某个实值函数,称为B 的目标函数,为所有分配向量定义B属于S集合。 设 R (B) 是某个实值函数,称为B 的约束函数,其中B 属于 S 集合 。
问题描述:
给定一个码率约束为\(R_c\)。
目标函数:
\[\min\limits_{B\in S} H(B) (1)\]
subject to \(R(B) \le R_c\).
Theorem:对于任意的\(\lambda \ge 0\),上述约束问题的解\(B^{*}(\lambda)\) :
\[\min\limits_{B\in S}\{{H(B)+\lambda R(B)\}} (2)\]
此时,如果\(R_c=R(B^{*}(\lambda))\),(2)式的解就是(1)式的解,即\(R(B) \le R(B^{*}(\lambda))\)。为了简化,我们定义\(R^{*}(\lambda)=R(B^{*}(\lambda))\)。
证明:
\[
H(B^{*})+\lambda R(B^{*}) \le H(B)+\lambda R(B) \\
H(B^{*})-H(B) \le \lambda (R(B)-R(B^{*}))
\]
那么对于S集合的子集\(S^{*} \in S\),我们有:
\[H(B^{*})-H(B) \le 0, B \in S^{*}\]
当我们在零到无穷大的范围内扫描 A 时,将得到解决方案\(B^{*}( A)\)和约束 \(R^{*}( A)\)。诸如下面曲线:
接下的问题就是如何选取适当的\(\lambda\)来获得最优的结果。
3. 相关定理
首先,我们先定义一下相关的数学表达式及符号:
\[
S=\{B:b_k \in \{p_k,...,q_k\},k=1,...,M\} (3)\\
H(B)=\sum \limits_{k=1}^{M}(g_k)^2 \theta_k(b_k) \ (4) \\
R(B)=\sum \limits_{k=1}^{M} b_k
\]
为了便于讨论,我们定义:
\[W_k(b_k)=(g_k)^2\theta_k(b_k),k=1,...,M\]
所以说,不受约束的问题可以表达为:
\[\min \limits_{B \in S} \{\sum\limits_{k=1}^{M}W_k(b_k)+\lambda \sum \limits_{k=1}^{M}b_k \} (7)\]
关键是通过分别最小化(7)中和的每一项来获得解:
\[S_k=\{p_k,...,q_k\}\ (8)\]
然后,\(b_k^{*}(\lambda)\)是下述式子的解,
\[\min \limits_{i\in S_k}\{W_k(i)+\lambda i\} \ (9)\]
对于一个给定的\(\lambda\),我们可以分别求的\(b_k^{*}\),全部加起来得到\(R^{*}(\lambda)\),将此和我们需要限制的码率\(R_c\)比较,如果一样,那么解就得到了。\(R^{*}(\lambda)\)就是我们需要的解。
3.1 定理一
我们定义\(W(b)\)为在作用域Z上的实值函数,存在\(b_1\)使得
\[\min \limits_{b \in Z}\{W(b)+\lambda_1 b\} \]
存在\(b_2\)使得,
\[\min \limits_{b \in Z}\{W(b)+\lambda_2 b\} \]
成立,然后有\((\lambda_1-\lambda_2)(b_1-b_2)\le0\)。也就是说,随着\(\lambda\)的增大,对应的b是非增的。
证明:
\[
W(b_1)+\lambda_1 b_1\le W(b_2)+\lambda_1b_2 \\
W(b_2)+\lambda_2 b_2\le W(b_1)+\lambda_2 b_1
\]
上述两式相加得:
\[0\le(\lambda_2-\lambda_1)(b_1-b_2)\]
3.2 定理二
我们得到得解\(b_k^{*}(\lambda)\)及相应得\(R^{*}(\lambda)\)都是随着\(\lambda\)非递增得。也就是:
\[
如果\lambda_2 \ge\lambda_1\gt0, \\
b_k^{*}(\lambda_2)\le b_k^{*}(\lambda_1),R^{*}(\lambda_2)\le R^{*}(\lambda_1)
\]
运用定理一很容易证明。
3.3 定理三
对于不同得\(\lambda\)得到得解集\(\{B^{*}(\lambda_1)\},\{B^{*}(\lambda_2)\}\),这两个解集最多可以有一个相同得解。
证明同样得应用定理一。
3.4 定理四
我们假设\(\lambda\)只有一个解\(B^{*}(\lambda)\)。如果小于\(\lambda\)得奇异值存在,最近得定义为\(\lambda_1\),会存在一个解\(B^{*}(\lambda_1)=B^{*}(\lambda)\)。同样得,如果大于\(\lambda\)得奇异值存在,最近得定义为\(\lambda_2\),会存在一个解\(B^{*}(\lambda_2)=B^{*}(\lambda)\)。
证明:
如果\(\lambda\)是非奇异得,就有:
\[W_k(b_k^{*})-W_k(b_k)\lt \lambda(b_k-b_k^{*});b_k\neq b_k^{*},k=1,...,M \]
对于\(\lambda_2\)得解集,存在一个\(\epsilon \gt0\),
\[W_k(b_k^{*})-W_k(b_k)\lt(\lambda+\epsilon)(b_k-b_k^{*}),k:b_k-b_k^{*}\gt0\]
\[W_k(b_k^{*})-W_k(b_k)=(\lambda+\epsilon)(b_k-b_k^{*}),k:b_k-b_k^{*}\lt0\]
我们取所有不同得\(k\)个值中最小得\(\epsilon\)为\(\epsilon_m^{+}\),此时,对于\(\lambda_2=\lambda+\epsilon_m^{*}\),如果\(\lambda_2\)是存在多个解得话,一定会有一个解是\(W_k(b_k^{*})\)。对于\(\lambda_1\)得证明同上。
这个引理有两个重要的推论。首先,两个相邻的奇异值有一个且只有一个共同的解。其次,在两个相邻的奇异值之间的所有\(\lambda\)的非奇异值都有相同的(单个)解。
以上引理的主要结论是,为了找到无约束问题的所有解值,无需扫描\(\lambda\)的所有可能值(非负实线上的所有值)。只检查奇异点,即只检查存在多个解的\(\lambda\)的值就足够了。
要找到一个满足\(R^{*}(\lambda)=R_c\)的约束,(如果它存在),不需要搜索所有的奇异值。由于\(R^{*}(\lambda)\)的单调性,只需要搜索奇异\(\lambda\)的一小部分子集。该算法将讨论所提出的主要问题是搜索策略。
3.5 定理五
如果\(\lambda_1\)是奇异的,\(\lambda \gt \lambda_1\),那么如果\(B^{*}(\lambda)\)是\(\lambda,\lambda_1\)的共同的一个解,我们重新定义取值域:\(S_k^{+}=\{b_k^{*}+1,...,q_k\}(如果b_k^{*}+1 \le q_k,则为非空集)\)。\(M^{+}=\{k \in\{1,...,M\}:S_K^{*} \ is \ nonempty\}\)。则最近的奇异值\(\lambda_1\)定义为:
\[\lambda_1=\max\limits_{k \in M^{+}} \max\limits_{i \in S_k^{+}} \frac{W_k(b_k^{*}(\lambda))-W_k(i)}{i-b_k^{*}(\lambda)}\]
证明:
因为\(B^{*}(\lambda)\)是共同的一个解,也就是说
\[b_k^{*}(\lambda_1)=b_k^{*}(\lambda),k=1,...,M\]
因为\(\lambda_1\)是奇异的,除了\(B^{*}(\lambda_1)\)之外还有别的解,也就意味着:
\[
k\in M^{+} \\
i\in S_k^{+} \\
W_k(b_k^{*}(\lambda))+\lambda_1 b_k^{*}(\lambda_1)=W_k(i)+\lambda_1i \ (4)
\]
对于不满足上述条件的\(k,i\),我们有:
\[W_k(b_k^{*}(\lambda))+\lambda_1 b_k^{*}(\lambda_1) \lt W_k(i)+\lambda_1i \ (5)\]
现在,我们将\(b_k^{*}(\lambda_1)\)替换为\(b_k^{*}(\lambda)\),我们得到(下式的大于等于是(5)因为对于某些k等于,其他的小于):
\[\lambda_1\ge \frac{W_k(b_k^{*}(\lambda))-W_k(i)}{i-b_k^{*}(\lambda)},i\in S_k^{+},k\in M^{+}\]
为了找到\(\lambda_1\),我们遍历所有的k找到对应的最大的\(\lambda_1\)。
注意到,如果\(S_k^{+}\)是空集的话,这样就没有相应的\(\lambda_1\)符合条件。同时我们会得到一组相应的解,对于某些\(i^{'}\)使得(4)式成立,我们定义\(b_{k^{'}}^{*}(\lambda_1)=i^{'}\),其他满足(5)式,我们定义\(b_k^{*}(\lambda_1)=b_k^{*}(\lambda)\)。
3.6 定理六
如果\(\lambda_2\)是奇异的,\(\lambda \lt \lambda_2\),那么如果\(B^{*}(\lambda)\)是\(\lambda,\lambda_2\)的共同的一个解,我们重新定义取值域:\(S_k^{-}=\{p_k,...,b_k^{*}-1\}(如果b_k^{*} \ge 1,则为非空集)\)。\(M^{-}=\{k \in\{1,...,M\}:S_K^{-} \ is \ nonempty\}\)。则最近的奇异值\(\lambda_2\)定义为:
\[\lambda_2=\min\limits_{k \in M^{-}} \min\limits_{i \in S_k^{-}} \frac{W_k(i)-W_k(b_k^{*}(\lambda))}{b_k^{*}(\lambda)-i}\]
证明:
因为\(B^{*}(\lambda)\)是共同的一个解,也就是说
\[b_k^{*}(\lambda_2)=b_k^{*}(\lambda),k=1,...,M\]
因为\(\lambda_2\)是奇异的,除了\(B^{*}(\lambda_2)\)之外还有别的解,也就意味着:
\[
k\in M^{-} \\
i\in S_k^{-} \\
W_k(b_k^{*}(\lambda))+\lambda_2 b_k^{*}(\lambda_2)=W_k(i)+\lambda_2i \ (6)
\]
对于不满足上述条件的\(k,i\),我们有:
\[W_k(b_k^{*}(\lambda))+\lambda_2 b_k^{*}(\lambda_1) \lt W_k(i)+\lambda_1i \ (7)\]
现在,我们将\(b_k^{*}(\lambda_1)\)替换为\(b_k^{*}(\lambda)\),我们得到(下式的大于等于是(5)因为对于某些k等于,其他的小于):
\[\lambda_1\le \frac{W_k(i)-W_k(b_k^{*}(\lambda))}{b_k^{*}(\lambda)-i},i\in S_k^{-},k\in M^{-}\]
得证。
为了找到\(\lambda_2\),我们遍历所有的k找到对应的最大的\(\lambda_2\)。
注意到,如果\(S_k^{-}\)是空集的话,这样就没有相应的\(\lambda_2\)符合条件。同时我们会得到一组相应的解,对于某些\(i^{'}\)使得(6)式成立,我们定义\(b_{k^{'}}^{*}(\lambda_2)=i^{'}\),其他满足(7)式,我们定义\(b_k^{*}(\lambda_2)=b_k^{*}(\lambda)\)。
最后两个引理说,通过知道一个奇异值,可以找到下面或上面的下一个值,因此,可以找到所有的奇异值和所有的解\(B^{*}(\lambda)\)。这激发了以下基本的搜索过程,这是算法的本质:
1)获取初始值A(以即将讨论的方式)
2)利用(9)方法求解无约束问题。如果\(\lambda\)不是奇异的,则只有一个这样的解和一个约束\(R^{*}(\lambda)\)。如果\(\lambda\)是奇异的,那么至少有两种不同的解。从\(\{B^{*}(\lambda)\}\)中找到约束最大和最小分别用\(R_l^{*}(\lambda)\)和\(R_h^{*}(\lambda)\)表示。
3)那么如果约束码率为\(R_c\)满足:
\[R_l^{*}(\lambda)\le R_c\le R_h^{*}(\lambda)\]
然后得到\({B^{*}(\lambda)}\)[使用(9)]中的所有解,并从下面找出用\(R_a^{*}(\lambda)\)表示的约束最接近\(R_c\)的解。如果\(R_c=R_a^{*}(\lambda)\),则找到了一个最优解。如果没有,我们就找到了一个用\(B_a^{*}(\lambda)\)表示的近似解。停止搜索。
4)如果\(R_c
5)果\(R_c>R^{*}(\lambda)[或R_c>R_l^{*}(\lambda)]\),使用定理五 [和当前的解决方案\(B^{*}(\lambda)\)]找到下一个奇异的\(\lambda\),它对应于\(R^{*}(\lambda)\)[或\(R_h^{*}(\lambda)\)]。然后,进入步骤2。
如果搜索只以一个近似解结束,这意味着最优解是一个不可访问的点,那么这个解可以通过添加几个bit位来进行调整,直到修改后的分配之和等于\(R_c\)。添加位的标准是尽量减少失真\(H(B^{*}(\lambda))\)。我们根据以下步骤每次添加一点:
6)找到\(k^{'}\)满足:
\[\min \limits_{k\in M^{+}}\{W_k(b_k^{*}+1)-W_k(b_k^{*})\}\ (12)\]
7) 通过将添加1到\(b_{k^{'}}^{*}\)来更新解决方案。
8)重复步骤6和步骤7,直到分配之和等于\(R_c\)。
***
由于\(B_a^{*}\)不是一个最优解,所以很自然地会问它离期望的最优解有多远。借助下面的引理,可以找到最优解和近似解的失真差值的一个界。
3.7 定理七
设B为具有约束\(R_c\)的原始约束问题的期望解。设\(B^{*}(\lambda_1)\)和\(B^{*}(\lambda_2)\)是两个解,满足
\[R^{*}(\lambda_1)\le R_c\le R^{*}(\lambda_2) \ (13)\]
就有:
\[H(B^{*}(\lambda_2))\le H(B)\le H(B^{*}(\lambda_1)) (13b)\]
证明:
首先我们证明不等式右边,对于\(\lambda_2\),我们有:
\[
\begin{aligned}
H(B^{*}(\lambda_2))+\lambda_2R^{*}(\lambda_2)\le &H(B)+\lambda_2R(B) \\
&H(B)+\lambda_2R_c
\end{aligned}
\]
因为\(\lambda_2>0\),所以我们有:
\[H(B^{*}(\lambda_2))-H(B)\le \lambda_2(R_c-R^{*}(\lambda_2))\le 0\]
对于左边的证明同理。
现在,让\(B^{*}(\lambda_1)\)作为搜索结束时的解决方案(步骤3)。通过在这个解决方案中添加更多的位,我们减少了失真。但是,当达到\(R(B_a^{*})=R_c\)时,失真\(H(B_a^{*})\)不能低于\(H(B)\),也不能高于\(B^{*}(\lambda_1)\)(运用上述定理)。这意味着,如果我们将\(H(B)\)替换为\(H(B_a^{*})\),则(13b)仍然成立,这意味着以下内容:
\[H(B_a^{*})-H(B)\le H(B^{*}(\lambda_1))-H(B^{*}(\lambda_2)) \ (14)\]
(14)式证明:
同样的应用上述定理,得到,
\[
H(B^{*}(\lambda_2))\le H(B)\le H(B^{*}(\lambda_1)) \\
H(B^{*}(\lambda_2))\le H(B_a^{*})\le H(B^{*}(\lambda_1))
\]
进行变换:
\[
H(B^{*}(\lambda_2))-H(B)\le 0\le H(B^{*}(\lambda_1))-H(B) \\
H(B^{*}(\lambda_2))-H(B_a^{*})\le 0\le H(B^{*}(\lambda_1))-H(B_a^{*})
\]
即,
\[H(B^{*}(\lambda_2))-H(B)\le H(B^{*}(\lambda_1))-H(B_a^{*})\]
(14)式得证。
***
因此,与约束问题的最优解和近似解相关的失真差在由无约束问题的两个最接近最优解决定的范围内。
一个更有用的界是表示最优解和近似解的失真之间的分贝差的项。Allocation Performance Bound(APB)的定义为:
\[APB=-10log_{10} \frac{H(B_a^{*})-H(B^{*}(\lambda_1))+H(B^{*}(\lambda_2))}{H(B_a^{*})}\]
运用上述14式结论,我们可以得到:
\[10log \frac{H(B_a^{*})}{H(B)}\le APB\]
这个界可以在该算法的实际应用中计算出来来评价近似值。
4. 算法的简化
根据下面的观察结果,可以显著减少与上一节中所述的基本算法相关的计算工作量。
设\(\lambda_1,\lambda_2,\lambda_3\)是满足的三个拉格朗日乘子,\(\lambda_1\le \lambda_2 \le \lambda_3\)。
应用定理二,我们得到:
\[b_k^{*}(\lambda_3)\le b_k^{*}(\lambda_2)\le b_k^{*}(\lambda_1),k=1,...,M\]
这意味着,给定\(B^{*}(\lambda_1)\)和\(B^{*}(\lambda_3)\),可以在相当小的范围内搜索\(\lambda_2\)的解。
此时,我们的搜索范围:
\[
S_k=\{i:b_k^{*}(\lambda_3)\le i\le b_k^{*}(\lambda_1)\},k=1,...,M \\
S_k^{+}=\{i:b_k^{*}(\lambda_3)+1,..., b_k^{*}(\lambda_1)\},k=1,...,M \\
S_k^{-}=\{i:b_k^{*}(\lambda_1),..., b_k^{*}(\lambda_3)-1\},k=1,...,M
\]
可以看到,经过上述的夹挤规则,可以看到\(S_k^{+},S_k^{-}\)的范围减小,相应的计算量减小。
利用这些修改后的搜索区域,我们可以描改进方法一:
1)找到满足基本算法第一个变体的初始值\(\lambda_1\)和\(\lambda_3\),满足:
\[R^{*}(\lambda_1)\le R_c\le R^{*}(\lambda_3)\]
其中一种方法如下:
1.1)查找一个初始的\(\lambda_1\)(将在下一节中讨论)。
1.2)用(8)中的旧\(S_k\)解决(9)和所有k,并得到\(R^{*}(\lambda_1)\)。
1.3)如果\(R^{*}(\lambda_1)\)大于\(R_c\),则设置\(\lambda_3=\lambda_1\)和\(B^{*}(\lambda_3)=B^{*}(\lambda_1)\)。通过添加一些预选的更新常量来增加\(\lambda_1\)。转到步骤1.2。
1.4)如果\(R^{*}(\lambda_1)\)低于\(R_c\),则通过减去更新常数来减少\(\lambda_1\)。转到步骤1.2
1.5)重复上述操作,直到获得(20)持有的所需的\(\lambda_1\)和\(\lambda_3\)。
2)在基本过程中继续,但使用修改后的搜索区域(17)-(19)。需要注意的是,随着\(\lambda\)的新解的找到,搜索区域可以动态修改,从而不断降低搜索强度。
步骤1的更新常数的值决定了该过程接近所需的两个初始解的速率。如果这个常数很大,经过一到两次迭代就可以得到这两个解。然而,它们可能相距很远,这意味着较大的搜索区域。如果这个常数非常小,则需要进行多次迭代,但所得到的搜索区域很小,因为这两个解决方案将彼此接近。利用该常数的不同值,通过运行算法的整体搜索复杂度来找到最好的更新常数。
在对算法的实验评估中观察到,奇异\(\lambda\)的解从来没有检测到两个以上。因此,我们可以假设,对于任何风险非常小的奇异\(\lambda\),不可能有超过两个解。
在这个假设下,没有必要寻找一个奇异数的所有解 \(\lambda\). 通过计算(定理五)或(定理六)找到的解决方案是新的新解决方案 \(\lambda\). 这意味着一旦找到了\(\lambda_1\)和\(\lambda_3\),搜索区域的减小。 这大大降低了搜索强度。
改进方法二:
1)在变量1中找到两个初始值\(\lambda_1\)和\(\lambda_3\)。
2)从\(\lambda_3\)开始,通过连续求解新\(\lambda_3\)和新解\(B^{*}(\lambda_3)\)的解(定理五,\(\lambda_3小于\lambda\)),得到连续的奇异值和解。==按照方法一中所述,更新搜索区域。==
3)当\(R^{*}(\lambda_3)\)小于或等于\(R_c\)时,请停止搜索。
4)如有必要,请调整解\(R^{*}(\lambda_3)\),以获得最终的近似解\(B_a^{*}\):如基本算法的步骤6-8所示。
5. 拉格朗日乘子的初始化
该算法的计算复杂度很大程度地依赖于初始\(\lambda\),因为这个\(\lambda\)越接近最终值,需要的迭代就越少。==根据经验==,以下获得初始\(\lambda\)的方法产生较低的平均计算强度。该方法是基于一个集合\(\{b_k\}\)成为一个解的必要条件是:
\[
W_k(b_k)-W_k(b_k+1)\le \lambda \le W_k(b_k-1)-W_k(b_k) \\
p_k+1\le b_k \le q_k-1 \\
k=1,2,...,M
\]
由于上面对所有的\(k\)都是适用的,我们可以通过对最后一个表达式中的两个不等式中的一个求和得到一个“平均”初始\(\lambda\)。利用左边的不等式,我们得到了
\[\lambda \approx \frac{1}{M} \sum \limits_{k=1}^{M}\{W_k(b_k)-W_k(b_k+1)\}\]
显然,\(b_k\)的值是未知的,可以用一个平均值\(a_k\)来替代。
\[a_k=INT\{(q_k+p_k)/2\}\]
INT means rounding to the nearest integer.
此时,初始\(\lambda\):
\[\lambda= \frac{1}{M} \sum \limits_{k=1}^{M}\{W_k(a_k)-W_k(a_k+1)\}\]
然而,这种初始化方法并不一定是最好的,对这个问题的进一步研究可能会得到更好的解决方案。
Reference:Efficient Bit Allocation for an Arbitrary Set of Quantizers