diff --git a/src/thesis/chapters/4_decoding_under_dems.tex b/src/thesis/chapters/4_decoding_under_dems.tex index 64ffe91..ffc91ee 100644 --- a/src/thesis/chapters/4_decoding_under_dems.tex +++ b/src/thesis/chapters/4_decoding_under_dems.tex @@ -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}