From c18d0f8c12bf2c2e41ad9233d6743bd39a1b7b00 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Wed, 25 Jan 2023 14:21:31 +0100 Subject: [PATCH] Moved LP Decoding slide; Added general optimization slide; Added forthcoming examination slide --- latex/presentations/midterm/presentation.bib | 22 ++ .../midterm/sections/decoding_algorithms.tex | 201 +++++++++++++++++- .../midterm/sections/examination_results.tex | 18 +- .../sections/forthcoming_examination.tex | 24 ++- .../sections/theoretical_background.tex | 134 ++---------- 5 files changed, 262 insertions(+), 137 deletions(-) diff --git a/latex/presentations/midterm/presentation.bib b/latex/presentations/midterm/presentation.bib index 5fcbf38..2f680f2 100644 --- a/latex/presentations/midterm/presentation.bib +++ b/latex/presentations/midterm/presentation.bib @@ -77,3 +77,25 @@ institution = {KIT}, } +@BOOK{distr_opt_book, + author = {Boyd, Stephen and Parikh, Neal and Chu, Eric and Peleato, Borja and Eckstein, Jonathan}, + booktitle = {Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers}, + year = {2011}, + volume = {}, + number = {}, + pages = {}, + doi = {}, + url = {https://ieeexplore.ieee.org/document/8186925}, +} + +@INPROCEEDINGS{efficient_lp_dec_admm, + author = {Zhang, Xiaojie and Siegel, Paul H.}, + booktitle = {2013 IEEE International Symposium on Information Theory}, + title = {Efficient iterative LP decoding of LDPC codes with alternating direction method of multipliers}, + year = {2013}, + volume = {}, + number = {}, + pages = {1501-1505}, + doi = {10.1109/ISIT.2013.6620477} +} + diff --git a/latex/presentations/midterm/sections/decoding_algorithms.tex b/latex/presentations/midterm/sections/decoding_algorithms.tex index c0d90fb..1b5d87d 100644 --- a/latex/presentations/midterm/sections/decoding_algorithms.tex +++ b/latex/presentations/midterm/sections/decoding_algorithms.tex @@ -46,6 +46,8 @@ \end{itemize} \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: General Idea} @@ -82,6 +84,8 @@ \end{itemize} \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t, fragile] \frametitle{Proximal Decoding: Algorithm} \begin{itemize} @@ -104,18 +108,199 @@ Output $\boldsymbol{\hat{x}}$ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{ADMM}% -\label{sub:Alg ADMM} +\subsection{LP Decoding}% +\label{sub:LP Decoding} \begin{frame}[t] - \frametitle{ADMM Decoding: General Idea} + \frametitle{LP Decoding} - \todo{TODO} + \begin{minipage}[c]{0.6\linewidth} + \begin{itemize} + \item Codeword Polytope: + \begin{align*} + \text{poly}\left( \mathcal{C} \right) = + \left\{ + \sum_{\boldsymbol{c}\in\mathcal{C}}\lambda_{\boldsymbol{c}} + \boldsymbol{c} : \lambda_{\boldsymbol{c}} \ge 0, + \sum_{\boldsymbol{c}\in\mathcal{C}}\lambda_{\boldsymbol{c}} = 1 + \right\}, + \hspace{5mm} \lambda_{\boldsymbol{c}} \in \mathbb{R} + \end{align*} + \item Cost Function: + \begin{align*} + \sum_{i=1}^{n} \gamma_i c_i, + \hspace{5mm}\gamma_i = \log\left( + \frac{P\left( Y=y_i | C=0 \right) }{P\left( Y=y_i | C=1 \right) } \right) + \end{align*} + \item LP Formulation of ML Decoding: + \begin{align*} + &\text{minimize } \sum_{i=1}^{n} \gamma_i f_i \\ + &\text{subject to } \boldsymbol{f}\in\text{poly}\left( \mathcal{C} \right) + \end{align*} + \end{itemize} + \end{minipage}% + \hfill% + \begin{minipage}[c]{0.4\linewidth} + \begin{figure}[H] + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{245} + \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] + % Cube + + \draw[dashed] (0, 0, 0) -- (2, 0, 0); + \draw[dashed] (2, 0, 0) -- (2, 0, 2); + \draw[] (2, 0, 2) -- (0, 0, 2); + \draw[] (0, 0, 2) -- (0, 0, 0); + + \draw[] (0, 2, 0) -- (2, 2, 0); + \draw[] (2, 2, 0) -- (2, 2, 2); + \draw[] (2, 2, 2) -- (0, 2, 2); + \draw[] (0, 2, 2) -- (0, 2, 0); + + \draw[] (0, 0, 0) -- (0, 2, 0); + \draw[dashed] (2, 0, 0) -- (2, 2, 0); + \draw[] (2, 0, 2) -- (2, 2, 2); + \draw[] (0, 0, 2) -- (0, 2, 2); + + % Codeword Polytope + + \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2); + \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0); + \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2); + + \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0); + \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2); + + \draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0); + + % Polytope Annotations + + \node[codeword] (c000) at (0, 0, 0) {};% {$\left( 0, 0, 0 \right) $}; + \node[codeword] (c101) at (2, 0, 2) {};% {$\left( 1, 0, 1 \right) $}; + \node[codeword] (c110) at (2, 2, 0) {};% {$\left( 1, 1, 0 \right) $}; + \node[codeword] (c011) at (0, 2, 2) {};% {$\left( 0, 1, 1 \right) $}; + + \node[color=KITblue, right=0cm of c000] {$\left( 0, 0, 0 \right) $}; + \node[color=KITblue, above=0cm of c101] {$\left( 1, 0, 1 \right) $}; + \node[color=KITblue, left=0cm of c110] {$\left( 1, 1, 0 \right) $}; + \node[color=KITblue, left=0cm of c011] {$\left( 0, 1, 1 \right) $}; + + % f + + \node[color=KITgreen, fill=KITgreen, + draw, circle, inner sep=0pt, minimum size=4pt] (f) at (0.7, 0.7, 1) {}; + \node[color=KITgreen, right=0cm of f] {$\boldsymbol{f}$}; + \end{tikzpicture} + \caption{$\text{poly}\left( \mathcal{C} \right)$ for $n=3$} + \end{figure} + \end{minipage} \end{frame} -\begin{frame}[t] - \frametitle{ADMM Decoding: Algorithm} - \todo{TODO} -\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\begin{frame}[t] +% \frametitle{LP Relaxation} +% +% \begin{minipage}[c]{0.6\linewidth} +% \begin{itemize} +% \item Set of all variable nodes incident to a check node: +% \begin{align*} +% N\left( j \right) \equiv \left\{ +% i | i\in \mathcal{I}, +% \boldsymbol{H}_{j,i} = 1 +% \right\}, +% j \in \mathcal{J} +% \end{align*} +% \begin{align*} +% S \subseteq N\left( j \right), \left| S \right| \text{odd} +% \end{align*} +% \item Relaxed polytope representation: +% \begin{align*} +% \sum_{i\in \left( N\left( j \right) \setminus S\right) } f_i +% + \sum_{i\in S} \left( 1 - f_i \right) \ge 1 +% \end{align*} +% ``$\boldsymbol{f}$ is separated by at least one bitflip +% from all illegal configurations'' +% \end{itemize} +% \end{minipage}% +% \hfill% +% \begin{minipage}[c]{0.4\linewidth} +% \begin{figure}[H] +% \centering +% +% \tikzstyle{codeword} = [color=KITblue, fill=KITblue, +% draw, circle, inner sep=0pt, minimum size=4pt] +% +% \tdplotsetmaincoords{60}{245} +% \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] +% % Cube +% +% \draw[dashed] (0, 0, 0) -- (2, 0, 0); +% \draw[dashed] (2, 0, 0) -- (2, 0, 2); +% \draw[] (2, 0, 2) -- (0, 0, 2); +% \draw[] (0, 0, 2) -- (0, 0, 0); +% +% \draw[] (0, 2, 0) -- (2, 2, 0); +% \draw[] (2, 2, 0) -- (2, 2, 2); +% \draw[] (2, 2, 2) -- (0, 2, 2); +% \draw[] (0, 2, 2) -- (0, 2, 0); +% +% \draw[] (0, 0, 0) -- (0, 2, 0); +% \draw[dashed] (2, 0, 0) -- (2, 2, 0); +% \draw[] (2, 0, 2) -- (2, 2, 2); +% \draw[] (0, 0, 2) -- (0, 2, 2); +% +% % Codeword Polytope +% +% \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2); +% \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0); +% \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2); +% +% \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0); +% \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2); +% +% \draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0); +% +% % Polytope Annotations +% +% \node[codeword, color=KITred] (c111) at (2, 2, 2) {};% {$\left( 0, 0, 0 \right) $}; +% \node[codeword, color=KITred] (c001) at (0, 0, 2) {};% {$\left( 1, 0, 1 \right) $}; +% \node[codeword, color=KITred] (c100) at (2, 0, 0) {};% {$\left( 1, 1, 0 \right) $}; +% \node[codeword, color=KITred] (c010) at (0, 2, 0) {};% {$\left( 0, 1, 1 \right) $}; +% +% \node[color=KITred, left=0cm of c111] {$\left( 1, 1, 1 \right) $}; +% \node[color=KITred, right=0cm of c001] {$\left( 0, 0, 1 \right) $}; +% \node[color=KITred, right=0.35cm of c100] {$\left( 1, 0, 0 \right) $}; +% \node[color=KITred, below=0cm of c010] {$\left( 0, 1, 0 \right) $}; +% \end{tikzpicture} +% \caption{Relaxed polytope for $n=3$} +% \end{figure} +% \end{minipage} +% \todo{How is this a relaxation and not just an alternative formulation? +% We have just switched out valid codewords for invalid ones} +% \todo{Is LP Relaxation relevant as theoretical background?} +%\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\subsection{ADMM}% +%\label{sub:Alg ADMM} +% +%\begin{frame}[t] +% \frametitle{ADMM Decoding: General Idea} +% +% \todo{TODO} +%\end{frame} +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\begin{frame}[t] +% \frametitle{ADMM Decoding: Algorithm} +% +% \todo{TODO} +%\end{frame} diff --git a/latex/presentations/midterm/sections/examination_results.tex b/latex/presentations/midterm/sections/examination_results.tex index 28c6636..577197b 100644 --- a/latex/presentations/midterm/sections/examination_results.tex +++ b/latex/presentations/midterm/sections/examination_results.tex @@ -1438,13 +1438,13 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{x}}_n\text{ with lowest }d %\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{ADMM: Examination Results}% -\label{sub:Ex ADMM} - -\begin{frame}[t] - \frametitle{ADMM} - - \todo{TODO} -\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\subsection{ADMM: Examination Results}% +%\label{sub:Ex ADMM} +% +%\begin{frame}[t] +% \frametitle{ADMM} +% +% \todo{TODO} +%\end{frame} diff --git a/latex/presentations/midterm/sections/forthcoming_examination.tex b/latex/presentations/midterm/sections/forthcoming_examination.tex index a94c2f4..a730667 100644 --- a/latex/presentations/midterm/sections/forthcoming_examination.tex +++ b/latex/presentations/midterm/sections/forthcoming_examination.tex @@ -3,12 +3,28 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{TODO}% -\label{sub:TODO} +\subsection{LP Decoding}% +\label{sub:LP Decoding} \begin{frame}[t] - \frametitle{TODO} + \frametitle{Forthcoming Examination: LP Decoding} + + \begin{itemize} + \item Test the (Alternating Direction Method of Multipliers) ADMM + as an optimization method for LP Decoding + \begin{itemize} + \item ADMM is intended to blend the decomposability + of dual ascent with the superior convergence properties of the method + of multipliers \cite{distr_opt_book} + \item Recently, ADMM has been proposed for efficient LP Decoding + \cite{efficient_lp_dec_admm} + \end{itemize} + \item Compare ADMM implementation with Proximal Decoding implementation with respect to + \begin{itemize} + \item Decoding performance (BER, FER) + \item Computational performance (time complexity, actual seconds per frame) + \end{itemize} + \end{itemize} - \todo{TODO} \end{frame} diff --git a/latex/presentations/midterm/sections/theoretical_background.tex b/latex/presentations/midterm/sections/theoretical_background.tex index 56732f8..415e1b9 100644 --- a/latex/presentations/midterm/sections/theoretical_background.tex +++ b/latex/presentations/midterm/sections/theoretical_background.tex @@ -105,35 +105,20 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{LP Decoding}% -\label{sub:LP Decoding} +\subsection{Optimization as a Decoding Method}% +\label{sub:Optimization as a Decoding Method} \begin{frame}[t] - \frametitle{LP Decoding} - + \frametitle{Optimization as a Decoding Method} + \begin{minipage}[c]{0.6\linewidth} \begin{itemize} - \item Codeword Polytope: - \begin{align*} - \text{poly}\left( \mathcal{C} \right) = - \left\{ - \sum_{\boldsymbol{c}\in\mathcal{C}}\lambda_{\boldsymbol{c}} - \boldsymbol{c} : \lambda_{\boldsymbol{c}} \ge 0, - \sum_{\boldsymbol{c}\in\mathcal{C}}\lambda_{\boldsymbol{c}} = 1 - \right\}, - \hspace{5mm} \lambda_{\boldsymbol{c}} \in \mathbb{R} - \end{align*} - \item Cost Function: - \begin{align*} - \sum_{i=1}^{n} \gamma_i c_i, - \hspace{5mm}\gamma_i = \log\left( - \frac{P\left( Y=y_i | C=0 \right) }{P\left( Y=y_i | C=1 \right) } \right) - \end{align*} - \item LP Formulation of ML Decoding: - \begin{align*} - &\text{minimize } \sum_{i=1}^{n} \gamma_i f_i \\ - &\text{subject to } \boldsymbol{f}\in\text{poly}\left( \mathcal{C} \right) - \end{align*} + \item Reormulate decoding problem as optimization problem + \begin{itemize} + \item Establish objective function + \item Establish constraints + \end{itemize} + \item Use optimization method to solve the new problem \end{itemize} \end{minipage}% \hfill% @@ -165,14 +150,14 @@ % Codeword Polytope - \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2); - \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0); - \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2); +% \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2); +% \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0); +% \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2); - \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0); - \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2); +% \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0); +% \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2); - \draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0); +% \draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0); % Polytope Annotations @@ -192,92 +177,9 @@ draw, circle, inner sep=0pt, minimum size=4pt] (f) at (0.7, 0.7, 1) {}; \node[color=KITgreen, right=0cm of f] {$\boldsymbol{f}$}; \end{tikzpicture} - \caption{$\text{poly}\left( \mathcal{C} \right)$ for $n=3$} + + \caption{Hypercube ($n=3$) with valid codewords} \end{figure} \end{minipage} - \todo{Move this slide to LP decoding} -\end{frame} - -\begin{frame}[t] - \frametitle{LP Relaxation} - - \begin{minipage}[c]{0.6\linewidth} - \begin{itemize} - \item Set of all variable nodes incident to a check node: - \begin{align*} - N\left( j \right) \equiv \left\{ - i | i\in \mathcal{I}, - \boldsymbol{H}_{j,i} = 1 - \right\}, - j \in \mathcal{J} - \end{align*} - \begin{align*} - S \subseteq N\left( j \right), \left| S \right| \text{odd} - \end{align*} - \item Relaxed polytope representation: - \begin{align*} - \sum_{i\in \left( N\left( j \right) \setminus S\right) } f_i - + \sum_{i\in S} \left( 1 - f_i \right) \ge 1 - \end{align*} - ``$\boldsymbol{f}$ is separated by at least one bitflip - from all illegal configurations'' - \end{itemize} - \end{minipage}% - \hfill% - \begin{minipage}[c]{0.4\linewidth} - \begin{figure}[H] - \centering - - \tikzstyle{codeword} = [color=KITblue, fill=KITblue, - draw, circle, inner sep=0pt, minimum size=4pt] - - \tdplotsetmaincoords{60}{245} - \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] - % Cube - - \draw[dashed] (0, 0, 0) -- (2, 0, 0); - \draw[dashed] (2, 0, 0) -- (2, 0, 2); - \draw[] (2, 0, 2) -- (0, 0, 2); - \draw[] (0, 0, 2) -- (0, 0, 0); - - \draw[] (0, 2, 0) -- (2, 2, 0); - \draw[] (2, 2, 0) -- (2, 2, 2); - \draw[] (2, 2, 2) -- (0, 2, 2); - \draw[] (0, 2, 2) -- (0, 2, 0); - - \draw[] (0, 0, 0) -- (0, 2, 0); - \draw[dashed] (2, 0, 0) -- (2, 2, 0); - \draw[] (2, 0, 2) -- (2, 2, 2); - \draw[] (0, 0, 2) -- (0, 2, 2); - - % Codeword Polytope - - \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2); - \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0); - \draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2); - - \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0); - \draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2); - - \draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0); - - % Polytope Annotations - - \node[codeword, color=KITred] (c111) at (2, 2, 2) {};% {$\left( 0, 0, 0 \right) $}; - \node[codeword, color=KITred] (c001) at (0, 0, 2) {};% {$\left( 1, 0, 1 \right) $}; - \node[codeword, color=KITred] (c100) at (2, 0, 0) {};% {$\left( 1, 1, 0 \right) $}; - \node[codeword, color=KITred] (c010) at (0, 2, 0) {};% {$\left( 0, 1, 1 \right) $}; - - \node[color=KITred, left=0cm of c111] {$\left( 1, 1, 1 \right) $}; - \node[color=KITred, right=0cm of c001] {$\left( 0, 0, 1 \right) $}; - \node[color=KITred, right=0.35cm of c100] {$\left( 1, 0, 0 \right) $}; - \node[color=KITred, below=0cm of c010] {$\left( 0, 1, 0 \right) $}; - \end{tikzpicture} - \caption{Relaxed polytope for $n=3$} - \end{figure} - \end{minipage} - \todo{How is this a relaxation and not just an alternative formulation? - We have just switched out valid codewords for invalid ones} - \todo{Is LP Relaxation relevant as theoretical background?} \end{frame}