Complete first draft of warm-start sliding-window decoding section

This commit is contained in:
2026-05-03 01:11:22 +02:00
parent 5fabe2e146
commit 72461fe555

View File

@@ -724,21 +724,20 @@ structure by passing soft information from earlier to later spatial positions.
% Passing messages requires messages
% TODO: Move this to the intro?
The act of passing messages from one window to the next requires
there being messages at the end of decoding that are still relevant
to the decoding process.
This somewhat limits the variety of inner decoders the warm-start
there being messages after completing decoding of one window that are
still relevant to the decoding of the next.
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.
E.g., \ac{bp}+\ac{osd} does not immediately seem suitable, though
this remains to be investigated.
\red{[Something general about the available decoders]}
\red{[Define inner decoder]}
We chose to investigate first plain \ac{bp} due to its simplicity and
then \ac{bpgd} because of the availability of recently computed messages.
% Proposed modification: Mathematical definition
\content{Mention that our own work ties into the bottom category in
\Cref{fig:literature}}
% TODO: Include this?
% \content{Mention that our own work ties into the bottom category in
% \Cref{fig:literature}}
%%%%%%%%%%%%%%%%
\subsection{Warm Start For Belief Propagation Decoding}
@@ -861,7 +860,7 @@ this remains to be investigated.
\caption{
\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}
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
previous window.
% Practical realization: Problem with naive approach
To see how we realize this in practice, we reiterate the steps of the
\ac{bp} algorithm
\begin{align}
\label{eq:init}
\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} =
2\cdot(-1)^{s_j}\cdot\tanh^{-1}
\!\left(
@@ -891,8 +892,8 @@ To see how we realize this in practice, we reiterate the steps of the
\right) \\[3mm]
\text{\ac{cn} Update (Min-Sum): }&
\displaystyle L_{i \leftarrow j} = (-1)^{s_j}\cdot \prod_{i'
\in \mathcal{N}(j)\setminus i} \sign \left( L_{i' \rightarrow j}
\right) \cdot \min_{i' \in \mathcal{N}(j)\setminus i} \lvert
\in \mathcal{N}(j)\setminus \{i\}} \sign \left( L_{i' \rightarrow j}
\right) \cdot \min_{i' \in \mathcal{N}(j)\setminus \{i\}} \lvert
L_{i'\rightarrow j} \rvert \\[3mm]
\label{eq:vn_update}
\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
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
\ac{cn} to \ac{vn} messages $L_{i\leftarrow j}$ and beginning the
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.
We can then continue decoding the next window as usual.
% Practical realization: Simplification of algorithm
We can further simplify the algorithm.
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,
@@ -954,7 +959,7 @@ Note that the decoding procedure performed on the individual windows
% tex-fmt: off
\tikzexternaldisable
\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}
\begin{algorithmic}[1]
\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}
\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
relevant messages are available}
\content{Modified structure of BPGD $\rightarrow$ In addition to
messages, pass decimation info}
\content{(?) Explicitly mention decimation info = channel llrs?}
\content{(?) Algorithm}
We now direct our attention at using \ac{bpgd} as an inner decoder.
Recall that for \ac{bpgd}, after a number $T \in \mathbb{N}$ of
iterations we decimate
the most reliable \ac{vn}, meaning we perform a hard decision and
remove it from the following decoding process.
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]
\centering
@@ -1125,12 +1141,45 @@ messages, pass decimation info}
\end{tikzpicture}
\caption{
Visualization of the messages and decimation information used for the
initialization of the next window.
\red{Visualization of the messages and decimation information
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}
\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}
\label{sec:Numerical Results}