1429 lines
64 KiB
TeX
1429 lines
64 KiB
TeX
\section{Proximal Decoding}%
|
||
\label{sec:Proximal Decoding}
|
||
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\subsection{Decoding Algorithm}%
|
||
\label{sub:Decoding Algorithm}
|
||
|
||
\begin{frame}[t]
|
||
\frametitle{Proximal Decoding: General Approach \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}
|
||
\mathrm{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 Approach}
|
||
|
||
\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. 127–239.}
|
||
\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{c}} \leftarrow \mathbbm{1}_{\left\{ \boldsymbol{s} \le 0 \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{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{Mac24, 204.33.484}
|
||
\item Comparison of simulation with results of Wadayama et al. \citereference{WT22}
|
||
\end{itemize}
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
|
||
\begin{tikzpicture}
|
||
\begin{axis}[
|
||
grid=both, grid style={line width=.1pt},
|
||
xlabel={$E_b / N_0$ (dB)}, ylabel={FER},
|
||
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=1,
|
||
]
|
||
|
||
\addplot [scol0, line width=1pt]
|
||
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};
|
||
\addlegendentry{$\gamma = 0.15$}
|
||
\addplot [scol1, line width=1pt]
|
||
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};
|
||
\addlegendentry{$\gamma = 0.01$}
|
||
|
||
\addplot [scol2, line width=1pt]
|
||
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};
|
||
\addlegendentry{$\gamma = 0.05$}
|
||
|
||
\addplot [KITorange, line width=1pt]
|
||
table [x=SNR, y=FER, col sep=comma] {res/generic/bp_20433484.csv};
|
||
\addlegendentry{BP}
|
||
|
||
\end{axis}
|
||
\end{tikzpicture}
|
||
\end{figure}
|
||
|
||
\vspace*{-2mm}
|
||
|
||
\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{Mac24}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
|
||
June 2024. 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}
|
||
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\subsection{Improved Algorithm}%
|
||
\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{Mac24, 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{c}} \leftarrow \mathbbm{1}_{\left\{ \boldsymbol{s} \le 0 \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{Mac24}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
|
||
June 2024. 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 [scol0, 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 [scol1, 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 [scol2, 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 [scol0, 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 [scol1, 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 [scol2, 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 [scol0, 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 [scol1, 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 [scol2, 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}$
|
||
\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}
|
||
|
||
\bigskip
|
||
|
||
\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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_1]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_2]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_3]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_0]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_4]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_5]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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 [scol0, 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 [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_6]
|
||
{res/proximal/comp_bch_7_4_combined.csv};
|
||
\addplot [scol2, 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}
|
||
\end{frame}
|
||
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\begin{frame}[t]
|
||
\frametitle{Proximal Decoding: Oscillation of Estimate}
|
||
|
||
\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 name={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 name={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}
|
||
|
||
|
||
% TODO: Maybe add newly simulated second figure
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\begin{frame}[t]
|
||
\frametitle{Proximal Decoding: Oscillation of Estimate}
|
||
|
||
\vspace*{-3mm}
|
||
|
||
\begin{itemize}
|
||
\item Single decoding using a (3,6) regular LDPC code with $n=204, k=102$
|
||
\citereference{Mac24, 204.33.484}
|
||
\item For larger $n$, the gradient itself starts to oscillate
|
||
\item Amplitude of oscillation highly correlated to probability of bit error
|
||
\end{itemize}
|
||
|
||
\bigskip
|
||
|
||
\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 [scol0, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=comb_r_s_0]
|
||
{res/proximal/extreme_components_20433484_combined.csv};
|
||
\addplot [scol1, mark=none, line width=1]
|
||
table [col sep=comma, x=k, y=grad_L_0]
|
||
{res/proximal/extreme_components_20433484_combined.csv};
|
||
\addplot [scol2, 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}[
|
||
grid=both,
|
||
ylabel=$P(\hat{c}_{i'} \ne c_{i'})$,
|
||
xlabel=$i'$,
|
||
ymode=log,
|
||
ymin=8e-9,ymax=1e-5,
|
||
xmin=0,xmax=200,
|
||
width=0.85\textwidth,
|
||
height=0.4\textwidth,
|
||
scale only axis,
|
||
]
|
||
\addplot+ [scol0, mark=none, line width=1]
|
||
table [col sep=comma, y=p_error]{res/new_stuff/p_error.csv};
|
||
\end{axis}
|
||
\end{tikzpicture}
|
||
\end{subfigure}
|
||
\end{figure}
|
||
|
||
\bigskip
|
||
|
||
\addreference{Mac24}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
|
||
June 2024. 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{Improved Algorithm}
|
||
|
||
\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{c}} \leftarrow \mathbbm{1}_{\left\{ \boldsymbol{s} \le 0 \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{c}} \leftarrow \mathbbm{1}_{\left\{ \boldsymbol{s} \le 0 \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}{L' := \left\{ \text{Variations } \boldsymbol{\hat{c}}_l\text{ of }\boldsymbol{\hat{c}}\text{ with }N\text{ bits modified} \right\}}$
|
||
$\textcolor{KITblue}{\text{Compute }\boldsymbol{y}^\text{T}\boldsymbol{ \hat{c}}_l \text{ for all codewords } \boldsymbol{\hat{c}}_l}$
|
||
$\textcolor{KITblue}{\textbf{return }\boldsymbol{\hat{c}}_l\text{ with highest }\boldsymbol{y}^\text{T}\boldsymbol{ \hat{c}}_l \text{, prioritizing valid codewords}}$
|
||
\end{algorithm}
|
||
\end{figure}
|
||
\end{minipage}
|
||
\end{frame}
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\begin{frame}[t]
|
||
\frametitle{Improved Algorithm}
|
||
|
||
\vspace{-0.6cm}
|
||
|
||
\begin{itemize}
|
||
\item (3,6) regular LDPC code with $n=204, k=102$ \citereference{Mac24, 204.33.484}
|
||
\item Up to $\sim \SI{1}{dB}$ improvement
|
||
\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[scol0, 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[scol0, only marks, mark=square, 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[scol1, 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[scol1, only marks, mark=square, 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[scol2, 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[scol2, only marks, mark=square, 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[scol0, 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[scol0, only marks, mark=square, 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[scol1, 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[scol1, only marks, mark=square, 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[scol2, 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[scol2, only marks, mark=square, 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{scol0, line width=1pt}
|
||
\addlegendentry{Proximal ($\gamma = 0.15$)}
|
||
|
||
\addlegendimage{scol1, line width=1pt}
|
||
\addlegendentry{Proximal ($\gamma = 0.01$)}
|
||
|
||
\addlegendimage{scol2, line width=1pt}
|
||
\addlegendentry{Proximal ($\gamma = 0.05$)}
|
||
|
||
\addlegendimage{scol0, only marks, mark=square, line width=1pt}
|
||
\addlegendentry{Improved ($\gamma = 0.15, N=12$)}
|
||
|
||
\addlegendimage{scol1, only marks, mark=square, line width=1pt}
|
||
\addlegendentry{Improved ($\gamma = 0.01, N=12$)}
|
||
|
||
\addlegendimage{scol2, only marks, mark=square, line width=1pt}
|
||
\addlegendentry{Improved ($\gamma = 0.05, N=12$)}
|
||
\end{axis}
|
||
\end{tikzpicture}
|
||
\end{figure}
|
||
|
||
\bigskip
|
||
|
||
\addreference{Mac24}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
|
||
June 2024. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}.}
|
||
\end{frame}
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\begin{frame}
|
||
\frametitle{Improved Algorithm: Effect of Parameter $N$}
|
||
|
||
\vspace*{-5mm}
|
||
|
||
\begin{itemize}
|
||
\item (3,6) regular LDPC code with $n=204, k=102$ \citereference{Mac24, 204.33.484}
|
||
\item Chosen parameters: $\gamma = 0.05$
|
||
\end{itemize}
|
||
|
||
\smallskip
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
|
||
\begin{tikzpicture}
|
||
|
||
\begin{axis}[ymode=log,
|
||
xlabel={$E_b / N_0$ (dB)},
|
||
ylabel={FER},
|
||
legend pos=outer north east,
|
||
width=0.45\textwidth,
|
||
height=0.3375\textwidth,
|
||
legend cell align={left}, grid,
|
||
]
|
||
|
||
\addplot[scol3, line width=1pt]
|
||
table [col sep=comma, discard if not={gamma}{0.05},
|
||
x = SNR, y=FER] {res/new_stuff/2d_ber_fer_dfr_20433484_abs_N_4.csv};
|
||
\addlegendentry{$N=4$}
|
||
|
||
\addplot[KITorange, line width=1pt]
|
||
table [col sep=comma, discard if not={gamma}{0.05},
|
||
x = SNR, y=FER] {res/new_stuff/2d_ber_fer_dfr_20433484_abs_N_6.csv};
|
||
\addlegendentry{$N=6$}
|
||
|
||
\addplot[scol2, line width=1pt]
|
||
table [col sep=comma, discard if not={gamma}{0.05},
|
||
x = SNR, y=FER] {res/new_stuff/2d_ber_fer_dfr_20433484_abs_N_8.csv};
|
||
\addlegendentry{$N=8$}
|
||
|
||
\addplot[scol1, line width=1pt]
|
||
table [col sep=comma, discard if not={gamma}{0.05},
|
||
x = SNR, y=FER] {res/new_stuff/2d_ber_fer_dfr_20433484_abs_N_10.csv};
|
||
\addlegendentry{$N=10$}
|
||
|
||
\addplot[scol0, line width=1pt]
|
||
table [col sep=comma, discard if not={gamma}{0.05},
|
||
x = SNR, y=FER] {res/new_stuff/2d_ber_fer_dfr_20433484_abs.csv};
|
||
\addlegendentry{$N=12$}
|
||
|
||
\end{axis}
|
||
\end{tikzpicture}
|
||
\end{figure}%
|
||
|
||
\addreference{Mac24}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
|
||
June 2024. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}.}
|
||
\end{frame}
|
||
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
\begin{frame}[fragile]
|
||
\frametitle{Improved Algorithm: List Choice Policy}
|
||
|
||
\vspace*{-5mm}
|
||
|
||
\begin{itemize}
|
||
\item (3,6) regular LDPC code with $n=204, k=102$ \citereference{Mac24, 204.33.484}
|
||
\item Chosen parameters: $N=8, \gamma = 0.05$
|
||
\end{itemize}
|
||
|
||
\vspace*{-5mm}
|
||
|
||
\begin{figure}
|
||
\centering
|
||
\begin{subfigure}[c]{0.66\textwidth}
|
||
\centering
|
||
|
||
\begin{tikzpicture}
|
||
\begin{axis}[
|
||
grid=both, grid style={line width=.1pt},
|
||
xlabel={$E_b / N_0$ (dB)},
|
||
ylabel={BER (\lineintext{}), FER (\lineintext{dashed})},
|
||
ymode=log,
|
||
legend cell align={left},
|
||
legend pos={outer north east},
|
||
width=0.68\textwidth,
|
||
height=0.51\textwidth,
|
||
ymax=1.2, ymin=0.8e-4,
|
||
xtick={1, 2, ..., 5},
|
||
xmin=0.9, xmax=5.6,
|
||
legend columns=1,
|
||
]
|
||
|
||
%
|
||
% Proximal
|
||
%
|
||
|
||
\addplot[name path=maxBER1, mark=none, scol0]
|
||
table[col sep=comma, x=SNR, y=max_BER]
|
||
{res/new_stuff/proximal.csv};
|
||
\addplot[name path=minBER1, mark=none, scol0, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_BER]
|
||
{res/new_stuff/proximal.csv};
|
||
|
||
\addplot[scol0!50, forget plot] fill between[of=minBER1 and maxBER1];
|
||
|
||
\addplot[name path=maxFER1, mark=none, scol0, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=max_FER]
|
||
{res/new_stuff/proximal.csv};
|
||
\addplot[name path=minFER1, mark=none, scol0, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_FER]
|
||
{res/new_stuff/proximal.csv};
|
||
|
||
\addplot[scol0!50, forget plot] fill between[of=minFER1 and maxFER1];
|
||
|
||
\addlegendentry{Proximal}
|
||
|
||
%
|
||
% Improved Random
|
||
%
|
||
|
||
\addplot[name path=maxBER2, mark=none, scol1]
|
||
table[col sep=comma, x=SNR, y=max_BER]
|
||
{res/new_stuff/improved_random.csv};
|
||
\addplot[name path=minBER2, mark=none, scol1, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_BER]
|
||
{res/new_stuff/improved_random.csv};
|
||
|
||
\addplot[scol1!50, forget plot] fill between[of=minBER2 and maxBER2];
|
||
|
||
\addplot[name path=maxFER2, mark=none, scol1, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=max_FER]
|
||
{res/new_stuff/improved_random.csv};
|
||
\addplot[name path=minFER2, mark=none, scol1, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_FER]
|
||
{res/new_stuff/improved_random.csv};
|
||
|
||
% \addplot[only marks, scol0, forget plot]
|
||
% table[col sep=comma, x=SNR, y=min_DFR]
|
||
% {res/new_stuff/improved_random.csv};
|
||
|
||
\addplot[scol1!50, forget plot] fill between[of=minFER2 and maxFER2];
|
||
|
||
\addlegendentry{Improved: Random}
|
||
|
||
%
|
||
% Improved ML
|
||
%
|
||
|
||
\addplot[name path=maxBER4, mark=none, scol2]
|
||
table[col sep=comma, x=SNR, y=max_BER]
|
||
{res/new_stuff/improved_ml.csv};
|
||
\addplot[name path=minBER4, mark=none, scol2, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_BER]
|
||
{res/new_stuff/improved_ml.csv};
|
||
|
||
\addplot[scol2!50, forget plot] fill between[of=minBER4 and maxBER4];
|
||
|
||
\addplot[name path=maxFER4, mark=none, scol2, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=max_FER]
|
||
{res/new_stuff/improved_ml.csv};
|
||
\addplot[name path=minFER4, mark=none, scol2, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_FER]
|
||
{res/new_stuff/improved_ml.csv};
|
||
|
||
\addplot[scol2!50, forget plot] fill between[of=minFER4 and maxFER4];
|
||
|
||
\addlegendentry{Improved: ML}
|
||
|
||
%
|
||
% Improved Hamming
|
||
%
|
||
|
||
\addplot[name path=maxBER3, mark=none, KITorange]
|
||
table[col sep=comma, x=SNR, y=max_BER]
|
||
{res/new_stuff/improved_hamming.csv};
|
||
\addplot[name path=minBER3, mark=none, KITorange, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_BER]
|
||
{res/new_stuff/improved_hamming.csv};
|
||
|
||
\addplot[KITorange!50, forget plot] fill between[of=minBER3 and maxBER3];
|
||
|
||
\addplot[name path=maxFER3, mark=none, KITorange, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=max_FER]
|
||
{res/new_stuff/improved_hamming.csv};
|
||
\addplot[name path=minFER3, mark=none, KITorange, densely dashed, forget plot]
|
||
table[col sep=comma, x=SNR, y=min_FER]
|
||
{res/new_stuff/improved_hamming.csv};
|
||
|
||
\addplot[KITorange!50, forget plot] fill between[of=minFER3 and maxFER3];
|
||
|
||
\addlegendentry{Improved: Hamming}
|
||
\end{axis}
|
||
\end{tikzpicture}
|
||
|
||
%\caption{Comparison of FER and BER of the improved algorithm for
|
||
% different list choice policies.}
|
||
\end{subfigure}%
|
||
\begin{subfigure}[c]{0.33\textwidth}
|
||
\centering
|
||
|
||
\begin{tabular}{c c c c c c}
|
||
$E_b/N_0$ (dB) & \shortstack{List size\\ mean} \\
|
||
\hline
|
||
1.0 & 1.0 \\
|
||
1.5 & 1.0 \\
|
||
2.0 & 1.0 \\
|
||
2.5 & 1.0 \\
|
||
3.0 & 1.0 \\
|
||
3.5 & 1.0 \\
|
||
4.0 & 1.0 \\
|
||
4.5 & 1.0 \\
|
||
5.0 & 1.0 \\
|
||
5.5 & 1.0
|
||
\end{tabular}
|
||
|
||
\caption{List size statistics for successful decodings (no frame error).}
|
||
\end{subfigure}
|
||
\end{figure}
|
||
|
||
\addreference{Mac24}{David J.C. MacKay: \emph{Encyclopedia of Sparse Graph Codes}.
|
||
June 2024. URL: \url{http://www.inference.org.uk/mackay/codes/data.html}.}
|
||
\end{frame}
|
||
|
||
|