169 lines
7.1 KiB
TeX
169 lines
7.1 KiB
TeX
\appendix
|
|
|
|
\chapter{\acs{LP} Decoding using \acs{ADMM} as a Proximal Algorithm}%
|
|
\label{chapter:LD Decoding using ADMM as a Proximal Algorithm}
|
|
|
|
\todo{Find out how to properly title and section appendix}
|
|
|
|
%For problems of the form%
|
|
%\begin{align*}
|
|
% \text{minimize}\hspace{2mm} & f\left( \boldsymbol{x} \right)
|
|
% + g\left( \boldsymbol{A}\boldsymbol{x} \right) \\
|
|
% \text{subject to}\hspace{2mm} & \boldsymbol{x} \in \mathbb{R}^n
|
|
%,\end{align*}%
|
|
%%
|
|
%a version of \ac{ADMM}, \textit{linearized \ac{ADMM}}, can be expressed
|
|
%as a proximal algorithm \cite[Sec. 4.4.2]{proximal_algorithms}:
|
|
%%
|
|
%\begin{align*}
|
|
% \boldsymbol{x} &\leftarrow \textbf{prox}_{\mu f}\left( \boldsymbol{x}
|
|
% - \frac{\mu}{\lambda}\boldsymbol{A}^\text{T}\left( \boldsymbol{A}\boldsymbol{x}
|
|
% - \boldsymbol{z} + \boldsymbol{u} \right) \right) \\
|
|
% \boldsymbol{z} &\leftarrow \textbf{prox}_{\lambda g}\left( \boldsymbol{A}\boldsymbol{x}
|
|
% + \boldsymbol{u} \right) \\
|
|
% \boldsymbol{u} &\leftarrow \boldsymbol{u} + \boldsymbol{A} \boldsymbol{x} - \boldsymbol{z}
|
|
%.\end{align*}
|
|
|
|
In order to express \ac{LP} decoding using \ac{ADMM} through proximal operators,
|
|
it can be rewritten to fit the template for \textit{linearized \ac{ADMM}} given
|
|
in \cite[Sec. 4.4.2]{proximal_algorithms}.
|
|
We start with the general formulation of the \ac{LP} decoding problem:%
|
|
%
|
|
\begin{align*}
|
|
\text{minimize}\hspace{2mm} & \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}} \\
|
|
\text{subject to}\hspace{2mm} & \boldsymbol{T}_j \tilde{\boldsymbol{c}} \in \mathcal{P}_{d_j}
|
|
\hspace{5mm} \forall j \in \mathcal{J}
|
|
.\end{align*}
|
|
%
|
|
The constraints can be moved into the objective function: %
|
|
%
|
|
\begin{align}
|
|
\begin{aligned}
|
|
\text{minimize}\hspace{2mm} & \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}}
|
|
+ \sum_{j\in \mathcal{J}} I_{P_{d_j}}\left(
|
|
\boldsymbol{T}_j\tilde{\boldsymbol{c}} \right) \\
|
|
\text{subject to}\hspace{2mm} & \tilde{\boldsymbol{c}} \in \mathbb{R}^n,
|
|
\end{aligned}
|
|
\label{eq:app:sum_reformulated}
|
|
\end{align}%
|
|
%
|
|
using the \textit{indicator functions}
|
|
$I_{\mathcal{P}_{d_j}} : \mathbb{R}^{d_j} \rightarrow \left\{ 0, +\infty \right\},
|
|
\hspace{3mm} j\in \mathcal{J}$, defined as%
|
|
%
|
|
\begin{align*}
|
|
I_{\mathcal{P}_{d_j}}\left( \boldsymbol{t} \right) :=
|
|
\begin{cases}
|
|
0 & \boldsymbol{t} \in \mathcal{P}_{d_j} \\
|
|
+\infty & \boldsymbol{t} \not\in \mathcal{P}_{d_j}
|
|
\end{cases}
|
|
.\end{align*}%
|
|
%
|
|
Further defining
|
|
%
|
|
\begin{align*}
|
|
\boldsymbol{T} := \begin{bmatrix}
|
|
\boldsymbol{T}_1 \\
|
|
\boldsymbol{T}_2 \\
|
|
\vdots \\
|
|
\boldsymbol{T}_m
|
|
\end{bmatrix}
|
|
\hspace{5mm}\text{and}\hspace{5mm}
|
|
g\left( \boldsymbol{t} \right) = \sum_{j\in\mathcal{J}} I_{\mathcal{P}_{d_j}}\left(
|
|
\boldsymbol{B}_j \boldsymbol{t} \right)
|
|
,\end{align*}%
|
|
%
|
|
\todo{Define $\boldsymbol{B}_j$}%
|
|
problem (\ref{eq:app:sum_reformulated}) becomes%
|
|
%
|
|
\begin{align}
|
|
\begin{aligned}
|
|
\text{minimize}\hspace{2mm} & \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}}
|
|
+ g\left( \boldsymbol{T}\tilde{\boldsymbol{c}} \right) \\
|
|
\text{subject to}\hspace{2mm} & \tilde{\boldsymbol{c}} \in \mathbb{R}^n.
|
|
\end{aligned}
|
|
\label{eq:app:func_reformulated}
|
|
\end{align}
|
|
%
|
|
\todo{Fix $\mu f$ and $\lambda g$ in the steps below}%
|
|
In this form, it fits the template for linearized \ac{ADMM}.
|
|
The iterative algorithm can then be expressed as%
|
|
%
|
|
\begin{align*}
|
|
\tilde{\boldsymbol{c}} &\leftarrow \textbf{prox}_{\mu f}\left( \tilde{\boldsymbol{c}}
|
|
- \frac{\mu}{\lambda}\boldsymbol{T}^\text{T}\left( \boldsymbol{T}\tilde{\boldsymbol{c}}
|
|
- \boldsymbol{z} + \boldsymbol{u} \right) \right) \\
|
|
\boldsymbol{z} &\leftarrow \textbf{prox}_{\lambda g}\left(\boldsymbol{T}\tilde{\boldsymbol{c}}
|
|
+ \boldsymbol{u} \right) \\
|
|
\boldsymbol{u} &\leftarrow \boldsymbol{u} + \boldsymbol{T} \tilde{\boldsymbol{c}}
|
|
- \boldsymbol{z}
|
|
.\end{align*}
|
|
%
|
|
|
|
Using the definition of the proximal operator, the $\tilde{\boldsymbol{c}}$ update step
|
|
can be rewritten to match the definition given in section \ref{sec:dec:LP Decoding using ADMM}:%
|
|
%
|
|
\begin{align*}
|
|
\tilde{\boldsymbol{c}} &\leftarrow \textbf{prox}_{\mu f}\left( \tilde{\boldsymbol{c}}
|
|
- \frac{\mu}{\lambda}\boldsymbol{T}^\text{T}\left( \boldsymbol{T}\tilde{\boldsymbol{c}}
|
|
- \boldsymbol{z} + \boldsymbol{u} \right) \right) \\
|
|
&= \argmin_{\tilde{\boldsymbol{c}}}\left( \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}}
|
|
- \frac{\mu}{2} \left\Vert \boldsymbol{T}^\text{T}
|
|
\left( \boldsymbol{T}\tilde{\boldsymbol{c}}
|
|
- \boldsymbol{z} + \boldsymbol{u} \right) \right\Vert_2^2 \right) \\
|
|
&\overset{\text{(a)}}{=} \argmin_{\tilde{\boldsymbol{c}}}\left( \boldsymbol{\gamma}^\text{T}
|
|
\tilde{\boldsymbol{c}}
|
|
- \frac{\mu}{2} \left\Vert \boldsymbol{T}\tilde{\boldsymbol{c}}
|
|
- \boldsymbol{z} + \boldsymbol{u} \right\Vert_2^2 \right) \\
|
|
&= \argmin_{\tilde{\boldsymbol{c}}}\left( \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}}
|
|
- \frac{\mu}{2} \left\Vert \begin{bmatrix}
|
|
\boldsymbol{T}_1 \\
|
|
\boldsymbol{T}_2 \\
|
|
\vdots \\
|
|
\boldsymbol{T}_m
|
|
\end{bmatrix}
|
|
\tilde{\boldsymbol{c}}
|
|
- \begin{bmatrix}
|
|
\boldsymbol{z}_1 \\
|
|
\boldsymbol{z}_2 \\
|
|
\vdots \\
|
|
\boldsymbol{z}_m
|
|
\end{bmatrix}
|
|
+ \begin{bmatrix}
|
|
\boldsymbol{u}_1 \\
|
|
\boldsymbol{u}_2 \\
|
|
\vdots \\
|
|
\boldsymbol{u}_m
|
|
\end{bmatrix} \right\Vert_2^2 \right)
|
|
\hspace{5mm}\boldsymbol{z}_j,\boldsymbol{u}_j \in \mathbb{F}_2^{d_j},
|
|
\hspace{2mm} j\in\mathcal{J}\\
|
|
&= \argmin_{\tilde{\boldsymbol{c}}} \left( \boldsymbol{\gamma}^\text{T} \tilde{\boldsymbol{c}}
|
|
- \frac{\mu}{2} \sum_{j \in J} \left\Vert \boldsymbol{T}_j \tilde{\boldsymbol{c}}
|
|
- \boldsymbol{z}_j + \boldsymbol{u}_j \right\Vert_2^2 \right)
|
|
.\end{align*}
|
|
%
|
|
Step (a) can be justified by observing that multiplication with $\boldsymbol{T}^\text{T}$
|
|
only reorders components, leaving their values unchanged.
|
|
Similarly to the $\boldsymbol{c}$ update, the $\boldsymbol{z}$ update step can be rewritten.
|
|
Since $g\left( \cdot \right)$ is separable, so is its proximal operator
|
|
\cite[Sec. 2.1]{proximal_algorithms}. The $\boldsymbol{z}$ update step can then
|
|
be expressed as a number of smaller steps:%
|
|
%
|
|
\begin{gather*}
|
|
\boldsymbol{z} \leftarrow \textbf{prox}_{\lambda g} \left(\boldsymbol{T}\tilde{\boldsymbol{c}}
|
|
+ \boldsymbol{u} \right) \\[0.5em]
|
|
\iff \\[0.5em]
|
|
\begin{alignedat}{3}
|
|
\boldsymbol{z}_j &\leftarrow \textbf{prox}_{\lambda I_{\mathcal{P}_{d_j}}}\left(
|
|
\boldsymbol{T}_j \tilde{\boldsymbol{c}} + \boldsymbol{u}_j \right),
|
|
\hspace{5mm} && \forall j\in\mathcal{J} \\
|
|
& \overset{\text{(b)}}{=} \Pi_{\mathcal{P}_{d_j}}\left( \boldsymbol{T}_j
|
|
\tilde{\boldsymbol{c}}
|
|
+ \boldsymbol{u}_j \right), \hspace{5mm} && \forall j\in\mathcal{J}
|
|
,\end{alignedat}
|
|
\end{gather*}
|
|
%
|
|
where (b) results from the fact that appying the proximal operator on the
|
|
indicator function of a convex set amounts to a projection onto the set
|
|
\cite[Sec. 1.2]{proximal_algorithms}.
|