1:m -> [1:m]; wrote message passing algorithm; added TODO
This commit is contained in:
parent
d333e461a7
commit
7aecd47220
@ -176,6 +176,7 @@ decoding and one, which is an approximation with a more manageable
|
|||||||
representation.
|
representation.
|
||||||
To solve the resulting linear program, various optimization methods can be
|
To solve the resulting linear program, various optimization methods can be
|
||||||
used.
|
used.
|
||||||
|
\todo{Citation needed}
|
||||||
|
|
||||||
They begin by looking at the \ac{ML} decoding problem%
|
They begin by looking at the \ac{ML} decoding problem%
|
||||||
\footnote{They assume that all codewords are equally likely to be transmitted,
|
\footnote{They assume that all codewords are equally likely to be transmitted,
|
||||||
@ -710,7 +711,7 @@ complexity has been demonstrated to compare favorably to \ac{BP} \cite{original_
|
|||||||
|
|
||||||
The \ac{LP} decoding problem in (\ref{eq:lp:relaxed_formulation}) can be
|
The \ac{LP} decoding problem in (\ref{eq:lp:relaxed_formulation}) can be
|
||||||
slightly rewritten using the auxiliary variables
|
slightly rewritten using the auxiliary variables
|
||||||
$\boldsymbol{z}_{1:m}$:%
|
$\boldsymbol{z}_{[1:m]}$:%
|
||||||
%
|
%
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\begin{aligned}
|
\begin{aligned}
|
||||||
@ -741,8 +742,8 @@ The multiple constraints can be addressed by introducing additional terms in the
|
|||||||
augmented lagrangian:%
|
augmented lagrangian:%
|
||||||
%
|
%
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\mathcal{L}_{\mu}\left( \tilde{\boldsymbol{c}}, \boldsymbol{z}_{1:m},
|
\mathcal{L}_{\mu}\left( \tilde{\boldsymbol{c}}, \boldsymbol{z}_{[1:m]},
|
||||||
\boldsymbol{\lambda}_{1:m} \right)
|
\boldsymbol{\lambda}_{[1:m]} \right)
|
||||||
= \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}}
|
= \boldsymbol{\gamma}^\text{T}\tilde{\boldsymbol{c}}
|
||||||
+ \sum_{j\in\mathcal{J}} \boldsymbol{\lambda}^\text{T}_j
|
+ \sum_{j\in\mathcal{J}} \boldsymbol{\lambda}^\text{T}_j
|
||||||
\left( \boldsymbol{T}_j\tilde{\boldsymbol{c}} - \boldsymbol{z}_j \right)
|
\left( \boldsymbol{T}_j\tilde{\boldsymbol{c}} - \boldsymbol{z}_j \right)
|
||||||
@ -754,19 +755,19 @@ The additional constraints remain in the dual optimization problem:%
|
|||||||
%
|
%
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\text{maximize } \min_{\substack{\tilde{\boldsymbol{c}} \\
|
\text{maximize } \min_{\substack{\tilde{\boldsymbol{c}} \\
|
||||||
\boldsymbol{z}_j \in \mathcal{P}_{d_j}}}
|
\boldsymbol{z}_j \in \mathcal{P}_{d_j}\,\forall\,j\in\mathcal{J}}}
|
||||||
\mathcal{L}_{\mu}\left( \tilde{\boldsymbol{c}}, \boldsymbol{z}_{1:m},
|
\mathcal{L}_{\mu}\left( \tilde{\boldsymbol{c}}, \boldsymbol{z}_{[1:m]},
|
||||||
\boldsymbol{\lambda}_{1:m} \right)
|
\boldsymbol{\lambda}_{[1:m]} \right)
|
||||||
.\end{align*}%
|
.\end{align*}%
|
||||||
%
|
%
|
||||||
The steps to solve the dual problem then become:
|
The steps to solve the dual problem then become:
|
||||||
%
|
%
|
||||||
\begin{alignat*}{3}
|
\begin{alignat*}{3}
|
||||||
\tilde{\boldsymbol{c}} &\leftarrow \argmin_{\tilde{\boldsymbol{c}}} \mathcal{L}_{\mu} \left(
|
\tilde{\boldsymbol{c}} &\leftarrow \argmin_{\tilde{\boldsymbol{c}}} \mathcal{L}_{\mu} \left(
|
||||||
\tilde{\boldsymbol{c}}, \boldsymbol{z}_{1:m}, \boldsymbol{\lambda}_{1:m} \right) \\
|
\tilde{\boldsymbol{c}}, \boldsymbol{z}_{[1:m]}, \boldsymbol{\lambda}_{[1:m]} \right) \\
|
||||||
\boldsymbol{z}_j &\leftarrow \argmin_{\boldsymbol{z}_j \in \mathcal{P}_{d_j}}
|
\boldsymbol{z}_j &\leftarrow \argmin_{\boldsymbol{z}_j \in \mathcal{P}_{d_j}}
|
||||||
\mathcal{L}_{\mu} \left(
|
\mathcal{L}_{\mu} \left(
|
||||||
\tilde{\boldsymbol{c}}, \boldsymbol{z}_{1:m}, \boldsymbol{\lambda}_{1:m} \right)
|
\tilde{\boldsymbol{c}}, \boldsymbol{z}_{[1:m]}, \boldsymbol{\lambda}_{[1:m]} \right)
|
||||||
\hspace{3mm} &&\forall j\in\mathcal{J} \\
|
\hspace{3mm} &&\forall j\in\mathcal{J} \\
|
||||||
\boldsymbol{\lambda}_j &\leftarrow \boldsymbol{\lambda}_j
|
\boldsymbol{\lambda}_j &\leftarrow \boldsymbol{\lambda}_j
|
||||||
+ \mu\left( \boldsymbol{T}_j\tilde{\boldsymbol{c}}
|
+ \mu\left( \boldsymbol{T}_j\tilde{\boldsymbol{c}}
|
||||||
@ -793,6 +794,8 @@ and the $\tilde{\boldsymbol{c}}$-update can be computed analytically \cite[Sec.
|
|||||||
\hspace{3mm} && \forall j\in\mathcal{J}
|
\hspace{3mm} && \forall j\in\mathcal{J}
|
||||||
.\end{alignat*}
|
.\end{alignat*}
|
||||||
%
|
%
|
||||||
|
\todo{$\tilde{c}_i$-update With or without projection onto $\left[ 0, 1 \right] ^n$?}
|
||||||
|
%
|
||||||
One thing to note is that all of the $\boldsymbol{z}_j$-updates can be computed simultaneously,
|
One thing to note is that all of the $\boldsymbol{z}_j$-updates can be computed simultaneously,
|
||||||
as they are independent of one another.
|
as they are independent of one another.
|
||||||
The same is true for the updates of the individual components of $\tilde{\boldsymbol{c}}$.
|
The same is true for the updates of the individual components of $\tilde{\boldsymbol{c}}$.
|
||||||
@ -809,7 +812,8 @@ algorithm \cite[Sec. III. D.]{original_admm}, \cite[Sec. II. B.]{efficient_lp_de
|
|||||||
as is shown in figure \ref{fig:lp:message_passing}
|
as is shown in figure \ref{fig:lp:message_passing}
|
||||||
\footnote{$\epsilon_{\text{pri}} > 0$ and $\epsilon_{\text{dual}} > 0$ are additional parameters
|
\footnote{$\epsilon_{\text{pri}} > 0$ and $\epsilon_{\text{dual}} > 0$ are additional parameters
|
||||||
defining the tolerances for the stopping criteria of the algorithm.
|
defining the tolerances for the stopping criteria of the algorithm.
|
||||||
$\boldsymbol{z}_j^\prime$ denotes the value of $\boldsymbol{z}_j$ in the previous iteration.}%
|
The variable $\boldsymbol{z}_j^\prime$ denotes the value of
|
||||||
|
$\boldsymbol{z}_j$ in the previous iteration.}%
|
||||||
\todo{Move footnote to figure caption}%
|
\todo{Move footnote to figure caption}%
|
||||||
.%
|
.%
|
||||||
\todo{Explicitly specify sections?}%
|
\todo{Explicitly specify sections?}%
|
||||||
@ -817,21 +821,32 @@ $\boldsymbol{z}_j^\prime$ denotes the value of $\boldsymbol{z}_j$ in the previou
|
|||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\begin{genericAlgorithm}[caption={}, label={}]
|
\begin{genericAlgorithm}[caption={}, label={},
|
||||||
Initialize $\tilde{\boldsymbol{c}}, \boldsymbol{z}_{1:m}$ and $\boldsymbol{\lambda}_{1:m}$
|
basicstyle=\fontsize{11}{16}\selectfont
|
||||||
while $\sum_{j\in\mathcal{J}} \lVert \boldsymbol{T}_j\tilde{\boldsymbol{c}} - \boldsymbol{z}_j \rVert_2 \ge \epsilon_{\text{pri}}$ or $\sum_{j\in\mathcal{J}} \lVert \boldsymbol{z}^\prime_j - \boldsymbol{z}_j \rVert_2 \ge \epsilon_{\text{dual}}$
|
]
|
||||||
Perform check update
|
Initialize $\tilde{\boldsymbol{c}}, \boldsymbol{z}_{[1:m]}$ and $\boldsymbol{\lambda}_{[1:m]}$
|
||||||
...
|
while $\sum_{j\in\mathcal{J}} \lVert \boldsymbol{T}_j\tilde{\boldsymbol{c}} - \boldsymbol{z}_j \rVert_2 \ge \epsilon_{\text{pri}}$ or $\sum_{j\in\mathcal{J}} \lVert \boldsymbol{z}^\prime_j - \boldsymbol{z}_j \rVert_2 \ge \epsilon_{\text{dual}}$ do
|
||||||
Perform variable update
|
for all $j$ in $\mathcal{J}$ do
|
||||||
...
|
$\boldsymbol{z}_j \leftarrow \Pi_{\mathcal{P}_{d_j}}\left(
|
||||||
|
\boldsymbol{T}_j\tilde{\boldsymbol{c}} + \boldsymbol{\lambda}_j \right)$
|
||||||
|
$\boldsymbol{\lambda}_j \leftarrow \boldsymbol{\lambda}_j
|
||||||
|
+ \mu\left( \boldsymbol{T}_j\tilde{\boldsymbol{c}}
|
||||||
|
- \boldsymbol{z}_j \right)$
|
||||||
|
end for
|
||||||
|
for all $i$ in $\mathcal{I}$ do
|
||||||
|
$\tilde{c}_i \leftarrow \frac{1}{\left| N_v\left( i \right) \right|} \left(
|
||||||
|
\sum_{j\in N_v\left( i \right) } \Big( \left( \boldsymbol{\lambda}_j \right)_i
|
||||||
|
- \left( \boldsymbol{z}_j \right)_i \Big) - \frac{\gamma_i}{\mu} \right)$
|
||||||
|
end for
|
||||||
|
end while
|
||||||
\end{genericAlgorithm}
|
\end{genericAlgorithm}
|
||||||
|
|
||||||
\caption{\ac{LP} decoding using \ac{ADMM} interpreted as a message passing algorithm}
|
\caption{\ac{LP} decoding using \ac{ADMM} interpreted as a message passing algorithm}
|
||||||
\label{fig:lp:message_passing}
|
\label{fig:lp:message_passing}
|
||||||
\end{figure}%
|
\end{figure}%
|
||||||
%
|
%
|
||||||
\noindent The $\tilde{c}_i$-updates can be interpreted as a variable-node update step,
|
\noindent The $\tilde{c}_i$-updates can be understood as a variable-node update step,
|
||||||
and the $\boldsymbol{z}_j$- and $\boldsymbol{\lambda}_j$-updates can be interpreted as
|
and the $\boldsymbol{z}_j$- and $\boldsymbol{\lambda}_j$-updates can be understood as
|
||||||
a check-node update step.
|
a check-node update step.
|
||||||
The updates for each variable- and check-node can be perfomed in parallel.
|
The updates for each variable- and check-node can be perfomed in parallel.
|
||||||
With this interpretation it becomes clear why \ac{LP} decoding using \ac{ADMM}
|
With this interpretation it becomes clear why \ac{LP} decoding using \ac{ADMM}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user