\section{Examination Results}% \label{sec:Examination Results} \subsection{Proximal Decoding}% \label{sub:Ex Proximal Decoding} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Bit Error Rate and Performance} \begin{itemize} \item Comparison of simulation \footnote{(3,6) regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}} with results of Wadayama and Takabe \begin{figure}[H] \centering \begin{subfigure}{0.5\textwidth} \centering \begin{tikzpicture}[scale=0.45] \begin{axis}[ grid=both, xlabel={$E_b / N_0$ (dB)}, ylabel={Bit Error Rate}, ymode=log, legend style={at={(0.05,0.05)},anchor=south west}, width=11.5cm, height=8cm, ytick={0, 1e-1, 1e-2, 1e-3, 1e-4}, xtick={1, 2, 3, 4, 5}, ymax=1.2, ymin=0.8e-4, xmin=0.9, xmax=5.6, ] \addplot 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 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 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$} \end{axis} \end{tikzpicture} \caption{Simulation results for $\omega = 0.05, K=100$} \label{fig:sim_results_prox} \end{subfigure}% \begin{subfigure}{0.5\textwidth} \centering \includegraphics[scale=0.6]{res/ber_paper} \caption{Results from ``Proximal Decoding for LDPC Codes''} \label{fig:paper_results_prox} \end{subfigure}% \end{figure} \item $\mathcal{O}\left(n \right) $ time complexity - same as BP; only multiplication and addition necessary \cite{proximal_paper} \item Measured Performance: $\sim\SI{10000}{}$ frames/s - Intel Core i7-7700HQ @ 2.80GHz; $n=204$ \end{itemize} \vspace{3mm} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Choice of $\gamma$} \setcounter{footnote}{0} \begin{itemize} \item Analysis of simulation \footnote{(3,6) regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}} results for different values of $\gamma$ \end{itemize} \begin{figure}[H] \centering \begin{subfigure}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale=0.52] \begin{semilogyaxis}[xlabel={$E_b / N_0$ (dB)}, ylabel={BER}, grid=both, grid style={line width=.1pt}, legend style={at={(0.05,0.05)},anchor=south west}, ymin=3e-7, ymax=1.5,] \foreach \gamma in {0.01, 0.05, 0.15}{ \addplot table [x=SNR, y=BER, col sep=comma, discard if not={gamma}{\gamma}] {res/proximal/2d_ber_fer_dfr_20433484.csv}; \legend{\gamma} } \legend{$\gamma=0.01$, $\gamma=0.05$, $\gamma=0.15$} \end{semilogyaxis} \end{tikzpicture} \end{subfigure}% \begin{subfigure}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale=0.55] \begin{axis}[view={75}{30}, zmode=log, xlabel={$E_b / N_0$ (dB)}, ylabel={$\gamma$}, zlabel={BER}, 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[red, 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[blue, 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[brown, 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} \caption{BER for $\omega = 0.05, K=100$} \label{fig:ber_3d} \end{figure} \begin{itemize} \item Not great benefit in finding the optimal value for $\gamma$ \end{itemize} \vspace{3mm} \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[red, 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[blue, 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[brown, 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[red, 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[blue, 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[brown, 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[red, 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[blue, 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[brown, 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[red, 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[blue, 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[brown, 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[red, 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[blue, 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[brown, 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[red, 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[blue, 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[brown, 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{red, line width=1.5pt} \addlegendentry{$\gamma = 0.05$}; \addlegendimage{blue, line width=1.5pt} \addlegendentry{$\gamma = 0.01$}; \addlegendimage{Brown, 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} \setcounter{footnote}{0} \begin{itemize} \item Analysis of simulated \footnote{(3,6) regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}} BER and FER \end{itemize} \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}$, then return $\boldsymbol{\hat{c}}$ end for return $\boldsymbol{\hat{c}}$ \end{algorithm} \caption{Proximal decoding algorithm \cite{proximal_paper}} \end{figure} \end{minipage}% \begin{minipage}{.6\textwidth} \centering \begin{figure}[H] \vspace*{-8mm} \centering \begin{tikzpicture}[scale=0.42] \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, ] \addplot 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 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 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.42] \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, ] \addplot 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 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 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.42] \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, ] \addplot 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 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 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} \caption{Simulation results for $\omega = 0.05, K=100$} \label{fig:simulation_results_ber_fer_dfr} \end{figure} \end{minipage} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Oscillation of Estimate} \setcounter{footnote}{0} \begin{itemize} \item $\nabla L \left( \boldsymbol{y} \mid \boldsymbol{x} \right) $ and $\nabla h \left( \boldsymbol{x} \right) $ generally end up in an equilibrium \end{itemize} \todo{Fix $K=100\ne 200$} \begin{figure}[H] \begin{minipage}[c]{0.25\textwidth} \centering \begin{tikzpicture}[scale = 0.35] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_1] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_1] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_1] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 2 \right] $} \addlegendentry{$\nabla h \left[ 2 \right] $} \end{axis} \end{tikzpicture}\\ \begin{tikzpicture}[scale = 0.35] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_2] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_2] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_2] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 3 \right] $} \addlegendentry{$\nabla h \left[ 3 \right] $} \end{axis} \end{tikzpicture}\\ \begin{tikzpicture}[scale = 0.35] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_3] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_3] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_3] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 4 \right] $} \addlegendentry{$\nabla h \left[ 4 \right] $} \end{axis} \end{tikzpicture} \end{minipage}% \begin{minipage}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale = 0.85] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_0] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_0] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_0] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 1 \right] $} \addlegendentry{$\nabla h \left[ 1 \right] $} \end{axis} \end{tikzpicture} \end{minipage}% \begin{minipage}[c]{0.25\textwidth} \centering \begin{tikzpicture}[scale = 0.35] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_4] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_4] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_4] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 5 \right] $} \addlegendentry{$\nabla h \left[ 5 \right] $} \end{axis} \end{tikzpicture}\\ \begin{tikzpicture}[scale = 0.35] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_5] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_5] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_5] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 6 \right] $} \addlegendentry{$\nabla h \left[ 6 \right] $} \end{axis} \end{tikzpicture}\\ \begin{tikzpicture}[scale = 0.35] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_6] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_6] {res/proximal/comp_bch_7_4_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_6] {res/proximal/comp_bch_7_4_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 7 \right] $} \addlegendentry{$\nabla h \left[ 7 \right] $} \end{axis} \end{tikzpicture} \end{minipage} \caption{Internal variables of proximal decoder as a function of the iteration ($n=7$)\footnotemark} \footnotetext{A single decoding is shown, using the BCH$\left( 7,4 \right) $ code; $\gamma = 0.05, \omega = 0.05, E_b / N_0 = \SI{5}{dB}$} \end{figure} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Visualization of Gradients} \setcounter{footnote}{0} \begin{figure}[H] \centering \begin{subfigure}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale=0.8] \begin{axis}[xmin = -1.25, xmax=1.25, ymin = -1.25, ymax=1.25, 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=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 \boldsymbol{x} \right) $ for a repetition code with $n=2$ \footnotemark} \end{subfigure}% \begin{subfigure}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale=0.8] \begin{axis}[xmin = -1.25, xmax=1.25, ymin = -1.25, ymax=1.25, 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( \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 \boldsymbol{x}\right) \propto \left( \boldsymbol{x} - \boldsymbol{y} \right)$ \cite[Sec. 4.1]{proximal_paper}} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoder: Oscillation of $\nabla h\left( \boldsymbol{x} \right) $} \setcounter{footnote}{0} \begin{itemize} \item For larger $n$, the gradient itself starts to oscillate \item The amplitude of the oscillation seems to be highly correlated with the probability of a bit error \end{itemize} \todo{Fix $K=200\ne 400$} \begin{figure} \centering \begin{subfigure}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale = 0.85] \begin{axis}[ grid=both, xlabel={Iterations}, width=8cm, height=3cm, scale only axis, ] \addplot +[mark=none, line width=0.7pt] table [col sep=comma, x=k, y=comb_r_s_0] {res/proximal/extreme_components_20433484_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_L_0] {res/proximal/extreme_components_20433484_combined.csv}; \addplot +[mark=none] table [col sep=comma, x=k, y=grad_h_0] {res/proximal/extreme_components_20433484_combined.csv}; \addlegendentry{est} \addlegendentry{$\nabla L \left[ 1 \right] $} \addlegendentry{$\nabla h \left[ 1 \right] $} \end{axis} \end{tikzpicture} \caption{Internal variables of proximal decoder as a function of the iteration ($n=204$)\footnotemark} \end{subfigure}% \begin{subfigure}[c]{0.5\textwidth} \centering \begin{tikzpicture}[scale = 0.85] \begin{axis}[ point meta min = -1, point meta max = 1, grid=both, xlabel={$Var\left( \nabla h\left( \boldsymbol{x} \right) \right) $}, ylabel={bit error (bool)}, ytick={0, 1}, width=8cm, height=3cm, scale only axis, % colormap/viridis, ] \addplot [Brown, only marks,] table [col sep=comma, x=grad_h_vars, y=bit_error] {res/proximal/extreme_components_20433484_variance.csv}; \end{axis} \end{tikzpicture} \caption{Correlation between bit error and amplitude of oscillation} \end{subfigure} \end{figure} \footnotetext{A single decoding is shown, using a (3,6) regular LDPC code with $n=204, k=102$ \cite[\text{204.33.484}]{mackay_enc}; $\gamma = 0.05, \omega = 0.05, E_b / N_0 = \SI{5}{dB}$} \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''} % \setcounter{footnote}{0} % % \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 using ``ML-on-List''} \setcounter{footnote}{0} \begin{itemize} \item Improvement of proximal decoding by adding an ``ML-on-list'' step after iterating \end{itemize} \begin{minipage}[t]{.48\textwidth} \centering \begin{figure} \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}$, then return $\boldsymbol{\hat{c}}$ end for return $\boldsymbol{\hat{c}}$ \end{algorithm} \caption{Proximal decoding algorithm \cite{proximal_paper}} \end{figure} \end{minipage}% \hfill\begin{minipage}[t]{.48\textwidth} \centering \begin{figure} \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}$, then return $\boldsymbol{\hat{c}}$ end for $\textcolor{KITblue}{\text{Find }N\text{ most probably wrong bits.}}$ $\textcolor{KITblue}{\text{Generate variations } \boldsymbol{\tilde{c}}_n\text{ of }\boldsymbol{\hat{c}}\text{ with the }N\text{ bits modified.}}$ $\textcolor{KITblue}{\text{Compute }d_H\left( \boldsymbol{ \tilde{c}}_n, \boldsymbol{\hat{c}} \right) \forall n \in \left[ 1 : N-1 \right]}$ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d_H\left( \boldsymbol{ \tilde{c}}_n, \boldsymbol{\hat{c}} \right)}$ \end{algorithm} \caption{Hybrid proximal \& ML decoding algorithm} \end{figure} \end{minipage} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Improvement using ``ML-on-List''} \begin{itemize} \item Comparison of proximal \& hybrid proximal-ML (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}[scale=0.55] \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, ] \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}[scale=0.55] \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, ] \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}[scale=0.55] \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, ] \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}[scale=0.7] \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{hybrid, $\gamma = 0.15$} \addlegendimage{RoyalPurple, mark=triangle, densely dashed} \addlegendentry{hybrid, $\gamma = 0.01$} \addlegendimage{red, mark=triangle, densely dashed} \addlegendentry{hybrid, $\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 using ``ML-on-List''} \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{hybrid, $\gamma = 0.15$} \addlegendimage{NavyBlue, mark=*, solid} \addlegendentry{proximal, $\gamma = 0.01$} \addlegendimage{RoyalPurple, mark=triangle, densely dashed} \addlegendentry{hybrid, $\gamma = 0.01$} \addlegendimage{RedOrange, mark=*, solid} \addlegendentry{proximal, $\gamma = 0.05$} \addlegendimage{red, mark=triangle, densely dashed} \addlegendentry{hybrid, $\gamma = 0.05$} \end{axis} \end{tikzpicture} \end{figure} \end{minipage} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Average Error} \setcounter{footnote}{0} \begin{figure}[H] \centering \begin{tikzpicture}[scale=0.6] \begin{axis}[ grid=both, xlabel={k}, ylabel={Average $\left| \boldsymbol{x}-\boldsymbol{\hat{x}} \right|$}, legend pos=outer north east, ] \addplot[blue, mark=none, line width=1pt] table [col sep=comma, discard if not={omega}{0.0774263682681127}, x=k, y=err] {res/proximal/2d_avg_error_20433484_1db.csv}; \addlegendentry{$E_b / N_0 = \SI{1}{dB}$} \addplot[Red, mark=none, line width=1pt] table [col sep=comma, discard if not={omega}{0.0774263682681127}, x=k, y=err] {res/proximal/2d_avg_error_20433484_3db.csv}; \addlegendentry{$E_b / N_0 = \SI{3}{dB}$} \addplot[Brown, mark=none, line width=1pt] table [col sep=comma, discard if not={omega}{0.052233450742668434}, x=k, y=err] {res/proximal/2d_avg_error_20433484_5db.csv}; \addlegendentry{$E_b / N_0 = \SI{5}{dB}$} \addplot[Black, mark=none, line width=1pt] table [col sep=comma, discard if not={omega}{0.052233450742668434}, x=k, y=err] {res/proximal/2d_avg_error_20433484_8db.csv}; \addlegendentry{$E_b / N_0 = \SI{8}{dB}$} \end{axis} \end{tikzpicture} \caption{Average error for $\SI{500000}{}$ decodings,$ \omega = 0.05, \gamma = 0.05, K=200$\footnotemark} \end{figure} \footnotetext{Simulation performed with (3,6) regular LDPC code with $n=204, k=102$ \cite[Code: 204.33.484]{mackay_enc}} \begin{itemize} \item For large $k$, the average error asymptotically approaches a minimum, non-zero value \end{itemize} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Proximal Decoding: Time Complexity} \begin{figure}[H] \centering \begin{tikzpicture}[scale=0.7] \begin{axis}[ grid=both, xlabel={$n$}, ylabel={time per frame (s)}, legend style={at={(0.05,0.77)},anchor=south west}, ] \addplot[only marks, red] table [col sep=comma, x=n, y=spf] {res/proximal/fps_vs_n.csv}; \addlegendentry{proximal} \addplot[only marks, blue] table [col sep=comma, x=n, y=spf] {res/hybrid/fps_vs_n.csv}; \addlegendentry{hybrid prox \& ML ($\SI{12}{\bit}$)} \end{axis} \end{tikzpicture} \caption{Time Complexity of Proximal Decoding and Modified Implementation\footnotemark} \label{fig:fps_vs_n} \end{figure} \footnotetext{The points shown were calculated by evaluating the metadata of BER simulation results from the following codes: BCH $\left( 31, 11 \right)$; BCH $\left( 31, 26 \right)$; \cite[\text{96.3.965; 204.33.484; 204.55.187; 408.33.844; PEGReg252x504}]{mackay_enc} } \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\begin{frame}[t, fragile] % \frametitle{Proximal Decoding: Improvement using ``ML-on-List''} % \setcounter{footnote}{0} % % \begin{itemize} % \item Improvement of proximal decoding by adding an ``ML-on-list'' step after iterating % \end{itemize} % % \begin{minipage}[t]{.48\textwidth} % \centering % % \begin{figure} % \centering % % \begin{algorithm}[caption={}, label={}, % basicstyle=\fontsize{7.5}{9.5}\selectfont % ] %$\boldsymbol{s}^{\left( 0 \right)} = \boldsymbol{0}$ %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, break the loop. %end for %Output $\boldsymbol{\hat{x}}$ % \end{algorithm} % % \caption{Proximal decoding algorithm \cite{proximal_paper}} % \end{figure} % % \end{minipage}% % \hfill\begin{minipage}[t]{.48\textwidth} % \centering % \begin{figure} % \centering % % \begin{algorithm}[caption={}, label={}, % basicstyle=\fontsize{7.5}{9.5}\selectfont % ] %$\boldsymbol{s}^{\left( 0 \right)} = \boldsymbol{0}$ %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) $ % $\textcolor{KITblue}{\text{If }\boldsymbol{\hat{x}}\text{ passes the parity check condition, output }\boldsymbol{\hat{x}}}$ %end for %$\textcolor{KITblue}{\text{Find }N\text{ most probably wrong bits.}}$ %$\textcolor{KITblue}{\text{Generate variations } \boldsymbol{\tilde{x}}_n\text{ of }\boldsymbol{\hat{x}}\text{ with the }N\text{ bits modified.}}$ %$\textcolor{KITblue}{\text{Compute }\langle \boldsymbol{ \tilde{x}}_n, \boldsymbol{\hat{x}} \rangle \forall n \in \left[ 1 : N-1 \right]}$ %$\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{x}}_n\text{ with lowest }\langle \boldsymbol{ \tilde{x}}_n, \boldsymbol{\hat{x}} \rangle}$ % \end{algorithm} % % \caption{Hybrid proximal \& ML decoding algorithm} % \end{figure} % \end{minipage} %\end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\subsection{ADMM: Examination Results}% %\label{sub:Ex ADMM} % %\begin{frame}[t] % \frametitle{ADMM} % % \todo{TODO} %\end{frame}