From c519491aa244ef862266d89fedfb93c49b049b85 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Mon, 10 Apr 2023 12:49:58 +0200 Subject: [PATCH] Wording; TODOs; Fixed LDPC acronyms; Reordered figures and some paragraphs --- latex/thesis/chapters/proximal_decoding.tex | 194 ++++++++++++-------- 1 file changed, 113 insertions(+), 81 deletions(-) diff --git a/latex/thesis/chapters/proximal_decoding.tex b/latex/thesis/chapters/proximal_decoding.tex index 1461e12..a7f7a4c 100644 --- a/latex/thesis/chapters/proximal_decoding.tex +++ b/latex/thesis/chapters/proximal_decoding.tex @@ -347,9 +347,9 @@ First, the effect of the parameter $\gamma$ is investigated. Figure \ref{fig:prox:results} shows a comparison of the decoding performance of the proximal decoding algorithm as presented by Wadayama et al. in \cite{proximal_paper} and the implementation realized for this work. -\noindent The \ac{BER} curves for three different choices of the parameter -$\gamma$ are shown, as well as the \ac{BER} curve resulting from decoding -using \ac{BP}, as a reference. +\noindent The \ac{BER} curves for three different choices of +$\gamma$ are shown, as well as the curve resulting from decoding +using a \ac{BP} decoder, as a reference. The results from Wadayama et al. are shown with solid lines, while the newly generated ones are shown with dashed lines. @@ -409,7 +409,7 @@ while the newly generated ones are shown with dashed lines. \label{fig:prox:results} \end{figure} % -\footnotetext{(3,6) regular LDPC code with $n = 204$, $k = 102$ +\footnotetext{(3,6) regular \ac{LDPC} code with $n = 204$, $k = 102$ \cite[\text{204.33.484}]{mackay_enc}; $\omega = 0.05, K=200, \eta=1.5$ }% % @@ -479,8 +479,8 @@ in each case. \label{fig:prox:results_3d} \end{figure}% % -\footnotetext{(3,6) regular LDPC code with n = 204, k = 102 \cite[\text{204.33.484}]{mackay_enc}; - $\omega = 0.05, K=200, \eta=1.5$ +\footnotetext{(3,6) regular \ac{LDPC} code with n = 204, k = 102 + \cite[\text{204.33.484}]{mackay_enc}; $\omega = 0.05, K=200, \eta=1.5$ }% % \noindent This indicates \todo{This is a result fit for the conclusion} @@ -535,7 +535,7 @@ Summarizing the above considerations, \ldots {res/proximal/2d_ber_fer_dfr_963965.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=96, k=48$ + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=96, k=48$ \cite[\text{96.3.965}]{mackay_enc}} \end{subfigure}% \hfill @@ -600,7 +600,7 @@ Summarizing the above considerations, \ldots {res/proximal/2d_ber_fer_dfr_20433484.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=204, k=102$ + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}} \end{subfigure}% \hfill @@ -633,7 +633,7 @@ Summarizing the above considerations, \ldots {res/proximal/2d_ber_fer_dfr_20455187.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 5, 10 \right)$-regular LDPC code with $n=204, k=102$ + \caption{$\left( 5, 10 \right)$-regular \ac{LDPC} code with $n=204, k=102$ \cite[\text{204.55.187}]{mackay_enc}} \end{subfigure}% @@ -666,7 +666,7 @@ Summarizing the above considerations, \ldots {res/proximal/2d_ber_fer_dfr_40833844.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=408, k=204$ + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=408, k=204$ \cite[\text{408.33.844}]{mackay_enc}} \end{subfigure}% \hfill @@ -809,7 +809,7 @@ Summarizing the above considerations, \ldots \label{fig:prox:ber_fer_dfr} \end{figure}% % -\footnotetext{(3,6) regular LDPC code with n = 204, k = 102 +\footnotetext{(3,6) regular \ac{LDPC} code with n = 204, k = 102 \cite[\text{204.33.484}]{mackay_enc}; $\omega = 0.05, K=100, \eta=1.5$ }% % @@ -1164,6 +1164,12 @@ are minimized in an alternating manner by use of their gradients.% \label{fig:prox:gradients} \end{figure}% % + +\todo{Better explain what is visible on the two gradient plots: the two valid +codewords (-1, -1) and (1, 1); the section between them where a decision in +which direction to move is difficult; maybe say why the gradient of $L$ points +to one specific point} + While the initial net movement is generally directed in the right direction owing to the gradient of the negative log-likelihood, the final oscillation may well take place in a segment of space not corresponding to a valid @@ -1179,6 +1185,16 @@ a valid codeword before the oscillation takes place. This explains why the decoding performance is so much better for higher \acp{SNR}. +Looking at figure \ref{fig:prox:gradients:h} it also becomes apparent why the +value of the parameter $\gamma$ has to be kept small, as mentioned in section +\ref{sec:prox:Decoding Algorithm}. +Local minima are introduced between the codewords, in the areas in which it is +not immediately clear which codeword is the most likely one. +Raising the value of $\gamma$ results in +$h \left( \tilde{\boldsymbol{x}} \right)$ dominating the landscape of the +objective function, thereby introducing these local minima into the objective +function. \todo{Show equation again and explain on the basis of the equation} + When considering codes with larger $n$, the behaviour generally stays the same, with some minor differences. In figure \ref{fig:prox:convergence_large_n} the decoding process is @@ -1190,16 +1206,6 @@ However, in this case, the gradient of the code-constraint polynomial iself starts to oscillate, its average value being such that the effect of the gradient of the negative log-likelihood is counteracted. -Looking at figure \ref{fig:prox:gradients:h} it also becomes apparent why the -value of the parameter $\gamma$ has to be kept small, as mentioned in section -\ref{sec:prox:Decoding Algorithm}. -Local minima are introduced between the codewords, in the ares in which it is -not immediately clear which codeword is the most likely one. -Raising the value of $\gamma$ results in -$h \left( \tilde{\boldsymbol{x}} \right)$ dominating the landscape of the -objective function, thereby introducing these local minima into the objective -function. - In conclusion, as a general rule, the proximal decoding algorithm reaches an oscillatory state which it cannot escape as a consequence of its structure. In this state, the constraints may not be satisfied, leading to the algorithm @@ -1213,7 +1219,7 @@ returning an invalid codeword. grid=both, xlabel={Iterations}, width=0.6\textwidth, - height=0.45\textwidth, + height=0.225\textwidth, scale only axis, xtick={0, 100, ..., 400}, xticklabels={0, 50, ..., 200}, @@ -1237,6 +1243,8 @@ returning an invalid codeword. \label{fig:prox:convergence_large_n} \end{figure}% +\todo{Fix captions / footnotes referencing the different codes in all figures} + \subsection{Computational Performance} @@ -1341,7 +1349,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_l\text{ with lowest } \todo{Not hamming distance, correlation} -Figure \ref{fig:prox:improved_results} shows the gain that can be achieved, +Figure \ref{fig:prox:improved_results} shows the gain that can be achieved when the number $N$ is chosen to be 12. Again, three values of gamma are chosen, for which the \ac{BER}, \ac{FER} and decoding failure rate is plotted. @@ -1356,9 +1364,14 @@ pronounced for higher \ac{SNR} values. This is to be expected, since with higher \ac{SNR} values the number of bit errors decreases, making the correction of those errors in the ML-in-the-List step more likely. + In figure \ref{fig:prox:improved:comp} the decoding performance between proximal decoding and the improved algorithm is compared for a number of different codes. +In the case of the code with $n=504$ shown in figure +\ref{fig:prox:improved:comp:504}, only 76 frame errors where produced to +generate the point for the improved algorithm for $\gamma=0.05$ at +$\SI{5.5}{dB}$. Similar behaviour can be observed in all cases, with varying improvement over standard proximal decoding. @@ -1498,6 +1511,13 @@ terms happens relatively infrequently. This is illustrated in figure \ref{fig:prox:time_complexity_comp}, where the average time needed to decode a single received frame is visualized for proximal decoding as well as for the improved algorithm. +It should be noted that some variability in the data is to be expected, +since the timing of the actual simulations depends on a multitude of other +parameters, such as the outside temperature (because of thermal throttling), +the scheduling choices of the operating system as well as variations in the +implementations themselves. +Nevertheless, the empirical data serves, at least in part, to validate the +theoretical considerations. \begin{figure}[H] \centering @@ -1535,7 +1555,8 @@ proximal decoding as well as for the improved algorithm. In conclusion, the decoding performance of proximal decoding can be improved by appending an ML-in-the-List step when the algorithm does not produce a valid result. -The gain can in some cases be as high as $\SI{1}{dB}$ and is achievable with +The gain can in some cases be as high as $\SI{1}{dB}$ \todo{Explicitly mention this value earlier} +and is achievable with negligible computational performance penalty. The improvement is mainly noticable for higher \ac{SNR} values and depends on the code as well as the chosen parameters. @@ -1580,9 +1601,53 @@ the code as well as the chosen parameters. {res/hybrid/2d_ber_fer_dfr_963965.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=96, k=48$ \cite[\text{96.3.965}]{mackay_enc}} + + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=96, k=48$ + \cite[\text{96.3.965}]{mackay_enc}} \end{subfigure}% \hfill% + \begin{subfigure}[c]{0.48\textwidth} + \centering + \begin{tikzpicture} + \begin{axis}[ + grid=both, + xlabel={$E_b / N_0$}, ylabel={FER}, + ymode=log, + legend columns=1, + legend pos=outer north east, + %legend columns=2, + %legend style={at={(0.5,-0.45)},anchor=south}, + ymax=1.5, ymin=8e-5, + width=\textwidth, + height=0.75\textwidth, + ] + + \addplot[ForestGreen, mark=*, solid] + table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] + {res/proximal/2d_ber_fer_dfr_bch_31_26.csv}; + \addplot[Emerald, mark=triangle, densely dashed] + table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] + {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv}; + + \addplot[NavyBlue, mark=*, solid] + table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] + {res/proximal/2d_ber_fer_dfr_bch_31_26.csv}; + \addplot[RoyalPurple, mark=triangle, densely dashed] + table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] + {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv}; + + \addplot[RedOrange, mark=*, solid] + table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] + {res/proximal/2d_ber_fer_dfr_bch_31_26.csv}; + \addplot[red, mark=triangle, densely dashed] + table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] + {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv}; + \end{axis} + \end{tikzpicture} + + \caption{BCH code with $n=31, k=26$\\[\baselineskip]} + \end{subfigure}% + \begin{subfigure}[c]{0.48\textwidth} \centering \begin{tikzpicture} @@ -1632,48 +1697,9 @@ the code as well as the chosen parameters. {res/hybrid/2d_ber_fer_dfr_20433484.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}} - \end{subfigure}% - \begin{subfigure}[c]{0.48\textwidth} - \centering - \begin{tikzpicture} - \begin{axis}[ - grid=both, - xlabel={$E_b / N_0$}, ylabel={FER}, - ymode=log, - legend columns=1, - legend pos=outer north east, - %legend columns=2, - %legend style={at={(0.5,-0.45)},anchor=south}, - ymax=1.5, ymin=8e-5, - width=\textwidth, - height=0.75\textwidth, - ] - - \addplot[ForestGreen, mark=*, solid] - table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] - {res/proximal/2d_ber_fer_dfr_40833844.csv}; - \addplot[Emerald, mark=triangle, densely dashed] - table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] - {res/hybrid/2d_ber_fer_dfr_40833844.csv}; - - \addplot[NavyBlue, mark=*, solid] - table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] - {res/proximal/2d_ber_fer_dfr_40833844.csv}; - \addplot[RoyalPurple, mark=triangle, densely dashed] - table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] - {res/hybrid/2d_ber_fer_dfr_40833844.csv}; - - \addplot[RedOrange, mark=*, solid] - table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] - {res/proximal/2d_ber_fer_dfr_40833844.csv}; - \addplot[red, mark=triangle, densely dashed] - table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] - {res/hybrid/2d_ber_fer_dfr_40833844.csv}; - \end{axis} - \end{tikzpicture} - \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=408, k=204$ \cite[\text{408.33.844}]{mackay_enc}} + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=204, k=102$ + \cite[\text{204.33.484}]{mackay_enc}} \end{subfigure}% \hfill% \begin{subfigure}[c]{0.48\textwidth} @@ -1694,27 +1720,29 @@ the code as well as the chosen parameters. \addplot[ForestGreen, mark=*, solid] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] - {res/proximal/2d_ber_fer_dfr_bch_31_26.csv}; + {res/proximal/2d_ber_fer_dfr_20455187.csv}; \addplot[Emerald, mark=triangle, densely dashed] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] - {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv}; + {res/hybrid/2d_ber_fer_dfr_20455187.csv}; \addplot[NavyBlue, mark=*, solid] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] - {res/proximal/2d_ber_fer_dfr_bch_31_26.csv}; + {res/proximal/2d_ber_fer_dfr_20455187.csv}; \addplot[RoyalPurple, mark=triangle, densely dashed] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] - {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv}; + {res/hybrid/2d_ber_fer_dfr_20455187.csv}; \addplot[RedOrange, mark=*, solid] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] - {res/proximal/2d_ber_fer_dfr_bch_31_26.csv}; + {res/proximal/2d_ber_fer_dfr_20455187.csv}; \addplot[red, mark=triangle, densely dashed] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] - {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv}; + {res/hybrid/2d_ber_fer_dfr_20455187.csv}; \end{axis} \end{tikzpicture} - \caption{BCH code with $n=31, k=26$\\[\baselineskip]} + + \caption{$\left( 5, 10 \right)$-regular \ac{LDPC} code with $n=204, k=102$ + \cite[\text{204.55.187}]{mackay_enc}} \end{subfigure}% \begin{subfigure}[c]{0.48\textwidth} @@ -1735,27 +1763,29 @@ the code as well as the chosen parameters. \addplot[ForestGreen, mark=*, solid] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] - {res/proximal/2d_ber_fer_dfr_20455187.csv}; + {res/proximal/2d_ber_fer_dfr_40833844.csv}; \addplot[Emerald, mark=triangle, densely dashed] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}] - {res/hybrid/2d_ber_fer_dfr_20455187.csv}; + {res/hybrid/2d_ber_fer_dfr_40833844.csv}; \addplot[NavyBlue, mark=*, solid] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] - {res/proximal/2d_ber_fer_dfr_20455187.csv}; + {res/proximal/2d_ber_fer_dfr_40833844.csv}; \addplot[RoyalPurple, mark=triangle, densely dashed] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}] - {res/hybrid/2d_ber_fer_dfr_20455187.csv}; + {res/hybrid/2d_ber_fer_dfr_40833844.csv}; \addplot[RedOrange, mark=*, solid] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] - {res/proximal/2d_ber_fer_dfr_20455187.csv}; + {res/proximal/2d_ber_fer_dfr_40833844.csv}; \addplot[red, mark=triangle, densely dashed] table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}] - {res/hybrid/2d_ber_fer_dfr_20455187.csv}; + {res/hybrid/2d_ber_fer_dfr_40833844.csv}; \end{axis} \end{tikzpicture} - \caption{$\left( 5, 10 \right)$-regular LDPC code with $n=204, k=102$ \cite[\text{204.55.187}]{mackay_enc}} + + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=408, k=204$ + \cite[\text{408.33.844}]{mackay_enc}} \end{subfigure}% \hfill% \begin{subfigure}[c]{0.48\textwidth} @@ -1795,7 +1825,9 @@ the code as well as the chosen parameters. \end{axis} \end{tikzpicture}\\ - \caption{LDPC code (Progressive Edge Growth Construction) with $n=504, k=252$ \cite[\text{PEGReg252x504}]{mackay_enc}} + \caption{\ac{LDPC} code (progressive edge growth construction) with $n=504, k=252$ + \cite[\text{PEGReg252x504}]{mackay_enc}} + \label{fig:prox:improved:comp:504} \end{subfigure}% \vspace{1cm}