From 99008e29e86051b91f02e4e99246e3dfe9ee0942 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Wed, 12 Apr 2023 12:31:23 +0200 Subject: [PATCH] Finished LP Relaxation slides --- latex/presentations/final/presentation.tex | 1 + .../final/sections/decoding_algorithms.tex | 234 +++++++++--------- 2 files changed, 112 insertions(+), 123 deletions(-) diff --git a/latex/presentations/final/presentation.tex b/latex/presentations/final/presentation.tex index e454a20..eed86be 100644 --- a/latex/presentations/final/presentation.tex +++ b/latex/presentations/final/presentation.tex @@ -27,6 +27,7 @@ \usetikzlibrary{spy} \tikzexternalize[prefix=build/] +\captionsetup[sub]{font=small} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min} diff --git a/latex/presentations/final/sections/decoding_algorithms.tex b/latex/presentations/final/sections/decoding_algorithms.tex index 396fb0f..e6408da 100644 --- a/latex/presentations/final/sections/decoding_algorithms.tex +++ b/latex/presentations/final/sections/decoding_algorithms.tex @@ -129,118 +129,58 @@ return $\boldsymbol{\hat{c}}$ \begin{frame}[t] \frametitle{LP Decoding \cite{feldman_paper}} - \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}}\alpha_{\boldsymbol{c}} - \boldsymbol{c} : \alpha_{\boldsymbol{c}} \ge 0, - \sum_{\boldsymbol{c}\in\mathcal{C}}\alpha_{\boldsymbol{c}} = 1 - \right\}, - \hspace{5mm} \alpha_{\boldsymbol{c}} \in \mathbb{R}_{\ge 0} - \end{align*} - \item Cost function: - \begin{align*} - \boldsymbol{\gamma}^{T} \tilde{\boldsymbol{c}} = \sum_{i=1}^{n} - \gamma_i \tilde{c}_i, - \hspace{5mm}\gamma_i = \ln\left( - \frac{p_{Y_i \mid C_i}\left( y_i | c_i = 0 \right) } - {p_{Y_i \mid C_i}\left(y_i | c_i=1 \right) } \right) - \end{align*} - \item Exact LP formulation of ML decoding: - \begin{align*} - &\text{minimize } \boldsymbol{\gamma}^\text{T} \tilde{\boldsymbol{c}}\\ - &\text{subject to } \tilde{\boldsymbol{c}}\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] {$\tilde{\boldsymbol{c}}$}; - \end{tikzpicture} - \caption{$\text{poly}\left( \mathcal{C} \right)$ for single parity-check code with - $n=3$} - \end{figure} - \end{minipage} + \begin{itemize} + \item General reformulation of ML decoding as a linear program (LP) +% \item Codeword polytope: +% \begin{align*} +% \text{poly}\left( \mathcal{C} \right) = +% \left\{ +% \sum_{\boldsymbol{c}\in\mathcal{C}}\alpha_{\boldsymbol{c}} +% \boldsymbol{c} : \alpha_{\boldsymbol{c}} \ge 0, +% \sum_{\boldsymbol{c}\in\mathcal{C}}\alpha_{\boldsymbol{c}} = 1 +% \right\}, +% \hspace{5mm} \alpha_{\boldsymbol{c}} \in \mathbb{R}_{\ge 0} +% \end{align*} + \item Cost function: + \begin{align*} + \boldsymbol{\gamma}^{T} \boldsymbol{c} = \sum_{i=1}^{n} + \gamma_i c_i, + \hspace{5mm}\gamma_i = \ln\left( + \frac{p_{Y_i \mid C_i}\left( y_i | c_i = 0 \right) } + {p_{Y_i \mid C_i}\left(y_i | c_i=1 \right) } \right) + \end{align*} + \item Exact \textit{integer linear programming} (ILP) formulation of ML decoding: + \begin{align*} + &\text{minimize } \boldsymbol{\gamma}^\text{T} \tilde{\boldsymbol{c}}\\ + &\text{subject to } \boldsymbol{c}\in \mathcal{C} + \end{align*} + \item Goal: relaxation of constraints to make a practical solution to the problem feasible + \end{itemize} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] - \frametitle{LP Relaxation} + \frametitle{LP Relaxation: Motivation} \vspace*{-1cm} \begin{gather*} - \boldsymbol{G} = - \begin{bmatrix} - 0 & 1 & 1 - \end{bmatrix} \hspace{1cm} +% \boldsymbol{G} = +% \begin{bmatrix} +% 0 & 1 & 1 +% \end{bmatrix} \hspace{1cm} \boldsymbol{H} = \begin{bmatrix} 1 & 1 & 1\\ 0 & 1 & 1 - \end{bmatrix} \\[1em] + \end{bmatrix} \hspace{1cm} +% \\[1em] \mathcal{C} = \left\{ \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 1 \\ 1 \end{bmatrix} \right\} \end{gather*}% - \vspace*{-1cm} + \vspace*{-5mm} \begin{figure}[H] \centering @@ -356,12 +296,23 @@ return $\boldsymbol{\hat{c}}$ \end{subfigure} \end{figure} +% \vspace*{-5mm} + + \begin{align*} + \text{poly}\left( \mathcal{C} \right) = + \left\{ + \sum_{\boldsymbol{c}\in\mathcal{C}}\alpha_{\boldsymbol{c}} + \boldsymbol{c} : \alpha_{\boldsymbol{c}} \ge 0, + \sum_{\boldsymbol{c}\in\mathcal{C}}\alpha_{\boldsymbol{c}} = 1 + \right\}, + \hspace{5mm} \alpha_{\boldsymbol{c}} \in \mathbb{R}_{\ge 0} + \end{align*} \end{frame} \begin{frame}[t] \frametitle{LP Relaxation} - \vspace*{-8mm} + \vspace*{-1cm} \begin{figure}[H] \centering @@ -501,7 +452,7 @@ return $\boldsymbol{\hat{c}}$ \end{tikzpicture} \end{minipage} - \caption{Local codeword polytopes of the check nodes} + \caption{Local codeword polytopes $\mathcal{P}_{d_j}$ of the check nodes} \label{fig:lp:poly:local} \end{subfigure}% \begin{subfigure}[c]{0.18\textwidth} @@ -520,6 +471,7 @@ return $\boldsymbol{\hat{c}}$ \begin{subfigure}[c]{0.32\textwidth} \centering + \vspace*{1.5cm} \tikzstyle{codeword} = [color=KITblue, fill=KITblue, draw, circle, inner sep=0pt, minimum size=4pt] \tikzstyle{pseudocodeword} = [color=KITred, fill=KITred, @@ -574,6 +526,13 @@ return $\boldsymbol{\hat{c}}$ \node[color=KITred, right=0cm of cpseudo] {$\left( 1, \frac{1}{2}, \frac{1}{2} \right) $}; \end{tikzpicture} + + \vspace*{-5mm} + + \begin{align*} + \boldsymbol{T}_j\tilde{\boldsymbol{c}} \in \mathcal{P}_{d_j}, \hspace{2mm} + \forall j\in \mathcal{J} + \end{align*} \caption{Relaxed codeword polytope $\overline{Q}$} \label{fig:lp:poly:relaxed} @@ -584,11 +543,13 @@ return $\boldsymbol{\hat{c}}$ \begin{frame}[t] \frametitle{LP Relaxation} - + + \vspace{-5mm} + \begin{figure}[H] \centering - \begin{subfigure}[c]{0.2\textwidth} + \begin{subfigure}[t]{0.3\textwidth} \centering \tikzstyle{codeword} = [color=KITblue, fill=KITblue, draw, circle, inner sep=0pt, minimum size=4pt] @@ -629,20 +590,17 @@ return $\boldsymbol{\hat{c}}$ \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; - - \node at (3, -2) {$\mathcal{C}$}; \end{tikzpicture} - \end{subfigure}% - \begin{subfigure}[c]{0.18\textwidth} - \centering - \begin{tikzpicture} - \node (relaxation) at (0, 0) {Relaxation}; - \draw (-1.5, 0) -- (relaxation); - \draw[->] (relaxation) -- (1.5, 0); - \end{tikzpicture} + \begin{align*} + \text{minimize}\hspace{2mm} &\boldsymbol{\gamma}^\text{T} \boldsymbol{c} \\ + \text{subject to}\hspace{2mm} &\boldsymbol{c} \in \mathcal{C} + \end{align*} + + \caption{\textit{Integer linear program} (ILP)} \end{subfigure}% - \begin{subfigure}[c]{0.2\textwidth} + \hfill% + \begin{subfigure}[t]{0.3\textwidth} \centering \tikzstyle{codeword} = [color=KITblue, fill=KITblue, draw, circle, inner sep=0pt, minimum size=4pt] @@ -687,20 +645,18 @@ return $\boldsymbol{\hat{c}}$ \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; - - \node at (3, -2) {$\text{poly}\left(\mathcal{C}\right)$}; \end{tikzpicture} - \end{subfigure}% - \begin{subfigure}[c]{0.18\textwidth} - \centering - \begin{tikzpicture} - \node (relaxation) at (0, 0) {Relaxation}; - \draw (-1.5, 0) -- (relaxation); - \draw[->] (relaxation) -- (1.5, 0); - \end{tikzpicture} + \begin{align*} + \text{minimize}\hspace{2mm} &\boldsymbol{\gamma}^\text{T} \boldsymbol{c} \\ + \text{subject to}\hspace{2mm} &\tilde{\boldsymbol{c}} \in + \text{poly}\left( \mathcal{C} \right) &\ + \end{align*} + + \caption{Motivation} \end{subfigure}% - \begin{subfigure}[c]{0.2\textwidth} + \hfill% + \begin{subfigure}[t]{0.3\textwidth} \centering \tikzstyle{codeword} = [color=KITblue, fill=KITblue, draw, circle, inner sep=0pt, minimum size=4pt] @@ -754,12 +710,44 @@ return $\boldsymbol{\hat{c}}$ \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; \node[color=KITred, right=0cm of cpseudo] {$\left( 1, \frac{1}{2}, \frac{1}{2} \right) $}; + \end{tikzpicture} + + \begin{align*} + \text{minimize}\hspace{2mm} &\boldsymbol{\gamma}^\text{T} \boldsymbol{c} \\ + \text{subject to}\hspace{2mm} & + \boldsymbol{T}_j\tilde{\boldsymbol{c}} \in \mathcal{P}_{d_j}, \hspace{2mm} + \forall j\in \mathcal{J} + \end{align*} - \node at (3, -2) {$\overline{Q}$}; + \caption{\textit{Linear code linear program} (LCLP)} + \end{subfigure}% + \end{figure} + + \vspace*{-5.75cm} + \begin{figure}[H] + \centering + + \begin{subfigure}[t]{0.36\textwidth} + \centering + + \begin{tikzpicture} + \node (relaxation) at (0, 0) {Relaxation}; + + \draw[->] (-1, -0.25) -- (1, -0.25); +% \draw (-1.5, 0) -- (relaxation); +% \draw[->] (relaxation) -- (1.5, 0); \end{tikzpicture} \end{subfigure}% - + \begin{subfigure}[t]{0.31\textwidth} + \centering + \begin{tikzpicture} + \node (relaxation) at (0, 0) {Relaxation}; + \draw[->] (-1, -0.25) -- (1, -0.25); +% \draw (-1.5, 0) -- (relaxation); +% \draw[->] (relaxation) -- (1.5, 0); + \end{tikzpicture} + \end{subfigure}% \end{figure} \end{frame}