SISTEMAS INTELIGENTES T10: Redes Neuronales.aic.uniovi.es/ssii
Índice Redes Neuronales Artificiales Fundamentos biológicos Perceptrón Funciones de activación Redes de neuronas Entrenamiento: Perceptrón Descenso de gradiente: regla delta Backpropagation
Redes de Neuronas Artificiales (ANNs) Están inspiradas en los sistemas neuronales biológicos Neurona: célula cerebral encargada de recoger, procesar y transmitir señales eléctricas No alcanzan su nivel de complejidad (ni de prestaciones L ) Número de neuronas en el cerebro humano: ~10 10 Tiempo de activación/inhibición: ~10-3 Coneiones (sinapsis) por neurona: ~10 4 10 5 Reconocimiento de escenas: 0.1 segundos Procesamiento no lineal Masivo grado de paralelismo Representaciones distribuidas Adaptativo Tratan de capturar este modelo de funcionamiento, pero: Normalmente, menos de 1000 neuronas No capturan todo el comportamiento neuronal
Neuronas humanas Soma: contiene el núcleo celular Dendritas: entradas Aon/Sinapsis: coneión entre neuronas La información fluye unidireccionalmente El soma a través de aon/ sinapsis puede mandar un mensaje de ecitación/ inhibición (neurotransmisión) Éste será captado por las dendritas de otra neurona A lo largo del tiempo (aprendizaje), la coneión entre dos neuronas se hará más fuerte o más débil
Definición y propiedades sistema compuesto por múltiples unidades de proceso que operan en paralelo y cuya funcionalidad depende de la estructura de la red, de la fuerza de las coneiones, y del procesamiento realizado en cada nodo [DARPA, 98] Propiedades: Formadas por conjuntos de neuronas individuales activadas por umbral Muchas coneiones con pesos entre las neuronas Procesamiento distribuido y paralelo El aprendizaje consistente en ajustar los pesos de las coneiones entre las neuronas
Tipos de problemas adecuados Entradas formadas por vectores de valores discretos o reales Pueden ser problemas de clasificación o regresión Puede producir vectores de valores Los usuarios finales no quieren obtener eplicaciones: no producen conocimiento inteligible (caja negra) Los datos de entrenamiento pueden contener errores
ALVINN Pesos entre capa oculta y la salida (1 neurona) Pesos entre la entrada y la capa oculta (1 neurona)
Perceptrón 1 2 1 2 0 = 1 0 Σ n i= 0 i i h( ) = sgn( ) 1 = 1 si > 0 en otro caso n n H = { n+1 R } Representa UNA neurona
Funciones de Activación Lineal y = A tramos y = 1 1 < l l > l l Signo Sigmoide y = sgn() y 1 = 1 + e Gaussiana y = Ae B
Definición de Red de Neuronas Conjunto de neuronas artificiales conectadas entre sí mediante una serie de arcos llamados coneiones Estas coneiones tienen números reales asociados, llamados pesos de la coneión Las neuronas generalmente se distribuyen en capas de distintos niveles, con coneiones que unen las neuronas de las distintas capas (pueden ser también de la misma capa)
Ejemplo de Red de Neuronas Valor calculado usando Los valores de entrada Se escoge la clase que produce un valor mayor CAPA DE ENTRADA CAPAS OCULTAS CAPA DE SALIDA CLASE 1.1 ENTRADA 2.7 3.0-1.3 4.2-0.8 7.1 2.1-1.2 1.1 0.2 0.3 SALIDA A B C 2.7 LOS VALORES SE PROPAGAN POR LA RED
Aprendizaje en una red de neuronas Aprendizaje: la red modifica los pesos de las coneiones para que las salidas de la red se vayan adaptando de manera paulatina al funcionamiento que se considera correcto La modificación de los pesos depende del paradigma de aprendizaje que estemos usando: Aprendizaje supervisado: para cada ejemplo presentado a la red eiste una respuesta deseada. La respuesta de la red se compara con su salida esperada, y en base a esa comparación se ajustan los pesos de la red Aprendizaje no supervisado: no se especifica a la red cuál es la respuesta correcta. La red descubre las relaciones presentes en los ejemplos
La red más simple Una neurona artificial Aprendizaje de conceptos: ejemplos puntos en el espacio U n, con su clase asociada Separador lineal: dado un conjunto de ejemplos determina el hiperplano capaz de discriminar los ejemplos en dos clases h ) = + + +... + ( 0 1 1 2 2 n n Es interesante estudiarlo porque nos permite diseñar redes con más neuronas
Separador Lineal + + + - - + - + - - - + Problema: el conjunto puede no ser linealmente separable (Ejemplo XOR) Solución: emplear redes multicapa
Aprendizaje Perceptrón Algoritmo Aprendizaje Perceptron(,X): es Inicialización aleatoria del vector de pesos < 0,..., n > Mientras (no se cumpla la condición de parada) hacer Para cada ejemplo de entrada <( 1,..., n ), f( 1,..., n )> Se calcula la salida de la red: h( 1,..., n )= 1 1 + + n n + 0 Si ( h( 1,..., n )!= f( 1,..., n ) ) entonces Fin si Fin Para Fin Mientras Retornar Fin Algoritmo Se actualizan los pesos < 0,..., n > Para actualizar los pesos se siguen conceptos epuestos por Hebbian (si dos neuronas están activas, su coneión se refuerza)
Perceptrón: regla de entrenamiento i = i + Δ i donde: Δ i = η [f() h()] i f() es el valor de la función objetivo en el ejemplo h() es la salida del preceptrón η es una pequeña constante que controla el ritmo de aprendizaje (decrece con el tiempo) Función de activación: con umbral Los pesos se actualizan para cada ejemplo El algoritmo converge si: los ejemplos de entrada son linealmente separables η is suficientemente pequeña
Descenso de gradiente (I) Converge sólo asintóticamente al mínimo aún cuando el problema no es linealmente separable Es la base del algoritmo Backpropagation Descenso de gradiente: consideremos una neurona lineal sin umbral (salida continua) h()= 0 + 1 1 + + n n Entrenamiento: minimizar el error cuadrático Cómo minimizarlo? E[ 0,, n ] = ½ Σ X (f() h())2 Nos movemos en la dirección que más reduce el error Dirección negativa del vector gradiente Diferencias: Perceptrón función de activación con umbral, Gradiente no Perceptrón actualización por ejemplo, Gradiente todos los datos Perceptrón: minimiza Gradiente: minimiza error
Universidad [ ] [ ] ( ) ( ) ( ) ( ) ( ) ( ) = = = Δ = Δ D 2 i i X 2 i i i i n 1 0 h f 2 1 E h f 2 1 E E E,, E, E E E η η ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )( ) [ ] = = = X i i X i X i i h f E f h f h f h f 2 2 1 E Descenso de gradiente (II) ( 1, 2 ) ( 1 +Δ 1, 2 +Δ 2 )
Descenso de gradiente (III) Algoritmo Aprendizaje Gradiente(,X): es Inicialización aleatoria del vector de pesos < 0,..., n > Mientras (no se cumpla la condición de parada) hacer Δ i 0 para todo i Para cada ejemplo de entrada <( 1,..., n ), f( 1,..., n )> Se calcula la salida de la red: h( 1,..., n )= 1 1 + + n n + 0 Para cada peso i hacer Δ i Δ i + η ( f( 1,..., n ) - h( 1,..., n ) ) i Fin Para Fin Para i i + Δ i Fin Mientras Retornar Fin Algoritmo
Descenso de gradiente (IV) Es un paradigma muy importante de aprendizaje Su estrategia de búsqueda en espacios de hipótesis infinitos puede ser aplicada cuando: el espacio de hipótesis contiene hipótesis que pueden parametrizarse de una forma continua (e.g. pesos de una función lineal) podemos derivar el error respecto a los parámetros de la hipótesis Dificultades: converger al mínimo puede ser lento si hay mínimos locales no se garantiza alcanzar el mínimo global
Algunas consideraciones Importancia de la constate η que controla el ritmo de aprendizaje Dado que sólo eiste un mínimo global, el algoritmo converge aunque no sea LS, siempre que η sea suficientemente pequeña Si es demasiado grande, el algoritmo puede saltarse el mínimo Se suele ir reduciendo su valor para evitarlos Problemas: Si η es pequeña el algoritmo es más lento Si hay varios mínimos locales, el algoritmo puede quedarse atrapado en ellos y no alcanzar el mínimo global Cuándo se debe parar el aprendizaje?
Descenso de gradiente incremental Es una aproimación estocástica Incremental: actualiza el peso tras cada ejemplo Δ i = η ( f( 1,..., n ) - h( 1,..., n ) ) i Puede aproimar el método del gradiente si la constate η es suficientemente pequeña Es mucho más rápido Aunque eistan varios mínimos locales, el método incremental puede evitarlos ya que usa los grandientes de cada ejemplo (varios) La fórmula anterior se denomina también Regla Delta/LMS (Widro-Hoff)
Redes Multicapa (MLP) Definición: una red multicapa está formada por una capa de entrada, una o más capas intermedias, y una capa de salida Sólo las capas ocultas y la de salida contienen perceptrones Permiten representar funciones no lineales Dificultad para diseñarlas Se requiere mucho tiempo de entrenamiento Usan funciones de activación no lineales: sigmoide
Backpropagation Algoritmo BackPropagation es Inicialización aleatoria de todos los pesos de la red (valores pequeños) Mientras (no se cumpla la condición de parada) hacer Para cada ejemplo de entrada <( 1,..., n ), f( 1,..., n )> Se calcula la salida de cada neurona s de salida h s ( 1,..., n ) Propagar los errores a través de la red Para cada neurona s de la capa de salida se calcula su error hacer δ s =h s (1-h s )(f s -h s ) Para cada neurona o de la capa oculta hacer δ o =h o (1-h o )Σ s so δ s Para todos los pesos de la red ji ji + Δ ji Fin Mientras Retornar pesos Fin Algoritmo donde Δ ji = ji + η δ o ji
Características Usa el gradiente sobre toda la red de pesos Fácil de generalizar para otros grafos dirigidos Encuentra un mínimo local, no necesariamente global A pesar de ello, es efectivo en la práctica No hay desarrollos teóricos para garantizar la convergencia Se han desarrollado heuríticos para mejorar el proceso Añadir momentum en el cálculo de los pesos Δ i,j (n)= η δ j i,j + α Δ i,j (n-1) Usar el gradiente estocástico o incremental Entrenar la misma red con diferentes pesos iniciales, se selecciona la que produzca un error menor en un conjunto de validación Se podría combina la salidad de todas las redes Entrenamiento muy lento