Complete first draft of warm-start sliding-window decoding section
This commit is contained in:
@@ -724,21 +724,20 @@ structure by passing soft information from earlier to later spatial positions.
|
|||||||
|
|
||||||
% Passing messages requires messages
|
% Passing messages requires messages
|
||||||
|
|
||||||
% TODO: Move this to the intro?
|
|
||||||
The act of passing messages from one window to the next requires
|
The act of passing messages from one window to the next requires
|
||||||
there being messages at the end of decoding that are still relevant
|
there being messages after completing decoding of one window that are
|
||||||
to the decoding process.
|
still relevant to the decoding of the next.
|
||||||
This somewhat limits the variety of inner decoders the warm-start
|
This may somewhat limit the variety of \emph{inner decoders}, i.e.,
|
||||||
|
the decoders decoding the individual windows, the warm-start
|
||||||
initialization can be used with.
|
initialization can be used with.
|
||||||
E.g., \ac{bp}+\ac{osd} does not immediately seem suitable, though
|
E.g., \ac{bp}+\ac{osd} does not immediately seem suitable, though
|
||||||
this remains to be investigated.
|
this remains to be investigated.
|
||||||
\red{[Something general about the available decoders]}
|
We chose to investigate first plain \ac{bp} due to its simplicity and
|
||||||
\red{[Define inner decoder]}
|
then \ac{bpgd} because of the availability of recently computed messages.
|
||||||
|
|
||||||
% Proposed modification: Mathematical definition
|
% TODO: Include this?
|
||||||
|
% \content{Mention that our own work ties into the bottom category in
|
||||||
\content{Mention that our own work ties into the bottom category in
|
% \Cref{fig:literature}}
|
||||||
\Cref{fig:literature}}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%
|
||||||
\subsection{Warm Start For Belief Propagation Decoding}
|
\subsection{Warm Start For Belief Propagation Decoding}
|
||||||
@@ -861,7 +860,7 @@ this remains to be investigated.
|
|||||||
|
|
||||||
\caption{
|
\caption{
|
||||||
\red{Visualization of the messages used for the
|
\red{Visualization of the messages used for the
|
||||||
initialization of the next window.}
|
initialization of the next window under BP decoding.}
|
||||||
\Acfp{vn} are represented using green circles while \acfp{cn}
|
\Acfp{vn} are represented using green circles while \acfp{cn}
|
||||||
are represented using blue squares.
|
are represented using blue squares.
|
||||||
}
|
}
|
||||||
@@ -877,12 +876,14 @@ we perform a \emph{warm start} by initializing the messages in the
|
|||||||
overlapping region to the values last held during the decoding of the
|
overlapping region to the values last held during the decoding of the
|
||||||
previous window.
|
previous window.
|
||||||
|
|
||||||
|
% Practical realization: Problem with naive approach
|
||||||
|
|
||||||
To see how we realize this in practice, we reiterate the steps of the
|
To see how we realize this in practice, we reiterate the steps of the
|
||||||
\ac{bp} algorithm
|
\ac{bp} algorithm
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\label{eq:init}
|
\label{eq:init}
|
||||||
\text{Initialization: } & L_{i \rightarrow j} = \tilde{L}_i \\[3mm]
|
\text{Initialization: } & L_{i \rightarrow j} = \tilde{L}_i \\[3mm]
|
||||||
\text{\ac{cn} Update (Sum-Product): }&
|
\text{\ac{cn} Update (SPA): }&
|
||||||
\displaystyle L_{i \leftarrow j} =
|
\displaystyle L_{i \leftarrow j} =
|
||||||
2\cdot(-1)^{s_j}\cdot\tanh^{-1}
|
2\cdot(-1)^{s_j}\cdot\tanh^{-1}
|
||||||
\!\left(
|
\!\left(
|
||||||
@@ -891,8 +892,8 @@ To see how we realize this in practice, we reiterate the steps of the
|
|||||||
\right) \\[3mm]
|
\right) \\[3mm]
|
||||||
\text{\ac{cn} Update (Min-Sum): }&
|
\text{\ac{cn} Update (Min-Sum): }&
|
||||||
\displaystyle L_{i \leftarrow j} = (-1)^{s_j}\cdot \prod_{i'
|
\displaystyle L_{i \leftarrow j} = (-1)^{s_j}\cdot \prod_{i'
|
||||||
\in \mathcal{N}(j)\setminus i} \sign \left( L_{i' \rightarrow j}
|
\in \mathcal{N}(j)\setminus \{i\}} \sign \left( L_{i' \rightarrow j}
|
||||||
\right) \cdot \min_{i' \in \mathcal{N}(j)\setminus i} \lvert
|
\right) \cdot \min_{i' \in \mathcal{N}(j)\setminus \{i\}} \lvert
|
||||||
L_{i'\rightarrow j} \rvert \\[3mm]
|
L_{i'\rightarrow j} \rvert \\[3mm]
|
||||||
\label{eq:vn_update}
|
\label{eq:vn_update}
|
||||||
\text{\ac{vn} Update: } & \displaystyle L_{i \rightarrow j} =
|
\text{\ac{vn} Update: } & \displaystyle L_{i \rightarrow j} =
|
||||||
@@ -921,6 +922,8 @@ This means that simply initializing the edges in the overlap region
|
|||||||
with the exising $L_{i\rightarrow j}$ messages and starting the
|
with the exising $L_{i\rightarrow j}$ messages and starting the
|
||||||
decoding of the next window with a \ac{cn} update is not enough.
|
decoding of the next window with a \ac{cn} update is not enough.
|
||||||
|
|
||||||
|
% Practical realization: working approach
|
||||||
|
|
||||||
We can resolve this issue by initializing the edges using the existing
|
We can resolve this issue by initializing the edges using the existing
|
||||||
\ac{cn} to \ac{vn} messages $L_{i\leftarrow j}$ and beginning the
|
\ac{cn} to \ac{vn} messages $L_{i\leftarrow j}$ and beginning the
|
||||||
decoding of the next window with a \ac{vn} update instead.
|
decoding of the next window with a \ac{vn} update instead.
|
||||||
@@ -928,6 +931,8 @@ This way, we recompute the existing $L_{i\rightarrow j}$ messages and
|
|||||||
additionally compute the messages crossing the window boundary.
|
additionally compute the messages crossing the window boundary.
|
||||||
We can then continue decoding the next window as usual.
|
We can then continue decoding the next window as usual.
|
||||||
|
|
||||||
|
% Practical realization: Simplification of algorithm
|
||||||
|
|
||||||
We can further simplify the algorithm.
|
We can further simplify the algorithm.
|
||||||
Looking carefully at \Cref{eq:vn_update} we notice that when the
|
Looking carefully at \Cref{eq:vn_update} we notice that when the
|
||||||
\ac{cn} to \ac{vn} messages $L_{i\leftarrow j}$ have been zero-initialized,
|
\ac{cn} to \ac{vn} messages $L_{i\leftarrow j}$ have been zero-initialized,
|
||||||
@@ -954,7 +959,7 @@ Note that the decoding procedure performed on the individual windows
|
|||||||
% tex-fmt: off
|
% tex-fmt: off
|
||||||
\tikzexternaldisable
|
\tikzexternaldisable
|
||||||
\begin{algorithm}[t]
|
\begin{algorithm}[t]
|
||||||
\caption{Sliding-window belief propagation (BP) decoding algorithm with warm-start.}
|
\caption{Sliding-window belief propagation (BP) decoding algorithm with warm start.}
|
||||||
\label{alg:warm_start_bp}
|
\label{alg:warm_start_bp}
|
||||||
\begin{algorithmic}[1]
|
\begin{algorithmic}[1]
|
||||||
\State \textbf{Initialize:} $\hat{\bm{e}}^\text{total} \leftarrow \bm{0}$
|
\State \textbf{Initialize:} $\hat{\bm{e}}^\text{total} \leftarrow \bm{0}$
|
||||||
@@ -988,14 +993,25 @@ Note that the decoding procedure performed on the individual windows
|
|||||||
\subsection{Warm Start for Belief Propagation with Guided Decimation Decoding}
|
\subsection{Warm Start for Belief Propagation with Guided Decimation Decoding}
|
||||||
\label{subsec:Warm-Start Belief Propagation with Guided Decimation Decoding}
|
\label{subsec:Warm-Start Belief Propagation with Guided Decimation Decoding}
|
||||||
|
|
||||||
% Intro
|
% Intro: Recap of BPGD
|
||||||
|
|
||||||
\content{Call back to previous paragraph: BPGD is one option where
|
We now direct our attention at using \ac{bpgd} as an inner decoder.
|
||||||
relevant messages are available}
|
Recall that for \ac{bpgd}, after a number $T \in \mathbb{N}$ of
|
||||||
\content{Modified structure of BPGD $\rightarrow$ In addition to
|
iterations we decimate
|
||||||
messages, pass decimation info}
|
the most reliable \ac{vn}, meaning we perform a hard decision and
|
||||||
\content{(?) Explicitly mention decimation info = channel llrs?}
|
remove it from the following decoding process.
|
||||||
\content{(?) Algorithm}
|
|
||||||
|
This means that when moving from one window to the next, we now have
|
||||||
|
more information available: not just the \ac{bp} messages but also the
|
||||||
|
information about what \acp{vn} were decimated and to what values.
|
||||||
|
We call this \emph{decimation information} in the following.
|
||||||
|
We can extend \Cref{alg:warm_start_bp} by additionally passing the
|
||||||
|
decimation information after initializing the \ac{cn} to \ac{vn} messages.
|
||||||
|
\Cref{fig:messages_decimation_tanner} visualizes this process.
|
||||||
|
|
||||||
|
% TODO: Do this in the fundamentals chapter. Then write a proper
|
||||||
|
% algorithm for warm-start sliding-window decoding with BPGD as well
|
||||||
|
%\content{(?) Explicitly mention decimation info = channel llrs?}
|
||||||
|
|
||||||
\begin{figure}[t]
|
\begin{figure}[t]
|
||||||
\centering
|
\centering
|
||||||
@@ -1125,12 +1141,45 @@ messages, pass decimation info}
|
|||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
|
|
||||||
\caption{
|
\caption{
|
||||||
Visualization of the messages and decimation information used for the
|
\red{Visualization of the messages and decimation information
|
||||||
initialization of the next window.
|
used for the
|
||||||
|
initialization of the next window under \ac{bpgd} decoding}.
|
||||||
|
\Acfp{vn} are represented using green circles while \acfp{cn}
|
||||||
|
are represented using blue squares.
|
||||||
}
|
}
|
||||||
\label{fig:messages_decimation_tanner}
|
\label{fig:messages_decimation_tanner}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
% % tex-fmt: off
|
||||||
|
% \tikzexternaldisable
|
||||||
|
% \begin{algorithm}[t]
|
||||||
|
% \caption{Sliding-window decoding algorithm with warm start for generic inner decoder.}
|
||||||
|
% \label{alg:warm_start_general}
|
||||||
|
% \begin{algorithmic}[1]
|
||||||
|
% \State \textbf{Initialize:} $\hat{\bm{e}}^\text{total} \leftarrow \bm{0}$
|
||||||
|
% \State \textbf{Initialize:} $L_{i\leftarrow j} = 0
|
||||||
|
% ~\forall~ i\in \mathcal{I}, j\in \mathcal{J}$
|
||||||
|
% \For{$\ell = 0, \ldots, n_\text{win}-1$}
|
||||||
|
% \State Obtain $\hat{\bm{e}}^{(\ell)}$ from inner decoder
|
||||||
|
% \State $\displaystyle\left(\hat{\bm{e}}^\text{total}\right)_{\mathcal{I}^{(\ell)}_\text{commit}} \leftarrow \hat{\bm{e}}^{(\ell)}_\text{commit}$
|
||||||
|
% \State $\displaystyle\left(\bm{s}\right)_{\mathcal{J}_\text{overlap}^{(\ell)}}
|
||||||
|
% \leftarrow \bm{H}_\text{overlap}^{(\ell)}
|
||||||
|
% \left( \hat{\bm{e}}_\text{commit}^{(\ell)} \right)^\text{T}$
|
||||||
|
% \If{$\ell < n_\text{win} - 1$}
|
||||||
|
% \State $L^{(\ell+1)}_{i\leftarrow j} \leftarrow
|
||||||
|
% L^{(\ell)}_{i\leftarrow j}
|
||||||
|
% ~\forall~ i \in \mathcal{I}_\text{overlap}^{(\ell)},
|
||||||
|
% j \in \mathcal{J}_\text{overlap}^{(\ell)}$
|
||||||
|
% \EndIf
|
||||||
|
% \EndFor
|
||||||
|
% \State \textbf{return} $\hat{\bm{e}}$
|
||||||
|
% \end{algorithmic}
|
||||||
|
% \end{algorithm}
|
||||||
|
% \tikzexternalenable
|
||||||
|
% % tex-fmt: on
|
||||||
|
%
|
||||||
|
% \content{Make algorithm 4 specific to BPGD?}
|
||||||
|
|
||||||
\section{Numerical Results}
|
\section{Numerical Results}
|
||||||
\label{sec:Numerical Results}
|
\label{sec:Numerical Results}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user