Compare commits
15 Commits
results/fi
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6990a7877f | ||
| 735b4f62ff | |||
| dd15a2affd | |||
| ca345d7d5b | |||
| 90ee310775 | |||
| 302275cb45 | |||
| 4572cde3e8 | |||
| a58b1dd42d | |||
| 0b12fcb419 | |||
| c088a92b3b | |||
| 0a1cf7745b | |||
| 5c2ffb4aa5 | |||
| 3ba87d5558 | |||
| 7fa0ee80d3 | |||
| 488949c0a9 |
@ -2,14 +2,14 @@
|
||||
|
||||
This repository contains resources related to the Bachelor-Thesis
|
||||
`Application of Optimization Algorithms for Channel Decoding`
|
||||
(the related sofware has it's own [repo](https://git.scc.kit.edu/ba_duo/ba_sw))
|
||||
(the related sofware has it's own [repo](https://gitlab.kit.edu/uhhxt/ba_sw))
|
||||
|
||||
|
||||
## Access compiled documents
|
||||
|
||||
Each document has a corresponding tag, where an already compiled pdf document can be found
|
||||
(See for example
|
||||
[this](https://git.scc.kit.edu/ba_duo/ba_thesis/-/tree/prox_07_12_22/latex/presentations/02_12_2022)
|
||||
[this](https://gitlab.kit.edu/uhhxt/ba_thesis/-/tree/prox_07_12_22/latex/presentations/02_12_2022)
|
||||
tag, for one of the presentations under `latex/presentations`)
|
||||
|
||||
|
||||
|
||||
@ -45,15 +45,6 @@
|
||||
% eprint = {https://doi.org/10.1080/24725854.2018.1550692}
|
||||
}
|
||||
|
||||
@online{mackay_enc,
|
||||
author = {MacKay, David J.C.},
|
||||
title = {Encyclopedia of Sparse Graph Codes},
|
||||
date = {2023-01},
|
||||
url = {http://www.inference.org.uk/mackay/codes/data.html}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{proximal_algorithms,
|
||||
author = {Parikh, Neal and Boyd, Stephen},
|
||||
title = {Proximal Algorithms},
|
||||
@ -219,11 +210,25 @@
|
||||
doi={10.1109/TIT.1962.1057683}
|
||||
}
|
||||
|
||||
@misc{lautern_channelcodes,
|
||||
@online{lautern_channelcodes,
|
||||
author = "Helmling, Michael and Scholl, Stefan and Gensheimer, Florian and Dietz, Tobias and Kraft, Kira and Ruzika, Stefan and Wehn, Norbert",
|
||||
title = "{D}atabase of {C}hannel {C}odes and {ML} {S}imulation {R}esults",
|
||||
howpublished = "\url{www.uni-kl.de/channel-codes}",
|
||||
url={https://www.uni-kl.de/channel-codes},
|
||||
year = "2023"
|
||||
date = {2023-04}
|
||||
}
|
||||
|
||||
@online{mackay_enc,
|
||||
author = {MacKay, David J.C.},
|
||||
title = {Encyclopedia of Sparse Graph Codes},
|
||||
date = {2023-04},
|
||||
url = {http://www.inference.org.uk/mackay/codes/data.html}
|
||||
}
|
||||
|
||||
@article{adam,
|
||||
title={Adam: A method for stochastic optimization},
|
||||
author={Kingma, Diederik P and Ba, Jimmy},
|
||||
journal={arXiv preprint arXiv:1412.6980},
|
||||
year={2014},
|
||||
doi={10.48550/arXiv.1412.6980}
|
||||
}
|
||||
|
||||
|
||||
18
latex/thesis/chapters/acknowledgements.tex
Normal file
18
latex/thesis/chapters/acknowledgements.tex
Normal file
@ -0,0 +1,18 @@
|
||||
\chapter*{Acknowledgements}
|
||||
|
||||
I would like to thank Prof. Dr.-Ing. Laurent Schmalen for granting me the
|
||||
opportunity to write my bachelor's thesis at the Communications Engineering Lab,
|
||||
as well as all other members of the institute for their help and many productive
|
||||
discussions, and for creating a very pleasant environment to do research in.
|
||||
|
||||
I am very grateful to Dr.-Ing. Holger Jäkel
|
||||
for kindly providing me with his knowledge and many suggestions,
|
||||
and for his constructive criticism during the preparation of this work.
|
||||
|
||||
Special thanks also to Mai Anh Vu for her invaluable feedback and support
|
||||
during the entire undertaking that is this thesis.
|
||||
|
||||
Finally, I would like to thank my family, who have enabled me to pursue my
|
||||
studies in a field I thoroughly enjoy and who have supported me completely
|
||||
throughout my journey.
|
||||
|
||||
@ -508,7 +508,7 @@ $\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
legend columns=1,
|
||||
legend pos=outer north east,
|
||||
@ -549,7 +549,7 @@ $\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
legend columns=1,
|
||||
legend pos=outer north east,
|
||||
@ -593,7 +593,7 @@ $\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
legend columns=1,
|
||||
legend pos=outer north east,
|
||||
@ -647,7 +647,7 @@ $\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
legend columns=1,
|
||||
legend pos=outer north east,
|
||||
@ -692,7 +692,7 @@ $\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
legend columns=1,
|
||||
legend pos=outer north east,
|
||||
@ -735,7 +735,7 @@ $\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
legend columns=1,
|
||||
legend pos=outer north east,
|
||||
|
||||
@ -2,14 +2,9 @@
|
||||
\label{chapter:comparison}
|
||||
|
||||
In this chapter, proximal decoding and \ac{LP} Decoding using \ac{ADMM} are compared.
|
||||
First the two algorithms are compared on a theoretical basis.
|
||||
First, the two algorithms are studied on a theoretical basis.
|
||||
Subsequently, their respective simulation results are examined, and their
|
||||
differences are interpreted on the basis of their theoretical structure.
|
||||
|
||||
%some similarities between the proximal decoding algorithm
|
||||
%and \ac{LP} decoding using \ac{ADMM} are be pointed out.
|
||||
%The two algorithms are compared and their different computational and decoding
|
||||
%performance is interpreted on the basis of their theoretical structure.
|
||||
differences are interpreted based on their theoretical structure.
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -18,12 +13,11 @@ differences are interpreted on the basis of their theoretical structure.
|
||||
|
||||
\ac{ADMM} and the proximal gradient method can both be expressed in terms of
|
||||
proximal operators \cite[Sec. 4.4]{proximal_algorithms}.
|
||||
When using \ac{ADMM} as an optimization method to solve the \ac{LP} decoding
|
||||
problem specifically, this is not quite possible because of the multiple
|
||||
constraints.
|
||||
In spite of that, the two algorithms still show some striking similarities.
|
||||
Additionally, the two algorithms show some striking similarities with
|
||||
regard to their general structure and the way in which the minimization of the
|
||||
respective objective functions is accomplished.
|
||||
|
||||
To see the first of these similarities, the \ac{LP} decoding problem in
|
||||
The \ac{LP} decoding problem in
|
||||
equation (\ref{eq:lp:relaxed_formulation}) can be slightly rewritten using the
|
||||
\textit{indicator functions} $g_j : \mathbb{R}^{d_j} \rightarrow
|
||||
\left\{ 0, +\infty \right\} \hspace{1mm}, j\in\mathcal{J}$ for the polytopes
|
||||
@ -38,12 +32,13 @@ $\mathcal{P}_{d_j}, \hspace{1mm} j\in\mathcal{J}$, defined as%
|
||||
%
|
||||
by moving the constraints into the objective function, as shown in figure
|
||||
\ref{fig:ana:theo_comp_alg:admm}.
|
||||
Both algorithms are composed of an iterative approach consisting of two
|
||||
alternating steps.
|
||||
The objective functions of both problems are similar in that they
|
||||
The objective functions of the two problems are similar in that they
|
||||
both comprise two parts: one associated to the likelihood that a given
|
||||
codeword was sent and one associated to the constraints the decoding process
|
||||
is subjected to.
|
||||
codeword was sent, arising from the channel model, and one associated
|
||||
to the constraints the decoding process is subjected to, arising from the
|
||||
code used.
|
||||
Both algorithms are composed of an iterative approach consisting of two
|
||||
alternating steps, each minimizing one part of the objective function.
|
||||
%
|
||||
|
||||
\begin{figure}[h]
|
||||
@ -114,7 +109,7 @@ return $\tilde{\boldsymbol{c}}$
|
||||
\end{subfigure}%
|
||||
|
||||
|
||||
\caption{Comparison of the proximal gradient method and \ac{ADMM}}
|
||||
\caption{Comparison of proximal decoding and \ac{LP} decoding using \ac{ADMM}}
|
||||
\label{fig:ana:theo_comp_alg}
|
||||
\end{figure}%
|
||||
%
|
||||
@ -123,15 +118,11 @@ Their major difference is that while with proximal decoding the constraints
|
||||
are regarded in a global context, considering all parity checks at the same
|
||||
time, with \ac{ADMM} each parity check is
|
||||
considered separately and in a more local context (line 4 in both algorithms).
|
||||
This difference means that while with proximal decoding the alternating
|
||||
minimization of the two parts of the objective function inevitably leads to
|
||||
oscillatory behavior (as explained in section
|
||||
\ref{subsec:prox:conv_properties}), this is not the case with \ac{ADMM}, which
|
||||
partly explains the disparate decoding performance of the two methods.
|
||||
Furthermore, while with proximal decoding the step considering the constraints
|
||||
is realized using gradient descent - amounting to an approximation -
|
||||
with \ac{ADMM} it reduces to a number of projections onto the parity polytopes
|
||||
$\mathcal{P}_{d_j}$ which always provide exact results.
|
||||
$\mathcal{P}_{d_j}, \hspace{1mm} j\in\mathcal{J}$, which always provide exact
|
||||
results.
|
||||
|
||||
The contrasting treatment of the constraints (global and approximate with
|
||||
proximal decoding as opposed to local and exact with \ac{LP} decoding using
|
||||
@ -142,34 +133,27 @@ calculation, whereas with \ac{LP} decoding it occurs due to the approximate
|
||||
formulation of the constraints - independent of the optimization method
|
||||
itself.
|
||||
The advantage which arises because of this when employing \ac{LP} decoding is
|
||||
that it can be easily detected \todo{Not 'easily' detected}, when the algorithm gets stuck - it
|
||||
returns a solution corresponding to a pseudocodeword, the components of which
|
||||
are fractional.
|
||||
Moreover, when a valid codeword is returned, it is also the \ac{ML} codeword.
|
||||
the \ac{ML} certificate property: when a valid codeword is returned, it is
|
||||
also the \ac{ML} codeword.
|
||||
This means that additional redundant parity-checks can be added successively
|
||||
until the codeword returned is valid and thus the \ac{ML} solution is found
|
||||
\cite[Sec. IV.]{alp}.
|
||||
|
||||
In terms of time complexity, the two decoding algorithms are comparable.
|
||||
Each of the operations required for proximal decoding can be performed
|
||||
in linear time for \ac{LDPC} codes (see section \ref{subsec:prox:comp_perf}).
|
||||
The same is true for the $\tilde{\boldsymbol{c}}$- and $\boldsymbol{u}$-update
|
||||
steps of \ac{LP} decoding using \ac{ADMM}, while
|
||||
the projection step has a worst-case time complexity of
|
||||
$\mathcal{O}\left( n^2 \right)$ and an average complexity of
|
||||
$\mathcal{O}\left( n \right)$ (see section TODO, \cite[Sec. VIII.]{lautern}).
|
||||
|
||||
Both algorithms can be understood as message-passing algorithms, \ac{LP}
|
||||
decoding using \ac{ADMM} as similarly to \cite[Sec. III. D.]{original_admm}
|
||||
or \cite[Sec. II. B.]{efficient_lp_dec_admm} and proximal decoding by
|
||||
starting with algorithm \ref{alg:prox},
|
||||
substituting for the gradient of the code-constraint polynomial and separating
|
||||
it into two parts.
|
||||
in $\mathcal{O}\left( n \right) $ time for \ac{LDPC} codes (see section
|
||||
\ref{subsec:prox:comp_perf}).
|
||||
The same is true for \ac{LP} decoding using \ac{ADMM} (see section
|
||||
\ref{subsec:admm:comp_perf}).
|
||||
Additionally, both algorithms can be understood as message-passing algorithms,
|
||||
\ac{LP} decoding using \ac{ADMM} as similarly to
|
||||
\cite[Sec. III. D.]{original_admm} and
|
||||
\cite[Sec. II. B.]{efficient_lp_dec_admm}, and proximal decoding by starting
|
||||
with algorithm \ref{alg:prox}, substituting for the gradient of the
|
||||
code-constraint polynomial and separating the $\boldsymbol{s}$ update into two parts.
|
||||
The algorithms in their message-passing form are depicted in figure
|
||||
\ref{fig:comp:message_passing}.
|
||||
$M_{j\to i}$ denotes a message transmitted from \ac{CN} j to \ac{VN} i.
|
||||
$M_{j\to}$ signifies the special case where a \ac{VN} transmits the same
|
||||
message to all \acp{VN}.
|
||||
%
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
@ -184,14 +168,14 @@ Initialize $\boldsymbol{r}, \boldsymbol{s}, \omega, \gamma$
|
||||
while stopping critierion unfulfilled do
|
||||
for j in $\mathcal{J}$ do
|
||||
$p_j \leftarrow \prod_{i\in N_c\left( j \right) } r_i $
|
||||
$M_{j\to} \leftarrow p_j^2 - p_j$|\Suppressnumber|
|
||||
$M_{j\to i} \leftarrow p_j^2 - p_j$|\Suppressnumber|
|
||||
|\vspace{0.22mm}\Reactivatenumber|
|
||||
end for
|
||||
for i in $\mathcal{I}$ do
|
||||
$s_i \leftarrow s_i + \gamma \left[ 4\left( s_i^2 - 1 \right)s_i
|
||||
\phantom{\frac{4}{s_i}}\right.$|\Suppressnumber|
|
||||
|\Reactivatenumber|$\left.+ \frac{4}{s_i}\sum_{j\in N_v\left( i \right) }
|
||||
M_{j\to} \right] $
|
||||
$s_i\leftarrow \Pi_\eta \left( s_i + \gamma \left( 4\left( s_i^2 - 1 \right)s_i
|
||||
\phantom{\frac{4}{s_i}}\right.\right.$|\Suppressnumber|
|
||||
|\Reactivatenumber|$\left.\left.+ \frac{4}{s_i}\sum_{j\in
|
||||
N_v\left( i \right) } M_{j\to i} \right)\right) $
|
||||
$r_i \leftarrow r_i + \omega \left( s_i - y_i \right)$
|
||||
end for
|
||||
end while
|
||||
@ -232,20 +216,14 @@ return $\tilde{\boldsymbol{c}}$
|
||||
\end{subfigure}%
|
||||
|
||||
|
||||
\caption{The proximal gradient method and \ac{LP} decoding using \ac{ADMM}
|
||||
\caption{Proximal decoding and \ac{LP} decoding using \ac{ADMM}
|
||||
as message passing algorithms}
|
||||
\label{fig:comp:message_passing}
|
||||
\end{figure}%
|
||||
%
|
||||
It is evident that while the two algorithms are very similar in their general
|
||||
structure, with \ac{LP} decoding using \ac{ADMM}, multiple messages have to be
|
||||
computed for each check node (line 6 in figure
|
||||
\ref{fig:comp:message_passing:admm}), whereas
|
||||
with proximal decoding, the same message is transmitted to all \acp{VN}
|
||||
(line 5 of figure \ref{fig:comp:message_passing:proximal}).
|
||||
This means that while both algorithms have an average time complexity of
|
||||
$\mathcal{O}\left( n \right)$, more arithmetic operations are required in the
|
||||
\ac{ADMM} case.
|
||||
This message passing structure means that both algorithms can be implemented
|
||||
very efficiently, as the update steps can be performed in parallel for all
|
||||
\acp{CN} and for all \acp{VN}, respectively.
|
||||
|
||||
In conclusion, the two algorithms have a very similar structure, where the
|
||||
parts of the objective function relating to the likelihood and to the
|
||||
@ -253,9 +231,8 @@ constraints are minimized in an alternating fashion.
|
||||
With proximal decoding this minimization is performed for all constraints at once
|
||||
in an approximative manner, while with \ac{LP} decoding using \ac{ADMM} it is
|
||||
performed for each constraint individually and with exact results.
|
||||
In terms of time complexity, both algorithms are, on average, linear with
|
||||
respect to $n$, although for \ac{LP} decoding using \ac{ADMM} significantly
|
||||
more arithmetic operations are necessary in each iteration.
|
||||
In terms of time complexity, both algorithms are linear with
|
||||
respect to $n$ and are heavily parallelizable.
|
||||
|
||||
|
||||
|
||||
@ -263,24 +240,100 @@ more arithmetic operations are necessary in each iteration.
|
||||
\section{Comparison of Simulation Results}%
|
||||
\label{sec:comp:res}
|
||||
|
||||
\begin{itemize}
|
||||
\item The comparison of actual implementations is always debatable /
|
||||
contentious, since it is difficult to separate differences in
|
||||
algorithm performance from differences in implementation
|
||||
\item No large difference in computational performance $\rightarrow$
|
||||
Parallelism cannot come to fruition as decoding is performed on the
|
||||
same number of cores for both algorithms (Multiple decodings in parallel)
|
||||
\item Nonetheless, in realtime applications / applications where the focus
|
||||
is not the mass decoding of raw data, \ac{ADMM} has advantages, since
|
||||
the decoding of a single codeword is performed faster
|
||||
\item \ac{ADMM} faster than proximal decoding $\rightarrow$
|
||||
Parallelism
|
||||
\item Proximal decoding faster than \ac{ADMM} $\rightarrow$ dafuq
|
||||
(larger number of iterations before convergence? More values to compute for ADMM?)
|
||||
\end{itemize}
|
||||
The decoding performance of the two algorithms is compared in figure
|
||||
\ref{fig:comp:prox_admm_dec} in form of the \ac{FER}.
|
||||
Shown as well is the performance of the improved proximal decoding
|
||||
algorithm presented in section \ref{sec:prox:Improved Implementation}.
|
||||
The \ac{FER} resulting from decoding using \ac{BP} and,
|
||||
wherever available, the \ac{FER} of \ac{ML} decoding, taken from
|
||||
\cite{lautern_channelcodes}, are plotted as a reference.
|
||||
The parameters chosen for the proximal and improved proximal decoders are
|
||||
$\gamma=0.05$, $\omega=0.05$, $K=200$, $\eta = 1.5$ and $N=12$.
|
||||
The parameters chosen for \ac{LP} decoding using \ac{ADMM} are $\mu = 5$,
|
||||
$\rho = 1$, $K=200$, $\epsilon_\text{pri} = 10^{-5}$ and
|
||||
$\epsilon_\text{dual} = 10^{-5}$.
|
||||
For all codes considered within the scope of this work, \ac{LP} decoding using
|
||||
\ac{ADMM} consistently outperforms both proximal decoding and the improved
|
||||
version, reaching very similar performance to \ac{BP}.
|
||||
The decoding gain heavily depends on the code, evidently becoming greater for
|
||||
codes with larger $n$ and reaching values of up to $\SI{2}{dB}$.
|
||||
|
||||
These simulation results can be interpreted with regard to the theoretical
|
||||
structure of the decoding methods, as analyzed in section \ref{sec:comp:theo}.
|
||||
The worse performance of proximal decoding is somewhat surprising, considering
|
||||
the global treatment of the constraints in contrast to the local treatment
|
||||
in the case of \ac{LP} decoding using \ac{ADMM}.
|
||||
It may be explained, however, in the context of the nature of the
|
||||
calculations performed in each case.
|
||||
With proximal decoding, the calculations are approximate, leading
|
||||
to the constraints never being quite satisfied.
|
||||
With \ac{LP} decoding using \ac{ADMM},
|
||||
the constraints are fulfilled for each parity check individually after each
|
||||
iteration of the decoding process.
|
||||
A further contributing factor might be the structure of the optimization
|
||||
process, as the alternating minimization with respect to the same variable
|
||||
leads to oscillatory behavior, as explained in section
|
||||
\ref{subsec:prox:conv_properties}.
|
||||
It should be noted that while in this thesis proximal decoding was
|
||||
examined with respect to its performance in \ac{AWGN} channels, in
|
||||
\cite{proximal_paper} it is presented as a method applicable to non-trivial
|
||||
channel models such as \ac{LDPC}-coded massive \ac{MIMO} channels, perhaps
|
||||
broadening its usefulness beyond what is shown here.
|
||||
|
||||
\begin{figure}[H]
|
||||
The timing requirements of the decoding algorithms are visualized in figure
|
||||
\ref{fig:comp:time}.
|
||||
The datapoints have been generated by evaluating the metadata from \ac{FER}
|
||||
and \ac{BER} simulations and using the parameters mentioned earlier when
|
||||
discussing the decoding performance.
|
||||
The codes considered are the same as in sections \ref{subsec:prox:comp_perf}
|
||||
and \ref{subsec:admm:comp_perf}.
|
||||
While the \ac{ADMM} implementation seems to be faster than the proximal
|
||||
decoding and improved proximal decoding implementations, inferring some
|
||||
general behavior is difficult in this case.
|
||||
This is because of the comparison of actual implementations, making the
|
||||
results dependent on factors such as the grade of optimization of each of the
|
||||
implementations.
|
||||
Nevertheless, the run time of both the proximal decoding and the \ac{LP}
|
||||
decoding using \ac{ADMM} implementations is similar, and both are
|
||||
reasonably performant, owing to the parallelizable structure of the
|
||||
algorithms.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[grid=both,
|
||||
xlabel={$n$}, ylabel={Time per frame (ms)},
|
||||
width=0.6\textwidth,
|
||||
height=0.45\textwidth,
|
||||
legend style={at={(0.5,-0.52)},anchor=south},
|
||||
legend cell align={left},]
|
||||
\addplot[RedOrange, only marks, mark=square*]
|
||||
table [col sep=comma, x=n, y=spf,
|
||||
y expr=\thisrow{spf} * 1000]
|
||||
{res/proximal/fps_vs_n.csv};
|
||||
\addlegendentry{Proximal decoding}
|
||||
|
||||
\addplot[Gray, only marks, mark=*]
|
||||
table [col sep=comma, x=n, y=spf,
|
||||
y expr=\thisrow{spf} * 1000]
|
||||
{res/hybrid/fps_vs_n.csv};
|
||||
\addlegendentry{Improved proximal decoding ($N=12$)}
|
||||
|
||||
\addplot[NavyBlue, only marks, mark=triangle*]
|
||||
table [col sep=comma, x=n, y=spf,
|
||||
y expr=\thisrow{spf} * 1000]
|
||||
{res/admm/fps_vs_n.csv};
|
||||
\addlegendentry{\acs{LP} decoding using \acs{ADMM}}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\caption{Comparison of the timing requirements of the different decoder implementations}
|
||||
\label{fig:comp:time}
|
||||
\end{figure}%
|
||||
%
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
|
||||
\begin{subfigure}[t]{0.48\textwidth}
|
||||
@ -289,7 +342,7 @@ more arithmetic operations are necessary in each iteration.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
ymax=1.5, ymin=8e-5,
|
||||
width=\textwidth,
|
||||
@ -299,13 +352,19 @@ more arithmetic operations are necessary in each iteration.
|
||||
\addplot[RedOrange, line width=1pt, mark=*, solid]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
{res/proximal/2d_ber_fer_dfr_963965.csv};
|
||||
\addplot[NavyBlue, line width=1pt, mark=triangle, densely dashed]
|
||||
\addplot[RedOrange, line width=1pt, mark=triangle, densely dashed]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
{res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
\addplot[Turquoise, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
%{res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
{res/admm/ber_2d_963965.csv};
|
||||
\addplot[PineGreen, line width=1pt, mark=triangle]
|
||||
\addplot[Black, line width=1pt, mark=*]
|
||||
table [col sep=comma, x=SNR, y=FER,]
|
||||
{res/generic/fer_ml_9633965.csv};
|
||||
\addplot [RoyalPurple, mark=*, line width=1pt]
|
||||
table [x=SNR, y=FER, col sep=comma]
|
||||
{res/generic/bp_963965.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -319,7 +378,7 @@ more arithmetic operations are necessary in each iteration.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
ymax=1.5, ymin=8e-5,
|
||||
width=\textwidth,
|
||||
@ -329,15 +388,20 @@ more arithmetic operations are necessary in each iteration.
|
||||
\addplot[RedOrange, line width=1pt, 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[NavyBlue, line width=1pt, mark=triangle, densely dashed]
|
||||
\addplot[RedOrange, line width=1pt, 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};
|
||||
\addplot[Turquoise, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
{res/admm/ber_2d_bch_31_26.csv};
|
||||
\addplot[PineGreen, line width=1pt, mark=triangle*]
|
||||
\addplot[Black, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma,
|
||||
discard if gt={SNR}{5.5},
|
||||
discard if lt={SNR}{1},
|
||||
]
|
||||
discard if lt={SNR}{1},]
|
||||
{res/generic/fer_ml_bch_31_26.csv};
|
||||
\addplot [RoyalPurple, mark=*, line width=1pt]
|
||||
table [x=SNR, y=FER, col sep=comma]
|
||||
{res/generic/bp_bch_31_26.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -352,7 +416,7 @@ more arithmetic operations are necessary in each iteration.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
ymax=1.5, ymin=8e-5,
|
||||
width=\textwidth,
|
||||
@ -364,15 +428,22 @@ more arithmetic operations are necessary in each iteration.
|
||||
discard if not={gamma}{0.05},
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/proximal/2d_ber_fer_dfr_20433484.csv};
|
||||
\addplot[NavyBlue, line width=1pt, mark=triangle, densely dashed]
|
||||
\addplot[RedOrange, line width=1pt, mark=triangle, densely dashed]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05},
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
|
||||
\addplot[Turquoise, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma,
|
||||
discard if not={mu}{3.0},
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/admm/ber_2d_20433484.csv};
|
||||
\addplot[PineGreen, line width=1pt, mark=triangle, solid]
|
||||
\addplot[Black, line width=1pt, mark=*]
|
||||
table [col sep=comma, x=SNR, y=FER,
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/generic/fer_ml_20433484.csv};
|
||||
\addplot [RoyalPurple, mark=*, line width=1pt]
|
||||
table [x=SNR, y=FER, col sep=comma]
|
||||
{res/generic/bp_20433484.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -386,7 +457,7 @@ more arithmetic operations are necessary in each iteration.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
ymax=1.5, ymin=8e-5,
|
||||
width=\textwidth,
|
||||
@ -396,9 +467,16 @@ more arithmetic operations are necessary in each iteration.
|
||||
\addplot[RedOrange, line width=1pt, mark=*, solid]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
{res/proximal/2d_ber_fer_dfr_20455187.csv};
|
||||
\addplot[NavyBlue, line width=1pt, mark=triangle, densely dashed]
|
||||
\addplot[RedOrange, line width=1pt, 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};
|
||||
\addplot[Turquoise, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
{res/admm/ber_2d_20455187.csv};
|
||||
\addplot [RoyalPurple, mark=*, line width=1pt,
|
||||
discard if gt={SNR}{5}]
|
||||
table [x=SNR, y=FER, col sep=comma]
|
||||
{res/generic/bp_20455187.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -414,7 +492,7 @@ more arithmetic operations are necessary in each iteration.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
ymax=1.5, ymin=8e-5,
|
||||
width=\textwidth,
|
||||
@ -424,9 +502,16 @@ more arithmetic operations are necessary in each iteration.
|
||||
\addplot[RedOrange, line width=1pt, 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[NavyBlue, line width=1pt, mark=triangle, densely dashed]
|
||||
\addplot[RedOrange, line width=1pt, 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};
|
||||
\addplot[Turquoise, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
{res/admm/ber_2d_40833844.csv};
|
||||
\addplot [RoyalPurple, mark=*, line width=1pt,
|
||||
discard if gt={SNR}{3}]
|
||||
table [x=SNR, y=FER, col sep=comma]
|
||||
{res/generic/bp_40833844.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -440,7 +525,7 @@ more arithmetic operations are necessary in each iteration.
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={FER},
|
||||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||||
ymode=log,
|
||||
ymax=1.5, ymin=8e-5,
|
||||
width=\textwidth,
|
||||
@ -450,9 +535,16 @@ more arithmetic operations are necessary in each iteration.
|
||||
\addplot[RedOrange, line width=1pt, mark=*, solid]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
{res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
|
||||
\addplot[NavyBlue, line width=1pt, mark=triangle, densely dashed]
|
||||
\addplot[RedOrange, line width=1pt, mark=triangle, densely dashed]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
{res/hybrid/2d_ber_fer_dfr_pegreg252x504.csv};
|
||||
\addplot[Turquoise, line width=1pt, mark=*]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
{res/admm/ber_2d_pegreg252x504.csv};
|
||||
\addplot [RoyalPurple, mark=*, line width=1pt]
|
||||
table [x=SNR, y=FER, col sep=comma,
|
||||
discard if gt={SNR}{3}]
|
||||
{res/generic/bp_pegreg252x504.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -470,50 +562,28 @@ more arithmetic operations are necessary in each iteration.
|
||||
xmin=10, xmax=50,
|
||||
ymin=0, ymax=0.4,
|
||||
legend columns=1,
|
||||
legend cell align={left},
|
||||
legend style={draw=white!15!black}]
|
||||
\addlegendimage{RedOrange, line width=1pt, mark=*, solid}
|
||||
\addlegendentry{Proximal decoding}
|
||||
|
||||
\addlegendimage{NavyBlue, line width=1pt, mark=triangle, densely dashed}
|
||||
\addlegendimage{RedOrange, line width=1pt, mark=triangle, densely dashed}
|
||||
\addlegendentry{Improved proximal decoding}
|
||||
|
||||
\addlegendimage{Turquoise, line width=1pt, mark=*}
|
||||
\addlegendentry{\acs{LP} decoding using \acs{ADMM}}
|
||||
|
||||
\addlegendimage{PineGreen, line width=1pt, mark=triangle*, solid}
|
||||
\addlegendimage{RoyalPurple, line width=1pt, mark=*, solid}
|
||||
\addlegendentry{\acs{BP} (200 iterations)}
|
||||
|
||||
\addlegendimage{Black, line width=1pt, mark=*, solid}
|
||||
\addlegendentry{\acs{ML} decoding}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
\end{subfigure}
|
||||
|
||||
\caption{Comparison of decoding performance between proximal decoding and \ac{LP} decoding
|
||||
using \ac{ADMM}}
|
||||
\caption{Comparison of the decoding performance of the different decoder
|
||||
implementations for various codes}
|
||||
\label{fig:comp:prox_admm_dec}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[grid=both,
|
||||
xlabel={$n$}, ylabel={Time per frame (s)},
|
||||
width=0.6\textwidth,
|
||||
height=0.45\textwidth,
|
||||
legend style={at={(0.5,-0.42)},anchor=south},
|
||||
legend cell align={left},]
|
||||
|
||||
\addplot[RedOrange, only marks, mark=*]
|
||||
table [col sep=comma, x=n, y=spf]
|
||||
{res/proximal/fps_vs_n.csv};
|
||||
\addlegendentry{Proximal decoding}
|
||||
\addplot[PineGreen, only marks, mark=triangle*]
|
||||
table [col sep=comma, x=n, y=spf]
|
||||
{res/admm/fps_vs_n.csv};
|
||||
\addlegendentry{\acs{LP} decoding using \acs{ADMM}}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\caption{Timing requirements of the proximal decoding imlementation%
|
||||
\protect\footnotemark{}}
|
||||
\label{fig:comp:time}
|
||||
\end{figure}%
|
||||
%
|
||||
\footnotetext{asdf}
|
||||
%
|
||||
|
||||
@ -1,8 +1,61 @@
|
||||
\chapter{Conclusion}%
|
||||
\chapter{Conclusion and Outlook}%
|
||||
\label{chapter:conclusion}
|
||||
|
||||
\begin{itemize}
|
||||
\item Summary of results
|
||||
\item Future work
|
||||
\end{itemize}
|
||||
In the context of this thesis, two decoding algorithms were considered:
|
||||
proximal decoding and \ac{LP} decoding using \ac{ADMM}.
|
||||
The two algorithms were first analyzed individually, before comparing them
|
||||
based on simulation results as well as on their theoretical structure.
|
||||
|
||||
For proximal decoding, the effect of each parameter on the behavior of the
|
||||
decoder was examined, leading to an approach to optimally choose the value
|
||||
of each parameter.
|
||||
The convergence properties of the algorithm were investigated in the context
|
||||
of the relatively high decoding failure rate, to derive an approach to correct
|
||||
possibly wrong components of the estimate.
|
||||
Based on this approach, an improvement of proximal decoding was suggested,
|
||||
leading to a decoding gain of up to $\SI{1}{dB}$, depending on the code and
|
||||
the parameters considered.
|
||||
|
||||
For \ac{LP} decoding using \ac{ADMM}, the circumstances brought about by the
|
||||
\ac{LP} relaxation were first explored.
|
||||
The decomposable nature arising from the relocation of the constraints into
|
||||
the objective function itself was recognized as the major driver in enabling
|
||||
an efficient implementation of the decoding algorithm.
|
||||
Based on simulation results, general guidelines for choosing each parameter
|
||||
were derived.
|
||||
The decoding performance, in form of the \ac{FER}, of the algorithm was
|
||||
analyzed, observing that \ac{LP} decoding using \ac{ADMM} nearly reaches that
|
||||
of \ac{BP}, staying within approximately $\SI{0.5}{dB}$ depending on the code
|
||||
in question.
|
||||
|
||||
Finally, strong parallels were discovered with regard to the theoretical
|
||||
structure of the two algorithms, both in the constitution of their respective
|
||||
objective functions as well as in the iterative approaches used to minimize them.
|
||||
One difference noted was the approximate nature of the minimization in the
|
||||
case of proximal decoding, leading to the constraints never being truly
|
||||
satisfied.
|
||||
In conjunction with the alternating minimization with respect to the same
|
||||
variable, leading to oscillatory behavior, this was identified as
|
||||
a possible cause of its comparatively worse decoding performance.
|
||||
Furthermore, both algorithms were expressed as message passing algorithms,
|
||||
illustrating their similar computational performance.
|
||||
|
||||
While the modified proximal decoding algorithm presented in section
|
||||
\ref{sec:prox:Improved Implementation} shows some promising results, further
|
||||
investigation is required to determine how different choices of parameters
|
||||
affect the decoding performance.
|
||||
Additionally, a more mathematically rigorous foundation for determining the
|
||||
potentially wrong components of the estimate is desirable.
|
||||
A different method to improve proximal decoding might be to use
|
||||
moment-based optimization techniques such as \textit{Adam} \cite{adam}
|
||||
to try to mitigate the effect of local minima introduced in the objective
|
||||
function as well as the adversarial structure of the minimization when employing
|
||||
proximal decoding.
|
||||
|
||||
Another area benefiting from future work is the expansion of the \ac{ADMM}
|
||||
based \ac{LP} decoder into a decoder approximating \ac{ML} performance,
|
||||
using \textit{adaptive \ac{LP} decoding}.
|
||||
With this method, the successive addition of redundant parity checks is used
|
||||
to mitigate the decoder becoming stuck in erroneous solutions introduced due
|
||||
the relaxation of the constraints of the \ac{LP} decoding problem \cite{alp}.
|
||||
|
||||
|
||||
@ -33,13 +33,6 @@ examined with respect to its performance in \ac{AWGN} channels, in
|
||||
channel models such as \ac{LDPC}-coded massive \ac{MIMO} channels, perhaps
|
||||
broadening its usefulness beyond what is shown here.
|
||||
|
||||
While the modified proximal decoding algorithm presented in section
|
||||
\ref{sec:prox:Improved Implementation} shows some promising results, further
|
||||
investigation is required to determine how different choices of parameters
|
||||
affect the decoding performance.
|
||||
Additionally, a more mathematically rigorous foundation for determining the
|
||||
potentially wrong components of the estimate is desirable.
|
||||
|
||||
Another interesting approach might be the combination of proximal and \ac{LP}
|
||||
decoding.
|
||||
Performing an initial number of iterations using proximal decoding to obtain
|
||||
|
||||
@ -1,16 +1,51 @@
|
||||
\chapter{Introduction}%
|
||||
\label{chapter:introduction}
|
||||
|
||||
Channel coding using binary linear codes is a way of enhancing the reliability
|
||||
of data by detecting and correcting any errors that may occur during
|
||||
its transmission or storage.
|
||||
One class of binary linear codes, \ac{LDPC} codes, has become especially
|
||||
popular due to being able to reach arbitrarily small probabilities of error
|
||||
at code rates up to the capacity of the channel \cite[Sec. II.B.]{mackay_rediscovery},
|
||||
while retaining a structure that allows for very efficient decoding.
|
||||
While the established decoders for \ac{LDPC} codes, such as \ac{BP} and the
|
||||
\textit{min-sum algorithm}, offer good decoding performance, they are suboptimal
|
||||
in most cases and exhibit an \textit{error floor} for high \acp{SNR}
|
||||
\cite[Sec. 15.3]{ryan_lin_2009}, making them unsuitable for applications
|
||||
with extreme reliability requirements.
|
||||
|
||||
\begin{itemize}
|
||||
\item Problem definition
|
||||
\item Motivation
|
||||
\begin{itemize}
|
||||
\item Error floor when decoding with BP (seems to not be persent with LP decoding
|
||||
\cite[Sec. I]{original_admm})
|
||||
\item Strong theoretical guarantees that allow for better and better approximations
|
||||
of ML decoding \cite[Sec. I]{original_admm}
|
||||
\end{itemize}
|
||||
\item Results summary
|
||||
\end{itemize}
|
||||
Optimization based decoding algorithms are an entirely different way of approaching
|
||||
the decoding problem.
|
||||
The first introduction of optimization techniques as a way of decoding binary
|
||||
linear codes was conducted in Feldman's 2003 Ph.D. thesis and a subsequent paper,
|
||||
establishing the field of \ac{LP} decoding \cite{feldman_thesis}, \cite{feldman_paper}.
|
||||
There, the \ac{ML} decoding problem is approximated by a \textit{linear program}, i.e.,
|
||||
a linear, convex optimization problem, which can subsequently be solved using
|
||||
several different algorithms \cite{alp}, \cite{interior_point},
|
||||
\cite{original_admm}, \cite{pdd}.
|
||||
More recently, novel approaches such as \textit{proximal decoding} have been
|
||||
introduced. Proximal decoding is based on a non-convex optimization formulation
|
||||
of the \ac{MAP} decoding problem \cite{proximal_paper}.
|
||||
|
||||
The motivation behind applying optimization methods to channel decoding is to
|
||||
utilize existing techniques in the broad field of optimization theory, as well
|
||||
as to find new decoding methods not suffering from the same disadvantages as
|
||||
existing message passing based approaches or exhibiting other desirable properties.
|
||||
\Ac{LP} decoding, for example, comes with strong theoretical guarantees
|
||||
allowing it to be used as a way of closely approximating \ac{ML} decoding
|
||||
\cite[Sec. I]{original_admm},
|
||||
and proximal decoding is applicable to non-trivial channel models such
|
||||
as \ac{LDPC}-coded massive \ac{MIMO} channels \cite{proximal_paper}.
|
||||
|
||||
This thesis aims to further the analysis of optimization based decoding
|
||||
algorithms as well as to verify and complement the considerations present in
|
||||
the existing literature.
|
||||
Specifically, the proximal decoding algorithm and \ac{LP} decoding using
|
||||
the \ac{ADMM} \cite{original_admm} are explored within the context of
|
||||
\ac{BPSK} modulated \ac{AWGN} channels.
|
||||
Implementations of both decoding methods are produced, and based on simulation
|
||||
results from those implementations the algorithms are examined and compared.
|
||||
Approaches to determine the optimal value of each parameter are derived and
|
||||
the computational and decoding performance of the algorithms is examined.
|
||||
An improvement on proximal decoding is suggested, achieving up to 1 dB of gain,
|
||||
depending on the parameters chosen and the code considered.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,13 +1,13 @@
|
||||
\chapter{Theoretical Background}%
|
||||
\label{chapter:theoretical_background}
|
||||
|
||||
In this chapter, the theoretical background necessary to understand this
|
||||
work is given.
|
||||
In this chapter, the theoretical background necessary to understand the
|
||||
decoding algorithms examined in this work is given.
|
||||
First, the notation used is clarified.
|
||||
The physical aspects are detailed - the used modulation scheme and channel model.
|
||||
The physical layer is detailed - the used modulation scheme and channel model.
|
||||
A short introduction to channel coding with binary linear codes and especially
|
||||
\ac{LDPC} codes is given.
|
||||
The established methods of decoding LPDC codes are briefly explained.
|
||||
The established methods of decoding \ac{LDPC} codes are briefly explained.
|
||||
Lastly, the general process of decoding using optimization techniques is described
|
||||
and an overview of the utilized optimization methods is given.
|
||||
|
||||
@ -31,7 +31,7 @@ Additionally, a shorthand notation will be used, denoting a set of indices as%
|
||||
\hspace{5mm} m < n, \hspace{2mm} m,n\in\mathbb{Z}
|
||||
.\end{align*}
|
||||
%
|
||||
In order to designate elemen-twise operations, in particular the \textit{Hadamard product}
|
||||
In order to designate element-wise operations, in particular the \textit{Hadamard product}
|
||||
and the \textit{Hadamard power}, the operator $\circ$ will be used:%
|
||||
%
|
||||
\begin{alignat*}{3}
|
||||
@ -45,7 +45,7 @@ and the \textit{Hadamard power}, the operator $\circ$ will be used:%
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Preliminaries: Channel Model and Modulation}
|
||||
\section{Channel Model and Modulation}
|
||||
\label{sec:theo:Preliminaries: Channel Model and Modulation}
|
||||
|
||||
In order to transmit a bit-word $\boldsymbol{c} \in \mathbb{F}_2^n$ of length
|
||||
@ -82,7 +82,7 @@ conducting this process, whereby \textit{data words} are mapped onto longer
|
||||
\textit{codewords}, which carry redundant information.
|
||||
\Ac{LDPC} codes have become especially popular, since they are able to
|
||||
reach arbitrarily small probabilities of error at code rates up to the capacity
|
||||
of the channel \cite[Sec. II.B.]{mackay_rediscovery} while having a structure
|
||||
of the channel \cite[Sec. II.B.]{mackay_rediscovery}, while having a structure
|
||||
that allows for very efficient decoding.
|
||||
|
||||
The lengths of the data words and codewords are denoted by $k\in\mathbb{N}$
|
||||
@ -97,7 +97,7 @@ the number of parity-checks:%
|
||||
\boldsymbol{H}\boldsymbol{c}^\text{T} = \boldsymbol{0} \right\}
|
||||
.\end{align*}
|
||||
%
|
||||
A data word $\boldsymbol{u} \in \mathbb{F}_2^k$ can be mapped onto a codword
|
||||
A data word $\boldsymbol{u} \in \mathbb{F}_2^k$ can be mapped onto a codeword
|
||||
$\boldsymbol{c} \in \mathbb{F}_2^n$ using the \textit{generator matrix}
|
||||
$\boldsymbol{G} \in \mathbb{F}_2^{k\times n}$:%
|
||||
%
|
||||
@ -179,9 +179,9 @@ codewords:
|
||||
&= \argmax_{c\in\mathcal{C}} \frac{f_{\boldsymbol{Y} \mid \boldsymbol{C}}
|
||||
\left( \boldsymbol{y} \mid \boldsymbol{c} \right) p_{\boldsymbol{C}}
|
||||
\left( \boldsymbol{c} \right)}{f_{\boldsymbol{Y}}\left( \boldsymbol{y} \right) } \\
|
||||
&= \argmax_{c\in\mathcal{C}} f_{\boldsymbol{Y} \mid \boldsymbol{C}}
|
||||
\left( \boldsymbol{y} \mid \boldsymbol{c} \right) p_{\boldsymbol{C}}
|
||||
\left( \boldsymbol{c} \right) \\
|
||||
% &= \argmax_{c\in\mathcal{C}} f_{\boldsymbol{Y} \mid \boldsymbol{C}}
|
||||
% \left( \boldsymbol{y} \mid \boldsymbol{c} \right) p_{\boldsymbol{C}}
|
||||
% \left( \boldsymbol{c} \right) \\
|
||||
&= \argmax_{c\in\mathcal{C}}f_{\boldsymbol{Y} \mid \boldsymbol{C}}
|
||||
\left( \boldsymbol{y} \mid \boldsymbol{c} \right)
|
||||
.\end{align*}
|
||||
@ -204,7 +204,7 @@ Each row of $\boldsymbol{H}$, which represents one parity-check, is viewed as a
|
||||
Each component of the codeword $\boldsymbol{c}$ is interpreted as a \ac{VN}.
|
||||
The relationship between \acp{CN} and \acp{VN} can then be plotted by noting
|
||||
which components of $\boldsymbol{c}$ are considered for which parity-check.
|
||||
Figure \ref{fig:theo:tanner_graph} shows the tanner graph for the
|
||||
Figure \ref{fig:theo:tanner_graph} shows the Tanner graph for the
|
||||
(7,4) Hamming code, which has the following parity-check matrix
|
||||
\cite[Example 5.7.]{ryan_lin_2009}:%
|
||||
%
|
||||
@ -263,7 +263,7 @@ Figure \ref{fig:theo:tanner_graph} shows the tanner graph for the
|
||||
\draw (cn3) -- (c7);
|
||||
\end{tikzpicture}
|
||||
|
||||
\caption{Tanner graph for the (7,4)-Hamming-code}
|
||||
\caption{Tanner graph for the (7,4) Hamming code}
|
||||
\label{fig:theo:tanner_graph}
|
||||
\end{figure}%
|
||||
%
|
||||
@ -285,15 +285,16 @@ Message passing algorithms are based on the notion of passing messages between
|
||||
\acp{CN} and \acp{VN}.
|
||||
\Ac{BP} is one such algorithm that is commonly used to decode \ac{LDPC} codes.
|
||||
It aims to compute the posterior probabilities
|
||||
$p_{C_i \mid \boldsymbol{Y}}\left(c_i = 1 | \boldsymbol{y} \right),\hspace{2mm} i\in\mathcal{I}$
|
||||
\cite[Sec. III.]{mackay_rediscovery} and use them to calculate the estimate $\hat{\boldsymbol{c}}$.
|
||||
$p_{C_i \mid \boldsymbol{Y}}\left(c_i = 1 | \boldsymbol{y} \right),\hspace{2mm} i\in\mathcal{I}$,
|
||||
see \cite[Sec. III.]{mackay_rediscovery} and use them to calculate the estimate
|
||||
$\hat{\boldsymbol{c}}$.
|
||||
For cycle-free graphs this goal is reached after a finite
|
||||
number of steps and \ac{BP} is equivalent to \ac{MAP} decoding.
|
||||
When the graph contains cycles, however, \ac{BP} only approximates the probabilities
|
||||
When the graph contains cycles, however, \ac{BP} only approximates the \ac{MAP} probabilities
|
||||
and is sub-optimal.
|
||||
This leads to generally worse performance than \ac{MAP} decoding for practical codes.
|
||||
Additionally, an \textit{error floor} appears for very high \acp{SNR}, making
|
||||
the use of \ac{BP} impractical for applications where a very low \ac{BER} is
|
||||
the use of \ac{BP} impractical for applications where a very low error rate is
|
||||
desired \cite[Sec. 15.3]{ryan_lin_2009}.
|
||||
Another popular decoding method for \ac{LDPC} codes is the
|
||||
\textit{min-sum algorithm}.
|
||||
@ -341,7 +342,7 @@ In contrast to the established message-passing decoding algorithms,
|
||||
the perspective then changes from observing the decoding process in its
|
||||
Tanner graph representation with \acp{VN} and \acp{CN} (as shown in figure \ref{fig:dec:tanner})
|
||||
to a spatial representation (figure \ref{fig:dec:spatial}),
|
||||
where the codewords are some of the edges of a hypercube.
|
||||
where the codewords are some of the vertices of a hypercube.
|
||||
The goal is to find the point $\tilde{\boldsymbol{c}}$,
|
||||
which minimizes the objective function $g$.
|
||||
|
||||
@ -457,29 +458,38 @@ which minimizes the objective function $g$.
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{An introduction to the proximal gradient method and ADMM}
|
||||
\section{A Short Introduction to the Proximal Gradient Method and ADMM}
|
||||
\label{sec:theo:Optimization Methods}
|
||||
|
||||
In this section, the general ideas behind the optimization methods used in
|
||||
this work are outlined.
|
||||
The application of these optimization methods to channel decoding decoding
|
||||
will be discussed in later chapters.
|
||||
Two methods are introduced, the \textit{proximal gradient method} and
|
||||
\ac{ADMM}.
|
||||
|
||||
\textit{Proximal algorithms} are algorithms for solving convex optimization
|
||||
problems, that rely on the use of \textit{proximal operators}.
|
||||
problems that rely on the use of \textit{proximal operators}.
|
||||
The proximal operator $\textbf{prox}_{\lambda f} : \mathbb{R}^n \rightarrow \mathbb{R}^n$
|
||||
of a function $f:\mathbb{R}^n \rightarrow \mathbb{R}$ is defined by
|
||||
\cite[Sec. 1.1]{proximal_algorithms}%
|
||||
%
|
||||
\begin{align*}
|
||||
\textbf{prox}_{\lambda f}\left( \boldsymbol{v} \right) = \argmin_{\boldsymbol{x}} \left(
|
||||
f\left( \boldsymbol{x} \right) + \frac{1}{2\lambda}\lVert \boldsymbol{x}
|
||||
- \boldsymbol{v} \rVert_2^2 \right)
|
||||
\textbf{prox}_{\lambda f}\left( \boldsymbol{v} \right)
|
||||
= \argmin_{\boldsymbol{x} \in \mathbb{R}^n} \left(
|
||||
f\left( \boldsymbol{x} \right) + \frac{1}{2\lambda}\lVert \boldsymbol{x}
|
||||
- \boldsymbol{v} \rVert_2^2 \right)
|
||||
.\end{align*}
|
||||
%
|
||||
This operator computes a point that is a compromise between minimizing $f$
|
||||
and staying in the proximity of $\boldsymbol{v}$.
|
||||
The parameter $\lambda$ determines how heavily each term is weighed.
|
||||
The \textit{proximal gradient method} is an iterative optimization method
|
||||
The parameter $\lambda$ determines how each term is weighed.
|
||||
The proximal gradient method is an iterative optimization method
|
||||
utilizing proximal operators, used to solve problems of the form%
|
||||
%
|
||||
\begin{align*}
|
||||
\text{minimize}\hspace{5mm}f\left( \boldsymbol{x} \right) + g\left( \boldsymbol{x} \right)
|
||||
\underset{\boldsymbol{x} \in \mathbb{R}^n}{\text{minimize}}\hspace{5mm}
|
||||
f\left( \boldsymbol{x} \right) + g\left( \boldsymbol{x} \right)
|
||||
\end{align*}
|
||||
%
|
||||
that consists of two steps: minimizing $f$ with gradient descent
|
||||
@ -492,14 +502,14 @@ and minimizing $g$ using the proximal operator
|
||||
,\end{align*}
|
||||
%
|
||||
Since $g$ is minimized with the proximal operator and is thus not required
|
||||
to be differentiable, it can be used to encode the constraints of the problem
|
||||
to be differentiable, it can be used to encode the constraints of the optimization problem
|
||||
(e.g., in the form of an \textit{indicator function}, as mentioned in
|
||||
\cite[Sec. 1.2]{proximal_algorithms}).
|
||||
|
||||
The \ac{ADMM} is another optimization method.
|
||||
\ac{ADMM} is another optimization method.
|
||||
In this thesis it will be used to solve a \textit{linear program}, which
|
||||
is a special type of convex optimization problem, where the objective function
|
||||
is linear, and the constraints consist of linear equalities and inequalities.
|
||||
is a special type of convex optimization problem in which the objective function
|
||||
is linear and the constraints consist of linear equalities and inequalities.
|
||||
Generally, any linear program can be expressed in \textit{standard form}%
|
||||
\footnote{The inequality $\boldsymbol{x} \ge \boldsymbol{0}$ is to be
|
||||
interpreted componentwise.}
|
||||
@ -507,38 +517,53 @@ interpreted componentwise.}
|
||||
%
|
||||
\begin{alignat}{3}
|
||||
\begin{alignedat}{3}
|
||||
\text{minimize }\hspace{2mm} && \boldsymbol{\gamma}^\text{T} \boldsymbol{x} \\
|
||||
\underset{\boldsymbol{x}\in\mathbb{R}^n}{\text{minimize }}\hspace{2mm}
|
||||
&& \boldsymbol{\gamma}^\text{T} \boldsymbol{x} \\
|
||||
\text{subject to }\hspace{2mm} && \boldsymbol{A}\boldsymbol{x} & = \boldsymbol{b} \\
|
||||
&& \boldsymbol{x} & \ge \boldsymbol{0}.
|
||||
&& \boldsymbol{x} & \ge \boldsymbol{0},
|
||||
\end{alignedat}
|
||||
\label{eq:theo:admm_standard}
|
||||
\end{alignat}%
|
||||
%
|
||||
A technique called \textit{Lagrangian relaxation} \cite[Sec. 11.4]{intro_to_lin_opt_book}
|
||||
can then be applied.
|
||||
where $\boldsymbol{x}, \boldsymbol{\gamma} \in \mathbb{R}^n$, $\boldsymbol{b} \in \mathbb{R}^m$
|
||||
and $\boldsymbol{A}\in\mathbb{R}^{m \times n}$.
|
||||
A technique called \textit{Lagrangian relaxation} can then be applied
|
||||
\cite[Sec. 11.4]{intro_to_lin_opt_book}.
|
||||
First, some of the constraints are moved into the objective function itself
|
||||
and weights $\boldsymbol{\lambda}$ are introduced. A new, relaxed problem
|
||||
is then formulated as
|
||||
is formulated as
|
||||
%
|
||||
\begin{align}
|
||||
\begin{aligned}
|
||||
\text{minimize }\hspace{2mm} & \boldsymbol{\gamma}^\text{T}\boldsymbol{x}
|
||||
+ \boldsymbol{\lambda}^\text{T}\left(\boldsymbol{b}
|
||||
- \boldsymbol{A}\boldsymbol{x} \right) \\
|
||||
\underset{\boldsymbol{x}\in\mathbb{R}^n}{\text{minimize }}\hspace{2mm}
|
||||
& \boldsymbol{\gamma}^\text{T}\boldsymbol{x}
|
||||
+ \boldsymbol{\lambda}^\text{T}\left(
|
||||
\boldsymbol{A}\boldsymbol{x} - \boldsymbol{b}\right) \\
|
||||
\text{subject to }\hspace{2mm} & \boldsymbol{x} \ge \boldsymbol{0},
|
||||
\end{aligned}
|
||||
\label{eq:theo:admm_relaxed}
|
||||
\end{align}%
|
||||
%
|
||||
the new objective function being the \textit{Lagrangian}%
|
||||
\footnote{
|
||||
Depending on what literature is consulted, the definition of the Lagrangian differs
|
||||
in the order of $\boldsymbol{A}\boldsymbol{x}$ and $\boldsymbol{b}$.
|
||||
As will subsequently be seen, however, the only property of the Lagrangian having
|
||||
any bearing on the optimization process is that minimizing it gives a lower bound
|
||||
on the optimal objective of the original problem.
|
||||
This property is satisfied no matter the order of the terms and the order
|
||||
chosen here is the one used in the \ac{LP} decoding literature making use of
|
||||
\ac{ADMM}.
|
||||
}%
|
||||
%
|
||||
\begin{align*}
|
||||
\mathcal{L}\left( \boldsymbol{x}, \boldsymbol{\lambda} \right)
|
||||
= \boldsymbol{\gamma}^\text{T}\boldsymbol{x}
|
||||
+ \boldsymbol{\lambda}^\text{T}\left(\boldsymbol{b}
|
||||
- \boldsymbol{A}\boldsymbol{x} \right)
|
||||
+ \boldsymbol{\lambda}^\text{T}\left(
|
||||
\boldsymbol{A}\boldsymbol{x} - \boldsymbol{b}\right)
|
||||
.\end{align*}%
|
||||
%
|
||||
|
||||
This problem is not directly equivalent to the original one, as the
|
||||
solution now depends on the choice of the \textit{Lagrange multipliers}
|
||||
$\boldsymbol{\lambda}$.
|
||||
@ -562,12 +587,12 @@ Furthermore, for uniquely solvable linear programs \textit{strong duality}
|
||||
always holds \cite[Theorem 4.4]{intro_to_lin_opt_book}.
|
||||
This means that not only is it a lower bound, the tightest lower
|
||||
bound actually reaches the value itself:
|
||||
In other words, with the optimal choice of $\boldsymbol{\lambda}$,
|
||||
in other words, with the optimal choice of $\boldsymbol{\lambda}$,
|
||||
the optimal objectives of the problems (\ref{eq:theo:admm_relaxed})
|
||||
and (\ref{eq:theo:admm_standard}) have the same value.
|
||||
and (\ref{eq:theo:admm_standard}) have the same value, i.e.,
|
||||
%
|
||||
\begin{align*}
|
||||
\max_{\boldsymbol{\lambda}} \, \min_{\boldsymbol{x} \ge \boldsymbol{0}}
|
||||
\max_{\boldsymbol{\lambda}\in\mathbb{R}^m} \, \min_{\boldsymbol{x} \ge \boldsymbol{0}}
|
||||
\mathcal{L}\left( \boldsymbol{x}, \boldsymbol{\lambda} \right)
|
||||
= \min_{\substack{\boldsymbol{x} \ge \boldsymbol{0} \\ \boldsymbol{A}\boldsymbol{x}
|
||||
= \boldsymbol{b}}}
|
||||
@ -577,7 +602,7 @@ and (\ref{eq:theo:admm_standard}) have the same value.
|
||||
Thus, we can define the \textit{dual problem} as the search for the tightest lower bound:%
|
||||
%
|
||||
\begin{align}
|
||||
\underset{\boldsymbol{\lambda}}{\text{maximize }}\hspace{2mm}
|
||||
\underset{\boldsymbol{\lambda}\in\mathbb{R}^m}{\text{maximize }}\hspace{2mm}
|
||||
& \min_{\boldsymbol{x} \ge \boldsymbol{0}} \mathcal{L}
|
||||
\left( \boldsymbol{x}, \boldsymbol{\lambda} \right)
|
||||
\label{eq:theo:dual}
|
||||
@ -600,7 +625,7 @@ using equation (\ref{eq:theo:admm_obtain_primal}); then, update $\boldsymbol{\la
|
||||
using gradient descent \cite[Sec. 2.1]{distr_opt_book}:%
|
||||
%
|
||||
\begin{align*}
|
||||
\boldsymbol{x} &\leftarrow \argmin_{\boldsymbol{x}} \mathcal{L}\left(
|
||||
\boldsymbol{x} &\leftarrow \argmin_{\boldsymbol{x} \ge \boldsymbol{0}} \mathcal{L}\left(
|
||||
\boldsymbol{x}, \boldsymbol{\lambda} \right) \\
|
||||
\boldsymbol{\lambda} &\leftarrow \boldsymbol{\lambda}
|
||||
+ \alpha\left( \boldsymbol{A}\boldsymbol{x} - \boldsymbol{b} \right),
|
||||
@ -608,12 +633,12 @@ using gradient descent \cite[Sec. 2.1]{distr_opt_book}:%
|
||||
.\end{align*}
|
||||
%
|
||||
The algorithm can be improved by observing that when the objective function
|
||||
$g: \mathbb{R}^n \rightarrow \mathbb{R}$ is separable into a number
|
||||
$N \in \mathbb{N}$ of sub-functions
|
||||
$g: \mathbb{R}^n \rightarrow \mathbb{R}$ is separable into a sum of
|
||||
$N \in \mathbb{N}$ sub-functions
|
||||
$g_i: \mathbb{R}^{n_i} \rightarrow \mathbb{R}$,
|
||||
i.e., $g\left( \boldsymbol{x} \right) = \sum_{i=1}^{N} g_i
|
||||
\left( \boldsymbol{x}_i \right)$,
|
||||
where $\boldsymbol{x}_i,\hspace{1mm} i\in [1:N]$ are subvectors of
|
||||
where $\boldsymbol{x}_i\in\mathbb{R}^{n_i},\hspace{1mm} i\in [1:N]$ are subvectors of
|
||||
$\boldsymbol{x}$, the Lagrangian is as well:
|
||||
%
|
||||
\begin{align*}
|
||||
@ -624,18 +649,18 @@ $\boldsymbol{x}$, the Lagrangian is as well:
|
||||
\begin{align*}
|
||||
\mathcal{L}\left( \left( \boldsymbol{x}_i \right)_{i=1}^N, \boldsymbol{\lambda} \right)
|
||||
= \sum_{i=1}^{N} g_i\left( \boldsymbol{x}_i \right)
|
||||
+ \boldsymbol{\lambda}^\text{T} \left( \boldsymbol{b}
|
||||
- \sum_{i=1}^{N} \boldsymbol{A}_i\boldsymbol{x_i} \right)
|
||||
+ \boldsymbol{\lambda}^\text{T} \left(
|
||||
\sum_{i=1}^{N} \boldsymbol{A}_i\boldsymbol{x_i} - \boldsymbol{b}\right)
|
||||
.\end{align*}%
|
||||
%
|
||||
The matrices $\boldsymbol{A}_i, \hspace{1mm} i \in [1:N]$ are partitions of
|
||||
the matrix $\boldsymbol{A}$, corresponding to
|
||||
The matrices $\boldsymbol{A}_i \in \mathbb{R}^{m \times n_i}, \hspace{1mm} i \in [1:N]$
|
||||
form a partition of $\boldsymbol{A}$, corresponding to
|
||||
$\boldsymbol{A} = \begin{bmatrix}
|
||||
\boldsymbol{A}_1 &
|
||||
\ldots &
|
||||
\boldsymbol{A}_N
|
||||
\end{bmatrix}$.
|
||||
The minimization of each term can then happen in parallel, in a distributed
|
||||
The minimization of each term can happen in parallel, in a distributed
|
||||
fashion \cite[Sec. 2.2]{distr_opt_book}.
|
||||
In each minimization step, only one subvector $\boldsymbol{x}_i$ of
|
||||
$\boldsymbol{x}$ is considered, regarding all other subvectors as being
|
||||
@ -643,7 +668,7 @@ constant.
|
||||
This modified version of dual ascent is called \textit{dual decomposition}:
|
||||
%
|
||||
\begin{align*}
|
||||
\boldsymbol{x}_i &\leftarrow \argmin_{\boldsymbol{x}_i}\mathcal{L}\left(
|
||||
\boldsymbol{x}_i &\leftarrow \argmin_{\boldsymbol{x}_i \ge \boldsymbol{0}}\mathcal{L}\left(
|
||||
\left( \boldsymbol{x}_i \right)_{i=1}^N, \boldsymbol{\lambda}\right)
|
||||
\hspace{5mm} \forall i \in [1:N]\\
|
||||
\boldsymbol{\lambda} &\leftarrow \boldsymbol{\lambda}
|
||||
@ -657,14 +682,15 @@ This modified version of dual ascent is called \textit{dual decomposition}:
|
||||
It only differs in the use of an \textit{augmented Lagrangian}
|
||||
$\mathcal{L}_\mu\left( \left( \boldsymbol{x} \right)_{i=1}^N, \boldsymbol{\lambda} \right)$
|
||||
in order to strengthen the convergence properties.
|
||||
The augmented Lagrangian extends the ordinary one with an additional penalty term
|
||||
with the penaly parameter $\mu$:
|
||||
The augmented Lagrangian extends the classical one with an additional penalty term
|
||||
with the penalty parameter $\mu$:
|
||||
%
|
||||
\begin{align*}
|
||||
\mathcal{L}_\mu \left( \left( \boldsymbol{x} \right)_{i=1}^N, \boldsymbol{\lambda} \right)
|
||||
= \underbrace{\sum_{i=1}^{N} g_i\left( \boldsymbol{x_i} \right)
|
||||
+ \boldsymbol{\lambda}^\text{T}\left( \boldsymbol{b}
|
||||
- \sum_{i=1}^{N} \boldsymbol{A}_i\boldsymbol{x}_i \right)}_{\text{Ordinary Lagrangian}}
|
||||
+ \boldsymbol{\lambda}^\text{T}\left(\sum_{i=1}^{N}
|
||||
\boldsymbol{A}_i\boldsymbol{x}_i - \boldsymbol{b}\right)}
|
||||
_{\text{Classical Lagrangian}}
|
||||
+ \underbrace{\frac{\mu}{2}\left\Vert \sum_{i=1}^{N} \boldsymbol{A}_i\boldsymbol{x}_i
|
||||
- \boldsymbol{b} \right\Vert_2^2}_{\text{Penalty term}},
|
||||
\hspace{5mm} \mu > 0
|
||||
@ -674,21 +700,20 @@ The steps to solve the problem are the same as with dual decomposition, with the
|
||||
condition that the step size be $\mu$:%
|
||||
%
|
||||
\begin{align*}
|
||||
\boldsymbol{x}_i &\leftarrow \argmin_{\boldsymbol{x}_i}\mathcal{L}_\mu\left(
|
||||
\boldsymbol{x}_i &\leftarrow \argmin_{\boldsymbol{x}_i \ge \boldsymbol{0}}\mathcal{L}_\mu\left(
|
||||
\left( \boldsymbol{x} \right)_{i=1}^N, \boldsymbol{\lambda}\right)
|
||||
\hspace{5mm} \forall i \in [1:N]\\
|
||||
\boldsymbol{\lambda} &\leftarrow \boldsymbol{\lambda}
|
||||
+ \mu\left( \sum_{i=1}^{N} \boldsymbol{A}_i\boldsymbol{x}_i
|
||||
- \boldsymbol{b} \right),
|
||||
\hspace{5mm} \mu > 0
|
||||
% \boldsymbol{x}_1 &\leftarrow \argmin_{\boldsymbol{x}_1}\mathcal{L}_\mu\left(
|
||||
% \boldsymbol{x}_1, \boldsymbol{x_2}, \boldsymbol{\lambda}\right) \\
|
||||
% \boldsymbol{x}_2 &\leftarrow \argmin_{\boldsymbol{x}_2}\mathcal{L}_\mu\left(
|
||||
% \boldsymbol{x}_1, \boldsymbol{x_2}, \boldsymbol{\lambda}\right) \\
|
||||
% \boldsymbol{\lambda} &\leftarrow \boldsymbol{\lambda}
|
||||
% + \mu\left( \boldsymbol{A}_1\boldsymbol{x}_1 + \boldsymbol{A}_2\boldsymbol{x}_2
|
||||
% - \boldsymbol{b} \right),
|
||||
% \hspace{5mm} \mu > 0
|
||||
.\end{align*}
|
||||
%
|
||||
|
||||
In subsequent chapters, the decoding problem will be reformulated as an
|
||||
optimization problem using two different methodologies.
|
||||
In chapter \ref{chapter:proximal_decoding}, a non-convex optimization approach
|
||||
is chosen and addressed using the proximal gradient method.
|
||||
In chapter \ref{chapter:lp_dec_using_admm}, an \ac{LP} based optimization problem is
|
||||
formulated and solved using \ac{ADMM}.
|
||||
|
||||
|
||||
9
latex/thesis/res/admm/dfr_20433484.csv
Normal file
9
latex/thesis/res/admm/dfr_20433484.csv
Normal file
@ -0,0 +1,9 @@
|
||||
SNR,BER,FER,DFR,num_iterations
|
||||
1.0,0.06409994553376906,0.7013888888888888,0.7013888888888888,144.0
|
||||
1.5,0.03594771241830065,0.45495495495495497,0.47297297297297297,222.0
|
||||
2.0,0.014664163537755528,0.2148936170212766,0.2297872340425532,470.0
|
||||
2.5,0.004731522238525039,0.07634164777021919,0.08163265306122448,1323.0
|
||||
3.0,0.000911436423803915,0.016994783779236074,0.01749957933703517,5943.0
|
||||
3.5,0.00011736135227863285,0.002537369677176234,0.002587614621278734,39805.0
|
||||
4.0,1.0686274509803922e-05,0.00024,0.00023,100000.0
|
||||
4.5,4.411764705882353e-07,1e-05,1e-05,100000.0
|
||||
|
10
latex/thesis/res/admm/dfr_20433484_metadata.json
Normal file
10
latex/thesis/res/admm/dfr_20433484_metadata.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"duration": 46.20855645602569,
|
||||
"name": "ber_20433484",
|
||||
"platform": "Linux-6.2.10-arch1-1-x86_64-with-glibc2.37",
|
||||
"K": 200,
|
||||
"epsilon_pri": 1e-05,
|
||||
"epsilon_dual": 1e-05,
|
||||
"max_frame_errors": 100,
|
||||
"end_time": "2023-04-22 19:15:37.252176"
|
||||
}
|
||||
31
latex/thesis/res/admm/fer_epsilon_20433484.csv
Normal file
31
latex/thesis/res/admm/fer_epsilon_20433484.csv
Normal file
@ -0,0 +1,31 @@
|
||||
SNR,epsilon,BER,FER,DFR,num_iterations,k_avg
|
||||
1.0,1e-06,0.294328431372549,0.722,0.0,1000.0,0.278
|
||||
1.0,1e-05,0.294328431372549,0.722,0.0,1000.0,0.278
|
||||
1.0,0.0001,0.3059313725490196,0.745,0.0,1000.0,0.254
|
||||
1.0,0.001,0.3059558823529412,0.748,0.0,1000.0,0.254
|
||||
1.0,0.01,0.30637254901960786,0.786,0.0,1000.0,0.254
|
||||
1.0,0.1,0.31590686274509805,0.9,0.0,1000.0,0.925
|
||||
2.0,1e-06,0.11647058823529412,0.298,0.0,1000.0,0.702
|
||||
2.0,1e-05,0.11647058823529412,0.298,0.0,1000.0,0.702
|
||||
2.0,0.0001,0.11647058823529412,0.298,0.0,1000.0,0.702
|
||||
2.0,0.001,0.11652450980392157,0.306,0.0,1000.0,0.702
|
||||
2.0,0.01,0.09901470588235294,0.297,0.0,1000.0,0.75
|
||||
2.0,0.1,0.10512745098039215,0.543,0.0,1000.0,0.954
|
||||
3.0,1e-06,0.004563725490196078,0.012,0.0,1000.0,0.988
|
||||
3.0,1e-05,0.004563725490196078,0.012,0.0,1000.0,0.988
|
||||
3.0,0.0001,0.005730392156862745,0.015,0.0,1000.0,0.985
|
||||
3.0,0.001,0.005730392156862745,0.015,0.0,1000.0,0.985
|
||||
3.0,0.01,0.007200980392156863,0.037,0.0,1000.0,0.981
|
||||
3.0,0.1,0.009151960784313726,0.208,0.0,1000.0,0.995
|
||||
4.0,1e-06,0.0,0.0,0.0,1000.0,1.0
|
||||
4.0,1e-05,0.0,0.0,0.0,1000.0,1.0
|
||||
4.0,0.0001,0.0,0.0,0.0,1000.0,1.0
|
||||
4.0,0.001,0.0002598039215686275,0.001,0.0,1000.0,0.999
|
||||
4.0,0.01,4.901960784313725e-05,0.01,0.0,1000.0,1.0
|
||||
4.0,0.1,0.0006862745098039216,0.103,0.0,1000.0,1.0
|
||||
5.0,1e-06,0.0,0.0,0.0,1000.0,1.0
|
||||
5.0,1e-05,0.0,0.0,0.0,1000.0,1.0
|
||||
5.0,0.0001,0.0,0.0,0.0,1000.0,1.0
|
||||
5.0,0.001,0.0,0.0,0.0,1000.0,1.0
|
||||
5.0,0.01,9.803921568627451e-06,0.002,0.0,1000.0,1.0
|
||||
5.0,0.1,0.0005245098039215687,0.097,0.0,1000.0,1.0
|
||||
|
10
latex/thesis/res/admm/fer_epsilon_20433484_metadata.json
Normal file
10
latex/thesis/res/admm/fer_epsilon_20433484_metadata.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"duration": 15.407989402010571,
|
||||
"name": "rho_kavg_20433484",
|
||||
"platform": "Linux-6.2.10-arch1-1-x86_64-with-glibc2.37",
|
||||
"K": 200,
|
||||
"rho": 1,
|
||||
"mu": 5,
|
||||
"max_frame_errors": 100000,
|
||||
"end_time": "2023-04-23 06:39:23.561294"
|
||||
}
|
||||
9
latex/thesis/res/generic/bp_20433484.csv
Normal file
9
latex/thesis/res/generic/bp_20433484.csv
Normal file
@ -0,0 +1,9 @@
|
||||
SNR,BER,FER,num_iterations
|
||||
1,0.0315398614535635,0.598802395209581,334
|
||||
1.5,0.0172476397966594,0.352733686067019,567
|
||||
2,0.00668670591018522,0.14194464158978,1409
|
||||
2.5,0.00168951075575861,0.0388349514563107,5150
|
||||
3,0.000328745799468201,0.00800288103717338,24991
|
||||
3.5,4.21796065456326e-05,0.00109195935727272,183157
|
||||
4,4.95098039215686e-06,0.000134,500000
|
||||
4.5,2.94117647058824e-07,1.2e-05,500000
|
||||
|
10
latex/thesis/res/generic/bp_20455187.csv
Normal file
10
latex/thesis/res/generic/bp_20455187.csv
Normal file
@ -0,0 +1,10 @@
|
||||
SNR,BER,FER,num_iterations
|
||||
1,0.0592497868712702,0.966183574879227,207
|
||||
1.5,0.0465686274509804,0.854700854700855,234
|
||||
2,0.0326898561282098,0.619195046439629,323
|
||||
2.5,0.0171613765211425,0.368324125230203,543
|
||||
3,0.00553787541776455,0.116346713205352,1719
|
||||
3.5,0.00134027952469441,0.0275900124155056,7249
|
||||
4,0.000166480738027721,0.0034201480924124,58477
|
||||
4.5,1.19607843137255e-05,0.000252,500000
|
||||
5,9.50980392156863e-07,2e-05,500000
|
||||
|
6
latex/thesis/res/generic/bp_40833844.csv
Normal file
6
latex/thesis/res/generic/bp_40833844.csv
Normal file
@ -0,0 +1,6 @@
|
||||
SNR,BER,FER,num_iterations
|
||||
1,0.0303507766743061,0.649350649350649,308
|
||||
1.5,0.0122803195352215,0.296296296296296,675
|
||||
2,0.00284899516991547,0.0733137829912024,2728
|
||||
2.5,0.000348582879119279,0.00916968502131952,21811
|
||||
3,2.52493009763634e-05,0.000760274154860243,263063
|
||||
|
9
latex/thesis/res/generic/bp_963965.csv
Normal file
9
latex/thesis/res/generic/bp_963965.csv
Normal file
@ -0,0 +1,9 @@
|
||||
SNR,BER,FER,num_iterations
|
||||
1,0.0352267331433998,0.56980056980057,351
|
||||
1.5,0.0214331413947537,0.383877159309021,521
|
||||
2,0.0130737396538751,0.225733634311512,886
|
||||
2.5,0.00488312520012808,0.0960614793467819,2082
|
||||
3,0.00203045475576707,0.0396589331746976,5043
|
||||
3.5,0.000513233833401836,0.010275380189067,19464
|
||||
4,0.000107190497363908,0.0025408117893667,78715
|
||||
4.5,3.2074433522095e-05,0.00092605883251763,215969
|
||||
|
11
latex/thesis/res/generic/bp_bch_31_26.csv
Normal file
11
latex/thesis/res/generic/bp_bch_31_26.csv
Normal file
@ -0,0 +1,11 @@
|
||||
SNR,BER,FER,num_iterations
|
||||
1,0.0584002878042931,0.743494423791822,269
|
||||
1.5,0.0458084740620892,0.626959247648903,319
|
||||
2,0.0318872821653689,0.459770114942529,435
|
||||
2.5,0.0248431459534825,0.392927308447937,509
|
||||
3,0.0158453558113146,0.251256281407035,796
|
||||
3.5,0.0115615186982586,0.176991150442478,1130
|
||||
4,0.00708558642550811,0.115606936416185,1730
|
||||
4.5,0.00389714705036542,0.0614817091915155,3253
|
||||
5,0.00221548053104734,0.0345125107851596,5795
|
||||
5.5,0.00106888328072207,0.0172131852999398,11619
|
||||
|
6
latex/thesis/res/generic/bp_pegreg252x504.csv
Normal file
6
latex/thesis/res/generic/bp_pegreg252x504.csv
Normal file
@ -0,0 +1,6 @@
|
||||
SNR,BER,FER,num_iterations
|
||||
1,0.0294665331073098,0.647249190938511,309
|
||||
1.5,0.0104905437352246,0.265957446808511,752
|
||||
2,0.0021089358705197,0.05616399887672,3561
|
||||
2.5,0.000172515567971134,0.00498840196543037,40093
|
||||
3,6.3531746031746e-06,0.0002,500000
|
||||
|
@ -9,12 +9,12 @@
|
||||
\thesisTitle{Application of Optimization Algorithms for Channel Decoding}
|
||||
\thesisType{Bachelor's Thesis}
|
||||
\thesisAuthor{Andreas Tsouchlos}
|
||||
%\thesisAdvisor{Prof. Dr.-Ing. Laurent Schmalen}
|
||||
\thesisAdvisor{Prof. Dr.-Ing. Laurent Schmalen}
|
||||
%\thesisHeadOfInstitute{Prof. Dr.-Ing. Laurent Schmalen}
|
||||
\thesisSupervisor{Name of assistant}
|
||||
\thesisSupervisor{Dr.-Ing. Holger Jäkel}
|
||||
\thesisStartDate{24.10.2022}
|
||||
\thesisEndDate{24.04.2023}
|
||||
\thesisSignatureDate{Signature date} % TODO: Signature date
|
||||
\thesisSignatureDate{24.04.2023} % TODO: Signature date
|
||||
\thesisLanguage{english}
|
||||
\setlanguage
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
\usetikzlibrary{spy}
|
||||
\usetikzlibrary{shapes.geometric}
|
||||
\usetikzlibrary{arrows.meta,arrows}
|
||||
\tikzset{>=latex}
|
||||
|
||||
\pgfplotsset{compat=newest}
|
||||
\usepgfplotslibrary{colorbrewer}
|
||||
@ -209,6 +210,7 @@
|
||||
%
|
||||
% 6. Conclusion
|
||||
|
||||
\include{chapters/acknowledgements}
|
||||
|
||||
\tableofcontents
|
||||
\cleardoublepage % make sure multipage TOCs are numbered correctly
|
||||
@ -218,9 +220,9 @@
|
||||
\include{chapters/proximal_decoding}
|
||||
\include{chapters/lp_dec_using_admm}
|
||||
\include{chapters/comparison}
|
||||
\include{chapters/discussion}
|
||||
% \include{chapters/discussion}
|
||||
\include{chapters/conclusion}
|
||||
\include{chapters/appendix}
|
||||
% \include{chapters/appendix}
|
||||
|
||||
|
||||
%\listoffigures
|
||||
|
||||
Loading…
Reference in New Issue
Block a user