From d5b4d0f568828150c1e9a287de910b0710dc8845 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Mon, 1 Jun 2020 21:18:01 +0200 Subject: [PATCH 1/6] recompile for toc --- notes/07_stochopt/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/notes/07_stochopt/Makefile b/notes/07_stochopt/Makefile index 2c4af1b..9741a81 100644 --- a/notes/07_stochopt/Makefile +++ b/notes/07_stochopt/Makefile @@ -11,7 +11,7 @@ projnameA = $(projname).notes slides: $(projname).slides.tex $(projname).tex $(compile) $(projname).slides.tex # bibtex $(projname).slides -# $(compile) --interaction=batchmode $(projname).slides.tex + $(compile) --interaction=batchmode $(projname).slides.tex # $(compile) --interaction=batchmode $(projname).slides.tex mv $(projname).slides.pdf $(targetname).slides.pdf @@ -22,8 +22,9 @@ handout: $(projname).handout.tex $(projname).tex # Repeat compilation for the references to show up correctly notes: $(projname).notes.tex $(projname).tex $(compile) $(projname).notes.tex +# $(compile) $(projname).notes.tex # bibtex $(projname).notes -# $(compile) --interaction=batchmode $(projname).notes.tex + $(compile) --interaction=batchmode $(projname).notes.tex # $(compile) --interaction=batchmode $(projname).notes.tex mv $(projname).notes.pdf $(targetname).notes.pdf From 020cfd22d1ed6ae67616d386c7925df85907a0cf Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Mon, 1 Jun 2020 21:43:06 +0200 Subject: [PATCH 2/6] split into smaller files --- notes/07_stochopt/0_motivation.tex | 11 + .../07_stochopt/1_explorationexploitation.tex | 61 ++++ notes/07_stochopt/1_stochopt.tex | 29 +- notes/07_stochopt/2_discrete.tex | 79 +++++ notes/07_stochopt/3_stochopt.tex | 277 ++++++++++++++++ notes/07_stochopt/4_mcmc.tex | 300 ++++++++++++++++++ notes/07_stochopt/5_deterministic.tex | 90 ++++++ notes/07_stochopt/tutorial.tex | 26 +- 8 files changed, 846 insertions(+), 27 deletions(-) create mode 100644 notes/07_stochopt/0_motivation.tex create mode 100644 notes/07_stochopt/1_explorationexploitation.tex create mode 100644 notes/07_stochopt/2_discrete.tex create mode 100644 notes/07_stochopt/3_stochopt.tex create mode 100644 notes/07_stochopt/4_mcmc.tex create mode 100644 notes/07_stochopt/5_deterministic.tex diff --git a/notes/07_stochopt/0_motivation.tex b/notes/07_stochopt/0_motivation.tex new file mode 100644 index 0000000..f9e7204 --- /dev/null +++ b/notes/07_stochopt/0_motivation.tex @@ -0,0 +1,11 @@ +\section{Problems with how we've been optimizing so far} + +\begin{frame} + +Our iterative gradient-based optimizations: +\begin{itemize} +\item assumes the extrema ``up ahead'' is our solution, +\item doesn't handle discrete optimization. +\end{itemize} + +\end{frame} diff --git a/notes/07_stochopt/1_explorationexploitation.tex b/notes/07_stochopt/1_explorationexploitation.tex new file mode 100644 index 0000000..5a00d2f --- /dev/null +++ b/notes/07_stochopt/1_explorationexploitation.tex @@ -0,0 +1,61 @@ +\section{Exploration vs. Exploitation} +\begin{frame}{Exploration vs. Exploitation} + +\begin{figure}[ht] + \centering + \begin{tabular}{c c} + \includegraphics[height=3.5cm]{img/gradient-descent.pdf} & + \includegraphics[height=3.5cm]{img/gradient-descent_local.pdf} + \end{tabular} + \caption{Learning by gradient descent}\label{fig:graddescent} +\end{figure} + +\notesonly{ +%An +%introduction illustrating the underlying analogy can be found in +%\textcite[ch. 7]{DudaEtAl2001}. \textcite{Murphy2012} gives a good +%and extensive discussion of undirected graphical models (Markov Random +%fields, ch~19), variational inference (ch~21; mean field for the ISING +%model, ch~21.3), and Monte Carlo Methods (ch~23), as well as MCMC +%methods (ch~24). Further information regarding variational methods can +%be found in \textcite{Bishop2006}. + +Learning is about tuning model parameters to fit some objective given training data. +For simple models with only few parameters one can formulate an analytic solution that optimizes the objective and yields the optimal parameters directly. +A soon as the number of parameters increases we opt for iterative gradient-based methods for finding the extrema of the objective function. If we were trying to minimize some cost function $E$, +iteratively updating the parameters $\vec w$ by moving them in the direction of where the gradient points steepest leads to the location of an extremum. +However, the cost function may contain multiple extrema, and there is no guarantee gradient-based learning will take us to a \emph{global} or \emph{local} optimium. +Following the gradient assuming that it will lead to a solution that represents the global optimum is considered a \emph{greedy} approach to learning. + +Completly abandoning such assumptions will lead to a \emph{random search} for the optimal parameters. When the previous set of paramters has no influence on the choice of weights in the next iteration, +then our learning approach is dominated by \emph{exploration} as opposed to \emph{exploitation} when we learn in a greedy fashion. +} + +\end{frame} + +\begin{frame}{Exploration vs. Exploitation} + +\begin{figure}[ht] + %\centering + \begin{tabular}{c c} + exploration & exploitation\\ + \includegraphics[height=3.0cm]{img/exploration.pdf} & + \includegraphics[height=3.0cm]{img/exploitation.pdf}\\ + random search & greedy search/hill ``climbing'' + \end{tabular} + \caption{exploration vs. exploitation} + \label{fig:exploration-exploitation} +\end{figure} + +\pause + +\question{What are the advantages and disadvantages of exploration?} + +\notesonly{ +The advantage of exploration is that we always discard a set of paramters if the next set yields a better cost value. Therefore, exploration is not prone to getting stuck inside a local optimum. The obvious disadvantage is that there are no guarnatees on how long it will take to find the global optimum. We never know if we've converged or not. Exploitation, or the greedy approach (with the approprate learning rate schedule) is able to converge. However, wether it reaches a global or local solution depends on the starting position. +} + + +\end{frame} + +%\underline{Motivation 1:} We will look at how stochastic optimization can find a tradeoff between the two modes exploration and exploitation. diff --git a/notes/07_stochopt/1_stochopt.tex b/notes/07_stochopt/1_stochopt.tex index d7ce30a..db19e5f 100644 --- a/notes/07_stochopt/1_stochopt.tex +++ b/notes/07_stochopt/1_stochopt.tex @@ -1,28 +1,4 @@ - -\footnote{credit to Timm Lochmann for the content on MCMC} - -\begin{frame} -\underline{Outline} -\begin{itemize} -\item Problems with how we've been optimizing so far - \begin{itemize} - \item Exploration vs. Exploitation - \item What about discrete optimization? - \end{itemize} - \item Simulated annealing - \begin{itemize} - \item How does $\beta$ modulate $W$ - \item The stationary distribution $P_{(\vec s)}$? - \item How does $\beta$ modulate $P_{(\vec s)}$? - \end{itemize} - \item MCMC - \item Mean-field annealing - \begin{itemize} - \item derivation and algorith - use slides - \item variational approach for further reading - \end{itemize} -\end{itemize} -\end{frame} +\section{Problems with how we've been optimizing so far} \section{Exploration vs. Exploitation} \begin{frame} @@ -455,7 +431,8 @@ \section{Monte Carlo Markov Chain (MCMC)} sample from the conditional distribution (and finally the joint distribution). Using samples from such a posterior distribution, one can estimate many summaries of interest without explicitly knowing the -joint distribution. +joint distribution\footnote{credit to Dr. Timm Lochmann for the content on MCMC}. + } \slidesonly{ diff --git a/notes/07_stochopt/2_discrete.tex b/notes/07_stochopt/2_discrete.tex new file mode 100644 index 0000000..0370e42 --- /dev/null +++ b/notes/07_stochopt/2_discrete.tex @@ -0,0 +1,79 @@ +\section{Discrete Optimization} + +\begin{frame} + +\slidesonly{ +\begin{block}{Supervised \& unsupervised learning $\rightarrow$ evaluation of cost function $E$} +Find the arguments the optimize $E$. +\begin{itemize} + \item real-valued arguments: gradient based techniques (e.g. ICA unmixing matrices) + \item discrete arguments: ??? (e.g. for cluster assignment) +\end{itemize} +\end{block} +} +\notesonly{ +So far we've been concerned with optimization problems with real valued arguments. The free paramters form a continuous space. The direction of the principle components in PCA and the unmixing matrix we are trying to find in ICA are real-valued arguments to their respective problems. +Gradient-based solutions are well suited for real-valued arguments as we tune the weights to minimize to optimize the cost function. + +But what if the problem we are trying to optimize operate on discrete arguments. This could be the case if we were tackling a problem such as K-Means clustering. K-Means clustering involves finding arguments with which to assign an observation to one of multiple clusters. The cost function that measures the quality of the assignments is continuous but a the arguments we optimize over, which effectively assign each observation to one cluster instead of another cluster, are discrete variables. Below is an example of such an assignment: + + +} + +\begin{figure}[ht] + \centering + \includegraphics[height=3.5cm]{img/clustering.pdf} + \caption{Clustering involves discrete-valued arguments.} + \label{fig:clustering} +\end{figure} + +\end{frame} +\newpage +\begin{frame} +\slidesonly{\frametitle{Formalization of the discrete optimization problem}} +\notesonly{ +\textbf{Formalization of the discrete optimization problem:} +} +\begin{block}{Setting} +\begin{itemize} + \item discrete variables $s_i, \ i = 1, \ldots, N\quad$ (e.g. $s_i \in \{+1, -1\}$ \notesonly{``binary units''} or $s_i \in \mathbb N$) + % $s_i \in \{1, 2, \dots 9 \} $ + \item \indent short-hand notation: $\vec{s}$ (``state'') -- { $\{\vec{s}\}$ is called state space } + \item {cost function:} $E: \vec{s} \mapsto E_{(\vec{s})} \in \mathbb{R}$ -- { not restricted to learning problems} +\end{itemize} +\end{block} + +We will now focus on \textbf{minization} problems. + +\begin{block}{Goal: find state $\vec{s}^*$, such that:} +\begin{equation*} + E \eqexcl \min \qquad (\text{desirable global minimum for the cost}) +\end{equation*} +Consequently, +\begin{equation*} + s^* := \argmin E. +\end{equation*} +\end{block} +\end{frame} + +\begin{frame} +\frametitle{Efficient strategies for discrete optimization} +\notesonly{ +We want to find the best configuration of a discrete system (e.g.\ +state of interacting binary units). Evaluating full search space works only for +very small problems ($\rightarrow 2^N$ possibilities for a problem with $N$ +binary units, search space is the set of corners of a +hypercube). A greedy strategy will often get trapped if there are +multiple local minima. +} + +\begin{itemize} +\item Evolutionary and genetic algorithms (GA) have been + motivated by \emph{biological} phenomena of adaptation through + \emph{mutation} and \emph{selection}. +\item GA and Monte-Carlo-Markov-Chain methods based on a \emph{proposal} and + \emph{acceptance} strategy ($\rightarrow$ Metropolis) can be interpreted + as "learning via trial and error". \emph{Simulated annealing} falls within MCMC. +\end{itemize} +\end{frame} + diff --git a/notes/07_stochopt/3_stochopt.tex b/notes/07_stochopt/3_stochopt.tex new file mode 100644 index 0000000..915f130 --- /dev/null +++ b/notes/07_stochopt/3_stochopt.tex @@ -0,0 +1,277 @@ +\section{Simulated (stochastic) annealing} + +\begin{frame} + +\emph{Simulated annealing}\footnote{ +The ``annealing'' part in the name comes from meatallurgy. As metals cool down, the movement of the atoms slows down and their kinetic energy decreases until the metal eventually hardens. +} +\notesonly{is a method for stochastic optimization with which we can find a tradeoff between exploitation and exploration. More importantly, it is desgined to cope with optimization of discrete-valued arguments. Simulated annealing is + motivated by phenomena in physics related to the organization and + alignment of microscopic components forming specific macroscopic + configurations. } +\slidesonly{\\$\leadsto$ exploitation and exploration tradeoff} +\slidesonly{\\$\leadsto$ (more importantly) discrete optimization\\\vspace{0.5cm}} + +\underline{What does simulated annealing do?} + +In the case of \emph{minimzation} it: + +\begin{enumerate} +\item describes a strategy for switching between states +\item increases the probability of landing in lower-energy states\footnote{This preference for lower-energy states is specific to \emph{minimization} problems.} +\item allows for escaping \textbf{local} optima +\end{enumerate} + +\end{frame} + +\begin{frame} +\slidesonly{ +\frametitle{Simulated Annealing; the algorithm} + +Use \emph{inverse} temperature $\beta = 1/T$\\\vspace{0.5cm} +} +\notesonly{ +\textbf{Simulated Annealing, the algorithm} + +We will use the inverse temperature $\beta = 1/T$\\\vspace{1cm} +} + + +\texttt{initialization:} $\vec{s}_0, \, \beta_0$ small ($\leadsto$ high temperature) \\ + +\texttt{BEGIN Annealing loop} ($t=1,2,\dots$)\\ + +\oident$\vec{s}_t = \vec{s}_{t-1}$ {\tiny(initialization of inner loop)} \\ + +\oident \texttt{BEGIN State update loop} ($M$ iterations)\\ + +\begin{itemize} +\item \texttt{choose a new candidate state} $\vec{s}$ randomly {(but ``close'' to $\vec{s}_t$)}\\ + +\item \texttt{calculate difference in cost:} + \oident$\Delta E = E_{(\vec{s})}- E_{(\vec{s}_t)}$\\ +\item +\texttt{switch} $\vec{s}_t$ \texttt{to} $\vec{s}$ \texttt{ with probability} + $\color{red}\mathrm{W}_{(\vec{s}_t \rightarrow \vec{s})} = + \frac{1}{1 + \exp( \beta_t \Delta E)}$ +\texttt{\underline{otherwise} keep the previous state} $\vec{s}_t$ +\end{itemize} +\oident\texttt{END State update loop} \\ + +\oident$\color{blue}\beta_t = \tau \beta_{t-1}\qquad $ {\footnotesize($\tau>1\implies$ increase of $\beta$)} \\ % by practical ``exponential'' rule -- but not optimal + +\texttt{END Annealing loop} + +\end{frame} + + + +\begin{frame} \frametitle{Transition probability} +% \vspace{-0.5cm} + \begin{center}\includegraphics[width=8cm]{img/section3_fig1} + \end{center} + \begin{center} + \vspace{-0.5cm} + $\mathrm{W}_{(\vec{s}_t \rightarrow \vec{s})} = \frac{1}{1 + \exp( \beta_t \Delta E)}, \quad \Delta E = E_{(\vec{s})}- E_{(\vec{s}_t)}$\\ + \end{center} +\end{frame} + +the transition probability $\mathrm{W}$ measures the probability of changing to a new state $\vec s$ or reamining at $\vec s_t$. It depends on (A) the difference in cost and (B) the inverse temperature. The difference $\Delta E$ is the only way of measuring whether we gain any improvement from the transition or not. We use the inverse temperature $\beta_t$ to control how much we favor such transitions, or if we prefer a more conservative system. Below illustrates how the transition probablity can be modulated by the inverse temperature $\beta$ during the annealing process: + +\begin{frame} \frametitle{Modulating $\mathrm W$ during the annealing process} +% \textbf{ limiting cases for high vs.\ low temperature:} + \begin{center} + \includegraphics[width=10cm]{img/switchfuns} +\vspace{5mm} + \oident\oident\begin{tabular}[h]{c c c} + low $\beta$ (high temperature) & intermediate $\beta$ & high $\beta$\\\\ + \includegraphics[width=3cm]{img/section3_fig4} + & \hspace{-0.5cm}\includegraphics[width=3cm]{img/section3_fig5} + & \includegraphics[width=3cm]{img/section3_fig6} + \end{tabular} +\vspace{5mm} + \end{center} + \vspace{-2cm} + \begin{tikzpicture}[scale=0.75] +\draw[->] (0,0) -- (1,0); +\draw[->] (0,0) -- (0,1.25); +% \draw[lightgray, very thick] (-1,0.5) -- (.9,0.5); +% \draw (0,0) node[anchor=north]{0}; +\draw (0,1.25) node[anchor=west]{$E$}; +\draw (1,0) node[anchor=west]{$\vec{s}$}; +% \foreach \y in {0.5,1} \draw (0,\y) node[anchor=south east] {$\y$}; +% \foreach \y in {0.5,1} \draw (-1pt,\y) -- (1pt,\y); +\end{tikzpicture} + +\question{Which range of $\beta$ corresponds to \emph{exploration}/\emph{exploitation}?}\\ + +\end{frame} + + +In the case of: + +\begin{itemize} +\item low $\beta \corresponds$ high temperature:\\ +The transition probability is nearly constant (W=0.5) regardless of $\Delta E$. It is equally probably to accept a transition or to remain at the same state. Therefore we can regard this as \emph{exploration} mode. +\item intermediate $\beta$:\\ +Recall that we are currently considering a minimization problem. $\Delta E < 0$ whenever the new state is of lower cost than the previous one. We are no longer indifferent to this difference, but are more likely to accept transitions to lower-eneergy-states. Our process is still stochastic, therefore it is not guarnateed that we will accept every transition that yileds lower lower cost. We may either reject the transition and remain at the same higher-cost state or accept a transition to higher-cost state. such transitions are less likely to happen, but are still possible. This is where stochastic optimization is able to escape a local optimimum and resume the search elsewhere instead of opting for the greedy approach. To reiterate, this is a stochastic process, if we sample long enough, we will find that intermediate values of $\beta$ are more likely to yield samples from the ``global'' minimum of this curve than the higher ``local'' minimum in this particualr cost function. +\item high $\beta \corresponds$ low temperature:\\ +This is the \emph{exploitation} mode. This reflects the behjavior of a greedy learning algorithm such as gradient descent. Whenever we compare the cost of two sucessive states and find that $\Delta E < 0$ it tells us that the new state is of lower cost and more desriable for our mimization objective. The transition probability in this case will almost always accept a transition to a lower-cost state. Consequently it will almost always reject transitions to high-cost states, and the probabilty of remaining in a high-cost state is also very low. If the next sample is of lower-cost, we are very likely to accept that transition. Looking again at the stochastic nature of our process: We repeat the process multiple times and register how often each \emph{run} (not a single iteration) leads us to either minumum on this particular curve, we will find that the chances of finding the global minimum isjust as likely as those of reaching the local minimum. This is because the initial state is the only decisive factor. high $\beta$ means we are in exploitation mode. We are only going to accept a transition if it lowers our cost. If we restrict our sampling to ``nearby'' states, we are emulating gradient descent. As soon as we've determined the direction of descent, we will follow it. The descisive factor is, where did we start? Since in our case, the two valleys around the two minima are equally ``wide'', it makes starting inside one equal to starting inside the other. If I am already in the vicinity of one minimum, the probabilty of transitionining \emph{outside} is very low. This probability is low, regardless of whether I am in the vicinity of the global or local minimum. +\end{itemize} + + +\begin{frame}\frametitle{Annealing schedule \& convergence} +Convergence to the global optimum is guaranteed if $\beta_t \sim \ln (t)$\footnote{Geman and Geman show this in: Geman, S., and D. Geman (1984). Stochastic relaxation, Gibbs distribution, and the bayesian restoration of images. IEEE Trans. Pattern Anal Machine Intell. 6, 721-741. } + +\begin{itemize} + % \itR robust optimization procedure + \itR but: $\beta_t \sim \ln t$ is \textbf{too slow} for practical problems + \itR therefore: $\beta_{t+1} = \tau \beta_t, \quad \tau \in [1.01,1.30]$ + (exponential annealing) + \itR additionally: the \texttt{State Update loop} has to be iterated often enough, e.g. $M=500-2000$. \slidesonly{$\leadsto$ thermal equilibrium} + \notesonly{This is required for reaching thermal equilibrium. Another way to look at it is the need to capture the stationary distribution of the states in relation to their cost. We will talk more about when we discuss the Gibbs distribution.} +\end{itemize} +\end{frame} + +\section{The stationary distribution} + +\begin{frame} + + +\slidesonly{ + \begin{center} + \oident\oident\begin{tabular}[h]{c c c} + low $\beta$ (high temperature) & intermediate $\beta$ & high $\beta$\\\\ + \includegraphics[width=3cm]{img/section3_fig4} + & \hspace{-0.5cm}\includegraphics[width=3cm]{img/section3_fig5} + & \includegraphics[width=3cm]{img/section3_fig6} + \end{tabular} +\vspace{5mm} + \end{center} + \vspace{-2cm} + \begin{tikzpicture}[scale=0.75] +\draw[->] (0,0) -- (1,0); +\draw[->] (0,0) -- (0,1.25); +% \draw[lightgray, very thick] (-1,0.5) -- (.9,0.5); +% \draw (0,0) node[anchor=north]{0}; +\draw (0,1.25) node[anchor=west]{$E$}; +\draw (1,0) node[anchor=west]{$\vec{s}$}; +% \foreach \y in {0.5,1} \draw (0,\y) node[anchor=south east] {$\y$}; +% \foreach \y in {0.5,1} \draw (-1pt,\y) -- (1pt,\y); +\end{tikzpicture} + +Missing a probability distribution across states. +} + +\notesonly{ +As we discussed the effect of $\beta$ on the transition probability, we saw how this controls explorations and exploitation. +By talking about the probability of descendingf vs. jumping to a completly different location, we also talked about the probability of landing inside the valley surrounding the global minimum vs. that surrounding a \emph{local} one. Therefore, it becomes necessary to define a measure for the probability for each possible state that $\vec s$ can take. +This measure needs to fulfill the following requirements: +\begin{enumerate} +\item Reflect the probability distribution across states +\item For constant $\beta$ it should converge to the stationary distribution. That is the probability of transitioning from some state $\vec s$ to $\vec s'$ should be equal to the reverse transition. This is what is meant by ``thermal equilibrium''. +\end{enumerate} +} +\end{frame} + + + +\begin{frame}{Calculation of the stationary distribution} +\question{How do we find this stationary distribution?} +\pause +\vspace{-0.5cm} +\begin{equation*} + \underbrace{ \substack{ \text{probability of} \\ + \text{transition } + \vec{s} \rightarrow \vec{s}^{'}} }_{ + P_{(\vec{s})} \mathrm{W}_{(\vec{s} \rightarrow + \vec{s}^{'})} } + = + \underbrace{ \substack{ \text{probability of} \\ + \text{transition } + \vec{s}^{'} \rightarrow \vec{s} } }_{ + P_{(\vec{s}^{'})} \mathrm{W}_{(\vec{s}^{'} \rightarrow + \vec{s})} } +\end{equation*} +\begin{equation*} + \begin{array}{ll} + \frac{P_{(\vec{s})}}{P_{(\vec{s}^{'})}} + & = \frac{\mathrm{W}_{(\vec{s}^{'} \rightarrow \vec{s})}}{ + \mathrm{W}_{(\vec{s} \rightarrow \vec{s}^{'})}} + = \frac{1 + \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})} + \big) \big\} }{1 + \exp\big\{ \beta \big( E_{(\vec{s}^{'})} - + E_{(\vec{s})}\big) \big\} } + = \frac{1 + \exp( \beta \Delta E)}{1 + \exp( -\beta \Delta E)} \\\\ + \pause + & = \exp( \beta \Delta E) \frac{1 + \exp( -\beta \Delta E)}{ + 1 + \exp( -\beta \Delta E) } + = \exp( \beta \Delta E ) \\\\ + \pause + & = \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})}\big) \big\} + = \exp\big\{ \beta E_{(\vec{s})} - \beta E_{(\vec{s}^{'})} \big\}\\\\ + &= \frac{\exp\left( \beta E_{(\vec{s})}\right)}{\exp\left( \beta E_{(\vec{s}^{'})} \right)} + \slidesonly{ + \qquad \small \text{condition is fulfilled by Gibbs distribution.} + } + \end{array} +\end{equation*} +\notesonly{ +The condition is fulfilled for the \emph{Gibbs-Boltzmann} distribution: +} + +\end{frame} +\begin{frame}\frametitle{The Gibbs distribution} +\notesonly{ +The Gibbs (or Boltzmann-) distributon from statistical physics, measures the +probability of a system to be in state $\vec s$ having Energy $E_{(\vec s)}$ is +given as +} +\begin{equation} \label{eq:gibbs} +P_{(\vec{s})} := \frac{1}{Z} \exp \Big(-\frac{E_{(\vec s)}}{k_b T}\Big) += \frac{1}{Z} \exp \Big(-\beta E_{(\vec s)} \Big) +\end{equation} + +where the normalization constant / partition function $Z$ is defined as: + + +\begin{equation} \label{eq:partition} +Z := \sum\limits_{\vec{s}} \exp \Big(-\frac{E_{(\vec s)}}{k_b T}\Big) = \sum\limits_{\vec{s}} \exp(-\beta E_{(\vec s)}) +\end{equation} + +\notesonly{ +The partition function $Z$ ensures that $P_{(\vec{s})}$ is a probability +measure and the Boltzmann konstant $k_b = 1.38 \cdot 10^{-23} J/K$ +gives a scale of the \emph{temperature} $T$. This means the +probability of observing a state is fully determined by its Energy. + +%For sampling algorithms one often constructs a Markov chain whose +%stationary distribution is a Gibbs-distribution for a specified cost +%(or energy-) function. +} + +\end{frame} + +\begin{frame}\frametitle{Cost vs. probability distribution} +\question{How does $\beta$ modulate $P_{(\vec s)}$?} + +$E_{(\vec{s})}$ +\vspace{-0.2cm} +\begin{figure}[h] + \centering +\includegraphics[width=12cm]{img/section3_fig7} +\[ \begin{array}{ll} + \beta \downarrow:\pause + & \text{broad, ``delocalized'' distribution} \\\vspace{-0.3cm}\\ + \beta \uparrow:\pause + & \text{distribution localized around (global) minima} +\end{array} \] +\end{figure} + + +\end{frame} + +\newpage + + +We will now further formalize what is going on with simulated annealing. + diff --git a/notes/07_stochopt/4_mcmc.tex b/notes/07_stochopt/4_mcmc.tex new file mode 100644 index 0000000..2d5709b --- /dev/null +++ b/notes/07_stochopt/4_mcmc.tex @@ -0,0 +1,300 @@ +\section{Monte Carlo Markov Chain (MCMC)} + + +\begin{frame} + + + +Whenever it is difficult to evaluate the joint distribution\\ +opt for ``learning through trial and error''\\ + +\notesonly{ +MCMC methods are a popular +strategy in situations where it is hard to evaluate the joint (e.g.\ +posterior distribution) of a rnadom variable analytically but where it is easy to +sample from the conditional distribution (and finally the joint +distribution). Using samples from such a posterior distribution, one +can estimate many summaries of interest without explicitly knowing the +joint distribution\footnote{credit to Dr. Timm Lochmann for the content on MCMC}. + +} + +\slidesonly{ +\vspace{1cm} +What is: + +\begin{itemize} +\item a Markov Chain +\item the Markov property +\item the stationary distribution +\item Monte Carlo +\item the Metropolis algorithm +\item Metropolis sampling (Monte Carlo + Markov Chain) - simulated annealing +\item deterministic annealing (variational approach) - for further reading +\end{itemize} + +The following is for providing a framework around stochastic optimization. +} + +\end{frame} +\begin{frame} \frametitle{Markov chain and the Markov property} +Consider a family of random variables $X_t$, $t=1,2,\ldots$, which describe a stochastic process. $x_t$ denotes the state at time $t$. + +\notesonly{ +A sequence of such is referred to as a \emph{Markov chain} whenever $X_{t+1}$ depends only on the predecessor $X_t$ and is \emph{independent} of all values previous to that: +} + +\begin{align} +\label{eq:markovprop} +P(X_{t+1} &= x_{t+1} | X_{t} = x_{t}, X_{t-1} = x_{t-1}, \ldots, X_{0} = x_{0})\\ +&= P(X_{t+1} = x_{t+1} | X_{t} = x_{t}) +\end{align} + +\notesonly{\eqref{eq:markovprop}} +\slidesonly{This} is refered to as the \emph{Markov property}. +\notesonly{The conditional distribution of $X_t$ depends only on its +predecessor. In the more general case of Markov Random Fields, the +Markov property induces a ``local neigborhood''/ set of \emph{parents} +which fully determines the conditional distribution).} +The transition probabilities between subsequent states +$$ +P(X_{t+1}=j|X_{t}=i)=p_{ij} +$$ +can be described via the stochastic matrix $M = \{m_{ij}\}_{ij}$ with +$m_{ij}=p_{ij}$. +\\ + +\pause + +\slidesonly{Exactly what $W$ in simulated annealing describes for the states $\vec s$: +} +\notesonly{ +The transition probability $W$ we just encountered in simulated annealing with states $\vec s$ describes exactly this: +} +\begin{align} +\label{eq:markovproptransition} +W_{s_i \rightarrow s_j} = P(X_{t+1} = s_j | X_{t} = s_i) +\end{align} + +\begin{center} +s.t. $W_{s_i \rightarrow s_j} > 0 \;\;\forall (i,j)\quad$ +and $\quad\sum_j W_{s_i \rightarrow s_j} = 1 \;\;\forall i$. + +\end{center} +\end{frame} + +\begin{frame}\frametitle{Stationary distribution:} +\label{sec:stat-distr} +The \emph{stationary distribution} of a homogeneous Markov chain is a +distribution $\pi=[\pi_1,\pi_2,..., \pi_N$] such that +\begin{equation} +M \pi = \pi +\end{equation} +where +\begin{align} +p(x_{t+1}=j) &= \sum_i p(x_{t+1}=j,x_{t}=i) \\ +&= \sum_i p(x_{t+1}=j|x_{t}=i)\,p(x_{t}=i)\\ +&= M \pi +\end{align} +and can be derived from the eigen-decomposition of the transition matrix +(given certain conditions on the Markov chain $\rightarrow$ irreducibility, recurrence etc.) + +If the Markov chain is \emph{reversible}, the stationary distribution is +characterized by a \emph{detailed balance} between going from one +state to another one, i.e.\ +$$ +\pi_i p_{ij} = \pi_j p_{ji} +$$ +\end{frame} + +\begin{frame}\frametitle{Monte Carlo} +\notesonly{ +Monte Carlo methods +have been used to } evaluate certain integrals with stochastic methods.\\ + +Example:\\ +Estimate $\pi$ via random sampling from $[0,1]$ and counting how +many of the points have distance smaller than 1. Using the fact that +$A = \pi r^2$ and $4 A/F_\mathrm{square} = 4 N_\mathrm{A}/N$ gives $\approx \pi$. +\\ +\end{frame} + +\begin{frame} +\slidesonly{ +\frametitle{Monte Carlo} +Evaluating probability of states (e.g.\ to compute integrals, expectation values +etc.) is difficult. +Easier to sample from conditional distributions.\\ + +Approaches: +\begin{enumerate} +\item Gibbs sampler:\\ + Sample from conditional distribution to produce a Markov chain with the joint +posterior density as its stationary distribution. +\item Metropolis algorithm:\\ + sampling strategy with which to accept or reject transitions +\end{enumerate} +} +\end{frame} + +While it can be difficult to evaluate the +probability of states (e.g.\ to compute integrals, expectation values +etc.) it is possible to sample from the joint distribution by +sequential sampling from conditional distributions that are easier to +compute. There are two approaches: the \emph{Gibbs sampler} and +\emph{Metropolis} type algorithms (Note: this material is taken nearly +verbatim from Kass et. al. 1997, roundtable discussion??). + +\subsection{Gibbs sampler:} +\label{sec:gibbs-sampler} + +The Gibbs sampler \citep{GemanGeman1984} samples from the collection +of full (or complete) conditional distributions and it does, under +fairly broad conditions, produce a Markov chain with the joint +posterior density as its stationary distribution. A tutorial can be +found in \citep{CasellaGeorge1992}. + +\newpage +\begin{frame}\frametitle{Metropolis algorithm} + +\notesonly{ +When it is difficult to directly sample from the conditionals, one may +instead simulate from a different Markov chain with a different +stationary distribution, but then modify it in such a way so that a +new Markov chain is constructed which has the targeted posterior as its +stationary distribution. This is done by the Metropolis-Hastings +algorithm -- It samples from a prespecified candidate (proposal) +distribution for and subsequently uses an accept-reject step (see Kass +et. al. 1997). +} + +The \emph{Metropolis algorithm} describes the sampling strategy with which to accept or reject transitions: +\begin{equation} +P(Y_n = x_j | X_{n} = x_i) = P(Y_n = x_i | X_{n} = x_j) +\end{equation} + +IF $\Delta E < 0$ (minimization) then \\ + +\oident accept transition \\ + +ELSE \\ + +\oident Sample $\varepsilon$ from $\mathcal{U} \sim \lbrack 0, 1 \rbrack$ \\ + +IF $\varepsilon < \exp \left( - \beta \Delta E \right)$ then \\ + +\oident accept transition + +\oident the new state is similar/``close'' to the prev. state (e.g. bit flip)\\ + + +ELSE\\ + +\oident reject transiton and remain at the same state\\ + +\vspace{0.5cm} +Simulated annealing follows the Metropolis algorithm. + +\end{frame} + +\begin{frame}\frametitle{Metropolis sampling} +\label{sec:metropolis-sampling} +The MCMC strategy of Metropolis sampling uses a 2-step approach +\begin{enumerate} +\item Markov Chain $\rightarrow$ Proposal Density +\item Monte Carlo $\rightarrow$ Acceptance Probability +\end{enumerate} + +\textbf{Proposal Distribution:} +The Proposal density determines which nodes to \emph{poll} (``select +and test'') next and needs to fulfil the following properties: +\begin{itemize} +\item nonnegative: $\tau_{ij} \geq 0$ +\item normalized: $\sum_j \tau_{ij} =1$ +\item symmetric: $\tau_{ij}=\tau_{ji}$ +\end{itemize} + +\end{frame} + +\newpage + +\subsection{Acceptance Probability:} +This probability specifies how likeli it is to go from state $i$ to +$j$. In our scenario, this depends only on their energy levels (and the current value of +temperature). + +\subsection{Example:} Using the difference in energy levels +$\Delta_{ij} = E_j -E_i$, the sigmoidal acceptance rule is given as +$$ +p_\mathrm{switch}(i \rightarrow j) = p_{ij} = \frac{1}{1+e^{\Delta_{ij}}} = \frac{1}{1+e^{(E_j -E_i)}}. +$$ +From the assumption of detailed balance then follows +\begin{eqnarray*} + \tau_i p_{ij} & = & \tau_j p_{ji}\\ + \frac{\tau_i}{\tau_j}& = & \frac{p_{ji}}{ p_{ij}} += \frac{1+\exp(\Delta_{ij})}{1+\exp(\Delta_{ji})} += \frac{1+\exp(\Delta_{ij})}{1+\exp(-\Delta_{ij})}\\ +& = & \exp(\Delta_{ij}) \frac{1+\exp(\Delta_{ij})}{1+\exp(\Delta_{ij})} += \exp(\Delta_{ij})\\ +&= &\exp(E_j-E_i) = \frac{Z \exp(E_i)}{Z \exp(E_j)} +\end{eqnarray*} +demonstrating that +$p(X_i)= \frac{1}{Z} \exp \big(-\frac{E_i}{k_b T}\big)$ +is a consistent choice. +\\ + +\begin{itemize} +\item Determination of the \emph{transition probability} $p(X_T|X_{j})$ + requires only knowledge of $E_i - E_j$. Applying the Metropolis + algorithm with these parameters will lead to a stationary + distribution $\pi$ with $\pi_i= p(x_i)$. +\item This means, we can sample from the distribution $p_\beta(x)$ + without knowing $Z=\sum_{i \in I} \exp(-\beta E_i)$ which is + difficult to estimate for large $I$ as e.g.\ $2^N$. +\item Acceptance depends only on the \emph{energy difference} between + the current and suggested state. This difference depends only on the + \emph{neighborhood} of the polled unit an not necessarily the full + system! +\end{itemize} + +\question{How does this all tie back to Simulated Annealing?} + +Making use of the temperature parameter (and an annealing schedule), +Metropolis sampling can be used to optimize cost functions. + +\textbf{Motivation:} At each temperature, the MCMC relaxes into the +stationary distribution. For lower and lower temperatures (higher $\beta$), the entropy +of this distribution becomes lower and lower, more ``peaked'', i.e.\ +only the \emph{most} probable states have nonzero probability. +The probability of states that initial started with moderate or lower probability values are pulled towards near-zero values. +\textbf{Also}: The average +Energy becomes lower and lower. This motivates simulated annealing as +an optimization approach. + +\begin{itemize} +\item For each temperature, relax towards stationary distribution +\item gradually decrease temperature +\item[$\leadsto$] observed states represent approximately ``optimal solutions'' +\end{itemize} +If the shape of distribution changes smoothly and cooling is ``slow +enough'', this will result in a distribution concentrated on the +minimum-energy state, i.e. will end up in an optimal solution with +probability 1. + +\subsection{Simulated (stochastic) annealing (revisited)} \label{sec:stochastic-annealing} +``classical'' MCMC approach: select variable, stochastically accept +change in state for that variable. + +Depending on the distribution, sampling might be the only feasible +solution. There are different strategies (Gibbs sampling, +Proposal-Reject) depending on whether direct sampling from the +conditional distributions makes Gibbs-Sampling possible. + + +\textbf{Caveat:} Sampling takes a lot of time and depends on the +annealing schedule. In some cases, deterministic strategies can make +use of efficient approximations of the true distribution and thereby +significantly speed up the optimization proces. + + + diff --git a/notes/07_stochopt/5_deterministic.tex b/notes/07_stochopt/5_deterministic.tex new file mode 100644 index 0000000..a5c8c5f --- /dev/null +++ b/notes/07_stochopt/5_deterministic.tex @@ -0,0 +1,90 @@ +\section{Deterministic annealing} \label{sec:determ-anne} + +\begin{frame} + +Mean field methods provide a specific type of variational approach for +optimization problems (\cite{Bishop2006,Murphy2012}). This is useful +more generally for density estimation ($\rightarrow$ Variational +Bayes) where it often provides a more efficient option than sampling +techniques if the posterior distribution can be well approximated by a +factorizing distribution. The following description of the variational +approach closely follows \citep[ch. 21.3]{Murphy2012}. + +\textbf{more about this in the notes.}\\ +\textbf{switch to mean field lecture slides} + +\end{frame} + +\begin{eqnarray*} + \label{eq:1} + L(q_i) & = & \sum_x \prod_i q_i(x_i) \Big( \log \tilde{p}(x) - \sum_k \log q_k(x_k) \Big) \\ + & = & \sum_{x_j} \sum_{x_{-j}} q_j (x_j) \prod_{i \neq j} q_i(x_i) \Big( \log \tilde{p}(x) - \sum_k \log q_k(x_k) \Big) \\ + & = & \sum_{x_j} q_j(x_j) \sum_{x_{-j}} \prod_{i \neq j} q_i(x_i) \log \tilde{p}(x) \\ +& & - \sum_{x_j} q_j(x_j) \sum_{x_{-j}} \prod_{i \neq j} q_i(x_i) \Big(\log q_j(x_j)+ \sum_{k \neq j} \log q_k(x_k) \Big) \\ +& = & \sum_{x_j} q_j(x_j) \log f_j(x_j) - \sum_{x_j} q_j(x_j) \log q_j(x_j) + const +\end{eqnarray*} +where we introduced the definition +$$ +\log f_j(x_j):= \sum_{x_{-j}} \prod_{i \neq j} q_i(x_i) \log +\tilde{p}(x). +$$ +Although $f_j$ is not a proper distribution (not normalized), the last +term can be interpreted as a KL-divergence +$$ +L(q_j) \sim - \dkl(q_j||f_j). +$$ +Therefore, $L(q) = - \dkl(q||\tilde{p})$ can be maximised by +minimizing $\dkl(q_j||f_j)$ i.e. setting $q_j = f_j$ by +$$ +q_j(x_j) = \frac{1}{Z_j} \exp\big(\E_{-q_j}[\log \tilde{p}(x)]\big) +$$ +Ignoring the normalisation constant we get as the optimal component $q_j$ +\begin{equation} + \label{eq:MeanField} +\log q_j(x_j) = \E_{-q_j}[\log \tilde{p}(x)] +\end{equation} + +\subsection{Alternative motivation of the mean-field annealing + approach} \label{sec:motivation} at each step we actually know +$p_{\Delta E}(\mathrm{flip})$ which enables us to estimate +$E[X_i|X_{-i}]$ i.e.\ the average value of $X_i$ given its parents. + +Mean field annealing generalizes this approach by making use of the fact that +the marginal distributions of $X_i$ are known in this way and then using the relation: +i.e.\ with $p(v_j) = \frac{1}{1+e^{-v_j/t}}$ we can write: +$$ +\langle x_j \rangle = (+1) P(v_j) +(-1)(1-P(v_j)) = 2 P(v_j) -1 = \tanh(v_j/2T) +$$ +Although v is not known exactly (depends on the exact states of the +other $X$ and their interactions) we can approximate it as +$$ +v_j \approx \langle v_j \rangle = \Big\langle \sum_i w_{ji} x_i \Big\rangle = + \sum_i w_{ji} \langle x_i \rangle +$$ +where $\langle v_j \rangle$ is called the ``mean field'' and gives the average value of $x_j$ as +$$\langle x_j \rangle \approx \tanh\frac{\langle v_j\rangle}{2T}$$ + +\textbf{Relation between the sigmoidal and tanh:} Using the sigmoidal acceptance probability is equivalent to using $\tanh$ for \emph{states} $x \in \{-1,+1\}$ of the RV i.e.\ $\tanh(z) \in (-1,1)$ for $z \in (-\infty,+\infty)$. + +\begin{equation} +\tanh(x) = \quad\frac{e^{2x}-1}{e^{2x}+1} + \quad = \frac{1-e^{-2x}}{1+e^{-2x}} \quad = \frac{2-1-e^{-2x}}{e^{-2x}+1} \quad = \frac{2}{1+e^{-2x}} -1 +\end{equation} +or the other way round: +$$ +\frac{1}{1+e^{-x}} = \frac{1}{2}\left(1+\tanh(\frac{1}{2}x)\right) +$$ + +\section{Boltzmann machines} +\label{sec:boltzmann-machines} + +Approach can be generalized to hidden units and details on Boltzmann +machines in \cite{AartsKorst1990}. Restricted BMs (RBMs) do not have connections between observable or hidden units, which simplifies computation of conditional probabilities necessary for learning considerably. RBMs have been developed (among others) by P. Smolensky, who called them "Harmoniums" (\cite{Smolensky1986}). +\begin{itemize} +\item General model of distributions +\item parameters (W) can be learned from samples +\item works for Systems with nonobservable (latent) variables +\item interesting model of cognitive processes +\item structured boltzmann machines as efficient pattern recognition systems +\end{itemize} + diff --git a/notes/07_stochopt/tutorial.tex b/notes/07_stochopt/tutorial.tex index cd9d56e..e130817 100644 --- a/notes/07_stochopt/tutorial.tex +++ b/notes/07_stochopt/tutorial.tex @@ -62,7 +62,31 @@ \newpage \mode -\input{./1_stochopt} +\input{./0_motivation} +\mode* + +\mode +\input{./1_explorationexploitation} +\mode* + +\mode +\input{./2_discrete} +\mode* + +\clearpage + +\mode +\input{./3_stochopt} +\mode* + +\mode +\input{./4_mcmc} +\mode* + +\clearpage + +\mode +\input{./5_deterministic} \mode* \clearpage From 77a84b5462a7f186b0654180899aca01550fa553 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Mon, 1 Jun 2020 21:43:30 +0200 Subject: [PATCH 3/6] remove old source --- notes/07_stochopt/1_stochopt.tex | 805 ------------------------------- 1 file changed, 805 deletions(-) delete mode 100644 notes/07_stochopt/1_stochopt.tex diff --git a/notes/07_stochopt/1_stochopt.tex b/notes/07_stochopt/1_stochopt.tex deleted file mode 100644 index db19e5f..0000000 --- a/notes/07_stochopt/1_stochopt.tex +++ /dev/null @@ -1,805 +0,0 @@ -\section{Problems with how we've been optimizing so far} - -\section{Exploration vs. Exploitation} -\begin{frame} - -\begin{figure}[ht] - \centering - \begin{tabular}{c c} - \includegraphics[height=3.5cm]{img/gradient-descent.pdf} & - \includegraphics[height=3.5cm]{img/gradient-descent_local.pdf} - \end{tabular} - \caption{Learning by gradient descent}\label{fig:graddescent} -\end{figure} - -\end{frame} - -%An -%introduction illustrating the underlying analogy can be found in -%\textcite[ch. 7]{DudaEtAl2001}. \textcite{Murphy2012} gives a good -%and extensive discussion of undirected graphical models (Markov Random -%fields, ch~19), variational inference (ch~21; mean field for the ISING -%model, ch~21.3), and Monte Carlo Methods (ch~23), as well as MCMC -%methods (ch~24). Further information regarding variational methods can -%be found in \textcite{Bishop2006}. - -Learning is about tuning model parameters to fit some objective given training data. -For simple models with only few parameters one can formulate an analytic solution that optimizes the objective and yields the optimal parameters directly. -A soon as the number of parameters increases we opt for iterative gradient-based methods for finding the extrema of the objective function. If we were trying to minimize some cost function $E$, -iteratively updating the parameters $\vec w$ by moving them in the direction of where the gradient points steepest leads to the location of an extremum. -However, the cost function may contain multiple extrema, and there is no guarantee gradient-based learning will take us to a \emph{global} or \emph{local} optimium. -Following the gradient assuming that it will lead to a solution that represents the global optimum is considered a \emph{greedy} approach to learning. - -Completly abandoning such assumptions will lead to a \emph{random search} for the optimal parameters. When the previous set of paramters has no influence on the choice of weights in the next iteration, -then our learning approach is dominated by \emph{exploration} as opposed to \emph{exploitation} when we learn in a greedy fashion. - -\question{What are the advantages and disadvantages of exploration?} - -The advantage of exploration is that we always discard a set of paramters if the next set yields a better cost value. Therefore, exploration is not prone to getting stuck inside a local optimum. The obvious disadvantage is that there are no guarnatees on how long it will take to find the global optimum. We never know if we've converged or not. Exploitation, or the greedy approach (with the approprate learning rate schedule) is able to converge. However, wether it reaches a global or local solution depends on the starting position. - -\begin{frame} -\slidesonly{ -\frametitle{Exploration vs. Exploitation} - -} -\begin{figure}[ht] - %\centering - \begin{tabular}{c c} - exploration & exploitation\\ - \includegraphics[height=3.0cm]{img/exploration.pdf} & - \includegraphics[height=3.0cm]{img/exploitation.pdf}\\ - random search & greedy search/hill ``climbing'' - \end{tabular} - \caption{exploration vs. exploitation} - \label{fig:exploration-exploitation} -\end{figure} - -\end{frame} - -%\underline{Motivation 1:} We will look at how stochastic optimization can find a tradeoff between the two modes exploration and exploitation. - -\section{Discrete Optimization} - -\begin{frame} - -\slidesonly{ -\begin{block}{Supervised \& unsupervised learning $\rightarrow$ evaluation of cost function $E$} -Find the arguments the optimize $E$. -\begin{itemize} - \item real-valued arguments: gradient based techniques (e.g. ICA unmixing matrices) - \item discrete arguments: ??? (e.g. for cluster assignment) -\end{itemize} -\end{block} -} -\notesonly{ -So far we've been concerned with optimization problems with real valued arguments. The free paramters form a continuous space. The direction of the principle components in PCA and the unmixing matrix we are trying to find in ICA are real-valued arguments to their respective problems. -Gradient-based solutions are well suited for real-valued arguments as we tune the weights to minimize to optimize the cost function. - -But what if the problem we are trying to optimize operate on discrete arguments. This could be the case if we were tackling a problem such as K-Means clustering. K-Means clustering involves finding arguments with which to assign an observation to one of multiple clusters. The cost function that measures the quality of the assignments is continuous but a the arguments we optimize over, which effectively assign each observation to one cluster instead of another cluster, are discrete variables. Below is an example of such an assignment: - - -} - -\begin{figure}[ht] - \centering - \includegraphics[height=3.5cm]{img/clustering.pdf} - \caption{Clustering involves discrete-valued arguments.} - \label{fig:clustering} -\end{figure} - -\end{frame} -\newpage -\begin{frame} -\slidesonly{\frametitle{Formalization of the discrete optimization problem}} -\notesonly{ -\textbf{Formalization of the discrete optimization problem:} -} -\begin{block}{Setting} -\begin{itemize} - \item discrete variables $s_i, \ i = 1, \ldots, N\quad$ (e.g. $s_i \in \{+1, -1\}$ \notesonly{``binary units''} or $s_i \in \mathbb N$) - % $s_i \in \{1, 2, \dots 9 \} $ - \item \indent short-hand notation: $\vec{s}$ (``state'') -- { $\{\vec{s}\}$ is called state space } - \item {cost function:} $E: \vec{s} \mapsto E_{(\vec{s})} \in \mathbb{R}$ -- { not restricted to learning problems} -\end{itemize} -\end{block} - -We will now focus on \textbf{minization} problems. - -\begin{block}{Goal: find state $\vec{s}^*$, such that:} -\begin{equation*} - E \eqexcl \min \qquad (\text{desirable global minimum for the cost}) -\end{equation*} -Consequently, -\begin{equation*} - s^* := \argmin E. -\end{equation*} -\end{block} -\end{frame} - -\begin{frame} -\frametitle{Efficient strategies for discrete optimization} -\notesonly{ -We want to find the best configuration of a discrete system (e.g.\ -state of interacting binary units). Evaluating full search space works only for -very small problems ($\rightarrow 2^N$ possibilities for a problem with $N$ -binary units, search space is the set of corners of a -hypercube). A greedy strategy will often get trapped if there are -multiple local minima. -} - -\begin{itemize} -\item Evolutionary and genetic algorithms (GA) have been - motivated by \emph{biological} phenomena of adaptation through - \emph{mutation} and \emph{selection}. -\item GA and Monte-Carlo-Markov-Chain methods based on a \emph{proposal} and - \emph{acceptance} strategy ($\rightarrow$ Metropolis) can be interpreted - as "learning via trial and error". \emph{Simulated annealing} falls within MCMC. -\end{itemize} -\end{frame} - -\section{Simulated (stochastic) annealing} - -\begin{frame} - -\emph{Simulated annealing}\footnote{ -The ``annealing'' part in the name comes from meatallurgy. As metals cool down, the movement of the atoms slows down and their kinetic energy decreases until the metal eventually hardens. -} -\notesonly{is a method for stochastic optimization with which we can find a tradeoff between exploitation and exploration. More importantly, it is desgined to cope with optimization of discrete-valued arguments. Simulated annealing is - motivated by phenomena in physics related to the organization and - alignment of microscopic components forming specific macroscopic - configurations. } -\slidesonly{\\$\leadsto$ exploitation and exploration tradeoff} -\slidesonly{\\$\leadsto$ (more importantly) discrete optimization\\\vspace{0.5cm}} - -\underline{What does simulated annealing do?} - -In the case of \emph{minimzation} it: - -\begin{enumerate} -\item describes a strategy for switching between states -\item increases the probability of landing in lower-energy states\footnote{This preference for lower-energy states is specific to \emph{minimization} problems.} -\item allows for escaping \textbf{local} optima -\end{enumerate} - -\end{frame} - -\begin{frame} -\slidesonly{ -\frametitle{Simulated Annealing; the algorithm} - -Use \emph{inverse} temperature $\beta = 1/T$\\\vspace{0.5cm} -} -\notesonly{ -\textbf{Simulated Annealing, the algorithm} - -We will use the inverse temperature $\beta = 1/T$\\\vspace{1cm} -} - - -\texttt{initialization:} $\vec{s}_0, \, \beta_0$ small ($\leadsto$ high temperature) \\ - -\texttt{BEGIN Annealing loop} ($t=1,2,\dots$)\\ - -\oident$\vec{s}_t = \vec{s}_{t-1}$ {\tiny(initialization of inner loop)} \\ - -\oident \texttt{BEGIN State update loop} ($M$ iterations)\\ - -\begin{itemize} -\item \texttt{choose a new candidate state} $\vec{s}$ randomly {(but ``close'' to $\vec{s}_t$)}\\ - -\item \texttt{calculate difference in cost:} - \oident$\Delta E = E_{(\vec{s})}- E_{(\vec{s}_t)}$\\ -\item -\texttt{switch} $\vec{s}_t$ \texttt{to} $\vec{s}$ \texttt{ with probability} - $\color{red}\mathrm{W}_{(\vec{s}_t \rightarrow \vec{s})} = - \frac{1}{1 + \exp( \beta_t \Delta E)}$ -\texttt{\underline{otherwise} keep the previous state} $\vec{s}_t$ -\end{itemize} -\oident\texttt{END State update loop} \\ - -\oident$\color{blue}\beta_t = \tau \beta_{t-1}\qquad $ {\footnotesize($\tau>1\implies$ increase of $\beta$)} \\ % by practical ``exponential'' rule -- but not optimal - -\texttt{END Annealing loop} - -\end{frame} - - - -\begin{frame} \frametitle{Transition probability} -% \vspace{-0.5cm} - \begin{center}\includegraphics[width=8cm]{img/section3_fig1} - \end{center} - \begin{center} - \vspace{-0.5cm} - $\mathrm{W}_{(\vec{s}_t \rightarrow \vec{s})} = \frac{1}{1 + \exp( \beta_t \Delta E)}, \quad \Delta E = E_{(\vec{s})}- E_{(\vec{s}_t)}$\\ - \end{center} -\end{frame} - -the transition probability $\mathrm{W}$ measures the probability of changing to a new state $\vec s$ or reamining at $\vec s_t$. It depends on (A) the difference in cost and (B) the inverse temperature. The difference $\Delta E$ is the only way of measuring whether we gain any improvement from the transition or not. We use the inverse temperature $\beta_t$ to control how much we favor such transitions, or if we prefer a more conservative system. Below illustrates how the transition probablity can be modulated by the inverse temperature $\beta$ during the annealing process: - -\begin{frame} \frametitle{Modulating $\mathrm W$ during the annealing process} -% \textbf{ limiting cases for high vs.\ low temperature:} - \begin{center} - \includegraphics[width=10cm]{img/switchfuns} -\vspace{5mm} - \oident\oident\begin{tabular}[h]{c c c} - low $\beta$ (high temperature) & intermediate $\beta$ & high $\beta$\\\\ - \includegraphics[width=3cm]{img/section3_fig4} - & \hspace{-0.5cm}\includegraphics[width=3cm]{img/section3_fig5} - & \includegraphics[width=3cm]{img/section3_fig6} - \end{tabular} -\vspace{5mm} - \end{center} - \vspace{-2cm} - \begin{tikzpicture}[scale=0.75] -\draw[->] (0,0) -- (1,0); -\draw[->] (0,0) -- (0,1.25); -% \draw[lightgray, very thick] (-1,0.5) -- (.9,0.5); -% \draw (0,0) node[anchor=north]{0}; -\draw (0,1.25) node[anchor=west]{$E$}; -\draw (1,0) node[anchor=west]{$\vec{s}$}; -% \foreach \y in {0.5,1} \draw (0,\y) node[anchor=south east] {$\y$}; -% \foreach \y in {0.5,1} \draw (-1pt,\y) -- (1pt,\y); -\end{tikzpicture} - -\question{Which range of $\beta$ corresponds to \emph{exploration}/\emph{exploitation}?}\\ - -\end{frame} - - -In the case of: - -\begin{itemize} -\item low $\beta \corresponds$ high temperature:\\ -The transition probability is nearly constant (W=0.5) regardless of $\Delta E$. It is equally probably to accept a transition or to remain at the same state. Therefore we can regard this as \emph{exploration} mode. -\item intermediate $\beta$:\\ -Recall that we are currently considering a minimization problem. $\Delta E < 0$ whenever the new state is of lower cost than the previous one. We are no longer indifferent to this difference, but are more likely to accept transitions to lower-eneergy-states. Our process is still stochastic, therefore it is not guarnateed that we will accept every transition that yileds lower lower cost. We may either reject the transition and remain at the same higher-cost state or accept a transition to higher-cost state. such transitions are less likely to happen, but are still possible. This is where stochastic optimization is able to escape a local optimimum and resume the search elsewhere instead of opting for the greedy approach. To reiterate, this is a stochastic process, if we sample long enough, we will find that intermediate values of $\beta$ are more likely to yield samples from the ``global'' minimum of this curve than the higher ``local'' minimum in this particualr cost function. -\item high $\beta \corresponds$ low temperature:\\ -This is the \emph{exploitation} mode. This reflects the behjavior of a greedy learning algorithm such as gradient descent. Whenever we compare the cost of two sucessive states and find that $\Delta E < 0$ it tells us that the new state is of lower cost and more desriable for our mimization objective. The transition probability in this case will almost always accept a transition to a lower-cost state. Consequently it will almost always reject transitions to high-cost states, and the probabilty of remaining in a high-cost state is also very low. If the next sample is of lower-cost, we are very likely to accept that transition. Looking again at the stochastic nature of our process: We repeat the process multiple times and register how often each \emph{run} (not a single iteration) leads us to either minumum on this particular curve, we will find that the chances of finding the global minimum isjust as likely as those of reaching the local minimum. This is because the initial state is the only decisive factor. high $\beta$ means we are in exploitation mode. We are only going to accept a transition if it lowers our cost. If we restrict our sampling to ``nearby'' states, we are emulating gradient descent. As soon as we've determined the direction of descent, we will follow it. The descisive factor is, where did we start? Since in our case, the two valleys around the two minima are equally ``wide'', it makes starting inside one equal to starting inside the other. If I am already in the vicinity of one minimum, the probabilty of transitionining \emph{outside} is very low. This probability is low, regardless of whether I am in the vicinity of the global or local minimum. -\end{itemize} - - -\begin{frame}\frametitle{Annealing schedule \& convergence} -Convergence to the global optimum is guaranteed if $\beta_t \sim \ln (t)$\footnote{Geman and Geman show this in: Geman, S., and D. Geman (1984). Stochastic relaxation, Gibbs distribution, and the bayesian restoration of images. IEEE Trans. Pattern Anal Machine Intell. 6, 721-741. } - -\begin{itemize} - % \itR robust optimization procedure - \itR but: $\beta_t \sim \ln t$ is \textbf{too slow} for practical problems - \itR therefore: $\beta_{t+1} = \tau \beta_t, \quad \tau \in [1.01,1.30]$ - (exponential annealing) - \itR additionally: the \texttt{State Update loop} has to be iterated often enough, e.g. $M=500-2000$. \slidesonly{$\leadsto$ thermal equilibrium} - \notesonly{This is required for reaching thermal equilibrium. Another way to look at it is the need to capture the stationary distribution of the states in relation to their cost. We will talk more about when we discuss the Gibbs distribution.} -\end{itemize} -\end{frame} - -\section{The stationary distribution} - -\begin{frame} - - -\slidesonly{ - \begin{center} - \oident\oident\begin{tabular}[h]{c c c} - low $\beta$ (high temperature) & intermediate $\beta$ & high $\beta$\\\\ - \includegraphics[width=3cm]{img/section3_fig4} - & \hspace{-0.5cm}\includegraphics[width=3cm]{img/section3_fig5} - & \includegraphics[width=3cm]{img/section3_fig6} - \end{tabular} -\vspace{5mm} - \end{center} - \vspace{-2cm} - \begin{tikzpicture}[scale=0.75] -\draw[->] (0,0) -- (1,0); -\draw[->] (0,0) -- (0,1.25); -% \draw[lightgray, very thick] (-1,0.5) -- (.9,0.5); -% \draw (0,0) node[anchor=north]{0}; -\draw (0,1.25) node[anchor=west]{$E$}; -\draw (1,0) node[anchor=west]{$\vec{s}$}; -% \foreach \y in {0.5,1} \draw (0,\y) node[anchor=south east] {$\y$}; -% \foreach \y in {0.5,1} \draw (-1pt,\y) -- (1pt,\y); -\end{tikzpicture} - -Missing a probability distribution across states. -} - -\notesonly{ -As we discussed the effect of $\beta$ on the transition probability, we saw how this controls explorations and exploitation. -By talking about the probability of descendingf vs. jumping to a completly different location, we also talked about the probability of landing inside the valley surrounding the global minimum vs. that surrounding a \emph{local} one. Therefore, it becomes necessary to define a measure for the probability for each possible state that $\vec s$ can take. -This measure needs to fulfill the following requirements: -\begin{enumerate} -\item Reflect the probability distribution across states -\item For constant $\beta$ it should converge to the stationary distribution. That is the probability of transitioning from some state $\vec s$ to $\vec s'$ should be equal to the reverse transition. This is what is meant by ``thermal equilibrium''. -\end{enumerate} -} -\end{frame} - - - -\begin{frame}{Calculation of the stationary distribution} -\question{How do we find this stationary distribution?} -\pause -\vspace{-0.5cm} -\begin{equation*} - \underbrace{ \substack{ \text{probability of} \\ - \text{transition } - \vec{s} \rightarrow \vec{s}^{'}} }_{ - P_{(\vec{s})} \mathrm{W}_{(\vec{s} \rightarrow - \vec{s}^{'})} } - = - \underbrace{ \substack{ \text{probability of} \\ - \text{transition } - \vec{s}^{'} \rightarrow \vec{s} } }_{ - P_{(\vec{s}^{'})} \mathrm{W}_{(\vec{s}^{'} \rightarrow - \vec{s})} } -\end{equation*} -\begin{equation*} - \begin{array}{ll} - \frac{P_{(\vec{s})}}{P_{(\vec{s}^{'})}} - & = \frac{\mathrm{W}_{(\vec{s}^{'} \rightarrow \vec{s})}}{ - \mathrm{W}_{(\vec{s} \rightarrow \vec{s}^{'})}} - = \frac{1 + \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})} - \big) \big\} }{1 + \exp\big\{ \beta \big( E_{(\vec{s}^{'})} - - E_{(\vec{s})}\big) \big\} } - = \frac{1 + \exp( \beta \Delta E)}{1 + \exp( -\beta \Delta E)} \\\\ - \pause - & = \exp( \beta \Delta E) \frac{1 + \exp( -\beta \Delta E)}{ - 1 + \exp( -\beta \Delta E) } - = \exp( \beta \Delta E ) \\\\ - \pause - & = \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})}\big) \big\} - = \exp\big\{ \beta E_{(\vec{s})} - \beta E_{(\vec{s}^{'})} \big\}\\\\ - &= \frac{\exp\left( \beta E_{(\vec{s})}\right)}{\exp\left( \beta E_{(\vec{s}^{'})} \right)} - \slidesonly{ - \qquad \small \text{condition is fulfilled by Gibbs distribution.} - } - \end{array} -\end{equation*} -\notesonly{ -The condition is fulfilled for the \emph{Gibbs-Boltzmann} distribution: -} - -\end{frame} -\begin{frame}\frametitle{The Gibbs distribution} -\notesonly{ -The Gibbs (or Boltzmann-) distributon from statistical physics, measures the -probability of a system to be in state $\vec s$ having Energy $E_{(\vec s)}$ is -given as -} -\begin{equation} \label{eq:gibbs} -P_{(\vec{s})} := \frac{1}{Z} \exp \Big(-\frac{E_{(\vec s)}}{k_b T}\Big) -= \frac{1}{Z} \exp \Big(-\beta E_{(\vec s)} \Big) -\end{equation} - -where the normalization constant / partition function $Z$ is defined as: - - -\begin{equation} \label{eq:partition} -Z := \sum\limits_{\vec{s}} \exp \Big(-\frac{E_{(\vec s)}}{k_b T}\Big) = \sum\limits_{\vec{s}} \exp(-\beta E_{(\vec s)}) -\end{equation} - -\notesonly{ -The partition function $Z$ ensures that $P_{(\vec{s})}$ is a probability -measure and the Boltzmann konstant $k_b = 1.38 \cdot 10^{-23} J/K$ -gives a scale of the \emph{temperature} $T$. This means the -probability of observing a state is fully determined by its Energy. - -%For sampling algorithms one often constructs a Markov chain whose -%stationary distribution is a Gibbs-distribution for a specified cost -%(or energy-) function. -} - -\end{frame} - -\begin{frame}\frametitle{Cost vs. probability distribution} -\question{How does $\beta$ modulate $P_{(\vec s)}$?} - -$E_{(\vec{s})}$ -\vspace{-0.2cm} -\begin{figure}[h] - \centering -\includegraphics[width=12cm]{img/section3_fig7} -\[ \begin{array}{ll} - \beta \downarrow:\pause - & \text{broad, ``delocalized'' distribution} \\\vspace{-0.3cm}\\ - \beta \uparrow:\pause - & \text{distribution localized around (global) minima} -\end{array} \] -\end{figure} - - -\end{frame} - -\newpage - - -We will now further formalize what is going on with simulated annealing. - -\section{Monte Carlo Markov Chain (MCMC)} - - -\begin{frame} - - - -Whenever it is difficult to evaluate the joint distribution\\ -opt for ``learning through trial and error''\\ - -\notesonly{ -MCMC methods are a popular -strategy in situations where it is hard to evaluate the joint (e.g.\ -posterior distribution) of a rnadom variable analytically but where it is easy to -sample from the conditional distribution (and finally the joint -distribution). Using samples from such a posterior distribution, one -can estimate many summaries of interest without explicitly knowing the -joint distribution\footnote{credit to Dr. Timm Lochmann for the content on MCMC}. - -} - -\slidesonly{ -\vspace{1cm} -What is: - -\begin{itemize} -\item a Markov Chain -\item the Markov property -\item the stationary distribution -\item Monte Carlo -\item the Metropolis algorithm -\item Metropolis sampling (Monte Carlo + Markov Chain) - simulated annealing -\item deterministic annealing (variational approach) - for further reading -\end{itemize} - -The following is for providing a framework around stochastic optimization. -} - -\end{frame} -\begin{frame} \frametitle{Markov chain and the Markov property} -Consider a family of random variables $X_t$, $t=1,2,\ldots$, which describe a stochastic process. $x_t$ denotes the state at time $t$. - -\notesonly{ -A sequence of such is referred to as a \emph{Markov chain} whenever $X_{t+1}$ depends only on the predecessor $X_t$ and is \emph{independent} of all values previous to that: -} - -\begin{align} -\label{eq:markovprop} -P(X_{t+1} &= x_{t+1} | X_{t} = x_{t}, X_{t-1} = x_{t-1}, \ldots, X_{0} = x_{0})\\ -&= P(X_{t+1} = x_{t+1} | X_{t} = x_{t}) -\end{align} - -\notesonly{\eqref{eq:markovprop}} -\slidesonly{This} is refered to as the \emph{Markov property}. -\notesonly{The conditional distribution of $X_t$ depends only on its -predecessor. In the more general case of Markov Random Fields, the -Markov property induces a ``local neigborhood''/ set of \emph{parents} -which fully determines the conditional distribution).} -The transition probabilities between subsequent states -$$ -P(X_{t+1}=j|X_{t}=i)=p_{ij} -$$ -can be described via the stochastic matrix $M = \{m_{ij}\}_{ij}$ with -$m_{ij}=p_{ij}$. -\\ - -\pause - -\slidesonly{Exactly what $W$ in simulated annealing describes for the states $\vec s$: -} -\notesonly{ -The transition probability $W$ we just encountered in simulated annealing with states $\vec s$ describes exactly this: -} -\begin{align} -\label{eq:markovproptransition} -W_{s_i \rightarrow s_j} = P(X_{t+1} = s_j | X_{t} = s_i) -\end{align} - -\begin{center} -s.t. $W_{s_i \rightarrow s_j} > 0 \;\;\forall (i,j)\quad$ -and $\quad\sum_j W_{s_i \rightarrow s_j} = 1 \;\;\forall i$. - -\end{center} -\end{frame} - -\begin{frame}\frametitle{Stationary distribution:} -\label{sec:stat-distr} -The \emph{stationary distribution} of a homogeneous Markov chain is a -distribution $\pi=[\pi_1,\pi_2,..., \pi_N$] such that -\begin{equation} -M \pi = \pi -\end{equation} -where -\begin{align} -p(x_{t+1}=j) &= \sum_i p(x_{t+1}=j,x_{t}=i) \\ -&= \sum_i p(x_{t+1}=j|x_{t}=i)\,p(x_{t}=i)\\ -&= M \pi -\end{align} -and can be derived from the eigen-decomposition of the transition matrix -(given certain conditions on the Markov chain $\rightarrow$ irreducibility, recurrence etc.) - -If the Markov chain is \emph{reversible}, the stationary distribution is -characterized by a \emph{detailed balance} between going from one -state to another one, i.e.\ -$$ -\pi_i p_{ij} = \pi_j p_{ji} -$$ -\end{frame} - -\begin{frame}\frametitle{Monte Carlo} -\notesonly{ -Monte Carlo methods -have been used to } evaluate certain integrals with stochastic methods.\\ - -Example:\\ -Estimate $\pi$ via random sampling from $[0,1]$ and counting how -many of the points have distance smaller than 1. Using the fact that -$A = \pi r^2$ and $4 A/F_\mathrm{square} = 4 N_\mathrm{A}/N$ gives $\approx \pi$. -\\ -\end{frame} - -\begin{frame} -\slidesonly{ -\frametitle{Monte Carlo} -Evaluating probability of states (e.g.\ to compute integrals, expectation values -etc.) is difficult. -Easier to sample from conditional distributions.\\ - -Approaches: -\begin{enumerate} -\item Gibbs sampler:\\ - Sample from conditional distribution to produce a Markov chain with the joint -posterior density as its stationary distribution. -\item Metropolis algorithm:\\ - sampling strategy with which to accept or reject transitions -\end{enumerate} -} -\end{frame} - -While it can be difficult to evaluate the -probability of states (e.g.\ to compute integrals, expectation values -etc.) it is possible to sample from the joint distribution by -sequential sampling from conditional distributions that are easier to -compute. There are two approaches: the \emph{Gibbs sampler} and -\emph{Metropolis} type algorithms (Note: this material is taken nearly -verbatim from Kass et. al. 1997, roundtable discussion??). - -\subsection{Gibbs sampler:} -\label{sec:gibbs-sampler} - -The Gibbs sampler \citep{GemanGeman1984} samples from the collection -of full (or complete) conditional distributions and it does, under -fairly broad conditions, produce a Markov chain with the joint -posterior density as its stationary distribution. A tutorial can be -found in \citep{CasellaGeorge1992}. - -\newpage -\begin{frame}\frametitle{Metropolis algorithm} - -\notesonly{ -When it is difficult to directly sample from the conditionals, one may -instead simulate from a different Markov chain with a different -stationary distribution, but then modify it in such a way so that a -new Markov chain is constructed which has the targeted posterior as its -stationary distribution. This is done by the Metropolis-Hastings -algorithm -- It samples from a prespecified candidate (proposal) -distribution for and subsequently uses an accept-reject step (see Kass -et. al. 1997). -} - -The \emph{Metropolis algorithm} describes the sampling strategy with which to accept or reject transitions: -\begin{equation} -P(Y_n = x_j | X_{n} = x_i) = P(Y_n = x_i | X_{n} = x_j) -\end{equation} - -IF $\Delta E < 0$ (minimization) then \\ - -\oident accept transition \\ - -ELSE \\ - -\oident Sample $\varepsilon$ from $\mathcal{U} \sim \lbrack 0, 1 \rbrack$ \\ - -IF $\varepsilon < \exp \left( - \beta \Delta E \right)$ then \\ - -\oident accept transition - -\oident the new state is similar/``close'' to the prev. state (e.g. bit flip)\\ - - -ELSE\\ - -\oident reject transiton and remain at the same state\\ - -\vspace{0.5cm} -Simulated annealing follows the Metropolis algorithm. - -\end{frame} - -\begin{frame}\frametitle{Metropolis sampling} -\label{sec:metropolis-sampling} -The MCMC strategy of Metropolis sampling uses a 2-step approach -\begin{enumerate} -\item Markov Chain $\rightarrow$ Proposal Density -\item Monte Carlo $\rightarrow$ Acceptance Probability -\end{enumerate} - -\textbf{Proposal Distribution:} -The Proposal density determines which nodes to \emph{poll} (``select -and test'') next and needs to fulfil the following properties: -\begin{itemize} -\item nonnegative: $\tau_{ij} \geq 0$ -\item normalized: $\sum_j \tau_{ij} =1$ -\item symmetric: $\tau_{ij}=\tau_{ji}$ -\end{itemize} - -\end{frame} - -\newpage - -\subsection{Acceptance Probability:} -This probability specifies how likeli it is to go from state $i$ to -$j$. In our scenario, this depends only on their energy levels (and the current value of -temperature). - -\subsection{Example:} Using the difference in energy levels -$\Delta_{ij} = E_j -E_i$, the sigmoidal acceptance rule is given as -$$ -p_\mathrm{switch}(i \rightarrow j) = p_{ij} = \frac{1}{1+e^{\Delta_{ij}}} = \frac{1}{1+e^{(E_j -E_i)}}. -$$ -From the assumption of detailed balance then follows -\begin{eqnarray*} - \tau_i p_{ij} & = & \tau_j p_{ji}\\ - \frac{\tau_i}{\tau_j}& = & \frac{p_{ji}}{ p_{ij}} -= \frac{1+\exp(\Delta_{ij})}{1+\exp(\Delta_{ji})} -= \frac{1+\exp(\Delta_{ij})}{1+\exp(-\Delta_{ij})}\\ -& = & \exp(\Delta_{ij}) \frac{1+\exp(\Delta_{ij})}{1+\exp(\Delta_{ij})} -= \exp(\Delta_{ij})\\ -&= &\exp(E_j-E_i) = \frac{Z \exp(E_i)}{Z \exp(E_j)} -\end{eqnarray*} -demonstrating that -$p(X_i)= \frac{1}{Z} \exp \big(-\frac{E_i}{k_b T}\big)$ -is a consistent choice. -\\ - -\begin{itemize} -\item Determination of the \emph{transition probability} $p(X_T|X_{j})$ - requires only knowledge of $E_i - E_j$. Applying the Metropolis - algorithm with these parameters will lead to a stationary - distribution $\pi$ with $\pi_i= p(x_i)$. -\item This means, we can sample from the distribution $p_\beta(x)$ - without knowing $Z=\sum_{i \in I} \exp(-\beta E_i)$ which is - difficult to estimate for large $I$ as e.g.\ $2^N$. -\item Acceptance depends only on the \emph{energy difference} between - the current and suggested state. This difference depends only on the - \emph{neighborhood} of the polled unit an not necessarily the full - system! -\end{itemize} - -\question{How does this all tie back to Simulated Annealing?} - -Making use of the temperature parameter (and an annealing schedule), -Metropolis sampling can be used to optimize cost functions. - -\textbf{Motivation:} At each temperature, the MCMC relaxes into the -stationary distribution. For lower and lower temperatures (higher $\beta$), the entropy -of this distribution becomes lower and lower, more ``peaked'', i.e.\ -only the \emph{most} probable states have nonzero probability. -The probability of states that initial started with moderate or lower probability values are pulled towards near-zero values. -\textbf{Also}: The average -Energy becomes lower and lower. This motivates simulated annealing as -an optimization approach. - -\begin{itemize} -\item For each temperature, relax towards stationary distribution -\item gradually decrease temperature -\item[$\leadsto$] observed states represent approximately ``optimal solutions'' -\end{itemize} -If the shape of distribution changes smoothly and cooling is ``slow -enough'', this will result in a distribution concentrated on the -minimum-energy state, i.e. will end up in an optimal solution with -probability 1. - -\subsection{Simulated (stochastic) annealing (revisited)} \label{sec:stochastic-annealing} -``classical'' MCMC approach: select variable, stochastically accept -change in state for that variable. - -Depending on the distribution, sampling might be the only feasible -solution. There are different strategies (Gibbs sampling, -Proposal-Reject) depending on whether direct sampling from the -conditional distributions makes Gibbs-Sampling possible. - - -\textbf{Caveat:} Sampling takes a lot of time and depends on the -annealing schedule. In some cases, deterministic strategies can make -use of efficient approximations of the true distribution and thereby -significantly speed up the optimization proces. - - -\section{Deterministic annealing} \label{sec:determ-anne} - -\begin{frame} - -Mean field methods provide a specific type of variational approach for -optimization problems (\cite{Bishop2006,Murphy2012}). This is useful -more generally for density estimation ($\rightarrow$ Variational -Bayes) where it often provides a more efficient option than sampling -techniques if the posterior distribution can be well approximated by a -factorizing distribution. The following description of the variational -approach closely follows \citep[ch. 21.3]{Murphy2012}. - -\textbf{more about this in the notes.}\\ -\textbf{switch to mean field lecture slides} - -\end{frame} - -\begin{eqnarray*} - \label{eq:1} - L(q_i) & = & \sum_x \prod_i q_i(x_i) \Big( \log \tilde{p}(x) - \sum_k \log q_k(x_k) \Big) \\ - & = & \sum_{x_j} \sum_{x_{-j}} q_j (x_j) \prod_{i \neq j} q_i(x_i) \Big( \log \tilde{p}(x) - \sum_k \log q_k(x_k) \Big) \\ - & = & \sum_{x_j} q_j(x_j) \sum_{x_{-j}} \prod_{i \neq j} q_i(x_i) \log \tilde{p}(x) \\ -& & - \sum_{x_j} q_j(x_j) \sum_{x_{-j}} \prod_{i \neq j} q_i(x_i) \Big(\log q_j(x_j)+ \sum_{k \neq j} \log q_k(x_k) \Big) \\ -& = & \sum_{x_j} q_j(x_j) \log f_j(x_j) - \sum_{x_j} q_j(x_j) \log q_j(x_j) + const -\end{eqnarray*} -where we introduced the definition -$$ -\log f_j(x_j):= \sum_{x_{-j}} \prod_{i \neq j} q_i(x_i) \log -\tilde{p}(x). -$$ -Although $f_j$ is not a proper distribution (not normalized), the last -term can be interpreted as a KL-divergence -$$ -L(q_j) \sim - \dkl(q_j||f_j). -$$ -Therefore, $L(q) = - \dkl(q||\tilde{p})$ can be maximised by -minimizing $\dkl(q_j||f_j)$ i.e. setting $q_j = f_j$ by -$$ -q_j(x_j) = \frac{1}{Z_j} \exp\big(\E_{-q_j}[\log \tilde{p}(x)]\big) -$$ -Ignoring the normalisation constant we get as the optimal component $q_j$ -\begin{equation} - \label{eq:MeanField} -\log q_j(x_j) = \E_{-q_j}[\log \tilde{p}(x)] -\end{equation} - -\subsection{Alternative motivation of the mean-field annealing - approach} \label{sec:motivation} at each step we actually know -$p_{\Delta E}(\mathrm{flip})$ which enables us to estimate -$E[X_i|X_{-i}]$ i.e.\ the average value of $X_i$ given its parents. - -Mean field annealing generalizes this approach by making use of the fact that -the marginal distributions of $X_i$ are known in this way and then using the relation: -i.e.\ with $p(v_j) = \frac{1}{1+e^{-v_j/t}}$ we can write: -$$ -\langle x_j \rangle = (+1) P(v_j) +(-1)(1-P(v_j)) = 2 P(v_j) -1 = \tanh(v_j/2T) -$$ -Although v is not known exactly (depends on the exact states of the -other $X$ and their interactions) we can approximate it as -$$ -v_j \approx \langle v_j \rangle = \Big\langle \sum_i w_{ji} x_i \Big\rangle = - \sum_i w_{ji} \langle x_i \rangle -$$ -where $\langle v_j \rangle$ is called the ``mean field'' and gives the average value of $x_j$ as -$$\langle x_j \rangle \approx \tanh\frac{\langle v_j\rangle}{2T}$$ - -\textbf{Relation between the sigmoidal and tanh:} Using the sigmoidal acceptance probability is equivalent to using $\tanh$ for \emph{states} $x \in \{-1,+1\}$ of the RV i.e.\ $\tanh(z) \in (-1,1)$ for $z \in (-\infty,+\infty)$. - -\begin{equation} -\tanh(x) = \quad\frac{e^{2x}-1}{e^{2x}+1} - \quad = \frac{1-e^{-2x}}{1+e^{-2x}} \quad = \frac{2-1-e^{-2x}}{e^{-2x}+1} \quad = \frac{2}{1+e^{-2x}} -1 -\end{equation} -or the other way round: -$$ -\frac{1}{1+e^{-x}} = \frac{1}{2}\left(1+\tanh(\frac{1}{2}x)\right) -$$ - -\section{Boltzmann machines} -\label{sec:boltzmann-machines} - -Approach can be generalized to hidden units and details on Boltzmann -machines in \cite{AartsKorst1990}. Restricted BMs (RBMs) do not have connections between observable or hidden units, which simplifies computation of conditional probabilities necessary for learning considerably. RBMs have been developed (among others) by P. Smolensky, who called them "Harmoniums" (\cite{Smolensky1986}). -\begin{itemize} -\item General model of distributions -\item parameters (W) can be learned from samples -\item works for Systems with nonobservable (latent) variables -\item interesting model of cognitive processes -\item structured boltzmann machines as efficient pattern recognition systems -\end{itemize} - From 6d07df43ffe2c22c33e4a3eedc4eee458aa7c2c0 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Wed, 3 Jun 2020 01:11:47 +0200 Subject: [PATCH 4/6] mean field --- notes/07_stochopt/0_motivation.tex | 14 +- .../07_stochopt/1_explorationexploitation.tex | 28 +- notes/07_stochopt/2_discrete.tex | 40 ++- notes/07_stochopt/3_stochopt.tex | 144 ++++++--- notes/07_stochopt/4_deterministic.tex | 274 ++++++++++++++++++ notes/07_stochopt/Makefile | 11 +- notes/07_stochopt/bibliography.bib | 36 +-- .../img/380px-Blacksmith_anvil_hammer.png | Bin 0 -> 31094 bytes .../img/cyberscooty-switch-off.svg | 55 ++++ .../07_stochopt/img/cyberscooty-switch-on.svg | 55 ++++ .../img/cyberscooty-switch_1-5.pdf | Bin 0 -> 82062 bytes .../img/cyberscooty-switch_1-5_next.pdf | Bin 0 -> 177764 bytes .../07_stochopt/img/cyberscooty-switch_1.pdf | Bin 0 -> 18858 bytes notes/07_stochopt/img/kl_fwd.pdf | Bin 0 -> 14017 bytes notes/07_stochopt/img/kl_rev.pdf | Bin 0 -> 13554 bytes notes/07_stochopt/img/meme_revkl.jpg | Bin 0 -> 37778 bytes notes/07_stochopt/img/section3_fig1.pdf | Bin 11937 -> 12378 bytes notes/07_stochopt/img/sources.txt | 3 + notes/07_stochopt/tutorial.tex | 21 +- 19 files changed, 563 insertions(+), 118 deletions(-) create mode 100644 notes/07_stochopt/4_deterministic.tex create mode 100644 notes/07_stochopt/img/380px-Blacksmith_anvil_hammer.png create mode 100644 notes/07_stochopt/img/cyberscooty-switch-off.svg create mode 100644 notes/07_stochopt/img/cyberscooty-switch-on.svg create mode 100644 notes/07_stochopt/img/cyberscooty-switch_1-5.pdf create mode 100644 notes/07_stochopt/img/cyberscooty-switch_1-5_next.pdf create mode 100644 notes/07_stochopt/img/cyberscooty-switch_1.pdf create mode 100644 notes/07_stochopt/img/kl_fwd.pdf create mode 100644 notes/07_stochopt/img/kl_rev.pdf create mode 100644 notes/07_stochopt/img/meme_revkl.jpg create mode 100644 notes/07_stochopt/img/sources.txt diff --git a/notes/07_stochopt/0_motivation.tex b/notes/07_stochopt/0_motivation.tex index f9e7204..22fb4d0 100644 --- a/notes/07_stochopt/0_motivation.tex +++ b/notes/07_stochopt/0_motivation.tex @@ -4,7 +4,19 @@ \section{Problems with how we've been optimizing so far} Our iterative gradient-based optimizations: \begin{itemize} -\item assumes the extrema ``up ahead'' is our solution, +\item assumes the optimum ``up ahead'' is the best solution, + +\begin{figure}[ht] + \centering + \begin{tabular}{c c} + \includegraphics[height=3.5cm]{img/gradient-descent.pdf} & + \includegraphics[height=3.5cm]{img/gradient-descent_local.pdf} + \end{tabular} + \notesonly{ + \caption{Learning by gradient descent}\label{fig:graddescent} + } +\end{figure} + \item doesn't handle discrete optimization. \end{itemize} diff --git a/notes/07_stochopt/1_explorationexploitation.tex b/notes/07_stochopt/1_explorationexploitation.tex index 5a00d2f..ca8f8b4 100644 --- a/notes/07_stochopt/1_explorationexploitation.tex +++ b/notes/07_stochopt/1_explorationexploitation.tex @@ -1,14 +1,4 @@ \section{Exploration vs. Exploitation} -\begin{frame}{Exploration vs. Exploitation} - -\begin{figure}[ht] - \centering - \begin{tabular}{c c} - \includegraphics[height=3.5cm]{img/gradient-descent.pdf} & - \includegraphics[height=3.5cm]{img/gradient-descent_local.pdf} - \end{tabular} - \caption{Learning by gradient descent}\label{fig:graddescent} -\end{figure} \notesonly{ %An @@ -24,26 +14,26 @@ \section{Exploration vs. Exploitation} For simple models with only few parameters one can formulate an analytic solution that optimizes the objective and yields the optimal parameters directly. A soon as the number of parameters increases we opt for iterative gradient-based methods for finding the extrema of the objective function. If we were trying to minimize some cost function $E$, iteratively updating the parameters $\vec w$ by moving them in the direction of where the gradient points steepest leads to the location of an extremum. -However, the cost function may contain multiple extrema, and there is no guarantee gradient-based learning will take us to a \emph{global} or \emph{local} optimium. +However, the cost function may contain multiple extrema, and there is no guarantee gradient-based learning will take us to a \emph{global} or \emph{local} optimum. Following the gradient assuming that it will lead to a solution that represents the global optimum is considered a \emph{greedy} approach to learning. -Completly abandoning such assumptions will lead to a \emph{random search} for the optimal parameters. When the previous set of paramters has no influence on the choice of weights in the next iteration, +Completely abandoning such assumptions will lead to a \emph{random search} for the optimal parameters. When the previous set of parameters has no influence on the choice of weights in the next iteration, then our learning approach is dominated by \emph{exploration} as opposed to \emph{exploitation} when we learn in a greedy fashion. } -\end{frame} - \begin{frame}{Exploration vs. Exploitation} \begin{figure}[ht] %\centering \begin{tabular}{c c} - exploration & exploitation\\ - \includegraphics[height=3.0cm]{img/exploration.pdf} & - \includegraphics[height=3.0cm]{img/exploitation.pdf}\\ - random search & greedy search/hill ``climbing'' + \visible<2->{exploration} & exploitation\\ + \visible<2->{\includegraphics[height=3.0cm]{img/exploration.pdf}} & + \includegraphics[height=3.0cm]{img/exploitation.pdf} \\ + \visible<2->{random search} & greedy search/hill ``climbing'' \end{tabular} + \notesonly{ \caption{exploration vs. exploitation} + } \label{fig:exploration-exploitation} \end{figure} @@ -52,7 +42,7 @@ \section{Exploration vs. Exploitation} \question{What are the advantages and disadvantages of exploration?} \notesonly{ -The advantage of exploration is that we always discard a set of paramters if the next set yields a better cost value. Therefore, exploration is not prone to getting stuck inside a local optimum. The obvious disadvantage is that there are no guarnatees on how long it will take to find the global optimum. We never know if we've converged or not. Exploitation, or the greedy approach (with the approprate learning rate schedule) is able to converge. However, wether it reaches a global or local solution depends on the starting position. +The advantage of exploration is that we always discard a set of parameters if the next set yields a better cost value. Therefore, exploration is not prone to getting stuck inside a local optimum. The obvious disadvantage is that there are no guarantees on how long it will take to find the global optimum. We never know if we've converged or not. Exploitation, or the greedy approach (with the appropriate learning rate schedule) is able to converge. However, whether it reaches a global or local solution depends on the starting position. } diff --git a/notes/07_stochopt/2_discrete.tex b/notes/07_stochopt/2_discrete.tex index 0370e42..297423d 100644 --- a/notes/07_stochopt/2_discrete.tex +++ b/notes/07_stochopt/2_discrete.tex @@ -12,7 +12,7 @@ \section{Discrete Optimization} \end{block} } \notesonly{ -So far we've been concerned with optimization problems with real valued arguments. The free paramters form a continuous space. The direction of the principle components in PCA and the unmixing matrix we are trying to find in ICA are real-valued arguments to their respective problems. +So far we've been concerned with optimization problems with real valued arguments. The free parameters form a continuous space. The direction of the principle components in PCA and the unmixing matrix we are trying to find in ICA are real-valued arguments to their respective problems. Gradient-based solutions are well suited for real-valued arguments as we tune the weights to minimize to optimize the cost function. But what if the problem we are trying to optimize operate on discrete arguments. This could be the case if we were tackling a problem such as K-Means clustering. K-Means clustering involves finding arguments with which to assign an observation to one of multiple clusters. The cost function that measures the quality of the assignments is continuous but a the arguments we optimize over, which effectively assign each observation to one cluster instead of another cluster, are discrete variables. Below is an example of such an assignment: @@ -20,20 +20,33 @@ \section{Discrete Optimization} } +\only<1>{ + \begin{figure}[ht] \centering \includegraphics[height=3.5cm]{img/clustering.pdf} \caption{Clustering involves discrete-valued arguments.} \label{fig:clustering} \end{figure} +} -\end{frame} -\newpage -\begin{frame} -\slidesonly{\frametitle{Formalization of the discrete optimization problem}} -\notesonly{ -\textbf{Formalization of the discrete optimization problem:} +\only<2>{ + +\begin{center} + \includegraphics[height=3.5cm]{img/cyberscooty-switch_1-5} + \notesonly{\captionof{figure}{A combinatorial problem}} +\end{center} } + + +\end{frame} + +%\newpage + +\subsection{Formalization of the discrete optimization problem} + +\begin{frame}{\subsecname} + \begin{block}{Setting} \begin{itemize} \item discrete variables $s_i, \ i = 1, \ldots, N\quad$ (e.g. $s_i \in \{+1, -1\}$ \notesonly{``binary units''} or $s_i \in \mathbb N$) @@ -43,7 +56,7 @@ \section{Discrete Optimization} \end{itemize} \end{block} -We will now focus on \textbf{minization} problems. +We will focus on \textbf{minimization} problems. \begin{block}{Goal: find state $\vec{s}^*$, such that:} \begin{equation*} @@ -56,8 +69,10 @@ \section{Discrete Optimization} \end{block} \end{frame} -\begin{frame} -\frametitle{Efficient strategies for discrete optimization} +\subsubsection{Strategies for discrete optimization} + +\begin{frame}{\subsubsecname} + \notesonly{ We want to find the best configuration of a discrete system (e.g.\ state of interacting binary units). Evaluating full search space works only for @@ -71,9 +86,12 @@ \section{Discrete Optimization} \item Evolutionary and genetic algorithms (GA) have been motivated by \emph{biological} phenomena of adaptation through \emph{mutation} and \emph{selection}. + +\vspace{5mm} + \item GA and Monte-Carlo-Markov-Chain methods based on a \emph{proposal} and \emph{acceptance} strategy ($\rightarrow$ Metropolis) can be interpreted - as "learning via trial and error". \emph{Simulated annealing} falls within MCMC. + as ``learning via trial and error''. \emph{Simulated annealing} falls within MCMC. \end{itemize} \end{frame} diff --git a/notes/07_stochopt/3_stochopt.tex b/notes/07_stochopt/3_stochopt.tex index 915f130..5f23d76 100644 --- a/notes/07_stochopt/3_stochopt.tex +++ b/notes/07_stochopt/3_stochopt.tex @@ -1,20 +1,42 @@ \section{Simulated (stochastic) annealing} -\begin{frame} - -\emph{Simulated annealing}\footnote{ -The ``annealing'' part in the name comes from meatallurgy. As metals cool down, the movement of the atoms slows down and their kinetic energy decreases until the metal eventually hardens. +\mode{ +\begin{frame} + \begin{center} \huge + \secname + \end{center} + %\begin{center} + %Dealing with the diverging hebbian rule\\ + %through implicit normalization + + %\end{center} + \begin{center} + \includegraphics[width=3cm]{img/380px-Blacksmith_anvil_hammer} + \end{center} +\end{frame} } -\notesonly{is a method for stochastic optimization with which we can find a tradeoff between exploitation and exploration. More importantly, it is desgined to cope with optimization of discrete-valued arguments. Simulated annealing is + +\begin{frame}{\secname} + +\emph{Simulated annealing}\notesonly{\footnote{ +The ``annealing'' part in the name comes from metallurgy. As metals cool down, the movement of the atoms slows down and their kinetic energy decreases until the metal eventually hardens. +}} +\notesonly{is a method for stochastic optimization with which we can find a tradeoff between exploitation and exploration. More importantly, it is designed to cope with optimization of discrete-valued arguments. Simulated annealing is motivated by phenomena in physics related to the organization and alignment of microscopic components forming specific macroscopic configurations. } \slidesonly{\\$\leadsto$ exploitation and exploration tradeoff} \slidesonly{\\$\leadsto$ (more importantly) discrete optimization\\\vspace{0.5cm}} -\underline{What does simulated annealing do?} +\end{frame} + +\begin{frame}{\secname} -In the case of \emph{minimzation} it: +\svspace{-5mm} + +\question{What does simulated annealing do?} + +- In the case of \emph{minimization} it: \begin{enumerate} \item describes a strategy for switching between states @@ -22,6 +44,12 @@ \section{Simulated (stochastic) annealing} \item allows for escaping \textbf{local} optima \end{enumerate} + +\begin{center} + \includegraphics[width=5cm]{img/cyberscooty-switch_1-5_next} +\end{center} + + \end{frame} \begin{frame} @@ -76,7 +104,9 @@ \section{Simulated (stochastic) annealing} \end{center} \end{frame} -the transition probability $\mathrm{W}$ measures the probability of changing to a new state $\vec s$ or reamining at $\vec s_t$. It depends on (A) the difference in cost and (B) the inverse temperature. The difference $\Delta E$ is the only way of measuring whether we gain any improvement from the transition or not. We use the inverse temperature $\beta_t$ to control how much we favor such transitions, or if we prefer a more conservative system. Below illustrates how the transition probablity can be modulated by the inverse temperature $\beta$ during the annealing process: +\notesonly{ +the transition probability $\mathrm{W}$ measures the probability of changing to a new state $\vec s$ or remaining at $\vec s_t$. It depends on (A) the difference in cost and (B) the inverse temperature. The difference $\Delta E$ is the only way of measuring whether we gain any improvement from the transition or not. We use the inverse temperature $\beta_t$ to control how much we favor such transitions, or if we prefer a more conservative system. Below illustrates how the transition probability can be modulated by the inverse temperature $\beta$ during the annealing process: +} \begin{frame} \frametitle{Modulating $\mathrm W$ during the annealing process} % \textbf{ limiting cases for high vs.\ low temperature:} @@ -107,21 +137,21 @@ \section{Simulated (stochastic) annealing} \end{frame} - +\notesonly{ In the case of: \begin{itemize} \item low $\beta \corresponds$ high temperature:\\ The transition probability is nearly constant (W=0.5) regardless of $\Delta E$. It is equally probably to accept a transition or to remain at the same state. Therefore we can regard this as \emph{exploration} mode. \item intermediate $\beta$:\\ -Recall that we are currently considering a minimization problem. $\Delta E < 0$ whenever the new state is of lower cost than the previous one. We are no longer indifferent to this difference, but are more likely to accept transitions to lower-eneergy-states. Our process is still stochastic, therefore it is not guarnateed that we will accept every transition that yileds lower lower cost. We may either reject the transition and remain at the same higher-cost state or accept a transition to higher-cost state. such transitions are less likely to happen, but are still possible. This is where stochastic optimization is able to escape a local optimimum and resume the search elsewhere instead of opting for the greedy approach. To reiterate, this is a stochastic process, if we sample long enough, we will find that intermediate values of $\beta$ are more likely to yield samples from the ``global'' minimum of this curve than the higher ``local'' minimum in this particualr cost function. +Recall that we are currently considering a minimization problem. $\Delta E < 0$ whenever the new state is of lower cost than the previous one. We are no longer indifferent to this difference, but are more likely to accept transitions to lower-energy-states. Our process is still stochastic, therefore it is not guaranteed that we will accept every transition that yileds lower lower cost. We may either reject the transition and remain at the same higher-cost state or accept a transition to higher-cost state. such transitions are less likely to happen, but are still possible. This is where stochastic optimization is able to escape a local optimum and resume the search elsewhere instead of opting for the greedy approach. To reiterate, this is a stochastic process, if we sample long enough, we will find that intermediate values of $\beta$ are more likely to yield samples from the ``global'' minimum of this curve than the higher ``local'' minimum in this particular cost function. \item high $\beta \corresponds$ low temperature:\\ -This is the \emph{exploitation} mode. This reflects the behjavior of a greedy learning algorithm such as gradient descent. Whenever we compare the cost of two sucessive states and find that $\Delta E < 0$ it tells us that the new state is of lower cost and more desriable for our mimization objective. The transition probability in this case will almost always accept a transition to a lower-cost state. Consequently it will almost always reject transitions to high-cost states, and the probabilty of remaining in a high-cost state is also very low. If the next sample is of lower-cost, we are very likely to accept that transition. Looking again at the stochastic nature of our process: We repeat the process multiple times and register how often each \emph{run} (not a single iteration) leads us to either minumum on this particular curve, we will find that the chances of finding the global minimum isjust as likely as those of reaching the local minimum. This is because the initial state is the only decisive factor. high $\beta$ means we are in exploitation mode. We are only going to accept a transition if it lowers our cost. If we restrict our sampling to ``nearby'' states, we are emulating gradient descent. As soon as we've determined the direction of descent, we will follow it. The descisive factor is, where did we start? Since in our case, the two valleys around the two minima are equally ``wide'', it makes starting inside one equal to starting inside the other. If I am already in the vicinity of one minimum, the probabilty of transitionining \emph{outside} is very low. This probability is low, regardless of whether I am in the vicinity of the global or local minimum. +This is the \emph{exploitation} mode. This reflects the behavior of a greedy learning algorithm such as gradient descent. Whenever we compare the cost of two successive states and find that $\Delta E < 0$ it tells us that the new state is of lower cost and more desirable for our minimization objective. The transition probability in this case will almost always accept a transition to a lower-cost state. Consequently it will almost always reject transitions to high-cost states, and the probability of remaining in a high-cost state is also very low. If the next sample is of lower-cost, we are very likely to accept that transition. Looking again at the stochastic nature of our process: We repeat the process multiple times and register how often each \emph{run} (not a single iteration) leads us to either minimum on this particular curve, we will find that the chances of finding the global minimum is just as likely as those of reaching the local minimum. This is because the initial state is the only decisive factor. high $\beta$ means we are in exploitation mode. We are only going to accept a transition if it lowers our cost. If we restrict our sampling to ``nearby'' states, we are emulating gradient descent. As soon as we've determined the direction of descent, we will follow it. The decisive factor is, where did we start? Since in our case, the two valleys around the two minima are equally ``wide'', it makes starting inside one equal to starting inside the other. If I am already in the vicinity of one minimum, the probability of transitioning \emph{outside} is very low. This probability is low, regardless of whether I am in the vicinity of the global or local minimum. \end{itemize} - +} \begin{frame}\frametitle{Annealing schedule \& convergence} -Convergence to the global optimum is guaranteed if $\beta_t \sim \ln (t)$\footnote{Geman and Geman show this in: Geman, S., and D. Geman (1984). Stochastic relaxation, Gibbs distribution, and the bayesian restoration of images. IEEE Trans. Pattern Anal Machine Intell. 6, 721-741. } +Convergence to the global optimum is guaranteed if $\beta_t \sim \ln (t)$\footnote{shown in \citep{geman1984stochastic}} \begin{itemize} % \itR robust optimization procedure @@ -165,7 +195,7 @@ \section{The stationary distribution} \notesonly{ As we discussed the effect of $\beta$ on the transition probability, we saw how this controls explorations and exploitation. -By talking about the probability of descendingf vs. jumping to a completly different location, we also talked about the probability of landing inside the valley surrounding the global minimum vs. that surrounding a \emph{local} one. Therefore, it becomes necessary to define a measure for the probability for each possible state that $\vec s$ can take. +By talking about the probability of descending vs. jumping to a completely different location, we also talked about the probability of landing inside the valley surrounding the global minimum vs. that surrounding a \emph{local} one. Therefore, it becomes necessary to define a measure for the probability for each possible state that $\vec s$ can take. This measure needs to fulfill the following requirements: \begin{enumerate} \item Reflect the probability distribution across states @@ -174,13 +204,18 @@ \section{The stationary distribution} } \end{frame} +\subsection{Calculation of the stationary distribution} + +\begin{frame}{\subsecname} + +\svspace{-5mm} +%\question{How do we find this stationary distribution?} -\begin{frame}{Calculation of the stationary distribution} -\question{How do we find this stationary distribution?} -\pause -\vspace{-0.5cm} -\begin{equation*} +%\pause + +%\vspace{-0.5cm} +\begin{equation} \underbrace{ \substack{ \text{probability of} \\ \text{transition } \vec{s} \rightarrow \vec{s}^{'}} }_{ @@ -190,31 +225,52 @@ \section{The stationary distribution} \underbrace{ \substack{ \text{probability of} \\ \text{transition } \vec{s}^{'} \rightarrow \vec{s} } }_{ - P_{(\vec{s}^{'})} \mathrm{W}_{(\vec{s}^{'} \rightarrow - \vec{s})} } -\end{equation*} -\begin{equation*} - \begin{array}{ll} + P_{(\vec{s}^{'})} + {\color{blue} + \mathrm{W}_{(\vec{s}^{'} \rightarrow + \vec{s})}} } +\end{equation} +%\begin{equation*} + %\begin{array}{ll} + %\frac{P_{(\vec{s})}}{P_{(\vec{s}^{'})}} + %& = \frac{\mathrm{W}_{(\vec{s}^{'} \rightarrow \vec{s})}}{ + %\mathrm{W}_{(\vec{s} \rightarrow \vec{s}^{'})}} + %= \frac{1 + \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})} + %\big) \big\} }{1 + \exp\big\{ \beta \big( E_{(\vec{s}^{'})} - + %E_{(\vec{s})}\big) \big\} } + %= \frac{1 + \exp( \beta \Delta E)}{1 + \exp( -\beta \Delta E)} \\\\ + %\pause + %& = \exp( \beta \Delta E) \frac{1 + \exp( -\beta \Delta E)}{ + %1 + \exp( -\beta \Delta E) } + %= \exp( \beta \Delta E ) \\\\ + %\pause + %& = \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})}\big) \big\} + %= \exp\big\{ \beta E_{(\vec{s})} - \beta E_{(\vec{s}^{'})} \big\}\\\\ + %&= \frac{\exp\left( \beta E_{(\vec{s})}\right)}{\exp\left( \beta E_{(\vec{s}^{'})} \right)} + %\slidesonly{ + %\qquad \small \text{condition is fulfilled by Gibbs distribution.} + %} + %\end{array} +%\end{equation*} +\begin{align} \frac{P_{(\vec{s})}}{P_{(\vec{s}^{'})}} - & = \frac{\mathrm{W}_{(\vec{s}^{'} \rightarrow \vec{s})}}{ + & = \frac{{\color{blue}\mathrm{W}_{(\vec{s}^{'} \rightarrow \vec{s})}}}{ \mathrm{W}_{(\vec{s} \rightarrow \vec{s}^{'})}} - = \frac{1 + \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})} - \big) \big\} }{1 + \exp\big\{ \beta \big( E_{(\vec{s}^{'})} - - E_{(\vec{s})}\big) \big\} } - = \frac{1 + \exp( \beta \Delta E)}{1 + \exp( -\beta \Delta E)} \\\\ - \pause - & = \exp( \beta \Delta E) \frac{1 + \exp( -\beta \Delta E)}{ - 1 + \exp( -\beta \Delta E) } - = \exp( \beta \Delta E ) \\\\ - \pause - & = \exp\big\{ \beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})}\big) \big\} - = \exp\big\{ \beta E_{(\vec{s})} - \beta E_{(\vec{s}^{'})} \big\}\\\\ - &= \frac{\exp\left( \beta E_{(\vec{s})}\right)}{\exp\left( \beta E_{(\vec{s}^{'})} \right)} + = \frac{1 + \exp\big\{ \beta \big( E_{(\vec{s}^{'})} - E_{(\vec{s})} + \big) \big\} }{{\color{blue}1 + \exp\big\{ \beta \big( E_{(\vec{s})} - + E_{(\vec{s}^{'})}\big) \big\} } } + = \frac{1 + \exp( -\beta \Delta E)}{{\color{blue}1 + \exp( \beta \Delta E)}} \\ + &= {\color{blue}\frac{1}{1+\exp(\beta \Delta E)}} \exp(-\beta \Delta E) + \Big\lbrack \exp(\beta \Delta E) + 1\Big\rbrack\\ + &= \exp(-\beta \Delta E) \frac{1+\exp(\beta \Delta E)}{{\color{blue}1+\exp(\beta \Delta E)}} + = \exp( - \beta \Delta E ) \\ + & = \exp\big\{ -\beta \big( E_{(\vec{s})} - E_{(\vec{s}^{'})}\big) \big\}\\ + %= \exp\big\{ \beta E_{(\vec{s}^{'})} - \beta E_{(\vec{s})} \big\}\\ + &= \frac{\exp\left( -\beta E_{(\vec{s})}\right)}{\exp\left( -\beta E_{(\vec{s}^{'})} \right)} \slidesonly{ \qquad \small \text{condition is fulfilled by Gibbs distribution.} } - \end{array} -\end{equation*} +\end{align} \notesonly{ The condition is fulfilled for the \emph{Gibbs-Boltzmann} distribution: } @@ -222,7 +278,7 @@ \section{The stationary distribution} \end{frame} \begin{frame}\frametitle{The Gibbs distribution} \notesonly{ -The Gibbs (or Boltzmann-) distributon from statistical physics, measures the +The Gibbs (or Boltzmann-) distribution from statistical physics, measures the probability of a system to be in state $\vec s$ having Energy $E_{(\vec s)}$ is given as } @@ -240,7 +296,7 @@ \section{The stationary distribution} \notesonly{ The partition function $Z$ ensures that $P_{(\vec{s})}$ is a probability -measure and the Boltzmann konstant $k_b = 1.38 \cdot 10^{-23} J/K$ +measure and the Boltzmann constant $k_b = 1.38 \cdot 10^{-23} J/K$ gives a scale of the \emph{temperature} $T$. This means the probability of observing a state is fully determined by its Energy. @@ -270,8 +326,8 @@ \section{The stationary distribution} \end{frame} -\newpage - +%\newpage +\notesonly{ We will now further formalize what is going on with simulated annealing. - +} diff --git a/notes/07_stochopt/4_deterministic.tex b/notes/07_stochopt/4_deterministic.tex new file mode 100644 index 0000000..98c9b65 --- /dev/null +++ b/notes/07_stochopt/4_deterministic.tex @@ -0,0 +1,274 @@ +\section{Mean-field (deterministic) annealing} \label{sec:mean-determ-anne} + +\mode{ +\begin{frame} + \begin{center} \huge + \secname + \end{center} + \begin{center} + Take simulated annealing \\ + but \\ + go faster, go deterministic + \end{center} +\end{frame} +} + +\begin{frame}{\secname} + %\vspace{-2mm} +%\begin{block}{Simulated Annealing} +%\begin{itemize} +%\itr stochastic optimization: computationally expensive (sampling!) +%\itr stationary distribution $P_{(\vec{s})}$ known (for each $\beta_t$), why not evaluate? +%\itr but: maxima of $P_{(\vec{s})}$ equally hard to obtain as minima of $E_{(\vec{s})}$ +%\itr moments? for $\beta \rightarrow \infty$: $\langle \vec{s} \rangle_P$ converges to $\vec{s}^*$ of minimal cost (caveat: true only if $P_{(\vec{s})}$ has only one global optimum) +%\itr but: moments of $P_{(\vec{s})}$ can -- in general -- not be calculated analytically +%\end{itemize} +%\end{block} +%\vspace{-2mm} +\slidesonly{ +\begin{center} +\includegraphics[width=12cm]{img/section3_fig7} +\end{center} +} + +\only<1>{ + +\begin{block}{Approximation by Mean-Field Annealing} +\begin{itemize} +\itR idea: approximate $P_{(\vec{s})}$ by a computationally tractable distribution $Q_{(\vec{s})}$ +\itR this distribution is then used to calculate the first moment $\langle \vec{s} \rangle_Q$\\ +\itR the first moment is tracked during the annealing schedule $\beta_t$ +\itR hope: $\displaystyle \langle \vec{s} \rangle_Q \to $ $\vec{s}^*$ for $\beta_t\to\infty$ +\end{itemize} +\end{block} + +} + +\only<2>{ +\question{Why fixate on the first moment?} + +\pause + +- to localize the peak of the distribution as entropy decreases. +At $\beta_t \rightarrow \infty$, the peak will have localized around the state where the cost is minimal, revealing the optimal state $\vec s^*$ + +} + +\only<3>{ + +\question{Do we still need the annealing process?} + +-Yes, because still need a tradeoff between exploration and exploitation. +} + + +\end{frame} + +\subsection{Factorizing distribution} + +\begin{frame}{\subsecname} +\begin{block}{Distribution $Q_{(\vec{s})}$ to approximate $P_{(\vec{s})}$} +\vspace{-0.35cm} +\begin{equation} + Q_{(\vec{s})} \quad += \quad \frac{1}{Z_Q} \exp \left\{ -\beta E_Q\right\} \quad += \quad \frac{1}{Z_Q} \exp \Big\{ -\beta \sum\limits_{k} + \underbrace{ e_k }_{ \text{parameters} } \mathrm{s}_k \Big\} +\end{equation} +\vspace{-0.65cm} +\begin{itemize} + \item Gibbs distribution with costs $E_Q$ linear in the state variable $\vec{s}_k$ + \item factorizing distribution $Q_{(\vec{s})} = \Pi_k Q_k(s_k)$ with $Q_k(s_k) + = \frac{1}{Z_{Q_k}} \exp (-\beta e_k\mathrm{s}_k)$ +% \end{itemize} +% \end{block} +% \vspace{-0.2cm} +% \begin{block}{Properties of $Q$} +% \begin{itemize} + \item $Q_{(\vec{s})}$ factorizing $\iff s_k$ independent $\implies + \langle \Pi_k s_k \rangle_Q = \Pi_k \langle s_k\rangle_Q + \quad \!\! (\substack{\text{moments} \\ \text{factorize}})$ + \item + $ \big< s_k \big>_Q = \frac{\sum\limits_{s_k} s_k \exp(-\beta e_k s_k)}{ + \sum\limits_{s_k} \exp(-\beta e_k s_k)}$ +\end{itemize} +\end{block} +% \vspace{-0.3cm} +\begin{itemize} + \itr family of distributions parametrized by the \emph{mean fields} $e_k$ + \itr determine $e_k$ such that this approximation is as good as possible +\end{itemize} +\end{frame} + + +\begin{frame}{Mean-field approximation} +\begin{block}{Quantities} +\begin{equation} + \begin{array}{llc} + P_{(\vec{s})} + & = \frac{1}{Z_p} \exp(-\beta E_p) + & \substack{ \text{true distribution} } \\ + Q_{(\vec{s})} + & = \frac{1}{Z_Q} \exp\big(-\beta \overbrace{\sum\limits_k e_k s_k}^{E_Q} \big) + & \substack{ \text{approximation: family of} \\ \text{factorizing distributions} } \\\\ + e_k: + & \text{\textit{mean fields} } + & \substack{ \text{parameters to} \\ \text{be determined} } + \end{array} +\end{equation} +\end{block} +\begin{block}{Good approximation of $P$ by $Q$} +\vspace{0.1cm} +$\rightarrow$ minimization of the KL-divergence: +\begin{equation} + \dkl(Q||P) = \sum\limits_{\vec{s}} Q_{(\vec{s})} \ln \frac{Q_{(\vec{s})}}{ + P_{(\vec{s})}} \eqexcl \min_{\vec{e}} +\end{equation} +\end{block} +\end{frame} + +\subsubsection{Setting up the arguments for the KL divergence} + +\begin{frame}{\subsubsecname} + +Let $P$ be the reference distribution (target) and $Q$ be the parameterized distribution (what we tune). + +\question{How do we generally decide between minimizing $\dkl(Q||P)$ vs. $\dkl(P||Q)$?} + +\pause + +-We look at what kind of solutions are found by each usage of the KL divergence: + + +\end{frame} + +\begin{frame}{\subsubsecname} + +\begin{block}{minimizing forward $\dkl$} + +\slidesonly{ +\begingroup +\footnotesize +} +\begin{equation} + \dkl(P||Q) = \sum\limits_{\vec{s}} P_{(\vec{s})} \ln \frac{P_{(\vec{s})}}{ + Q_{(\vec{s})}} \eqexcl \min_{\text{parameters}} +\end{equation} +\slidesonly{ +\endgroup +} +\end{block} + +\begin{itemize} +\item \notesonly{Corresponds to }the \emph{maximum-likelihood} solution\notesonly{ (will discuss later in density estimation)} +\item Seen in Infomax and density estimation. +\item Change $Q$ such that it ``covers'' as much of $P$ as possible. +\notesonly{\item If $P$ has two modes minimizing $\dkl(P||Q)$ will find a $Q$ that is wide enough to cover both.} +\end{itemize} + +\pause + +\begin{center} + \includegraphics[width=0.55\textwidth]{img/kl_fwd} +\end{center} + +\end{frame} + +\begin{frame}{\subsubsecname} + +\begin{block}{Reverse $\dkl$} +\slidesonly{ +\begingroup +\footnotesize +} +\begin{equation} + \dkl(Q||P) = \sum\limits_{\vec{s}} Q_{(\vec{s})} \ln \frac{Q_{(\vec{s})}}{ + P_{(\vec{s})}} \eqexcl \min_{\text{parameters}} +\end{equation} +\slidesonly{ +\endgroup +} +\end{block} + +\begin{itemize} +\item Corresponds to the \emph{maximum-entropy} solution. +\item With $Q$ in the numerator of the $\log$ we prefer solutions where $Q$ is zero even if $P$ is non-zero. +\end{itemize} + +\pause +\only<2>{ +\slidesonly{ +\begin{center} + \includegraphics[width=0.3\textwidth]{img/meme_revkl} +\end{center} + +} +} + +\only<3>{ + +\begin{center} + \includegraphics[width=0.55\textwidth]{img/kl_rev} +\end{center} + +\notesonly{If $P$ has two modes a ``good'' $Q$ is one that fits one mode very well even if it completely ignores the other mode\footnote{Additional resources for explaining the differences between forward and reverse KL:\\ +\href{https://dibyaghosh.com/blog/probability/kldivergence.html} \\ and \\ +%\href{https://www.quora.com/What-is-the-theoretical-advantage-disadvantage-between-minimizing-KL-Q-P-and-KL-P-Q-in-Bayesian-variational-inference} +}. +} +} +\end{frame} + +\begin{frame} + +\question{Why minimize the reverse $\dkl$ for mean-field approximation?} + +\slidesonly{ +\begin{equation} + \dkl(Q||P) = \sum\limits_{\vec{s}} Q_{(\vec{s})} \ln \frac{Q_{(\vec{s})}}{ + P_{(\vec{s})}} \eqexcl \min_{\vec{e}} +\end{equation} +} + +- Even if our assumption about $P$ having a single moment is wrong. If it has two minima, picking one is better than picking a solution in the middle. + +\end{frame} + +\subsubsection{Mean-Field annealing for Ising model} + +\begin{frame}{Mean-field annealing\only<2>{~ for Ising model}} +\begin{block}{Algorithm} +% \begin{algorithm}[h] +% \DontPrintSemicolon +% initialization: $\langle \vec{s} \rangle_0, \beta_0, t = 0$ \; +% \Begin(Annealing loop){ +% \Repeat{$|e_k^\mathrm{old}-e_k^\mathrm{new}| < \varepsilon$} +% { +% calculate mean-fields: $e_k, \ \ k = 1, \ldots, N$ \; +% calculate moments: $\big_Q,\ \ k = 1, \ldots, N$ \; +% } +% increase $\beta$ \; +% } +% \end{algorithm} +% + +\texttt{initialization:} $\langle \vec{s} \rangle_0, \beta_0$ \; \\ +\texttt{BEGIN Annealing loop}\\ +\oident \texttt{Repeat} \\ +\begin{itemize} + \item calculate mean-fields: $e_k\visible<2>{= - \sum\limits_{\substack{i=1 \\ i\ne k}}^N W_{ik} \langle s_i \rangle_Q}, \ \ k = 1, \ldots, N$ \; + \item calculate moments: $\big_Q\visible<2>{= \tanh(-\beta e_k)},\ \ k = 1, \ldots, N$ \; +\end{itemize} +\oident\texttt{Until $|e_k^\mathrm{old}-e_k^\mathrm{new}| < \varepsilon$} \\ +\oident increase $\beta$ \; \\ +\texttt{END Annealing loop} +\end{block} +\end{frame} + +\begin{frame} +\slidesonly{ +\begin{center} +\includegraphics[width=12cm]{img/section3_fig7} +\end{center} +} +\end{frame} diff --git a/notes/07_stochopt/Makefile b/notes/07_stochopt/Makefile index 9741a81..0cb79b3 100644 --- a/notes/07_stochopt/Makefile +++ b/notes/07_stochopt/Makefile @@ -10,9 +10,10 @@ projnameA = $(projname).notes slides: $(projname).slides.tex $(projname).tex $(compile) $(projname).slides.tex -# bibtex $(projname).slides +# $(compile) $(projname).slides.tex + bibtex $(projname).slides + $(compile) --interaction=batchmode $(projname).slides.tex $(compile) --interaction=batchmode $(projname).slides.tex -# $(compile) --interaction=batchmode $(projname).slides.tex mv $(projname).slides.pdf $(targetname).slides.pdf handout: $(projname).handout.tex $(projname).tex @@ -22,10 +23,10 @@ handout: $(projname).handout.tex $(projname).tex # Repeat compilation for the references to show up correctly notes: $(projname).notes.tex $(projname).tex $(compile) $(projname).notes.tex -# $(compile) $(projname).notes.tex -# bibtex $(projname).notes + $(compile) $(projname).notes.tex + bibtex $(projname).notes + $(compile) --interaction=batchmode $(projname).notes.tex $(compile) --interaction=batchmode $(projname).notes.tex -# $(compile) --interaction=batchmode $(projname).notes.tex mv $(projname).notes.pdf $(targetname).notes.pdf clean: cleans cleanh cleana diff --git a/notes/07_stochopt/bibliography.bib b/notes/07_stochopt/bibliography.bib index 948691f..cd3611d 100644 --- a/notes/07_stochopt/bibliography.bib +++ b/notes/07_stochopt/bibliography.bib @@ -1,29 +1,9 @@ -@book{sutton1998introduction, - title={Introduction to reinforcement learning}, - author={Sutton, Richard S and Barto, Andrew G and others}, - volume={135}, - year={1998}, - publisher={MIT press Cambridge} -} -@Book{Bertsekas07, - author = {D. P. Bertsekas}, - title = {Dynamic Programming and Optimal Control}, - publisher ={Athena Scientific}, - year = {2007}, - volume = {2}, - edition = {3rd}, - url = {http://www.control.ece.ntua.gr/UndergraduateCourses/ProxTexnSAE/Bertsekas.pdf} -} -@Article{Watkins92, - author = {C. Watkins and P. Dayan}, - title = {Q-learning}, - journal = {Machine Learning}, - year = {1992}, - OPTkey = {}, - volume = {8}, - OPTnumber = {}, - pages = {279--292}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} +@article{geman1984stochastic, + title={Stochastic relaxation, Gibbs distributions, and the Bayesian restoration of images}, + author={Geman, Stuart and Geman, Donald}, + journal={IEEE Transactions on pattern analysis and machine intelligence}, + number={6}, + pages={721--741}, + year={1984}, + publisher={IEEE} } diff --git a/notes/07_stochopt/img/380px-Blacksmith_anvil_hammer.png b/notes/07_stochopt/img/380px-Blacksmith_anvil_hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..d06181ceb40d08f1e4cf6b73bad1d16db64e1a04 GIT binary patch literal 31094 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + + + + + + + + + + diff --git a/notes/07_stochopt/img/cyberscooty-switch-on.svg b/notes/07_stochopt/img/cyberscooty-switch-on.svg new file mode 100644 index 0000000..5ff1ec3 --- /dev/null +++ b/notes/07_stochopt/img/cyberscooty-switch-on.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + + + + + + + + + + diff --git a/notes/07_stochopt/img/cyberscooty-switch_1-5.pdf b/notes/07_stochopt/img/cyberscooty-switch_1-5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2867a873b9d556464c984322b83afbde13b4f0b5 GIT binary patch literal 82062 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 EKd0d~Pyhe` literal 0 HcmV?d00001 diff --git a/notes/07_stochopt/img/cyberscooty-switch_1-5_next.pdf b/notes/07_stochopt/img/cyberscooty-switch_1-5_next.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1acfb80c031adf459b8627cb5104574eac411481 GIT binary patch literal 177764 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 literal 0 HcmV?d00001 diff --git a/notes/07_stochopt/img/cyberscooty-switch_1.pdf b/notes/07_stochopt/img/cyberscooty-switch_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6d974fbd03a27ceecf41eb80d26512135dea4996 GIT binary patch literal 18858 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 TEW{##`p8(+f(1)W4N(6B0kt!O literal 0 HcmV?d00001 diff --git a/notes/07_stochopt/img/kl_fwd.pdf b/notes/07_stochopt/img/kl_fwd.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a23d74e90f50540524d46911ca3298a467c99b6d GIT binary patch literal 14017 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 Wj3F++wEDO*UJx=hwWP8X^8Ww@bgM4_ literal 11937 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 JhJhyS{{ia+Cyf9A diff --git a/notes/07_stochopt/img/sources.txt b/notes/07_stochopt/img/sources.txt new file mode 100644 index 0000000..f719a72 --- /dev/null +++ b/notes/07_stochopt/img/sources.txt @@ -0,0 +1,3 @@ +https://freesvg.org/switch-on +https://freesvg.org/white-switch-off +https://de.wikipedia.org/wiki/Datei:Blacksmith_anvil_hammer.svg diff --git a/notes/07_stochopt/tutorial.tex b/notes/07_stochopt/tutorial.tex index e130817..e2cf5b2 100644 --- a/notes/07_stochopt/tutorial.tex +++ b/notes/07_stochopt/tutorial.tex @@ -79,24 +79,25 @@ \input{./3_stochopt} \mode* -\mode -\input{./4_mcmc} -\mode* +%\mode +%\input{./4_mcmc} +%\mode* \clearpage \mode -\input{./5_deterministic} +\input{./4_deterministic} +%\input{./5_deterministic} \mode* \clearpage -%\section{References} -%\begin{frame}[allowframebreaks] \frametitle{References} - %\scriptsize - %\bibliographystyle{plainnat} - %\bibliography{bibliography} -%\end{frame} +\section{References} +\begin{frame}[allowframebreaks] \frametitle{References} + \scriptsize + \bibliographystyle{plainnat} + \bibliography{bibliography} +\end{frame} \end{rightcolumn} \end{paracol} From fbf11a8468f039a397062ec969d2d08b7a52a6cd Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Thu, 4 Jun 2020 18:23:37 +0200 Subject: [PATCH 5/6] restore date --- latex/headerMIslides.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/latex/headerMIslides.tex b/latex/headerMIslides.tex index fab550c..72aa768 100644 --- a/latex/headerMIslides.tex +++ b/latex/headerMIslides.tex @@ -98,6 +98,7 @@ \institute[www.ni.tu-berlin.de]{Fachgebiet Neuronale Informationsverarbeitung (NI)} \author[Kashef]{Youssef Kashef} \date{SoSe 20} +%\date{} \graphicspath{{../../../../../figures/pdf/}} From afbeff388a37e2ad4d1417fbd6302890e3fddf21 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Thu, 4 Jun 2020 18:23:46 +0200 Subject: [PATCH 6/6] edit sections --- notes/07_stochopt/0_motivation.tex | 2 +- notes/07_stochopt/3_stochopt.tex | 2 +- notes/07_stochopt/tutorial.tex | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/notes/07_stochopt/0_motivation.tex b/notes/07_stochopt/0_motivation.tex index 22fb4d0..7e82f89 100644 --- a/notes/07_stochopt/0_motivation.tex +++ b/notes/07_stochopt/0_motivation.tex @@ -1,4 +1,4 @@ -\section{Problems with how we've been optimizing so far} +\section{Limitations in how we've been optimizing so far} \begin{frame} diff --git a/notes/07_stochopt/3_stochopt.tex b/notes/07_stochopt/3_stochopt.tex index 5f23d76..04a8ca8 100644 --- a/notes/07_stochopt/3_stochopt.tex +++ b/notes/07_stochopt/3_stochopt.tex @@ -163,7 +163,7 @@ \section{Simulated (stochastic) annealing} \end{itemize} \end{frame} -\section{The stationary distribution} +\subsection{The stationary distribution} \begin{frame} diff --git a/notes/07_stochopt/tutorial.tex b/notes/07_stochopt/tutorial.tex index e2cf5b2..262449f 100644 --- a/notes/07_stochopt/tutorial.tex +++ b/notes/07_stochopt/tutorial.tex @@ -56,7 +56,12 @@ \end{frame} \begin{frame} +\mode{ +\tableofcontents[hideallsubsections] +} +\mode
{ \tableofcontents +} \end{frame} \newpage