\documentclass{beamer}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\usepackage{graphicx}
\usepackage{beamerthemesplit}
\usepackage{color}
\title {Redes Neuronales Artificiales\\Competitivas No Supervisadas}
\author{Carleos Artime, C.; Corral Blanco, N.}

\begin{document}

\frame{\titlepage}

\begin{frame}\frametitle{Redes Neuronales Artificiales Competitivas No Supervisadas }
Red Neuronal Competitiva No Supervisada
\begin{columns}
  \begin{column}{.5\textwidth} 
    \begin{itemize}
    \item Las neuronas de salida compiten entre ellas para activarse
    \item Sólo se activa la que alcanza un mayor {\it potencial sináptico}
    \item Las neuronas se especializan en detectar la presencia de ciertos patrones de entrada
    \end{itemize}
  \end{column}
  \begin{column}{.5\textwidth}
    \includegraphics[width=.9\textwidth]{Competitive_neural_network_architecture1.png}
  \end{column}
\end{columns}
\end{frame}



\begin{frame}\frametitle{Redes Neuronales Artificiales Competitivas No Supervisadas }
Los elementos básicos de estas redes son:
\begin{itemize}
 \item La capa de entrada
 \item La capa de salida que tiene naturaleza competitiva 
 \item Las neuronas de la capa de salida son de naturaleza binaria y sólo pueden activarse una con cada patrón de entrada.
 \item Para un vector de entrada $\vec{x}= (x_1, \ldots, x_p)$, el
   potencial sináptico de la neurona de salida \(k\) viene dado por la
   expresión:
 $$ h_k= \sum_{r=1}^{p} w_{rk} x_r  -\theta_k = \sum_{r=1}^{p} w_{rk} x_r -\frac{1}{2} \sum_{r=1}^{p} w_{rk}^2$$ 
 \item La salida  $k$ vale:
 $o_k = \left\{ \begin{array}{rl}1 & \text{si }h_k= \max\{h_1, \ldots, h_m\}\\
  0 &  \text{en otro caso}  \end{array}\right.$
\item La neurona mayor potencial sináptico es la que tiene la menor distancia euclídea entre su vector de pesos $\vec{w}$ y $\vec{x}$.
\end{itemize}
\end{frame}


\begin{frame}\frametitle{Redes Neuronales Artificiales Competitivas No Supervisadas }
El entrenamiento de la red pretende alcanzar los siguientes objetivos:
\begin{itemize}
 \item Activar la neurona cuyos pesos sean los más parecidos al patrón de entrada
 \item Conseguir que los pesos sean una buena representación de los datos de entrenamiento
\end{itemize}

Para ello se define el siguiente error:
$$ E(\vec{x}) = \sum_{k=1}^{m} a_{k}  \Vert \vec{x} -\vec{w}_k \Vert^2 =  \sum_{k=1}^{m} a_{k}  \sum_{r=1}^{p} (x_r -w_{rk})^2 $$ 
donde $
a_{k} = \left\{ \begin{array}{rl} 1&\text{si } \Vert \vec{x} -\vec{w}_k \Vert^2 =
                                     \displaystyle\min_{i=1,\dots,m} \Vert \vec{x} -\vec{w}_i\Vert^2\\
        0 &\text{en el resto} \end{array}\right.$
\end{frame}


\begin{frame}[t]\frametitle{Redes Neuronales Artificiales Competitivas No Supervisadas }
Los pesos sinápticos se estiman, de manera iterativa, usando el descenso del gradiente para  minimizar el error

$$ w_{jk}(t+1) = w_{jk}(t) - \eta_{t} \frac{\partial E} {\partial w_{jk}} =
w_{jk}(t) + \eta_{t}\, a_{k} \sum_{r=1}^p(x_r -w_{rk})$$

\vspace{-18mm}
\begin{center}
  %install.packages("diagram");library(diagram);pdf("flechas.pdf",width=5,height=5);plot(c(0,10),c(0,10),type="n",axes=FALSE,xlab="",ylab="");arrows(c(0,0,0,0,0),c(0,0,0,0,0),c(5,0,2,4,8),c(0,5,8,7,5));lines(c(2,8),c(8,5),lty=2);curvedarrow(c(2,8),c(4,7),lcol="blue",curve=-.15,arr.pos=.7);text(c(2,5,8.5),c(8.6,7.3,5.2),c(expression(w[k](t)),expression(w[k](t+1)),expression(x(t))));dev.off()
  \includegraphics[width=8cm]{flechas.pdf}
\end{center}
\end{frame}


\begin{frame}[t]\frametitle{Redes Neuronales Artificiales Competitivas No Supervisadas }
Los pesos sinápticos se estiman, de manera iterativa, usando el descenso del gradiente para  minimizar el error

$$ w_{jk}(t+1) = w_{jk}(t) - \eta_{t} \frac{\partial E} {\partial w_{jk}} =
w_{jk}(t) + \eta_{t}\, a_{k} \sum_{r=1}^p(x_r -w_{rk})$$

En cada iteración sólo cambian los pesos de la neurona ganadora.\\[1ex]

La tasa de aprendizaje debe disminuir con cada iteración del proceso de entrenamiento. Algunos criterios habituales son:
\begin{itemize}
 \item $\eta_t= \eta_0 e^{-t/\lambda} $
 \item $\eta_t= 1- \frac{t}{T}$ con $T= $ número máximo de iteraciones
\end{itemize}
\end{frame}


\begin{frame}\frametitle{Mapas de Kohonen}
Naturaleza de los mapas de Kohonen (Self Organizing Map. SOM)\\

\begin{itemize}
 \item Son redes de aprendizaje no supervisado
 \item Tienen naturaleza competitiva
 \item Se construyen teniendo en cuenta las posiciones que ocupan las neuronas.
 \end{itemize}
 
 % Gráfico de una red de Kohonen
 % pdf("kohonen.pdf");plot (c(0,100),c(0,100),xpd=TRUE,axes=FALSE,type="n",xlab="",ylab="");segments(c(5,10,15,20,25),c(50,60,70,80,90),c(75,80,85,90,95),c(50,60,70,80,90));arrows(c(5,35,65,96),c(5,5,5,5),c(37,39,41,43),c(57,56,56,57));points(c(seq(5,95,30),seq(5,75,10),seq(10,80,10),seq(15,85,10),seq(20,90,10),seq(25,95,10)),c(rep(5,4),rep(50,8),rep(60,8),rep(70,8),rep(80,8),rep(90,8)),cex=5,pch=21,bg="grey");points(40,60,pch=21,bg="black",cex=5);for(i in 1:4)for(j in 0:7)segments(10*j+5*i+2.1,40+10*i+3.4,10*j+5*i+5-0.6,50+10*i-1.7);text(.3+c(5,34.7,65,95),rep(4.7,4),expression(x[1],x[2],"...",x[p]),cex=1.8);text(40,60,"k",cex=1.8,col="white");text(c(9,30,60,83),rep(24,4),expression(w[1*k],w[2*k],"...",w[p*k]),cex=1.8);text(c(7,7,50),c(85,93,-3),c("(mapa)","salida","entrada (capa sensorial)"),cex=1.7,xpd=TRUE);dev.off()
 \vspace{-15mm}
 \begin{center}
   \hspace*{30mm}\includegraphics[width=75mm]{kohonen.pdf}
 \end{center}
\end{frame}

\begin{frame}\frametitle{Mapas de Kohonen}
 Los elementos básicos de una red de Kohonen son:\\
 \begin{itemize}
 \item La capa de salida está formada por una rejilla rectangular, de
   neuronas binarias, de tamaño $m_1\times m_2$. La rejilla también
   puede ser hexagonal.
 \item Cada neurona $k$ de la capa de salida tiene asociado un vector
   de posición en el plano $\vec{p}_k= (p_{k1},p_{k2})$
 \item La proximidad entre las neuronas de la capa de salida. Las
   función más usual es
   $$ T_{g,k} = exp\Bigl(- \frac{d^2( \vec p_g, \vec p_k)} {2
     \sigma^2} \Bigr)$$ donde
   $$d(p_g, p_k)= \Bigl(|p_{g1}-p_{k1}|^\alpha + |p_{g2} - p_{k2}|^\alpha\Bigr)^\frac{1}{\alpha}$$ 
   
       \begin{itemize}
       \item $\alpha=1$ $\Longrightarrow$ $d$ es la distancia de Manhattan
       \item $\alpha=2$ $\Longrightarrow$ $d$ es la distancia euclídea 
        \end{itemize}      


 \end{itemize}   
\end{frame}
 
 
 
 \begin{frame}\frametitle{Mapas de Kohonen}
Etapas del algoritmo de una red de Kohonen:\\
 
 \begin{enumerate}
  \item Calcular el valor de activación de cada neurona de salida
  \vspace{-0.2cm}
  $$ h_k(\vec{x}) = exp(- d^2(\vec{x}, \vec{w}_k))$$
La neurona ganadora es la que tiene un vector de pesos más cercano al patrón de entrada

\item Medir la proximidad de las neuronas, respecto de la ganadora $g$,
  teniendo en cuenta el radio de vecindad, $\sigma$
$$T_{g,k} (t)= exp\Bigl(- \frac{d^2(\vec p_g, \vec p_k)} {2 \sigma_t^2}\Bigr)$$

El valor de $\sigma_t$ va decreciendo con cada iteración. Un criterio
habitual es $\sigma_t = \sigma_0 exp( - t / \tau)$

  \item Los pesos de las neuronas se modifican teniendo en cuenta su cercanía a la ganadora
$$\bigtriangledown w_{rk} (t+1) = \eta_t T_{g,k} (t) (x_r -w_{rk})$$

%Los pesos de las neuronas alejadas  de la ganadora casi no se modifican mientras que los de las neuronas cercanas tienden a tener pesos parecidos
 \end{enumerate}
  \end{frame}

 
 
\begin{frame}\frametitle{Mapas de Kohonen} 
   En el entrenamiento de una red de Kohonen hay dos etapas
\begin{enumerate}
  \item Auto-organización: Organización topológica de los vectores de pesos.\\
  Inicialmente se consideran una tasa de aprendizaje y radio de vecindad altos. Por ejemplo, $\eta_0=1$ y $\sigma_0$ = diámetro del mapa.  
  \item Convergencia: Está dirigida a obtener valores estables de los pesos sinápticos. Se suele emplear una tasa de aprendizaje pequeña ($0.05$) y un radio igual a $1$.
 \end{enumerate}
\end{frame}
  
  
\end{document}