Tema: Aprendizaje Supervisado.

Anuncio
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
1
Facultad: Ingeniería
Escuela: Computación
Asignatura: Sistemas Expertos e
Inteligencia Artificial
Tema: Aprendizaje Supervisado.
Objetivos Específicos

Aprender a entrenar a la neurona, haciendo uso de ecuaciones matemáticas, para balancear
sus pesos, en este caso entrenamos a la neurona sobre qué debe aprender y qué valores
debe mostrarnos.

Identificar en forma clara, como es que aprende un sistema inteligente.

Implementar redes neuronales que utilicen aprendizaje supervisado en Microsoft Visual C#.
Materiales y Equipo
 Guía Número 9.
 Computadora con programa Microsoft Visual C#.
Introducción Teórica
El aprendizaje es esencial para la mayoría de las arquitecturas de redes neuronales, por lo que
la elección de un algoritmo de aprendizaje es un punto central en el desarrollo de una red, este
implica que una unidad de procesamiento es capaz de cambiar su comportamiento entrada/salida
como resultado de los cambios en el medio.
La regla de aprendizaje de una red son criterios que se siguen para cambiar el valor asignado a
las conexiones (o sea cómo se modifican los valores de los pesos).
Existen dos tipos de reglas de aprendizaje:

El aprendizaje supervisado, y

El aprendizaje no supervisado.
Así el aprendizaje puede ser: supervisado, se provee una respuesta correcta durante su
entrenamiento, necesita de un humano que mida el funcionamiento del sistema, y no
2
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
supervisado, el objetivo a alcanzar no está presente, no se necesita de un humano, el sistema
debe organizarse a sí mismo y por sí solo, se le conoce también como aprendizaje por hechos.
¿Qué es aprendizaje?
Es el proceso por el cual los parámetros libres de una red neuronal son adaptados a través de un
proceso de estimulación por el ambiente en el cual la red se encuentra inmersa.
El tipo de aprendizaje es determinado por la manera en la cual el cambio de parámetros tiene
lugar. El aprendizaje, además, es el proceso por el cual modifica sus pesos en respuesta a una
modificación en los datos de entrada.
Los tipos de aprendizaje supervisado son:
 Aprendizaje por corrección de error.
 Aprendizaje por refuerzo.
 Aprendizaje estocástico.
Aprendizaje por corrección de error.
El entrenamiento consiste en presentar al sistema un conjunto de pares de datos, representando
la entrada y la salida deseada para dicha entrada. Este conjunto recibe el nombre de conjunto
de entrenamiento.
Este aprendizaje consiste en ajustar los pesos de las conexiones de la red en función de la
diferencia entre los valores deseados y los obtenidos en la salida de la red.
Ejemplos: La regla de aprendizaje del Perceptrón; regla delta o regla del mínimo error cuadrado
o regla de Widrow-Hoff, ADALINE y MADALINE.
Objetivo:
Se trata de minimizar el error entre la salida deseada y la actual.
Aprendizaje por Refuerzo
Es un tipo de aprendizaje más lento que el anterior. No se dispone de un ejemplo completo del
comportamiento deseado. No se conoce la salida deseada exacta para cada entrada.
Se conoce cómo debería ser el comportamiento de manera general entre diferentes entradas.
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
3
Es un aprendizaje on-line. Relación de entrada–salida a través de un proceso de éxito o fracaso,
produciendo una señal de refuerzo, que mide el buen funcionamiento del sistema.
Esta señal de refuerzo está caracterizada por el hecho de que es menos informativa que en el
caso del aprendizaje supervisado mediante ejemplos.
Es una variante de aprendizaje supervisado a la cual se informa a la red solamente una crítica de
corrección de salida de red y no la respuesta correcta en sí.
Aprendizaje Estocástico.
Consiste básicamente en realizar cambios aleatorios en los valores de los pesos de las
conexiones de la red y evaluar su efecto a partir del objetivo deseado y de las distribuciones de
probabilidad.
Ejemplo: la red Máquina de Cauchy.
El proceso es el siguiente:
 Se realiza un cambio aleatorio en los pesos.
 Se determina la nueva energía de la red.
 Si la energía decrece: se acepta el cambio.
 Si la energía no decrece: se aceptaría el cambio en función de una determinada y
preestablecida distribución de probabilidades.
4
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
Un algoritmo bien conocido de la IA para modelar el entrenamiento de las redes neuronales es
llamado “Propagación hacia Atrás”, Backpropagation (en inglés). Utilizaremos este algoritmo para
entrenar a una red neuronal para entrenar a un detector de números primos en sus entradas.
Algoritmo de aprendizaje del Perceptrón.
Si la salida de la neurona iguala al valor deseado, no se modifican los pesos, mientras que en el
caso general, hay una búsqueda del mínimo error.
Algoritmo de la Neurona.
Una red Neuronal es simulada en una computadora creando los nodos cargados que se
interconectan el uno al otro con diversas capas: la capa de la entrada, algunas capas ocultas, y
una capa de la salida.
Una señal pasa a un nodo de entrada en la capa de la entrada y luego es multiplicada por los
pesos en todas las conexiones a los nodos en la capa siguiente y sumada para formar un valor
de la activación. Este valor se pasa con lo que se conoce como “función delta” que altera la
suma cargada a un valor no lineal y simula algo cómo una señal neuronal en el cerebro. El nuevo
valor de la activación se pasa encendido a la capa siguiente y es ajustado otra vez por la suma
de los valores cargados. Este proceso continúa hasta que el valor ajustado alcanza la capa de
la salida donde se lee.
Algoritmo de aprendizaje Delta por el gradiente decreciente.
Este algoritmo converge sólo asintóticamente al mínimo aun cuando el problema no es
linealmente separable. Es la base del algoritmo Backpropagation.
Utiliza la siguiente regla: minimizar el error cuadrático medio LMS.
¿Cómo minimizarlo?
Nos movemos en la dirección que más reduce el error, es decir, en la dirección negativa del vector
gradiente.
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
5
Diferencias con el algoritmo del Perceptrón.
 Perceptrón usa una función de activación con umbral, Gradiente no.
 Perceptrón usa actualización por ejemplo, Gradiente utiliza todos los datos.
 Perceptrón: minimiza los pesos, Gradiente: minimiza error.
El algoritmo es el siguiente:
Entrenando a la Red.
En el algoritmo Backpropagation, la neurona es entrenada comparando el valor final que ocurre
en la salida de la red, al valor deseado de la salida y que alimenta el error a través de la red.
Este error se usa para ajustar los pesos en los nodos de los nervios, si se envía el respaldo del
error con los nodos para muchas iteraciones, los pesos convergerán eventualmente a los valores
6
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
que darán la salida real de la red. Hay siempre la posibilidad que los pesos pueden no converger,
o los pesos convergen a un cierto mínimo local y no proporcione una solución óptima. Ajustando
algunos de los parámetros de la red (número de capas ocultadas, parámetros del umbral, número
de nodos ocultos), se puede mejorar la exactitud de la red.
Una vez que se entrene la neurona, en ocasiones no es necesario volver a entrenarla. En estos
casos, se pueden utilizar los pesos resueltos finales para todos los datos. Sin embargo, si los
datos de entrada en el ambiente están cambiando constantemente (por ejemplo en las
predicciones comunes), será necesario enseñar/aprender habilidades nuevas a la neurona.
Otro aspecto a considerar sobre el entrenamiento es que si las entradas son correctas, las salidas
también lo serán. Debemos utilizar los datos que cubran una amplia gama de posibilidades que
necesitemos como entradas en la red. Recordemos que la salida generada debe ser exacta.
Algoritmo Backpropagation.
A continuación se explica brevemente la parte matemática y los pasos del algoritmo.
1. El primer paso es el paso hacia adelante utilizado para determinar los niveles de la activación
de las neuronas. Este paso es el mismo paso utilizado para hacer funcionar la neurona
después de que se entrene. En nuestro ejemplo tenemos solamente tres capas, la de
entrada, la oculta, y la de salida.
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
7
Primero calcularemos los niveles de la activación de la capa oculta. Esto se logra con valores
de la entrada por la matriz del peso entre la capa de la entrada y la capa oculta y después el
funcionamiento de los resultados con una función sigmoidea:
Loculta = sigmoid (Lentrada * [Pesosentrada-oculta])
La función sigmoidea se acerca a 1 para los valores grandes de x, y a 0 para los valores muy
pequeños de x. Esto tras todas las activaciones a una aproximación no lineal de la neurona:
Esta función forma una curva, como observamos en la siguiente figura.
La curva sigmoidea permite que los valores fuera de un nodo actúen como una neurona.
Para valores más grandes de la entrada en la neurona, la neurona se satura y alcanza un
límite del valor. Para valores más pequeños de la entrada de la neurona, la neurona es menos
sensible y tiende a permanecer en un valor cerca de cero. Para los valores de la entrada a
partir del -0.5 a 0.5, la curva parece ser casi lineal dando un rango proporcional entre los
datos entrantes y salientes.
2. El paso siguiente en la activación hacia adelante es calcular las activaciones de la capa de
la salida de la capa oculta (en el paso1) y la matriz sináptica del peso que tiende un puente
sobre la capa oculta a la capa de la salida.
Entonces, finalmente tenemos que aplicar el sigmoideo a la matriz del producto que resulta.
Lsalida = sigmoid (Loculta * [Pesosoculta-salida])
8
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
Lsalida (o los valores de la capa de la salida) contiene los resultados de alimentar nuestra
entrada inicial en la neurona.
3. Una vez que hayamos calculado las activaciones para nuestras neuronas, necesitamos
calcular el error que resulta entre la salida real y la salida deseada.
Este error se
retroalimenta a través de la red neuronal y se utiliza para ajustar los pesos para adaptarse a
un modelo más exacto de nuestros datos. El primer paso es calcular el error de la capa de
la salida:
Esalida = Lsalida * (1 - Lsalida) * (Lsalida - Ldeseada)
4. Ahora alimentamos este error en la capa oculta para calcular el error ocultado de la capa:
Eoculta = Loculta * (1 - Loculta) * [Pesosoculta-salida] * Esalida
5. Necesitamos después ajustar la matriz del peso entre la capa oculta y la capa de salida para
adaptar nuestra red y compensar el error. Para ajustar los pesos agregaremos dos factores
constantes a nuestro algoritmo.
El primer factor es el ratio de aprendizaje (LR), el cual ajusta cuánto afecta el error calculado
del cambio del peso en un solo ciclo a través de la red neuronal.
El segundo factor es un factor del ímpetu (MF) (frecuencia intermedia), usado conjuntamente
con el cambio anterior del peso para afectar el cambio final en el ciclo actual a través de la
red. Este factor puede ayudar a menudo a una red a entrenarse un poco más rápido.
Pesosoculta-salida = Pesosoculta-salida + D [Pesosoculta-salida]
Donde:
D [Pesosoculta-salida] = (LR) * Loculta * Esalida + (MF) * D [Pesosoculta-salida (previa)]
6. Finalmente necesitamos ajustar los pesos para la capa de la entrada de la misma manera:
Pesosentrada-oculta = Pesosentrada-oculta + D [Pesosentrada-oculta]
Donde:
D [Pesosentrada-oculta] = (LR) * Lentrada * Eoculta + (MF) * D [Pesosentrada-oculta (previa)]
Después de que se ajusten los pesos, los pasos 1 a 6 se repiten para el sistema siguiente
de entrada y de valores deseados de la salida.
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
9
El sistema entero de datos se va de una vez, y repetimos el algoritmo para todos los datos
otra vez. Este proceso continúa hasta que converge la red o hasta que elegimos detener la
iteración de los datos.
Procedimiento
Ejemplo 1. Se desea entrenar un Perceptrón multinivel con el algoritmo de aprendizaje descrito
anteriormente. Considerar que nuestra red neuronal debe ser capaz de reconocer los números
primos entre 0 y 100.
Solución.
Los datos para este ejemplo serán incorporados en formato binario.
Cada número primo en el rango de 0 - 100 (los 25 de ellos), se proporcionarán en la entrada así
como todos los números no-primos en el rango de 0 - 100.
La salida deseada es "1" si el número es primo y "0" si el número no es primo.
El número de los nodos en la capa de entrada necesita corresponder al número de dígitos binarios
en el número más grande que será capaz de reconocer la red neuronal. Como el número mayor
a reconocer es 100, el equivalente binario es alrededor 27 = 128. Por lo tanto necesitamos 7
nodos en la capa de entrada.
Para alimentar los datos binarios en la red, es posible definir una lista de todos los números en el
rango de 0 a 100, tanto primos como no primos (como enteros). Luego construimos los datos
binarios de la entrada y una función que me ayude a determinar (identificar) los números primos.
Es recomendable también que la cantidad de nodos en la capa oculta sea mayor que la capa de
entrada (> 7), pues la red trabajará mejor (entrenamiento con menos iteraciones).
La capa de salida tiene solamente un nodo que indicará si el dato de entrada es primo o no.
Análisis de resultados
Tomando como referencia la información presentada en el ejemplo No.1 y el algoritmo de
Backpropagation, implementar un simulador (en entorno de Windows Forms) para el Perceptrón
multinivel, que permita determinar si la entrada proporcionada es un número primo.
10
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
Considerar la siguiente funcionalidad para el simulador:
 Debe tenerse una opción para entrenar al perceptrón.
 El aprendizaje del Perceptrón debe realizarse utilizando el algoritmo de Backpropagation
indicado en la guía.
 El simulador debe permitir que el usuario introduzca el dato de entrada, es decir el
número que se desea verificar si es primo.
Investigación Complementaria
Para la siguiente semana:
Realizar una investigación sobre la metodología utilizada para modelar una Red Neuronal Artificial
para Reconocer Patrones.
Debe presentarse en un documento formal de reporte de investigación.
11
Sistemas Expertos e Inteligencia Artificial. Guía No. 9
Guía 9: Aprendizaje Supervisado.
Alumno:
Hoja de cotejo:
9
Máquina No:
GL:
Docente:
Fecha:
EVALUACIÓN
%
CONOCIMIENTO
Del 20
al 30%
APLICACIÓN
DEL
CONOCIMIENTO
Del 40%
al 60%
ACTITUD
Del 15%
al 30%
TOTAL
100%
1-4
5-7
8-10
Conocimiento
deficiente
de los
fundamentos
teóricos
Conocimiento
y explicación
incompleta de
los
fundamentos
teóricos
Conocimiento
completo y
explicación
clara de los
fundamentos
teóricos
No tiene
actitud
proactiva.
Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la guía.
Tiene actitud
proactiva y
sus propuestas
son concretas.
Nota
Descargar