diff --git a/latex/presentations/midterm/presentation.bib b/latex/presentations/midterm/presentation.bib index 2f680f2..32afbe2 100644 --- a/latex/presentations/midterm/presentation.bib +++ b/latex/presentations/midterm/presentation.bib @@ -99,3 +99,14 @@ doi = {10.1109/ISIT.2013.6620477} } +@ARTICLE{feldman_paper, + author={Feldman, J. and Wainwright, M.J. and Karger, D.R.}, + journal={IEEE Transactions on Information Theory}, + title={Using linear programming to Decode Binary linear codes}, + year={2005}, + volume={51}, + number={3}, + pages={954-972}, + doi={10.1109/TIT.2004.842696} +} + diff --git a/latex/presentations/midterm/sections/appendix.tex b/latex/presentations/midterm/sections/appendix.tex index 483ac50..1c19b90 100644 --- a/latex/presentations/midterm/sections/appendix.tex +++ b/latex/presentations/midterm/sections/appendix.tex @@ -1,121 +1,5 @@ -\appendix +%\appendix +% +%\section{Proximal Decoding}% +%\label{app:Proximal Decoding} -\section{Proximal Decoding}% -\label{app:Proximal Decoding} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\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] - \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} diff --git a/latex/presentations/midterm/sections/decoding_algorithms.tex b/latex/presentations/midterm/sections/decoding_algorithms.tex index 6ff7555..2e81a9a 100644 --- a/latex/presentations/midterm/sections/decoding_algorithms.tex +++ b/latex/presentations/midterm/sections/decoding_algorithms.tex @@ -13,12 +13,12 @@ \item MAP rule: \begin{align*} \hat{\boldsymbol{x}} - = \argmax_{x\in\mathbb{R}}\left[ + = \argmax_{x\in\mathbb{R}} f_{\boldsymbol{Y}}\left( \boldsymbol{y} | \boldsymbol{x} \right) - f_{\boldsymbol{X}}\left( \boldsymbol{x} \right) \right] - = \argmax_{x\in\mathbb{R}}\left[ + f_{\boldsymbol{X}}\left( \boldsymbol{x} \right) + = \argmax_{x\in\mathbb{R}} e^{-L\left( \boldsymbol{y} | \boldsymbol{x}\right)} - f_{\boldsymbol{X}}\left( \boldsymbol{x} \right) \right] + f_{\boldsymbol{X}}\left( \boldsymbol{x} \right) \end{align*} \item Approximation of prior PDF: \begin{align*} @@ -111,7 +111,7 @@ return $\boldsymbol{\hat{c}}$ \label{sub:LP Decoding} \begin{frame}[t] - \frametitle{LP Decoding} + \frametitle{LP Decoding \cite{feldman_paper}} \begin{minipage}[c]{0.6\linewidth} \begin{itemize} diff --git a/latex/presentations/midterm/sections/examination_results.tex b/latex/presentations/midterm/sections/examination_results.tex index 0e7f7f9..d58c0bd 100644 --- a/latex/presentations/midterm/sections/examination_results.tex +++ b/latex/presentations/midterm/sections/examination_results.tex @@ -653,6 +653,85 @@ return $\boldsymbol{\hat{c}}$ \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) $} @@ -675,7 +754,7 @@ return $\boldsymbol{\hat{c}}$ \begin{tikzpicture}[scale = 0.85] \begin{axis}[ grid=both, - xlabel={$k$}, + xlabel={Iterations}, width=8cm, height=3cm, scale only axis, @@ -695,7 +774,7 @@ return $\boldsymbol{\hat{c}}$ \end{axis} \end{tikzpicture} - \caption{Internal variables of proximal decoder as a function of k + \caption{Internal variables of proximal decoder as a function of the iteration ($n=204$)\footnotemark} \end{subfigure}% \begin{subfigure}[c]{0.5\textwidth} @@ -1053,7 +1132,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d legend pos=outer north east, %legend columns=2, %legend style={at={(0.5,-0.45)},anchor=south}, - ymax=1.5, ymin=3e-8, + ymax=1.5, ymin=8e-4, ] \addplot[ForestGreen, mark=*, solid] @@ -1096,7 +1175,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d legend columns=1, legend pos=outer north east, xmin=0.5, xmax=6, xtick={1, ..., 5}, - ymax=1.5, ymin=3e-8, + ymax=1.5, ymin=8e-5, ] \addplot[ForestGreen, mark=*, solid,] @@ -1152,7 +1231,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d legend pos=outer north east, %legend columns=2, %legend style={at={(0.5,-0.45)},anchor=south}, - ymax=1.5, ymin=3e-8, + ymax=1.5, ymin=8e-5, ] \addplot[ForestGreen, mark=*, solid] @@ -1196,7 +1275,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d legend pos=outer north east, %legend columns=2, %legend style={at={(0.5,-0.45)},anchor=south}, - ymax=1.5, ymin=3e-8, + ymax=1.5, ymin=8e-5, ] \addplot[ForestGreen, mark=*, solid] @@ -1240,7 +1319,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d legend pos=outer north east, %legend columns=2, %legend style={at={(0.5,-0.45)},anchor=south}, - ymax=1.5, ymin=3e-8, + ymax=1.5, ymin=8e-5, ] \addplot[ForestGreen, mark=*, solid] @@ -1282,7 +1361,7 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d ymode=log, legend columns=1, legend pos=outer north east, - ymax=1.5, ymin=3e-8, + ymax=1.5, ymin=8e-5, ] \addplot[ForestGreen, mark=*, solid] @@ -1370,6 +1449,44 @@ $\textcolor{KITblue}{\text{Output }\boldsymbol{\tilde{c}}_n\text{ with lowest }d \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''}