Wording; TODOs; Fixed LDPC acronyms; Reordered figures and some paragraphs

This commit is contained in:
Andreas Tsouchlos 2023-04-10 12:49:58 +02:00
parent 08042c7c9d
commit c519491aa2

View File

@ -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}