Ran proximal decoding chapter through spellcheck
This commit is contained in:
parent
5989c33621
commit
7a6968d0ca
@ -4,7 +4,7 @@
|
|||||||
In this chapter, the proximal decoding algorithm is examined.
|
In this chapter, the proximal decoding algorithm is examined.
|
||||||
First, the algorithm itself is described.
|
First, the algorithm itself is described.
|
||||||
Then, some interesting ideas concerning the implementation are presented.
|
Then, some interesting ideas concerning the implementation are presented.
|
||||||
Simulation results are shown, on the basis of which the behaviour of the
|
Simulation results are shown, based on which the behavior of the
|
||||||
algorithm is investigated for different codes and parameters.
|
algorithm is investigated for different codes and parameters.
|
||||||
Finally, an improvement on proximal decoding is proposed.
|
Finally, an improvement on proximal decoding is proposed.
|
||||||
|
|
||||||
@ -257,7 +257,7 @@ It was subsequently reimplemented in C++ using the Eigen%
|
|||||||
\footnote{\url{https://eigen.tuxfamily.org}}
|
\footnote{\url{https://eigen.tuxfamily.org}}
|
||||||
linear algebra library to achieve higher performance.
|
linear algebra library to achieve higher performance.
|
||||||
The focus has been set on a fast implementation, sometimes at the expense of
|
The focus has been set on a fast implementation, sometimes at the expense of
|
||||||
memory usage, somewhat limiting the size of the codes the implemenation can be
|
memory usage, somewhat limiting the size of the codes the implementation can be
|
||||||
used with.
|
used with.
|
||||||
The evaluation of the simulation results has been wholly realized in Python.
|
The evaluation of the simulation results has been wholly realized in Python.
|
||||||
|
|
||||||
@ -319,11 +319,11 @@ $[-\eta, \eta]$ individually.
|
|||||||
\section{Analysis and Simulation Results}%
|
\section{Analysis and Simulation Results}%
|
||||||
\label{sec:prox:Analysis and Simulation Results}
|
\label{sec:prox:Analysis and Simulation Results}
|
||||||
|
|
||||||
In this section, the general behaviour of the proximal decoding algorithm is
|
In this section, the general behavior of the proximal decoding algorithm is
|
||||||
analyzed.
|
analyzed.
|
||||||
The impact of the parameters $\gamma$, as well as $\omega$, $K$ and $\eta$ is
|
The impact of the parameters $\gamma$, as well as $\omega$, $K$ and $\eta$ is
|
||||||
examined.
|
examined.
|
||||||
The decoding performance is assessed on the basis of the \ac{BER} and the
|
The decoding performance is assessed based on the \ac{BER} and the
|
||||||
\ac{FER} as well as the \textit{decoding failure rate} - the rate at which
|
\ac{FER} as well as the \textit{decoding failure rate} - the rate at which
|
||||||
the algorithm produces invalid results.
|
the algorithm produces invalid results.
|
||||||
The convergence properties are reviewed and related to the decoding
|
The convergence properties are reviewed and related to the decoding
|
||||||
@ -414,7 +414,7 @@ while the newly generated ones are shown with dashed lines.
|
|||||||
\noindent It is noticeable that for a moderately chosen value of $\gamma$
|
\noindent It is noticeable that for a moderately chosen value of $\gamma$
|
||||||
($\gamma = 0.05$) the decoding performance is better than for low
|
($\gamma = 0.05$) the decoding performance is better than for low
|
||||||
($\gamma = 0.01$) or high ($\gamma = 0.15$) values.
|
($\gamma = 0.01$) or high ($\gamma = 0.15$) values.
|
||||||
The question arises whether there is some optimal value maximazing the decoding
|
The question arises whether there is some optimal value maximizing the decoding
|
||||||
performance, especially since it seems to dramatically depend on $\gamma$.
|
performance, especially since it seems to dramatically depend on $\gamma$.
|
||||||
To better understand how they are
|
To better understand how they are
|
||||||
related, figure \ref{fig:prox:results} was recreated, but with a considerably
|
related, figure \ref{fig:prox:results} was recreated, but with a considerably
|
||||||
@ -484,7 +484,7 @@ Rather, a preliminary examination providing a rough window for $\gamma$ may
|
|||||||
be sufficient.
|
be sufficient.
|
||||||
When examining a number of different codes (figure
|
When examining a number of different codes (figure
|
||||||
\ref{fig:prox:results_3d_multiple}), it is apparent that while the exact
|
\ref{fig:prox:results_3d_multiple}), it is apparent that while the exact
|
||||||
landscape of the graph depends on the code, the general behaviour is the same
|
landscape of the graph depends on the code, the general behavior is the same
|
||||||
in each case.
|
in each case.
|
||||||
|
|
||||||
The parameter $\gamma$ describes the step-size for the optimization step
|
The parameter $\gamma$ describes the step-size for the optimization step
|
||||||
@ -496,7 +496,7 @@ The relationship between $\omega$ and $\gamma$ is portrayed in figure
|
|||||||
The color of each cell indicates the \ac{BER} when the corresponding values
|
The color of each cell indicates the \ac{BER} when the corresponding values
|
||||||
are chosen for the parameters.
|
are chosen for the parameters.
|
||||||
The \ac{SNR} is kept constant at $\SI{4}{dB}$.
|
The \ac{SNR} is kept constant at $\SI{4}{dB}$.
|
||||||
The \ac{BER} exhibits similar behaviour in its dependency on $\omega$ and
|
The \ac{BER} exhibits similar behavior in its dependency on $\omega$ and
|
||||||
on $\gamma$: it is minimized when keeping the value within certain
|
on $\gamma$: it is minimized when keeping the value within certain
|
||||||
bounds, without displaying a single clear optimum.
|
bounds, without displaying a single clear optimum.
|
||||||
It is noteworthy that the decoder seems to achieve the best performance for
|
It is noteworthy that the decoder seems to achieve the best performance for
|
||||||
@ -551,8 +551,8 @@ depicted in figure \ref{fig:prox:gamma_omega_multiple}.
|
|||||||
To better understand how to determine the optimal value for the parameter $K$,
|
To better understand how to determine the optimal value for the parameter $K$,
|
||||||
the average error is inspected.
|
the average error is inspected.
|
||||||
This time $\gamma$ and $\omega$ are held constant at $0.05$ and the average
|
This time $\gamma$ and $\omega$ are held constant at $0.05$ and the average
|
||||||
error is observed during each iteration of the decoding process, for a number
|
error is observed during each iteration of the decoding process, for several
|
||||||
of different \acp{SNR}.
|
different \acp{SNR}.
|
||||||
The plots have been generated by averaging the error over $\SI{500000}{}$
|
The plots have been generated by averaging the error over $\SI{500000}{}$
|
||||||
decodings.
|
decodings.
|
||||||
As some decodings go one for more iterations than others, the number of values
|
As some decodings go one for more iterations than others, the number of values
|
||||||
@ -566,7 +566,7 @@ timing requirements of the decoding process.
|
|||||||
Another aspect to consider is that the higher the \ac{SNR}, the fewer
|
Another aspect to consider is that the higher the \ac{SNR}, the fewer
|
||||||
decodings are present at each iteration
|
decodings are present at each iteration
|
||||||
to average, since a solution is found earlier.
|
to average, since a solution is found earlier.
|
||||||
This explains the decreasing smootheness of the lines as the \ac{SNR} rises.
|
This explains the decreasing smoothness of the lines as the \ac{SNR} rises.
|
||||||
Remarkably, the \ac{SNR} seems to not have any impact on the number of
|
Remarkably, the \ac{SNR} seems to not have any impact on the number of
|
||||||
iterations necessary to reach the point at which the average error
|
iterations necessary to reach the point at which the average error
|
||||||
stabilizes.
|
stabilizes.
|
||||||
@ -713,18 +713,18 @@ means to bring about numerical stability.
|
|||||||
|
|
||||||
Until now, only the \ac{BER} has been considered to gauge the decoding
|
Until now, only the \ac{BER} has been considered to gauge the decoding
|
||||||
performance.
|
performance.
|
||||||
The \ac{FER}, however, shows considerably worse behaviour, as can be seen in
|
The \ac{FER}, however, shows considerably worse behavior, as can be seen in
|
||||||
figure \ref{fig:prox:ber_fer_dfr}.
|
figure \ref{fig:prox:ber_fer_dfr}.
|
||||||
Besides the \ac{BER} and \ac{FER} curves, the figure also shows the
|
Besides the \ac{BER} and \ac{FER} curves, the figure also shows the
|
||||||
\textit{decoding failure rate}.
|
\textit{decoding failure rate}.
|
||||||
This is the rate at which the iterative process produces invalid codewords,
|
This is the rate at which the iterative process produces invalid codewords,
|
||||||
i.e., the stopping criterion (line 6 of algorithm \ref{alg:prox}) is never
|
i.e., the stopping criterion (line 6 of algorithm \ref{alg:prox}) is never
|
||||||
satisfied and the maximum number of itertations $K$ is reached without
|
satisfied and the maximum number of iterations $K$ is reached without
|
||||||
converging to a valid codeword.
|
converging to a valid codeword.
|
||||||
Three lines are plotted in each case, corresponding to different values of
|
Three lines are plotted in each case, corresponding to different values of
|
||||||
the parameter $\gamma$.
|
the parameter $\gamma$.
|
||||||
The values chosen are the same as in figure \ref{fig:prox:results}, as they
|
The values chosen are the same as in figure \ref{fig:prox:results}, as they
|
||||||
seem to adequately describe the behaviour across a wide range of values
|
seem to adequately describe the behavior across a wide range of values
|
||||||
(see figure \ref{fig:prox:results_3d}).
|
(see figure \ref{fig:prox:results_3d}).
|
||||||
|
|
||||||
It is apparent that the \ac{FER} and the decoding failure rate are extremely
|
It is apparent that the \ac{FER} and the decoding failure rate are extremely
|
||||||
@ -974,14 +974,14 @@ polynomial, which influence the next estimate.
|
|||||||
iterations, the estimate starts to oscillate around a particular value.
|
iterations, the estimate starts to oscillate around a particular value.
|
||||||
Jointly, the two gradients stop further approaching the value
|
Jointly, the two gradients stop further approaching the value
|
||||||
zero.
|
zero.
|
||||||
This leads to the two terms of the objective function an in particular the
|
This leads to the two terms of the objective function and in particular the
|
||||||
code-constraint polynomial not being minimized.
|
code-constraint polynomial not being minimized.
|
||||||
As such, the constraints are not being satisfied and the estimate is not
|
As such, the constraints are not being satisfied and the estimate is not
|
||||||
converging towards a valid codeword.
|
converging towards a valid codeword.
|
||||||
|
|
||||||
While figure \ref{fig:prox:convergence} shows only one instance of a decoding
|
While figure \ref{fig:prox:convergence} shows only one instance of a decoding
|
||||||
task, with no statistical significance, it is indicative of the general
|
task, with no statistical significance, it is indicative of the general
|
||||||
behaviour of the algorithm.
|
behavior of the algorithm.
|
||||||
This can be justified by looking at the gradients themselves.
|
This can be justified by looking at the gradients themselves.
|
||||||
In figure \ref{fig:prox:gradients} the gradients of the negative
|
In figure \ref{fig:prox:gradients} the gradients of the negative
|
||||||
log-likelihood and the code-constraint polynomial for a repetition code with
|
log-likelihood and the code-constraint polynomial for a repetition code with
|
||||||
@ -1096,7 +1096,7 @@ still yielding an invalid codeword.
|
|||||||
|
|
||||||
The higher the \ac{SNR}, the more likely the gradient of the negative
|
The higher the \ac{SNR}, the more likely the gradient of the negative
|
||||||
log-likelihood is to point to a valid codeword.
|
log-likelihood is to point to a valid codeword.
|
||||||
The common component of the two gradient then pulls the estimate closer to
|
The common component of the two gradients then pulls the estimate closer to
|
||||||
a valid codeword before the oscillation takes place.
|
a valid codeword before the oscillation takes place.
|
||||||
This explains why the decoding performance is so much better for higher
|
This explains why the decoding performance is so much better for higher
|
||||||
\acp{SNR}.
|
\acp{SNR}.
|
||||||
@ -1111,13 +1111,13 @@ $h \left( \tilde{\boldsymbol{x}} \right)$ dominating the landscape of the
|
|||||||
objective function, thereby introducing these local minima into the objective
|
objective function, thereby introducing these local minima into the objective
|
||||||
function.
|
function.
|
||||||
|
|
||||||
When considering codes with larger $n$ the behaviour generally stays the
|
When considering codes with larger $n$ the behavior generally stays the
|
||||||
same, with some minor differences.
|
same, with some minor differences.
|
||||||
In figure \ref{fig:prox:convergence_large_n} the decoding process is
|
In figure \ref{fig:prox:convergence_large_n} the decoding process is
|
||||||
visualized for one component of a code with $n=204$, for a single decoding.
|
visualized for one component of a code with $n=204$, for a single decoding.
|
||||||
The two gradients still eventually oppose each other and the estimate still
|
The two gradients still eventually oppose each other and the estimate still
|
||||||
starts to oscillate, the same as illustrated in figure
|
starts to oscillate, the same as illustrated in figure
|
||||||
\ref{fig:prox:convergence} on the basis of a code with $n=7$.
|
\ref{fig:prox:convergence} based on a code with $n=7$.
|
||||||
However, in this case, the gradient of the code-constraint polynomial iself
|
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
|
starts to oscillate, its average value being such that the effect of the
|
||||||
gradient of the negative log-likelihood is counteracted.
|
gradient of the negative log-likelihood is counteracted.
|
||||||
@ -1190,10 +1190,10 @@ practical since it is the same as that of $\ac{BP}$.
|
|||||||
|
|
||||||
This theoretical analysis is also corroborated by the practical results shown
|
This theoretical analysis is also corroborated by the practical results shown
|
||||||
in figure \ref{fig:prox:time_comp}.
|
in figure \ref{fig:prox:time_comp}.
|
||||||
Some deviations from linear behaviour are unavoidable because not all codes
|
Some deviations from linear behavior are unavoidable because not all codes
|
||||||
considered are actually \ac{LDPC} codes, or \ac{LDPC} codes constructed
|
considered are actually \ac{LDPC} codes, or \ac{LDPC} codes constructed
|
||||||
according to the same scheme.
|
according to the same scheme.
|
||||||
Nontheless, a generally linear relationship between the average time needed to
|
Nonetheless, a generally linear relationship between the average time needed to
|
||||||
decode a received frame and the length $n$ of the frame can be observed.
|
decode a received frame and the length $n$ of the frame can be observed.
|
||||||
These results were generated on an Intel Core i7-7700HQ 4-core CPU, running at
|
These results were generated on an Intel Core i7-7700HQ 4-core CPU, running at
|
||||||
$\SI{2.80}{GHz}$ and utilizing all cores.
|
$\SI{2.80}{GHz}$ and utilizing all cores.
|
||||||
@ -1242,12 +1242,12 @@ a limited number of possible results (``ML-in-the-List'' as it will
|
|||||||
subsequently be called) to improve the decoding performance.
|
subsequently be called) to improve the decoding performance.
|
||||||
This concept is pursued in this section.
|
This concept is pursued in this section.
|
||||||
|
|
||||||
First, a guideline has to be found with which to evaluate the probability that
|
First, a guideline must be found with which to evaluate the probability that
|
||||||
a given component of an estimate is wrong.
|
a given component of an estimate is wrong.
|
||||||
One compelling observation is that the closer an estimate is to being at a
|
One compelling observation is that the closer an estimate is to being at a
|
||||||
valid codeword, the smaller the magnitude of the gradient of the
|
valid codeword, the smaller the magnitude of the gradient of the
|
||||||
code-constraint polynomial, as illustrated in figure \ref{fig:prox:gradients}.
|
code-constraint polynomial, as illustrated in figure \ref{fig:prox:gradients}.
|
||||||
This gives rise to the notion that some property or behaviour of
|
This gives rise to the notion that some property or behavior of
|
||||||
$\nabla h\left( \tilde{\boldsymbol{x}} \right) $ may be related in its
|
$\nabla h\left( \tilde{\boldsymbol{x}} \right) $ may be related in its
|
||||||
magnitude to the confidence that a given bit is correct.
|
magnitude to the confidence that a given bit is correct.
|
||||||
And indeed, the magnitude of the oscillation of
|
And indeed, the magnitude of the oscillation of
|
||||||
@ -1299,7 +1299,7 @@ The datapoints are taken from a single decoding operation
|
|||||||
Using this observation as a rule to determine the $N\in\mathbb{N}$ most
|
Using this observation as a rule to determine the $N\in\mathbb{N}$ most
|
||||||
probably wrong bits, all variations of the estimate with those bits modified
|
probably wrong bits, all variations of the estimate with those bits modified
|
||||||
can be generated.
|
can be generated.
|
||||||
An \ac{ML}-in-the-List step can then be performed in order to determine the
|
An \ac{ML}-in-the-List step can then be performed to determine the
|
||||||
most likely candidate.
|
most likely candidate.
|
||||||
This process is outlined in algorithm \ref{alg:prox:improved}.
|
This process is outlined in algorithm \ref{alg:prox:improved}.
|
||||||
Its only difference to algorithm \ref{alg:prox} is that instead of returning
|
Its only difference to algorithm \ref{alg:prox} is that instead of returning
|
||||||
@ -1331,14 +1331,14 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_l\text{ with lowest }
|
|||||||
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.
|
when the number $N$ is chosen to be 12.
|
||||||
Again, three values of gamma are chosen, for which the \ac{BER}, \ac{FER}
|
Again, three values of gamma are chosen, for which the \ac{BER}, \ac{FER}
|
||||||
and decoding failure rate is plotted.
|
and decoding failure rate are plotted.
|
||||||
The simulation results for the original proximal decoding algorithm are shown
|
The simulation results for the original proximal decoding algorithm are shown
|
||||||
with solid lines and the results for the improved version are shown with
|
with solid lines and the results for the improved version are shown with
|
||||||
dashed lines.
|
dashed lines.
|
||||||
For the case of $\gamma = 0.05$, the number of frame errors produced for the
|
For the case of $\gamma = 0.05$, the number of frame errors produced for the
|
||||||
datapoints at $\SI{6}{dB}$, $\SI{6.5}{dB}$ and $\SI{7}{dB}$ are
|
datapoints at $\SI{6}{dB}$, $\SI{6.5}{dB}$ and $\SI{7}{dB}$ are
|
||||||
70, 17 and 2, respectively.
|
70, 17 and 2, respectively.
|
||||||
The gain seems to depend on the value of $\gamma$, as well as become more
|
The gain seems to depend on the value of $\gamma$, as well as becoming more
|
||||||
pronounced for higher \ac{SNR} values.
|
pronounced for higher \ac{SNR} values.
|
||||||
This is to be expected, since with higher \ac{SNR} values the number of bit
|
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
|
errors decreases, making the correction of those errors in the ML-in-the-List
|
||||||
@ -1347,12 +1347,12 @@ In figure \ref{fig:prox:improved:comp} the decoding performance
|
|||||||
between proximal decoding and the improved algorithm is compared for a number
|
between proximal decoding and the improved algorithm is compared for a number
|
||||||
of different codes.
|
of different codes.
|
||||||
In the case of the code with $n=504$ shown in figure
|
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
|
\ref{fig:prox:improved:comp:504}, only 76 frame errors were produced to
|
||||||
generate the point for the improved algorithm for $\gamma=0.05$ at
|
generate the point for the improved algorithm for $\gamma=0.05$ at
|
||||||
$\SI{5.5}{dB}$.
|
$\SI{5.5}{dB}$.
|
||||||
Similar behaviour can be observed in all cases, with varying improvement over
|
Similar behavior can be observed in all cases, with varying improvement over
|
||||||
standard proximal decoding.
|
standard proximal decoding.
|
||||||
In some cases, a gain of up to $\SI{1}{dB}$ and higher can be achieved.
|
In some cases, a gain of up to $\SI{1}{dB}$ or higher can be achieved.
|
||||||
|
|
||||||
\begin{figure}[h]
|
\begin{figure}[h]
|
||||||
\centering
|
\centering
|
||||||
@ -1535,6 +1535,6 @@ by appending an ML-in-the-List step when the algorithm does not produce a
|
|||||||
valid result.
|
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}$ and is achievable with
|
||||||
negligible computational performance penalty.
|
negligible computational performance penalty.
|
||||||
The improvement is mainly noticable for higher \ac{SNR} values and depends on
|
The improvement is mainly noticeable for higher \ac{SNR} values and depends on
|
||||||
the code as well as the chosen parameters.
|
the code as well as the chosen parameters.
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user