ba-thesis/latex/presentations/final/sections/proximal_decoding.tex

1751 lines
83 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\section{Proximal Decoding}%
\label{sec:Proximal Decoding}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Decoding Algorithm}%
\label{sub:Decoding Algorithm}
\begin{frame}[t]
\frametitle{Proximal Decoding: General Idea \citereference{WT22}}
\vspace*{-0.7cm}
\begin{itemize}
\item MAP rule as continuous maximization problem:
\begin{align*}
\hat{\boldsymbol{x}}
&= \argmax_{\tilde{\boldsymbol{x}}\in\mathbb{R}^n}
f_{\boldsymbol{Y}}\left( \boldsymbol{y} | \tilde{\boldsymbol{x}} \right)
f_{\boldsymbol{X}}\left( \tilde{\boldsymbol{x}} \right)\\
&= \argmax_{\tilde{\boldsymbol{x}}\in\mathbb{R}^n}
e^{-L\left( \boldsymbol{y} | \tilde{\boldsymbol{x}}\right)}
f_{\boldsymbol{X}}\left( \tilde{\boldsymbol{x}} \right),
\hspace{5mm} L\left( \boldsymbol{y} | \tilde{\boldsymbol{x}} \right)
= - \ln\left( f_{\boldsymbol{Y}}
\left( \boldsymbol{y} | \tilde{\boldsymbol{x}} \right) \right)
\end{align*}
\item Approximation of prior PDF:
\begin{align*}
f_{\boldsymbol{X}}\left( \tilde{\boldsymbol{x}} \right)
= \frac{1}{\left| \mathcal{C} \right| }
\sum_{\boldsymbol{c} \in \mathcal{C} }
\delta\left( \tilde{\boldsymbol{x}} - \left( -1 \right)^{\boldsymbol{c}}
\right)
\approx \frac{1}{Z} e^{-\gamma h\left( \tilde{\boldsymbol{x}} \right) }
\end{align*}
\item Code constraint polynomial:
\begin{minipage}[c]{0.56\textwidth}
\raggedright
\begin{align*}
h\left( \tilde{\boldsymbol{x}} \right) =
\underbrace{\sum_{i=1}^{n} \left( \tilde{x}_i^2 - 1 \right)^2}_{\text{Bipolar
constraint}}
+ \underbrace{\sum_{j=1}^{m} \left[ \left(
\prod_{i\in N_v\left( j \right)} \tilde{x}_i\right) -1 \right]^2}
_{\text{Parity constraint}},
\end{align*}
\end{minipage}%
\begin{minipage}[c]{0.4\textwidth}
\raggedleft
\begin{flalign*}
\mathcal{I} &:= \left[1\text{ : }n\right],
\hspace{2mm} \mathcal{J} := \left[1\text{ : }m\right] \\
N_v\left( j \right) &:= \left\{i | i\in \mathcal{I},
\boldsymbol{H}_{j,i} = 1
\right\}, j\in\mathcal{J}\\
\end{flalign*}
\end{minipage}
\hfill
\end{itemize}
\smallskip
\smallskip
\addreference{WT22}{Tadashi Wadayama; Satoshi Takabe: \emph{Proximal Decoding for LDPC
Codes}. IEICE Transactions on Fundamentals of Electronics, Communications and Computer
Sciences advpub (2022), 2022TAP0002.}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t]
\frametitle{Proximal Decoding: General Idea}
\vspace*{-3mm}
\begin{itemize}
\item Objective function:
\begin{align*}
g\left( \tilde{\boldsymbol{x}} \right)
= L\left( \boldsymbol{y} | \tilde{\boldsymbol{x}} \right)
+ \gamma h\left( \tilde{\boldsymbol{x}} \right)
\end{align*}
\note{Notational difference between $f$ and $f_X$ or $f_Y$}
\item Proximal operator \citereference{PB14}:
\begin{align*}
\text{prox}_{\gamma h} \left( \tilde{\boldsymbol{x}} \right) &\equiv
\argmin_{\boldsymbol{t}\in\mathbb{R}^n}
\gamma h\left( \boldsymbol{t} \right) + \frac{1}{2} \lVert \boldsymbol{t}
- \tilde{\boldsymbol{x}} \rVert^2 \\
&\approx \tilde{\boldsymbol{x}}
- \gamma \nabla h\left( \tilde{\boldsymbol{x}} \right),
\hspace{5mm} \gamma \text{ small}
\end{align*}
\item Iterative decoding process:
\begin{align*}
\boldsymbol{r} &\leftarrow \boldsymbol{s}
- \omega \nabla L\left( \boldsymbol{y} | \boldsymbol{s}
\right), \hspace{5mm} \omega > 0
\hspace{10mm} \text{``Gradient descent step''}\\
\boldsymbol{s} &\leftarrow \boldsymbol{r}
- \gamma \nabla h\left( \boldsymbol{r}
\right), \hspace{9mm} \gamma > 0
\hspace{10mm} \text{``Code proximal step''}
\end{align*}
\end{itemize}
\bigskip
\addreference{PB14}{Neal Parikh; Stephen Boyd: \emph{Proximal Algorithms}.
Found. Trends Optim. 1.3 (Jan. 2014), pp. 127239.}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t, fragile]
\frametitle{Proximal Decoding: Algorithm}
\begin{itemize}
\item Iterative decoding algorithm:
\end{itemize}
\vspace{2mm}
\begin{algorithm}[caption={}, label={}]
$\boldsymbol{s} \leftarrow \boldsymbol{0}$
for $K$ iterations do
$\boldsymbol{r} \leftarrow \boldsymbol{s} - \omega \nabla L \left( \boldsymbol{y} \mid \boldsymbol{s} \right) $
$\boldsymbol{s} \leftarrow \boldsymbol{r} - \gamma \nabla h\left( \boldsymbol{r} \right) $
$\boldsymbol{\hat{x}} \leftarrow \text{sign}\left( \boldsymbol{s} \right) $
if $\boldsymbol{H}\boldsymbol{\hat{c}} = \boldsymbol{0}$ do
return $\boldsymbol{\hat{c}}$
end if
end for
return $\boldsymbol{\hat{c}}$
\end{algorithm}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Analysis of Simulation Results}%
\label{sub:Analysis of Simulation Results}
\begin{frame}[t]
\frametitle{Proximal Decoding: Bit Error Rate}
\vspace*{-7mm}
\begin{itemize}
\item (3,6) regular LDPC code with $n=204, k=102$ \citereference{Mac23, 204.33.484}
\end{itemize}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}[
grid=both, grid style={line width=.1pt},
xlabel={$E_b / N_0$ (dB)}, ylabel={BER},
ymode=log,
legend pos=outer north east,
width=0.45\textwidth,
height=0.3375\textwidth,
ymax=1.2, ymin=0.8e-4,
xtick={1, 2, ..., 5},
xmin=0.9, xmax=5.6,
legend columns=2,
]
\addplot [ForestGreen, mark=triangle, dashed, line width=1pt]
table [x=SNR, y=BER, col sep=comma,
discard if not={gamma}{0.15},
discard if gt={SNR}{5.5},]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.15$}
\addplot [ForestGreen, mark=*, line width=1pt]
table [x=SNR, y=gamma_0_15, col sep=comma] {res/ber_paper.csv};
\addlegendentry{$\gamma = 0.15$ \citereference{WT22}}
\addplot [NavyBlue, mark=triangle, dashed, line width=1pt]
table [x=SNR, y=BER, col sep=comma,
discard if not={gamma}{0.01},
discard if gt={SNR}{5.5},]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.01$}
\addplot [NavyBlue, mark=*, line width=1pt]
table [x=SNR, y=gamma_0_01, col sep=comma] {res/ber_paper.csv};
\addlegendentry{$\gamma = 0.01$ \citereference{WT22}}
\addplot [RedOrange, mark=triangle, dashed, line width=1pt]
table [x=SNR, y=BER, col sep=comma,
discard if not={gamma}{0.05},
discard if gt={SNR}{5.5},]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.05$}
\addplot [RedOrange, mark=*, line width=1pt]
table [x=SNR, y=gamma_0_05, col sep=comma] {res/ber_paper.csv};
\addlegendentry{$\gamma = 0.05$ \citereference{WT22}}
\addplot [RoyalPurple, mark=*, line width=1pt]
table [x=SNR, y=BP, col sep=comma] {res/ber_paper.csv};
\addlegendentry{BP \citereference{WT22}}
\end{axis}
\end{tikzpicture}
\end{figure}
\vspace*{-2mm}
\begin{itemize}
\item Comparison of simulation with results of Wadayama et al. \citereference{WT22}
\end{itemize}
\bigskip
\addreference{WT22}{Tadashi Wadayama; Satoshi Takabe: \emph{Proximal Decoding for LDPC
Codes}. IEICE Transactions on Fundamentals of Electronics, Communications and Computer
Sciences advpub (2022), 2022TAP0002.}
\addreference{Mac23}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
Jan. 2023. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}}.
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t]
\frametitle{Proximal Decoding: Choice of $\gamma$}
\vspace*{-5mm}
\begin{itemize}
\item (3,6) regular LDPC code with $n=204, k=102$ \citereference{Mac23, 204.33.484}
\end{itemize}
\begin{figure}[H]
\centering
\hspace*{-3.5cm}
\begin{subfigure}[c]{0.4\textwidth}
\centering
\begin{tikzpicture}
\begin{semilogyaxis}[xlabel={$E_b / N_0$ (dB)}, ylabel={BER},
grid=both, grid style={line width=.1pt},
width=\textwidth,
height=0.75\textwidth,
legend style={at={(0.05,0.05)},anchor=south west},
ymin=3e-7, ymax=1.5,]
\addplot [ForestGreen, mark=*] table [x=SNR, y=BER,
col sep=comma, discard if not={gamma}{0.15}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.15$}
\addplot [NavyBlue, mark=*] table [x=SNR, y=BER,
col sep=comma, discard if not={gamma}{0.01}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.01$}
\addplot [RedOrange, mark=*] table [x=SNR, y=BER,
col sep=comma, discard if not={gamma}{0.05}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.05$}
\end{semilogyaxis}
\end{tikzpicture}
\end{subfigure}%
\hspace{5mm}
\begin{subfigure}[c]{0.4\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[view={75}{30},
zmode=log,
xlabel={$E_b / N_0$ (dB)},
ylabel={$\gamma$},
zlabel={BER},
width=\textwidth,
height=0.75\textwidth,
legend pos=outer north east,]
\addplot3[surf,
mesh/rows=17, mesh/cols=14,
colormap/viridis] table [col sep=comma,
x=SNR, y=gamma, z=BER]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = \left[ 0\text{:}0.01\text{:}0.16 \right] $}
\addplot3[NavyBlue, line width=1.5] table [col sep=comma,
discard if not={gamma}{0.01},
x=SNR, y=gamma, z=BER]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.01$}
\addplot3[RedOrange, line width=1.5] table [col sep=comma,
discard if not={gamma}{0.05},
x=SNR, y=gamma, z=BER]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.05$}
\addplot3[ForestGreen, line width=1.5] table [col sep=comma,
discard if not={gamma}{0.15},
x=SNR, y=gamma, z=BER]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.15$}
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}
\begin{itemize}
\item Not great benefit in finding the optimal value for $\gamma$
\end{itemize}
\bigskip
\addreference{Mac23}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
Jan. 2023. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}}.
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\begin{frame}[t]
% \frametitle{Proximal Decoding: Choice of $\gamma$}
%
% \begin{minipage}[c]{0.9\textwidth}
% \centering
%
% \begin{figure}[H]
% \vspace*{-0.5cm}
% \hspace*{-0.7cm}
% \centering
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[view={75}{30},
% zmode=log,
% xlabel={$E_b / N_0$ (dB)},
% ylabel={$\gamma$},
% zlabel={BER},]
% \addplot3[surf,
% mesh/rows=17, mesh/cols=10,
% colormap/viridis] table [col sep=comma,
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \addplot3[RedOrange, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.05},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \addplot3[NavyBlue, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.01},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \addplot3[ForestGreen, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.15},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=96, k=48$ \cite[\text{96.3.965}]{mackay_enc}}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[view={75}{30},
% zmode=log,
% xlabel={$E_b/N_0$ (dB)},
% ylabel={$\gamma$},
% zlabel={BER},]
% \addplot3[surf,
% mesh/rows=17, mesh/cols=14,
% colormap/viridis] table [col sep=comma,
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot3[RedOrange, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.05},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot3[NavyBlue, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.01},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot3[ForestGreen, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.15},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[view={75}{30},
% zmode=log,
% xlabel={$E_b / N_0$ (dB)},
% ylabel={$\gamma$},
% zlabel={BER},]
% \addplot3[surf,
% mesh/rows=17, mesh/cols=10,
% colormap/viridis] table [col sep=comma,
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \addplot3[RedOrange, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.05},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \addplot3[NavyBlue, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.01},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \addplot3[ForestGreen, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.15},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=408, k=204$ \cite[\text{408.33.844}]{mackay_enc}}
% \end{subfigure}
% \hspace*{-0.7cm}
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[view={75}{30},
% zmode=log,
% xlabel={$E_b / N_0$ (dB)},
% ylabel={$\gamma$},
% zlabel={BER},]
% \addplot3[surf,
% mesh/rows=17, mesh/cols=10,
% colormap/viridis] table [col sep=comma,
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \addplot3[RedOrange, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.05},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \addplot3[NavyBlue, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.01},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \addplot3[ForestGreen, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.15},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{BCH code with $n=31, k=26$\\[2\baselineskip]}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[view={75}{30},
% zmode=log,
% xlabel={$E_b / N_0$ (dB)},
% ylabel={$\gamma$},
% zlabel={BER},]
% \addplot3[surf,
% mesh/rows=17, mesh/cols=10,
% colormap/viridis] table [col sep=comma,
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \addplot3[RedOrange, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.05},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \addplot3[NavyBlue, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.01},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \addplot3[ForestGreen, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.15},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 5, 10 \right)$-regular LDPC code with $n=204, k=102$ \cite[\text{204.55.187}]{mackay_enc}}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[view={75}{30},
% zmode=log,
% xlabel={$E_b / N_0$ (dB)},
% ylabel={$\gamma$},
% zlabel={BER},]
% \addplot3[surf,
% mesh/rows=17, mesh/cols=10,
% colormap/viridis] table [col sep=comma,
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \addplot3[RedOrange, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.05},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \addplot3[NavyBlue, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.01},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \addplot3[ForestGreen, line width=1.5] table[col sep=comma,
% discard if not={gamma}{0.15},
% x=SNR, y=gamma, z=BER]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{LDPC code (Progressive Edge Growth Construction) with $n=504, k=252$ \cite[\text{PEGReg252x504}]{mackay_enc}}
% \end{subfigure}%
% \end{figure}
% \end{minipage}%
% \begin{minipage}[c]{0.1\textwidth}
% \centering
%
% \begin{figure}[H]
% \vspace*{-1.5cm}
% \hspace*{-0.75cm}
% \centering
% \begin{tikzpicture}[scale=0.7]
% \begin{axis}[hide axis,
% xmin=10, xmax=50,
% ymin=0, ymax=0.4,
% legend style={draw=white!15!black,legend cell align=left}]
% \addlegendimage{surf, colormap/viridis}
% \addlegendentry{$\gamma = \left[ 0\text{ : }0.01\text{ : }0.16 \right] $};
% \addlegendimage{NavyBlue, line width=1.5pt}
% \addlegendentry{$\gamma = 0.01$};
% \addlegendimage{RedOrange, line width=1.5pt}
% \addlegendentry{$\gamma = 0.05$};
% \addlegendimage{ForestGreen, line width=1.5pt}
% \addlegendentry{$\gamma = 0.15$};
% \end{axis}
% \end{tikzpicture}
% \end{figure}
% \end{minipage}
%\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t, fragile]
\frametitle{Proximal Decoding: Frame Error Rate}
\vspace*{-3mm}
\begin{itemize}
\item (3,6) regular LDPC code with $n=204$,\\
$k=102$ \citereference{Mac23, 204.33.484}
\end{itemize}
\vspace*{-2mm}
\begin{minipage}{.4\textwidth}
\centering
\begin{figure}[htpb]
\centering
\begin{algorithm}[caption={}, label={}]
$\boldsymbol{s} \leftarrow \boldsymbol{0}$
for $K$ iterations do
$\boldsymbol{r} \leftarrow \boldsymbol{s} - \omega \nabla L \left( \boldsymbol{y} \mid \boldsymbol{s} \right) $
$\boldsymbol{s} \leftarrow \boldsymbol{r} - \gamma \nabla h\left( \boldsymbol{r} \right) $
$\boldsymbol{\hat{x}} \leftarrow \text{sign}\left( \boldsymbol{s} \right) $
if $\boldsymbol{H}\boldsymbol{\hat{c}} = \boldsymbol{0}$ do
return $\boldsymbol{\hat{c}}$
end if
end for
return $\boldsymbol{\hat{c}}$
\end{algorithm}
\end{figure}
\vspace*{-4mm}
\hspace*{-4mm}
\addreference{Mac23}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
Jan. 2023. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}.}
\end{minipage}%
\begin{minipage}{.6\textwidth}
\centering
\begin{figure}[H]
\vspace*{-9mm}
\centering
\begin{tikzpicture}[scale=0.7]
\begin{axis}[
grid=both,
xlabel={$E_b / N_0$ (dB)}, ylabel={BER},
ymode=log,
legend style={at={(0.05,0.05)},anchor=south west},
ymax=1.5, ymin=3e-7,
width=0.7\textwidth,
height=0.6\textwidth,
]
\addplot [ForestGreen, mark=*, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.15}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.15$}
\addplot [NavyBlue, mark=*, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.01}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.01$}
\addplot [RedOrange, mark=*, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.05$}
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}[scale=0.7]
\begin{axis}[
grid=both,
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
ymode=log,
legend style={at={(0.05,0.05)},anchor=south west},
ymax=1.5, ymin=3e-7,
width=0.7\textwidth,
height=0.6\textwidth,
]
\addplot [ForestGreen, mark=*, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.15$}
\addplot [NavyBlue, mark=*, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.01$}
\addplot [RedOrange, mark=*, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.05$}
\end{axis}
\end{tikzpicture}\\
\begin{tikzpicture}[scale=0.7]
\begin{axis}[
grid=both,
xlabel={$E_b / N_0$ (dB)}, ylabel={Decoding Failure Rate},
ymode=log,
legend style={at={(0.05,0.05)},anchor=south west},
ymax=1.5, ymin=3e-7,
width=0.7\textwidth,
height=0.6\textwidth,
]
\addplot [ForestGreen, mark=*, line width=1pt]
table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.15}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.15$}
\addplot [NavyBlue, mark=*, line width=1pt]
table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.01}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.01$}
\addplot [RedOrange, mark=*, line width=1pt]
table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.05}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addlegendentry{$\gamma = 0.05$}
\end{axis}
\end{tikzpicture}
\end{figure}
\end{minipage}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t]
\frametitle{Proximal Decoding: Oscillation of Estimate}
\vspace*{-5mm}
\begin{itemize}
\item Single decoding using the BCH$\left( 7,4 \right) $ code; $E_b / N_0 = \SI{5}{dB}$
\end{itemize}
\begin{figure}[H]
\centering
\begin{minipage}[c]{0.25\textwidth}
\centering
\begin{tikzpicture}[scale = 0.7]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=1.2\textwidth,
height=0.45\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_1]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_1]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_1]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_2$}
\addlegendentry{$\left(\nabla h \right)_2 $}
\end{axis}
\end{tikzpicture}\\
\begin{tikzpicture}[scale = 0.7]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=1.2\textwidth,
height=0.45\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_2]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_2]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_2]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_3$}
\addlegendentry{$\left(\nabla h \right)_3 $}
\end{axis}
\end{tikzpicture}\\
\begin{tikzpicture}[scale = 0.7]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=1.2\textwidth,
height=0.45\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_3]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_3]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_3]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_4$}
\addlegendentry{$\left(\nabla h \right)_4 $}
\end{axis}
\end{tikzpicture}
\end{minipage}%
\begin{minipage}[c]{0.5\textwidth}
\vspace*{-1cm}
\centering
\begin{tikzpicture}[, spy using outlines={circle, magnification=6,
connect spies}]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=0.8\textwidth,
height=0.35\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_0]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_0]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_0]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_1$}
\addlegendentry{$\left(\nabla h \right)_1 $}
\coordinate (spypoint) at (axis cs:100,1.12);
\coordinate (magnifyglass) at (axis cs:180,2.75);
\end{axis}
\spy [black, size=2cm] on (spypoint)
in node[fill=white] at (magnifyglass);
\end{tikzpicture}
\end{minipage}%
\begin{minipage}[c]{0.25\textwidth}
\centering
\begin{tikzpicture}[scale = 0.7]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=1.2\textwidth,
height=0.45\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_4]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_4]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_4]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_5$}
\addlegendentry{$\left(\nabla h \right)_5 $}
\end{axis}
\end{tikzpicture}\\
\begin{tikzpicture}[scale = 0.7]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=1.2\textwidth,
height=0.45\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_5]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_5]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_5]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_6$}
\addlegendentry{$\left(\nabla h \right)_6 $}
\end{axis}
\end{tikzpicture}\\
\begin{tikzpicture}[scale = 0.7]
\begin{axis}[
grid=both,
xlabel={Iterations},
width=1.2\textwidth,
height=0.45\textwidth,
scale only axis,
xtick={0, 50, ..., 200},
xticklabels={0, 25, ..., 100},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_6]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_6]
{res/proximal/comp_bch_7_4_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_6]
{res/proximal/comp_bch_7_4_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_7$}
\addlegendentry{$\left(\nabla h \right)_7 $}
\end{axis}
\end{tikzpicture}
\end{minipage}
\end{figure}
\begin{itemize}
\item $\nabla L \left( \boldsymbol{y} \mid \tilde{\boldsymbol{x}} \right) $
and $\nabla h \left( \tilde{\boldsymbol{x}} \right) $ generally end up
in an equilibrium
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t]
\frametitle{Proximal Decoding: Visualization of Gradients}
\vspace*{-5mm}
\begin{figure}[H]
\centering
\begin{subfigure}[c]{0.5\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[xmin = -1.25, xmax=1.25,
ymin = -1.25, ymax=1.25,
xlabel={$x_1$}, ylabel={$x_2$},
width=0.9\textwidth,
height=0.8\textwidth,
grid=major, grid style={dotted},
view={0}{90}]
\addplot3[point meta=\thisrow{grad_norm},
point meta min=1,
point meta max=3,
quiver={u=\thisrow{grad_0},
v=\thisrow{grad_1},
scale arrows=.05,
every arrow/.append style={%
line width=.3+\pgfplotspointmetatransformed/1000,
-{Latex[length=0pt 5,width=0pt 3]}
},
},
quiver/colored = {mapped color},
colormap/rocket,
-stealth,
]
table[col sep=comma] {res/proximal/2d_grad_L.csv};
\end{axis}
\end{tikzpicture}
\caption{$\nabla L \left(\boldsymbol{y} \mid \tilde{\boldsymbol{x}} \right)$%
\footnotemark{} for a repetition code with $n=2$}
\end{subfigure}%
\begin{subfigure}[c]{0.5\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[xmin = -1.25, xmax=1.25,
ymin = -1.25, ymax=1.25,
width=0.9\textwidth,
height=0.8\textwidth,
xlabel={$x_1$}, ylabel={$x_2$},
grid=major, grid style={dotted},
view={0}{90}]
\addplot3[point meta=\thisrow{grad_norm},
point meta min=1,
point meta max=4,
quiver={u=\thisrow{grad_0},
v=\thisrow{grad_1},
scale arrows=.03,
every arrow/.append style={%
line width=.3+\pgfplotspointmetatransformed/1000,
-{Latex[length=0pt 5,width=0pt 3]}
},
},
quiver/colored = {mapped color},
colormap/rocket,
-stealth,
]
table[col sep=comma] {res/proximal/2d_grad_h.csv};
\end{axis}
\end{tikzpicture}
\caption{$\nabla h \left( \tilde{\boldsymbol{x}} \right) $ for a repetition code
with $n=2$}
\end{subfigure}%
\end{figure}
\footnotetext{In an AWGN Channel $\nabla L\left( \boldsymbol{y} \mid
\tilde{\boldsymbol{x}}\right)
\propto \left( \tilde{\boldsymbol{x}} - \boldsymbol{y} \right)$}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t]
\frametitle{Proximal Decoder: Oscillation of $\nabla h\left( \tilde{\boldsymbol{x}} \right) $}
\vspace*{-3mm}
\begin{itemize}
\item Single decoding using a (3,6) regular LDPC code with $n=204, k=102$
\citereference{Mac23, 204.33.484}
% ; $\gamma = 0.05, \omega = 0.05, E_b / N_0 = \SI{5}{dB}$
\end{itemize}
\begin{figure}
\centering
\begin{subfigure}[t]{0.5\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[
grid=both,
xlabel={Iterations},
width=0.85\textwidth,
height=0.4\textwidth,
scale only axis,
xtick={0, 100, ..., 400},
xticklabels={0, 50, ..., 200},
]
\addplot [NavyBlue, mark=none, line width=1]
table [col sep=comma, x=k, y=comb_r_s_0]
{res/proximal/extreme_components_20433484_combined.csv};
\addplot [ForestGreen, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_L_0]
{res/proximal/extreme_components_20433484_combined.csv};
\addplot [RedOrange, mark=none, line width=1]
table [col sep=comma, x=k, y=grad_h_0]
{res/proximal/extreme_components_20433484_combined.csv};
\addlegendentry{est}
\addlegendentry{$\left(\nabla L \right)_1$}
\addlegendentry{$\left(\nabla h \right)_1$}
\end{axis}
\end{tikzpicture}
\end{subfigure}%
\begin{subfigure}[t]{0.5\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[
point meta min = -1,
point meta max = 1,
grid=both,
xlabel={$Var\left( \nabla h\left( \tilde{\boldsymbol{x}} \right) \right) $},
ylabel={Bit error (bool)},
ytick={0, 1},
width=0.85\textwidth,
height=0.4\textwidth,
scale only axis,
% colormap/viridis,
]
\addplot [RoyalPurple, only marks,]
table [col sep=comma, x=grad_h_vars, y=bit_error]
{res/proximal/extreme_components_20433484_variance.csv};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}
\begin{itemize}
\item For larger $n$, the gradient itself starts to oscillate
\item Dynamic range of oscillation highly correlated with probability of bit error
\end{itemize}
\bigskip
\bigskip
\addreference{Mac23}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
Jan. 2023. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}.}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\newcommand{\tikzbracemark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
%
%\newcommand*{\AddNote}[4]{%
% \begin{tikzpicture}[overlay, remember picture]
% \draw [decoration={brace,amplitude=0.5em},decorate,ultra thick]
% ($(#3)!([yshift=1.5ex]#1)!($(#3)-(0,1)$)$) --
% ($(#3)!(#2)!($(#3)-(0,1)$)$)
% node [align=center, text width=2cm, pos=0.5, anchor=west] {#4};
% \end{tikzpicture}
%}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\begin{frame}[t, fragile]
% \frametitle{Proximal Decoding: Improvement using ``ML-on-List''}
%
% \begin{itemize}
% \item Comparison of proximal \& hybrid-proximal-ML\\
% decoding simulation
% \footnote{(3,6) regular LDPC Code with $n=204, k=102$
% \cite[Code: 204.33.484]{mackay_enc}}
% results
% \end{itemize}
%
% \begin{minipage}{.4\textwidth}
% \centering
%
% \begin{algorithm}[caption={}, label={},
% basicstyle=\fontsize{6.5}{7.5}\selectfont
% ]
%$\boldsymbol{s}^{\left( 0 \right)} = \boldsymbol{0}$$\hspace{4.185cm}\tikzbracemark{prox-start}$
%for $k=0$ to $K-1$ do
% $\boldsymbol{r}^{\left( k+1 \right)} = \boldsymbol{s}^{(k)} - \omega \nabla L \left( \boldsymbol{s}^{(k)}; \boldsymbol{y} \right) $
% Compute $\nabla h\left( \boldsymbol{r}^{\left( k+1 \right) } \right)$
% $\boldsymbol{s}^{\left( k+1 \right)} = \boldsymbol{r}^{(k+1)} - \gamma \nabla h\left( \boldsymbol{r}^{\left( k+1 \right) } \right) $
% $\boldsymbol{\hat{x}} = \text{sign}\left( \boldsymbol{s}^{\left( k+1 \right) } \right) $
% If $\boldsymbol{\hat{x}}$ passes the parity check condition, output $\boldsymbol{\hat{x}}$
%end for $\tikzbracemark{prox-end}$
%Find $N$ most probably wrong bits $\hspace{2cm}\tikzbracemark{ml-start}$
%Generate variations $\boldsymbol{\tilde{x}}_n$ of $\boldsymbol{\hat{x}}$ with the $N$ bits modified
%Compute $d\left( \boldsymbol{ \tilde{x}}_n, \boldsymbol{\hat{x}} \right) \forall n \in \left[ 1 : N-1 \right] $
%Output $\boldsymbol{\tilde{x}}_n$ with lowest $d\left( \boldsymbol{ \tilde{x}}_n, \boldsymbol{\hat{x}} \right)$ $\tikzbracemark{ml-end}$
% \end{algorithm}
%
% \AddNote{prox-start}{prox-end}{prox-start}{\small Proximal\\Decoding}
% \AddNote{ml-start}{ml-end}{ml-start}{\small ML-on-List}
% \end{minipage}%
% \begin{minipage}{.6\textwidth}
% \centering
% \begin{figure}[H]
% \centering
% \vspace*{-12mm}
%
% \begin{tikzpicture}[scale=0.42]
% \begin{axis}[
% grid=both,
% xlabel={SNR}, ylabel={BER},
% ymode=log,
% legend style={at={(0.05,0.05)},anchor=south west},
% ymax=1.5, ymin=3e-8,
% ]
%
% \addplot table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addlegendentry{proximal}
% \addplot table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
% \addlegendentry{hybrid prox. \& ML}
% \end{axis}
% \end{tikzpicture}
% \begin{tikzpicture}[scale=0.42]
% \begin{axis}[
% grid=both,
% xlabel={SNR}, ylabel={FER},
% ymode=log,
% legend style={at={(0.05,0.05)},anchor=south west},
% ymax=1.5, ymin=3e-8,
% ]
%
% \addplot table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addlegendentry{proximal}
% \addplot table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
% \addlegendentry{hybrid prox. \& ML}
% \end{axis}
% \end{tikzpicture}\\
% \begin{tikzpicture}[scale=0.42]
% \begin{axis}[
% grid=both,
% xlabel={SNR}, ylabel={Decoding Failure Rate},
% ymode=log,
% legend style={at={(0.05,0.05)},anchor=south west},
% ymax=1.5, ymin=3e-8,
% ]
%
% \addplot table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addlegendentry{proximal}
% \addplot table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
% \addlegendentry{hybrid prox. \& ML}
% \end{axis}
% \end{tikzpicture}
%
% \caption{Simulation results for $\gamma = 0.05, \omega = 0.05, K=200, N=12$}
% \label{fig:simulation_results_hybrid}
% \end{figure}
% \end{minipage}
%\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t, fragile]
\frametitle{Proximal Decoding: Improvement}
\vspace*{-0.5cm}
\begin{itemize}
\item Improvement of proximal decoding by addition of ``ML-in-the-List'' step after
iterating
\end{itemize}
\vspace*{-2mm}
\begin{minipage}[t]{.48\textwidth}
\centering
\begin{figure}
\centering
\begin{algorithm}[caption={}, label={}, basicstyle=\fontsize{9.5}{11.5}\selectfont]
$\boldsymbol{s} \leftarrow \boldsymbol{0}$
for $K$ iterations do
$\boldsymbol{r} \leftarrow \boldsymbol{s} - \omega \nabla L \left( \boldsymbol{y} \mid \boldsymbol{s} \right) $
$\boldsymbol{s} \leftarrow \boldsymbol{r} - \gamma \nabla h\left( \boldsymbol{r} \right) $
$\boldsymbol{\hat{x}} \leftarrow \text{sign}\left( \boldsymbol{s} \right) $
if $\boldsymbol{H}\boldsymbol{\hat{c}} = \boldsymbol{0}$ do
return $\boldsymbol{\hat{c}}$
end if
end for
return $\boldsymbol{\hat{c}}$ |\Suppressnumber|
|\phantom{a}||\Reactivatenumber|
\end{algorithm}
\end{figure}
\end{minipage}%
\hfill\begin{minipage}[t]{.48\textwidth}
\centering
\begin{figure}
\centering
\begin{algorithm}[caption={}, label={}, basicstyle=\fontsize{9.5}{11.5}\selectfont]
$\boldsymbol{s} \leftarrow \boldsymbol{0}$
for $K$ iterations do
$\boldsymbol{r} \leftarrow \boldsymbol{s} - \omega \nabla L \left( \boldsymbol{y} \mid \boldsymbol{s} \right) $
$\boldsymbol{s} \leftarrow \boldsymbol{r} - \gamma \nabla h\left( \boldsymbol{r} \right) $
$\boldsymbol{\hat{x}} \leftarrow \text{sign}\left( \boldsymbol{s} \right) $
if $\boldsymbol{H}\boldsymbol{\hat{c}} = \boldsymbol{0}$
return $\boldsymbol{\hat{c}}$
end if
end for
$\textcolor{KITblue}{\text{Find }N\text{ most probably wrong bits.}}$
$\textcolor{KITblue}{\text{Generate variations } \boldsymbol{\hat{c}}_l\text{ of }\boldsymbol{\hat{c}}\text{ with the }N\text{ bits modified.}}$
$\textcolor{KITblue}{\text{Compute }d_H\left( \boldsymbol{ \hat{c}}_l, \boldsymbol{\hat{c}} \right) \text{ for all valid codewords } \boldsymbol{\hat{c}}_l}$
$\textcolor{KITblue}{\textbf{return }\boldsymbol{\hat{c}}_l\text{ with lowest }d_H\left( \boldsymbol{ \hat{c}}_l, \boldsymbol{\hat{c}} \right)}$
\end{algorithm}
\end{figure}
\end{minipage}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t]
\frametitle{Proximal Decoding: Improvement}
\vspace{-0.6cm}
\begin{itemize}
\item (3,6) regular LDPC code with $n=204, k=102$ \citereference{Mac23, 204.33.484}
\end{itemize}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}[
grid=both,
xlabel={$E_b / N_0$}, ylabel={BER},
ymode=log,
legend columns=2,
legend style={at={(0.5,-0.45)},anchor=south},
ymax=1.5, ymin=3e-8,
width=0.45\textwidth,
height=0.3\textwidth,
]
\addplot[ForestGreen, mark=*, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.15}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addplot[ForestGreen, mark=triangle, densely dashed, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.15}]
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
\addplot[NavyBlue, mark=*, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.01}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addplot[NavyBlue, mark=triangle, densely dashed, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.01}]
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
\addplot[RedOrange, mark=*, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addplot[RedOrange, mark=triangle, densely dashed, line width=1pt]
table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
grid=both,
xlabel={$E_b / N_0$}, ylabel={FER},
ymode=log,
legend columns=2,
legend style={at={(0.5,-0.45)},anchor=south},
ymax=1.5, ymin=3e-8,
width=0.45\textwidth,
height=0.3\textwidth,
]
\addplot[ForestGreen, mark=*, solid, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addplot[ForestGreen, mark=triangle, densely dashed, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
\addplot[NavyBlue, mark=*, solid, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addplot[NavyBlue, mark=triangle, densely dashed, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
\addplot[RedOrange, mark=*, solid, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
{res/proximal/2d_ber_fer_dfr_20433484.csv};
\addplot[RedOrange, mark=triangle, densely dashed, line width=1pt]
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
{res/hybrid/2d_ber_fer_dfr_20433484.csv};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[hide axis,
xmin=10, xmax=50,
ymin=0, ymax=0.4,
legend columns=3,
legend style={draw=white!15!black,legend cell align=left}]
\addlegendimage{ForestGreen, mark=*, line width=1pt}
\addlegendentry{Proximal ($\gamma = 0.15$)}
\addlegendimage{NavyBlue, mark=*, line width=1pt}
\addlegendentry{Proximal ($\gamma = 0.01$)}
\addlegendimage{RedOrange, mark=*, line width=1pt}
\addlegendentry{Proximal ($\gamma = 0.05$)}
\addlegendimage{ForestGreen, mark=triangle, densely dashed, line width=1pt}
\addlegendentry{Improved ($\gamma = 0.15, N=12$)}
\addlegendimage{NavyBlue, mark=triangle, densely dashed, line width=1pt}
\addlegendentry{Improved ($\gamma = 0.01, N=12$)}
\addlegendimage{RedOrange, mark=triangle, densely dashed, line width=1pt}
\addlegendentry{Improved ($\gamma = 0.05, N=12$)}
\end{axis}
\end{tikzpicture}
\end{figure}
\begin{itemize}
\item Up to $\sim \SI{1}{dB}$ improvement
\end{itemize}
\bigskip
\addreference{Mac23}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
Jan. 2023. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}.}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\begin{frame}[t]
% \frametitle{Proximal Decoding: Improvement using \\``ML-in-the-List''}
%
% \vspace{-0.5cm}
%
% \begin{itemize}
% \item Comparison of proximal \& improved (correction of $N = \SI{12}{\bit}$)
% decoding simulation%
% \footnote{(3,6) regular LDPC code with $n=204, k=102$
% \cite[Code: 204.33.484]{mackay_enc}}
% results
% \end{itemize}
%
% \begin{figure}[H]
% \centering
%
% \begin{tikzpicture}
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={BER},
% ymode=log,
% legend columns=2,
% legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=3e-8,
% width=0.33\textwidth,
% height=0.28\textwidth,
% ]
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
% \end{axis}
% \end{tikzpicture}
% \begin{tikzpicture}
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=2,
% legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=3e-8,
% width=0.33\textwidth,
% height=0.28\textwidth,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
% \end{axis}
% \end{tikzpicture}
% \begin{tikzpicture}
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={Decoding Failure Rate},
% ymode=log,
% legend columns=2,
% legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=3e-8,
% width=0.33\textwidth,
% height=0.28\textwidth,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=DFR, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
% \end{axis}
% \end{tikzpicture}
% \begin{tikzpicture}
% \begin{axis}[hide axis,
% xmin=10, xmax=50,
% ymin=0, ymax=0.4,
% legend columns=3,
% legend style={draw=white!15!black,legend cell align=left}]
% \addlegendimage{ForestGreen, mark=*, solid}
% \addlegendentry{proximal, $\gamma = 0.15$}
%
% \addlegendimage{NavyBlue, mark=*, solid}
% \addlegendentry{proximal, $\gamma = 0.01$}
%
% \addlegendimage{RedOrange, mark=*, solid}
% \addlegendentry{proximal, $\gamma = 0.05$}
%
% \addlegendimage{Emerald, mark=triangle, densely dashed}
% \addlegendentry{improved, $\gamma = 0.15$}
%
% \addlegendimage{RoyalPurple, mark=triangle, densely dashed}
% \addlegendentry{improved, $\gamma = 0.01$}
%
% \addlegendimage{red, mark=triangle, densely dashed}
% \addlegendentry{improved, $\gamma = 0.05$}
% \end{axis}
% \end{tikzpicture}
%
% \caption{Simulation results for $\gamma = 0.05, \omega = 0.05, K=200, N=12$}
% \label{fig:simulation_results_hybrid}
% \end{figure}
%\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\begin{frame}[t]
% \frametitle{Proximal Decoding: Improvement}
%
% \begin{minipage}[c]{0.9\textwidth}
% \centering
% \begin{figure}[H]
% \vspace*{-0.6cm}
% \hspace*{-0.7cm}
% \centering
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
%
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=1,
% legend pos=outer north east,
% %legend columns=2,
% %legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=8e-5,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_963965.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_963965.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_963965.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_963965.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=96, k=48$ \cite[\text{96.3.965}]{mackay_enc}}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=1,
% legend pos=outer north east,
% xmin=0.5, xmax=6, xtick={1, ..., 5},
% ymax=1.5, ymin=8e-5,
% ]
%
% \addplot[ForestGreen, mark=*, solid,]
% table [x=SNR, y=FER, col sep=comma,
% discard if not={gamma}{0.15},
% discard if gt={SNR}{5.5},]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma,
% discard if not={gamma}{0.15},
% discard if gt={SNR}{5.5},]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma,
% discard if not={gamma}{0.01},
% discard if gt={SNR}{5.5},]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma,
% discard if not={gamma}{0.01},
% discard if gt={SNR}{5.5},]
% {res/hybrid/2d_ber_fer_dfr_20433484.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma,
% discard if not={gamma}{0.05},
% discard if gt={SNR}{5.5},]
% {res/proximal/2d_ber_fer_dfr_20433484.csv};
% \addplot[red, 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};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=1,
% legend pos=outer north east,
% %legend columns=2,
% %legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=8e-5,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_40833844.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_40833844.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_40833844.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_40833844.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 3, 6 \right)$-regular LDPC code with $n=408, k=204$ \cite[\text{408.33.844}]{mackay_enc}}
% \end{subfigure}
% \hspace*{-0.7cm}
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=1,
% legend pos=outer north east,
% %legend columns=2,
% %legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=8e-5,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_bch_31_26.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_bch_31_26.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{BCH code with $n=31, k=26$\\[\baselineskip]}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=1,
% legend pos=outer north east,
% %legend columns=2,
% %legend style={at={(0.5,-0.45)},anchor=south},
% ymax=1.5, ymin=8e-5,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_20455187.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_20455187.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_20455187.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_20455187.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{$\left( 5, 10 \right)$-regular LDPC code with $n=204, k=102$ \cite[\text{204.55.187}]{mackay_enc}}
% \end{subfigure}%
% \begin{subfigure}[c]{0.33\textwidth}
% \centering
% \begin{tikzpicture}[scale=0.4]
% \begin{axis}[
% grid=both,
% xlabel={$E_b / N_0$}, ylabel={FER},
% ymode=log,
% legend columns=1,
% legend pos=outer north east,
% ymax=1.5, ymin=8e-5,
% ]
%
% \addplot[ForestGreen, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \addplot[Emerald, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.15}]
% {res/hybrid/2d_ber_fer_dfr_pegreg252x504.csv};
%
% \addplot[NavyBlue, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \addplot[RoyalPurple, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
% {res/hybrid/2d_ber_fer_dfr_pegreg252x504.csv};
%
% \addplot[RedOrange, mark=*, solid]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/proximal/2d_ber_fer_dfr_pegreg252x504.csv};
% \addplot[red, mark=triangle, densely dashed]
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
% {res/hybrid/2d_ber_fer_dfr_pegreg252x504.csv};
% \end{axis}
% \end{tikzpicture}
% \caption{LDPC code (progressive edge growth construction) with $n=504, k=252$ \cite[\text{PEGReg252x504}]{mackay_enc}}
% \end{subfigure}%
% \end{figure}
% \end{minipage}%
% \begin{minipage}[c]{0.1\textwidth}
% \centering
%
% \begin{figure}
% \vspace*{-1.5cm}
% \hspace*{-0.7cm}
% \centering
% \begin{tikzpicture}[scale=0.7]
% \begin{axis}[hide axis,
% xmin=10, xmax=50,
% ymin=0, ymax=0.4,
% legend style={draw=white!15!black,legend cell align=left}]
% \addlegendimage{ForestGreen, mark=*, solid}
% \addlegendentry{proximal, $\gamma = 0.15$}
%
% \addlegendimage{Emerald, mark=triangle, densely dashed}
% \addlegendentry{improved, $\gamma = 0.15$}
%
% \addlegendimage{NavyBlue, mark=*, solid}
% \addlegendentry{proximal, $\gamma = 0.01$}
%
% \addlegendimage{RoyalPurple, mark=triangle, densely dashed}
% \addlegendentry{improved, $\gamma = 0.01$}
%
% \addlegendimage{RedOrange, mark=*, solid}
% \addlegendentry{proximal, $\gamma = 0.05$}
%
% \addlegendimage{red, mark=triangle, densely dashed}
% \addlegendentry{improved, $\gamma = 0.05$}
% \end{axis}
% \end{tikzpicture}
%
% \end{figure}
% \end{minipage}
%\end{frame}