3. APRENDIZAJE 3.1. Introducción ¿Las máquinas pueden aprender? Ada Augusta, filósofa de la computación (1961) dijo que “la máquina analítica no pretende crear nada, puede hacer lo que sea si se le ha indicado la forma de hacerlo”. ¿Qué es el aprendizaje? Simon (1983), define el aprendizaje como “cambios en el sistema que se adaptan de manera que permiten llevar a cabo la misma tarea de un modo más eficiente y eficaz”. En la práctica, el aprendizaje se usa para resolver problemas y puede representar la diferencia entre la resolución rápida y la imposibilidad de resolverlo. La idea de poder aprender de la propia experiencia en la resolución de problemas nos lleva a esperar obtener mejores soluciones en un futuro. El aprendizaje esta relacionado con el conocimiento. Puede definirse como el proceso mediante el cual un ente adquiere conocimiento. Este conocimiento puede ser suministrado por otro ente denominado profesor o puede adquirirse sin la ayuda del mismo. Hay distintas formas de aprendizaje, entre las cuales se verán: Aprendizaje memorístico Aprendizaje a través de consejos Aprendizaje mediante experiencia en la resolución de problemas Aprendizaje a partir de ejemplos o Inducción Aprendizaje basado en explicaciones Descubrimiento Analogía Redes Neuronales 3.2. Aprendizaje memorístico El aprendizaje memorístico es la actividad de aprendizaje más básica y rudimentaria. Consiste en el simple almacenamiento de la información computada. Este proceso al cual muchos no llamarían aprendizaje, puede considerarse como tal desde el punto de vista que puede mejorar el rendimiento de un programa existente. Produce un ahorro cuando el efectuar un cálculo nuevamente resulta más caro que reutilizar su resultado conocido. Samuel (1963), en su juego de damas, utiliza una combinación de aprendizaje memorístico y aprendizaje mediante el ajuste de parámetros (sección 3.4.1). Utiliza el algoritmo Minimax, memorizando el valor de evaluación de un tablero raíz. Si en un futuro se llega a una situación similar, se reutiliza la evaluación memorizada en lugar de aplicar la búsqueda nuevamente. Surgen dos cuestiones importantes a considerar: Almacenamiento organizado de la información: para que resulte conveniente reutilizar un valor almacenado debe resultar más rápido buscarlo que recalcularlo, y por lo tanto el almacenamiento debe ser organizado de acuerdo a algún criterio. Ej. En el programa de Samuel, se ordenaba en índices las posiciones del tablero por medio de alguna de las características importantes. Generalización de la información: para mantener en un nivel manejable el número de objetos almacenados se necesita hacer alguna especie de generalización de la información. Ej. detectar situaciones simétricas en el tablero. 3.3. Aprendizaje a través de consejos Otra forma de aprendizaje es a través de consejos. Estos son suministrados por una persona en un lenguaje de alto nivel, por ej. “lucha por controlar el centro del tablero de ajedrez”. El programa es capaz de traducir el consejo en un lenguaje más operativo y usarlo para modificar su comportamiento, por ej., ajuste de la función de evaluación para introducir factor basado en el número de cuadros del centro ocupados por piezas de un color. Mostow (1983), define FOO, un programa que juega con naipes a “corazones”. Ejemplo de consejo: “evitar hacer puntos”, que puede darse en una notación más conveniente tipo LISP: ( evitar (hacerme_puntos (baza) ) ) Después de un proceso de reemplazos, el programa traduce el consejo a ( llevar_a_cabo ( >= (AND ( mismo_palo (carta_mia) posible ( baza_tiene_puntos) ) ) (carta_baja (carta_mia)) ) ) El programa ha convertido un consejo en una heurística específica que puede utilizar al jugar, y que lo capacita para jugar mejor. Una persona podría observar cómo juega el programa, detectar nuevos fallos, y corregirlos mediante nuevos consejos. 3.4. Aprendizaje mediante experiencia en la resolución de problemas En la sección anterior se explica cómo un resolutor de problemas puede mejorar a través de los consejos de un profesor. En esta sección se explica cómo un programa puede mejorar sin ayuda externa sino mediante la generalización de sus propias experiencias. 3.4.1. Aprendizaje por medio del ajuste de parámetros Este procedimiento consiste en usar una función de evaluación f que combina la información recibida de diferentes fuentes p1...pn , para formar un único resumen estadístico. En los juegos, usar una función de evaluación que combina muchos factores importantes dando lugar a un único valor que refleje el deseo de ocupar una posición particular del tablero. Por ej., Samuel (1963) en su juego de damas usa una función de evaluación f = c1 * p1 + ... + c16 * p16 con 16 características que contribuyen a la evaluación. El problema principal es saber asignar a priori los coeficientes, pesos o ponderaciones c1...cn. El problema de asignar el peso adecuado a cada característica se denomina “problema de asignación de crédito”, y su solución no resulta trivial. Una forma de hacerlo es comenzar con alguna estimación de los valores correctos, y entonces, permitir que el programa los modifique en base a su propia experiencia. Existen dos cuestiones importantes al diseñar un programa de aprendizaje basado en el ajuste de parámetros: Cuándo debe aumentar o disminuir el valor un coeficiente Cuánto debe cambiar el valor Aquellas características que parezcan adecuadas deberán aumentar su peso, y aquellas que no lo hagan, los disminuirán. Es decir, los coeficientes de los términos que ayuden a predecir el final deben aumentar mientras que deben disminuir los coeficientes que sean poco predictivos. En aquellos dominios donde se tenga retroalimentación resulta fácil, por ej. un programa de clasificación de patrones utiliza su función de evaluación para clasificar una entrada y obtener la respuesta adecuada, entonces los términos que hayan contribuido a alcanzar ese objetivo deben aumentar su peso. En otros dominios, como los juegos, el programa no obtiene ninguna retroalimentación de los movimientos individuales, y por lo tanto no es posible saber si se ha ganado hasta el final del juego. El programa de Samuel, si bien usa una técnica imperfecta, resolvía este problema. Inicialmente se comenzaba con una función lo suficientemente buena, y a continuación ésta se usaba para proporcionar una retroalimentación a sí misma. Las secuencias de movimientos que llevan a posiciones con valores más altos se pueden considerar como buenas, y los términos en la función que afectan deben reforzarse. Cuando el programa se encontraba en modo aprendizaje, jugaba contra una copia modificada de sí mismo que alteraba su función durante el juego. Si la copia modificada ganaba, la función se tomaba como válida. En caso contrario, se retenía la antigua. Si ésta última situación se repetía varias veces, se trataba de dar un cambio drástico a la función. Periódicamente se eliminaba uno de los 16 términos de la función, y se cambiaba por otro elegido entre 38 características, produciendo un cambio súbito en la función. Las mayores limitaciones de este proceso de aprendizaje son debidas a que no se usa ningún conocimiento acerca de la estructura del problema y las relaciones lógicas entre componentes del mismo. Dado que este proceso puede verse como una variante de la escalada, experimenta las mismas dificultades. Resulta una técnica útil combinada con el uso de conocimiento adicional. 3.4.2. Aprendizaje con macro-operadores Al igual que en el proceso de memorización, el uso de macro-operadores trata de evitar el volver a realizar cálculos que ocupen mucho tiempo. Se denomina macro-operador a una secuencia de acciones que se pueden tratar en conjunto. El programa STRIPS (Fikes & Nilsson, 1971), es un sistema de resolución de problemas mediante robot. Existen un brazo mecánico, con el que se intenta resolver problemas en el dominio del mundo de los bloques. Inicialmente los operadores disponibles son APILAR (A,B), DESAPILAR (A,B), AGARRAR(A), BAJAR(A). Un problema se describe mediante una precondición y una postcondición. Por ejemplo, el siguiente problema: SOBRE (C,B) AND SOBRE (A,MESA) =>SOBRE(A,B) AND SOBRE (C,MESA) Este problema se soluciona con la siguiente secuencia de operadores: DESAPILAR (C,B), BAJAR (C), AGARRAR(A), APILAR (A,B) Después de cada resolución, el componente de aprendizaje toma el plan computado y lo almacena en un macro-operador con las precondiciones y postcondiciones correspondientes. En el futuro, este es un nuevo operador que puede utilizarse para solucionar un subproblema con las mismas pre y postcondiciones. Si se generalizan los macro-operadores antes de almacenarlos, el programa será capaz de hacer uso de él en situaciones no idénticas sino similares. Por ej., la generalización del macro-operador del ejemplo anterior es: DESAPILAR (x3,x2), BAJAR (x3), AGARRAR(x1), APILAR (x1,x2) El cual tiene las siguientes pre y postcondiciones: SOBRE (x3,x2) AND SOBRE (x1,MESA) => SOBRE(x1,x2) AND SOBRE (x3,MESA) 3.4.2. Aprendizaje mediante troceado Esta técnica denominada troceado o chunking es un proceso similar al de los macro-operadores. El programa SOAR (Laid, 1987) es una arquitectura general para construir sistemas inteligentes que usa la técnica de chunking de modo que su rendimiento puede aumentar con la experiencia. Se basa en un conjunto de hipótesis específicas cognoscitivas y motivadas similares a la estructura de resolución de problemas de los hombres. El sistema cuenta de diferentes partes: Memoria de largo plazo: contiene reglas u operadores a aplicar Memoria de corto plazo: almacena hechos deducidos de la aplicación de reglas. Actividades resolutoras: incluyen razonamiento de qué estados se deben explorar y qué reglas se deben aplicar. En lugar de emplear una estrategia fija, la elección de una regla depende de la utilidad que ésta presente frente una situación dada. Cuando el sistema detecta una secuencia de reglas útiles para resolver un subproblema dado, estos resultados intermedios son almacenados o “troceados” para referencia futura. Dado que la resolución de problemas es uniforme, el troceado puede usarse para aprender conocimiento de control de búsqueda general, además de secuencia de operadores. Por ej., si SOAR prueba con varias reglas diferentes pero sólo una le conduce por un camino adecuado en el espacio de búsqueda, entonces SOAR puede construir nuevas reglas que le ayuden a elegir a su vez los operadores de un modo más acertado en el futuro. A diferencia de los macro-operadores, el troceado casi siempre se aplica en dirección a cualquier estado objetivo en lugar de planearse para alcanzar un estado objetivo o postcondición especial. El principal problema consiste en que las reglas ocupan demasiado espacio, y por lo tanto el tiempo de análisis de aplicación de reglas es grande. PRODIGY (Minton, 1989) identifica el problema de la utilidad en los sistemas de aprendizajes. Mantiene una medida de utilidad asociada a cada regla, la cual toma en cuenta la frecuencia de aplicación de la misma, así como el tiempo y memoria consumidos. Si una regla dada tiene una utilidad negativa, se la ignora, por lo tanto se mejoran los tiempos de búsqueda y acceso. 3.5. Aprendizaje a partir de ejemplos o Inducción La clasificación es el proceso de asignarle a una cierta entras concreta el nombre de una clase a la que pertenece. Se emplea en tareas de reconocimiento como por ej. reconocimiento de caracteres, de piezas defectuosas, etc. En primer lugar se deben definir las clases que utilizará la clasificación. Las clases pueden describirse usando: Modelo estadístico: cada clase está definida por una función F que incluye las características ci relevantes del dominio específico ponderadas por un peso pi F = c1 * p1 + ... + cn * pn Modelo estructural: cada clase está definida por una estructura compuesta por las características relevantes del dominio específico. Ej. si la tarea es definir clases de animales, el cuerpo puede verse como una estructura de color, cantidad de patas, longitud, manchas, etc. Dado que la tarea de construir manualmente las clases resulta un proceso difícil, se pretende que el programa de clasificación incluya las definiciones de sus propias clases. El proceso de construir definiciones de clases se denomina aprendizaje de conceptos o inducción. Si las clases se definen con un modelo estadístico, el aprendizaje de conceptos se puede hacer utilizando una técnica conocida como ajuste de parámetros (sección 3.4.1.). En esta sección se verán tres técnicas de aprendizaje de conceptos para clases definidas de un modo estructural. Programa de aprendizaje de Winston Espacios de versiones Árboles de decisión Estas técnicas tienen en común que comienzan el proceso de aprendizaje a partir de una serie de ejemplos de entrenamiento de los que se conoce su clasificación. 3.5.1. Programa de aprendizaje de Winston Winston (1975) describe uno de los primeros programas de aprendizaje de conceptos estructurales. Su objetivo consistía en construir representaciones de las definiciones de conceptos del dominio del mundo de los bloques, por ej. los conceptos “casa”, “arco”, etc. construidos a partir de la estructuración de otros conceptos más simples como “ladrillo”, “cilindro”, etc. El algoritmo tiene tres pasos: 1- Comenzar analizando una instancia conocida del concepto y construir su descripción estructural. 2- Estudiar descripciones de otras instancias conocidas del concepto para generalizar la definición hecha en el paso1. De esta manera, todas las instancias están incluidas en la nueva descripción. 3- Examinar descripciones de “semejantes” u objetos que no son instancias del concepto, para restringir la definición hecha en el paso 2. De esta manera, todos los semejantes están excluidos en la nueva descripción. Ejemplo: se quiere inducir el concepto “arco”. La figura 1 muestra dos instancias de arcos A1 y A2, y una instancia de semejante S1 no considerado arco. A1 A2 FIGURA 1 S1 En el paso 1 se comienza analizando la instancia A1, cuya descripción podría ser: tiene_parte (A1,B1) AND tiene_parte (A1,C1) AND tiene_parte (A1,D1) AND apoya (C1,B1) AND apoya (C1,D1) AND es_un (B1, ladrillo) AND es_un(C1,ladrillo) AND es_un (D1, ladrillo) AND no_union (B1,D1) En el paso 2 se analiza la otra instancia A2, cuya descripción podría ser: tiene_parte (A2,B2) AND tiene_parte (A2,C2) AND tiene_parte (A2,D2) AND apoya (C2,B2) AND apoya (C2,D2) AND es_un (B2, ladrillo) AND es_un(C2,cilindro) AND es_un (D2, ladrillo) AND no_union (B2,D2) Luego, la descripción se generaliza para incluir a ambas instancias: tiene_parte (A,B) AND tiene_parte (A,C) AND tiene_parte (A,D) AND apoya(C,B) AND apoya (C,D) AND es_un(B, ladrillo) AND es_un(C2,objeto) AND es_un(D,ladrillo) AND no_union (B,D) donde se consideró que tanto “ladrillo” como “cilindros” eran instancias de una clase superior “objeto”. En el paso 3 se considera la instancia del semejante S1: tiene_parte (S1, T1) AND tiene_parte (S1, U1) AND tiene_parte (S1,V1) AND apoya(U1,T1) AND apoya (U1,V1) AND es_un(T1, ladrillo) AND es_un(U1,ladrillo) AND es_un(V1,ladrillo) La definición del concepto debe ahora modificarse para que explícitamente el semejante sea excluido de la misma. La relación no_union es la única diferencia con las instancias del concepto. Dado que ésta puede haberse establecido por casualidad debido al número pequeño de instancias consideradas, la definición debe excluir de manera explícita al semejante fortaleciendo la relación con “no_debe_union”: Por lo tanto, la descripción queda de la siguiente manera: tiene_parte (A,B) AND tiene_parte (A,C) AND tiene_parte (A,D) AND apoya(C,B) AND apoya (C,D) AND es_un(B, ladrillo) AND es_un(C2,objeto) AND es_un(D,ladrillo) AND no_debe_union (B,D) Uno de los problemas de este enfoque de aprendizaje es que debe existir un profesor que conduzca el programa mediante una serie de ejemplos escogidos y ordenados cuidadosamente. 3.5.2. Espacios de versiones Mitchell (1977) describe el aprendizaje llamado espacios de versiones (version spaces). El objetivo es el mismo que en el esquema anterior, es decir, producir una descripción de un concepto a partir de un entrenamiento con ejemplos positivos y negativos. Difiere del esquema anterior en que no se ve afectado por el orden en que se presentan los ejemplos. Además, en lugar de describir un único concepto este esquema mantiene un conjunto de descripciones posibles hasta arribar a la definición del mismo. Para representar un concepto se usa un lenguaje de representación basado en marcos. Por ejemplo, el concepto “coche” se representa: origen = x1 marca = x2 color = x3 década = x4 tipo = x5 donde x1 {Japón, EEUU, UK, Italia,...} x2 {Honda, Toyota, Chrysler, Fiat,...} x3 {azul, blanco, amarillo, verde,...} x4 {1950,1960,1970,1980,1990,2000,...} x5 {económico, lujo, deportivo,...} Un ejemplo o instancia del concepto “coche” en particular: origen = Japón marca = Honda color = azul década = 1970 tipo = económico La descripción de conceptos se puede poner en términos de ranuras y valores. Por ejemplo, el concepto “coche económico japonés” origen = Japón marca = x2 color = x3 década = x4 tipo = económico El objetivo es producir una descripción como la anterior que sea consistente con todos los ejemplos de entrenamiento positivos y que no lo sea con los ejemplos de entrenamiento negativos. Dado que existen descripciones más generales que otras se puede establecer un orden parcial entre ellas. La ordenación parcial completa se denomina espacio de conceptos. La parte superior del espacio de conceptos se denomina G y constituye la descripción nula que consta sólo de variables (ej. concepto “coche”). La parte inferior denominada S la constituyen todas las posibles instancias de entrenamiento que no contienen variables. El concepto destino se encuentra en algún lugar del espacio de conceptos intermedio entre los extremos G y S. A medida que se procesan los ejemplos de entrenamiento se va refinando la noción de dónde se encuentra el concepto destino. Existe un subconjunto del espacio de conceptos llamado espacio de versiones constituida por todas las descripciones por las que se va pasando a medida que se procesan los ejemplos. El algoritmo de eliminación de candidatos reduce el espacio de versiones a medida que procesa los ejemplos, y se describe a continuación: 1- Inicializar G con la descripción nula. 2- Inicializar S con el primer ejemplo positivo. 3- Aceptar un nuevo elemento de entrenamiento. Si es ejemplo positivo, eliminar de G cualquier descripción que no lo cubra. Actualizar S generalizándolo lo menos posible de manera que cubra el ejemplo. Si es ejemplo negativo, eliminar de S cualquier descripción que lo cubra. Actualizar G especificándolo lo menos posible de manera que no cubra el ejemplo. 4- Si S y G con unitarios e iguales el concepto destino se alcanzó. Si en cambio son unitarios y diferentes, los ejemplos de entrenamiento son inconsistentes. En otro caso, repetir paso 3. Ejemplo: inducir el concepto "coche económico japonés" Se inicializa G con: G = { (x1,x2,x3,x4,x5)} - El primer ejemplo positivo: origen = Japón marca = Honda color = azul década = 1970 tipo = económico sirve para inicializar S con: S = { (Japón,Honda,azul,1970,económico)} - El segundo ejemplo es negativo: origen = Japón marca = Toyota color = verde década = 1970 tipo = deportivo y por lo tanto se especifica G para no incluirlo: G = { (x1,Honda,x3,x4,x5), (x1,x2,azul,x4,x5), (x1,x2,x3,x4,económico)} En este caso no se elimina ningún elemento de S pues este ejemplo no está incluido. - El tercer ejemplo es positivo: origen = Japón marca = Toyota color = azul década = 1990 tipo = económico y por lo tanto se eliminan de G las descripciones inconsistentes para incluirlo: G = {(x1,x2,azul,x4,x5), (x1,x2,x3,x4,económico)} y generalizo S lo mínimo posible para incluir este ejemplo: S = { (Japón,x2,azul,x4,económico)} - El cuarto ejemplo es negativo: origen = EEUU marca = Chrysler color = azul década = 1980 tipo = económico y por lo tanto se especifica G para no incluirlo: G = { (Japón,x2,azul,x4,x5), (Japón,x2,x3,x4,económico)} En este caso no se elimina ningún elemento de S pues este ejemplo no está incluido. - El quinto ejemplo es positivo: origen = Japón marca = Honda color = blanco década = 1980 tipo = económico y por lo tanto se eliminan de G las descripciones inconsistentes para incluirlo: G = {(Japón,x2,x3,x4,económico)} y generalizo S lo mínimo posible para incluir este ejemplo: S = { (Japón,x2,x3,x4,económico)} Dado que G y S convergen en un conjunto unitario se llegó a la descripción del concepto buscada. Los ejemplos negativos deberían ser lo más parecido a los positivos anteriores (especifico G y elimino de S rápido), y los positivos lo más diferentes posible (elimino de G y generalizo S rápido), para que la convergencia se produzca más rápido. Uno de los problemas de este esquema de aprendizaje es el ruido, es decir, un error en el etiquetado de un ejemplo, puede causar que se pode del espacio de versiones el concepto destino. Por ejemplo, si el coche ejemplo 3 se etiqueta como negativo por error, no se llega al concepto de coche económico japonés. Una forma de solucionar este problema (Mitchell, 1978) consiste en mantener varios conjuntos G y S. Un conjunto G es consistente con todas las instancias de entrenamiento, otro lo será con todas menos una, otro con todas menos dos, etc. (idem para S). Cuando se presenta una inconsistencia, el algoritmo cambia de conjuntos de entrenamiento. Sin embargo, mantener múltiples espacios de versiones puede resultar muy costoso. 3.5.3. Árboles de decisión Un tercer enfoque para el aprendizaje de conceptos a partir de ejemplos de entrenamiento lo constituyen los árboles de decisión (decision trees). El programa ID3 (Quinlan, 1986) utiliza una representación de árbol para los conceptos. Para clasificar una entrada particular, se empieza por la parte superior del árbol y se responden pregunta hasta llegar a una hoja en donde se guarda la clasificación. Por ejemplo, la figura 2 muestra la especificación con un árbol de decisión del concepto "coche económico japonés". Origen? EEUU Italia UK (-) (-) (-) Japón Tipo? deportivo (-) económico lujo (+) (-) FIGURA 2 El programa ID3 construye automáticamente un árbol de decisión dadas diferentes instancias positivas y negativas del concepto destino. Es básicamente un algoritmo iterativo, que comienza eligiendo un subconjunto aleatorio de ejemplos de entrenamiento llamado "ventana". El algoritmo construye un árbol que clasifica todos los ejemplos de la ventana, y prueba con ejemplos de entrenamiento fuera de la ventana. Si todos los ejemplos son correctamente clasificados, el algoritmo finaliza. En caso contrario, se añaden a la ventana un número de ejemplos y el proceso se repite. Los árboles se construyen creando nodos a partir de atributos que proporcionan más información que otros. Por ejemplo, probar con el atributo color es menos útil que el origen, pues el primero no ayuda a la hora de clasificar correctamente. Cuando se llega a atributos que dividen perfectamente las instancias de entrenamiento en subconjuntos cuyos miembros participan con una etiqueta común (positivo o negativo) la ramificación ha terminado y los nodos hoja están etiquetados. 3.6. Aprendizaje basado en explicaciones En la sección anterior se explicó un aprendizaje basado en la inducción de la descripción de un concepto a partir de una serie de ejemplos de entrenamiento positivos y negativos. El problema de este enfoque es que se necesita un número elevado de ejemplos para inducir conceptos complejos. A veces se aprende mejor a partir de una única experiencia en lugar de miles de ejemplos positivos y negativos. El uso de conocimiento específico permite identificar los aspectos críticos del ejemplo de entrenamiento. Este enfoque se denomina aprendizaje basado en explicaciones (explanation-based learning EBL). Tanto Mitchell (1986) como DeJong y Mooney (1986) describen algoritmos de trabajo EBL que aceptan como entrada: Una descripción de un ejemplo de entrenamiento Una descripción de alto nivel del concepto objetivo que debe aprender el programa Un criterio de operatividad o descripción de qué conceptos son aprovechables Una teoría del dominio o conjunto de reglas específicas del dominio. El algoritmo realiza dos pasos: 1- Explicación: realiza una explicación del por qué el ejemplo de entrenamiento es una instancia del concepto objetivo. Usa el conocimiento de la teoría del dominio y poda los aspectos del ejemplo de entrenamiento que no son importantes respecto al concepto objetivo. 2- Generalización: realiza una generalización de la explicación del paso 1 para describir el concepto objetivo. Ejemplo: se quiere dar una explicación del concepto "copa". A diferencia de la inducción a partir de ejemplos del concepto "arco" (sección 3.5.1.), se realizará la explicación del concepto "copa" a partir de un único ejemplo de entrenamiento junto con el conocimiento que se tiene del dominio específico de objetos. Se tiene como entrada: Una descripción de un ejemplo de entrenamiento objeto1: tiene_parte (objeto1,fondo1) AND es(fondo1, plano) AND tiene_parte(objeto1,asa1) AND tiene_parte (objeto1,concavidad1) AND es(objeto1,ligero) AND propietario(objeto1,Pepe) AND color (objeto1, cristalino) AND es(concavidad1, hacia_arriba) AND . . . Una descripción de alto nivel del concepto objetivo que debe aprender el programa COPA (x) <=> se_puede_agarrar(x) AND estable (x) AND recipiente_abierto(X) Un criterio de operatividad o descripción de qué conceptos son aprovechables El concepto debe expresarse en términos puramente estructurales (ej. características como ligero, plano, etc. en lugar de otras como posesión, color, etc.). Una teoría del dominio o conjunto de reglas específicas del dominio. - es (x,ligero) AND tiene_parte (x,y) AND es_un (y,asa) => se_puede_agarrar(x) tiene_parte(x,y) AND es_un(y,fondo) AND es(y,plano) => estable(x) tiene_parte(x,y) AND es_un(y,concavidad) AND es (y, hacia_arriba) => recipiente_abierto(x) etc. - En el paso 1 se trata de realizar la explicación de por qué el ejemplo de entrenamiento objeto1 es una instancia del concepto destino COPA(x). Para ello se realiza un proceso de demostración de teoremas usando la descripción del objeto1 junto con el conocimiento del dominio. Se llega a afirmaciones como las siguientes: es (objeto1,ligero) AND tiene_parte (objeto1,asa1) AND es (asa1,asa) => se_puede_agarrar(objeto1) AND tiene_parte(objeto1,fondo1) AND es_un(fondo1,fondo) AND es (fondo1,plano) => estable(objeto1) AND tiene_parte(objeto1,concavidad1) AND es_un(concavidad1,concavidad) AND es (concavidad1, hacia_arriba) => recipiente_abierto(objeto1) por lo tanto COPA(objeto1) En esta demostración se observa que no aparecen los predicados propietario y color, y que por lo tanto la prueba aísla las características relevantes del ejemplo de entrenamiento. En el paso 2, se sustituyen las constantes por variables generalizando la demostración para obtener la siguiente descripción de una "copa": COPA(x) <=> es (x,ligero) AND tiene_parte (x,y) AND es (y,asa) AND tiene_parte(x,z) AND es_un(z,fondo) AND es (z,plano) AND tiene_parte(x,w) AND es_un(w,concavidad) AND es(w,hacia_arriba) A diferencia que el método de inducción que extrae todo el conocimiento de los ejemplos, en este enfoque se centra todo el conocimiento en la teoría del dominio. El EBL podría aplicarse sin tener en cuenta un ejemplo de entrenamiento, ya que la teoría del dominio tiene toda la información requerida. Esto caracterizaría el rango completo de objetos que satisfacen el concepto objetivo, incluso aquellos que no existen en el mundo real. Para centrar el aprendizaje en las operacionalizaciones importantes, se usa la descripción del ejemplo de entrenamiento la cual acota y guía hacia el concepto objetivo deseado. 3.7. Descubrimiento Según se definió en la introducción, el aprendizaje es un proceso por medio del cual una entidad adquiere conocimiento. Normalmente, otras entidades poseen ese conocimiento y sirven de profesores. A veces, no existen entidades que posean el conocimiento que se busca. El descubrimiento es una forma de aprendizaje en la que una entidad adquiere conocimiento sin la ayuda de un profesor. En esta sección se verán tres tipos de descubrimiento: Descubrimiento conducido por teorías Descubrimiento conducido por datos Clustering sistemas automáticos de 3.7.1. Descubrimiento conducido por teorías Lenat (1977;1982) realizó el programa AM el cual realiza el descubrimiento de una gran cantidad de cosas sobre la teoría de números a partir de pocos conceptos básicos de la teoría de conjuntos. AM utiliza una búsqueda heurística con 250 reglas, las cuales son indicaciones acerca de las actividades que probablemente servirán de guías para alcanzar el descubrimiento. Por ej. - Si f es función de A en B, y B está ordenado =>crear un nuevo concepto que surge de considerar los elementos de A que se corresponden con los extremos de B - Si algunos ejemplos del concepto X también son ejemplos de otro concepto Y => crear un nuevo concepto que represente la intersección entre X e Y - Si hay muy pocos ejemplos de un concepto X => añadir a la lista de tareas la de encontrar una generalización de X - etc. El programa utiliza generación y prueba para formar hipótesis basadas en número pequeño de ejemplos, y luego prueba la hipótesis con un conjunto mayor para comprobarla. AM tiene una agenda de tareas sugeridas por las heurísticas de mayor interés, y en cada paso se elige realizar la tarea más prometedora. Ejemplo: AM llega a descubrir el concepto de números primos 1- AM exploró las operaciones de +, *, - y / de los números naturales. 2- AM creo el concepto de divisibilidad 3- AM encuentra que algunos números tienen pocos divisores 4- AM sigue la heurística de explorar extremos, y encuentra que: - el conjunto de números que no tienen divisores esta vacío - el conjunto de números que tienen 1 divisor es {1} - el conjunto de números que tienen 2 divisores: crea nuevo concepto "primos" - el conjunto de números que tienen 3 divisores: encuentra el 49 5- AM trata de relacionar la propiedad descubierta del 49 con otras propiedades como la de ser impar y ser cuadrado perfecto. 6- AM genera otros números impares y cuadrados perfectos para verificar la hipótesis. 7- Con los últimos descubrimientos, AM eleva el interés del concepto de divisor. AM investiga maneras en que un número puede descomponerse en factores o componentes multiplicativos. AM descubre que hay sólo una manera de descomponer un número en factores primos (Teorema de la factorización única). 8- AM decide explorar lo mismo con componentes aditivos. Ademas de descubrir cosas con poco interés (ej. un número se descompone como suma de números 1), también descubre fenómenos como el de que muchos números pueden expresarse como suma de dos primos. A base de listar casos descubre que todos los números >= 2 tienen esa propiedad (Conjetura de Goldbach). Una de las primeras preguntas sobre AM fue si era capaz de descubrir nuevos hechos desconocidos por los matemáticos. La respuesta es negativa debido a que la limitación de AM son las heurísticas fijas. Se propuso como solución a este problema el considerar a las heurísticas como el propio dominio del problema del que se quieren realizar nuevos descubrimientos. Siguiendo esta idea, AM debería ser capaz de descubrir nuevas heurísticas. Lamentablemente, debido a que los conceptos son más grandes y complejos que en la teoría de números, estos experimentos no tuvieron el éxito esperado. 3.7.2. Descubrimiento conducido por datos A diferencia del descubrimiento en un encuadre teórico visto en la sección 3.7.1., Langley (1981) realiza un modelo de descubrimiento científico conducido por datos llamado BACON. Al igual que un científico empírico, BACON diseña y ejecuta experimentos con datos para validar hipótesis. Tiene heurísticas que le ayudan en el proceso, como por ejemplo buscar relaciones lineales entre variables. Ejemplo: estudio del comportamiento de los gases 1- BACON comienza con un conjunto de variables P: presión del gas V: volumen del gas T: temperatura del gas N: cantidad de gas 2- BACON considera como constantes las variables N y T, y realiza experimentos variando P. Se da cuenta de que si aumenta P, la variable V disminuye. Descubre que P * V = constante. Continúa el proceso variando T, y encuentra que existe relación lineal entre P*V y T. Finalmente varía n y encuentra que existe relación lineal entre N y P*V/T, descubriendo la ley de los gases ideales: P * V / N * T = 8.32 3.7.3. Clustering Al igual que en el proceso de aprendizaje por inducción, se cuenta con ejemplos de entrenamiento pero a diferencia de éste no existe un profesor que proporcione la clasificación de los mismos. El descubrimiento por medio de agrupamiento o clustering se basa en descubrir las clases naturales que existen en los ejemplos de entrenamiento, sin la ayuda de un profesor. AUTOCLASS (Cheeseman, 1988) es un programa que acepta un número de casos de entrenamiento y obtiene un conjunto de clases. Ante la presencia de un nuevo caso para el cual el programa no fue entrenado, éste proporciona un conjunto de probabilidades que predicen en qué clase irá incluido. AUTOCLASS realiza el clustering utilizando el razonamiento Bayesiano estadístico. Resulta interesante saber que AUTOCLASS fue probado con datos del espectro infrarrojo de las estrellas y encontró tan sólo 9 clases, dato aún desconocido para los astrónomos. 3.8. Analogía La analogía es una correspondencia entre conceptos aparentemente diferentes. Es una herramienta de inferencia utilizada naturalmente en nuestro lenguaje y razonamiento. Por ejemplo, si tomamos la frase "el mes pasado la bolsa era como una montaña rusa", por analogía podemos entender que la bolsa sufrió grandes fluctuaciones. Para entender la frase debemos: 1- Escoger una propiedad clave de la montaña rusa, por ejemplo, que baja y sube muy rápido. 2- Darse cuenta de que el viaje físico es una analogía para la fluctuación numérica de la bolsa. Este proceso no es tan fácil, pues el espacio de analogías es muy amplio y no debe caerse en conclusiones erróneas como "la bolsa es como una montaña rusa porque está hecha de metal". Los hombres resuelven problemas haciendo analogías con cosas que ya conocen. Este proceso es más complejo que el resolver problemas mediante macro-operadores (sección 3.4.1.), dado que el nuevo problema resulta muy diferente al problema primitivo ya resuelto. Existen dos métodos de resolución de problemas por analogía: Analogía transformacional Analogía derivacional 3.8.1. Analogía transformacional La idea de la analogía transformacional es transformar una solución de un problema previo en la solución del nuevo problema a resolver (figura 3) Problema nuevo Problema viejo Solución nueva Solución vieja transformar FIGURA 3 Ejemplo: Anderson y Kline (1979) crearon un programa de resolución de problemas de geometría plana. El programa ha visto demostraciones acerca de puntos y segmentos lineales, y puede por ejemplo probar un teorema sobre ángulos. Problema viejo: Problema nuevo: Y N C B D E O R A Solución al problema viejo: Solución al problema nuevo: A partir de Sustituye la noción de punto por la de línea, y la de segmento por la de ángulo: R por AE, O por AD, N por AC, Y por AB RO = NY Realiza la demostración de RN = OY: RO = NY ON = ON RO + ON = ON + NY RN = OY EAD = CAB DAC = DAC EAD + DAC = DAC + CAB EAC = DAB 3.8.2. Analogía derivacional A menudo las peculiaridades involucradas en la resolución de un problema antiguo son relevantes para resolver el nuevo. Al razonamiento por analogía que toma en cuenta el historial detallado del episodio de resolución se le llama analogía derivacional (figura 4). Este enfoque resulta un área extensa de investigación en la actualidad (Hall, 1989). Problema nuevo Problema viejo derivación nueva derivación vieja Solución nueva Solución vieja FIGURA 4 Ejemplo: se ha codificado en C++ una rutina de clasificación, y se pide recodificar la misma rutina en LISP. Una traducción línea por línea del programa no resulta adecuada, sino que se deberían reutilizar el análisis, las principales decisiones estructurales y de control que se tomaron al construir el programa en C++. Una manera de modelar este comportamiento es tener un resolutor de problemas que repita la derivación previa y que la modifique cuando sea necesario. 3.9. Aprendizaje con Redes Neuronales Los primeros esfuerzos en el aprendizaje de máquinas intentaron imitar el aprendizaje animal a nivel neuronal. Las redes neuronales han visto su resurgimiento en los años recientes, como resultado del descubrimiento de nuevos y poderosos algoritmo de aprendizaje. Dadas las amplias características que se pueden encontrar en las neuronas, la gente que intenta entender y duplicar su comportamiento se centra en tan sólo unas cuantas características notables de las mismas. En esta sección se verán diferentes tipos de redes neuronales: Redes neuronales de alimentación positiva Perceptrones Redes de interpolación y de aproximación 3.9.1. Redes neuronales de alimentación positiva Una neurona consta de las siguientes partes (figura 5): - Un cuerpo; - Muchas dendritas: protuberancias que facilitan la conexión con los axones de otras neuronas; - Un axón: protuberancia que transporta la salida de la neurona hasta las conexiones de otras neuronas. Una neurona es un dispositivo de todo o nada. La neurona no hace nada a menos que la influencia colectiva de todas sus entradas (sinapsis) alcance un nivel de umbral. En ese caso la neurona se dispara, es decir, produce una salida de potencia completa, que se manifiesta como un pulso estrecho que se desplaza del cuerpo por el axón, hasta las ramas de este. dendritas axón cuerpo FIGURA 5 Considerando estas características se puede realizar el modelo de neurona indicado en la figura 6. W1 W2 F=Σ si*wi 1 si F > umbral 0 si F<= umbral Wi FIGURA 6 Los pesos wi modelan las propiedades de las sinapsis; la sumatoria de la función de activación modela la capacidad de combinar la influencia de todas las dendritas; la función de umbral que da como resultado 1 ó 0 modela la característica de todo o nada de los mecanismos del cuerpo de la célula. columna i columna j FIGURA 7 columna k columna z Se puede realizar una red neuronal organizada por columnas según se muestra en la figura 7. La primera columna de la red es la que recibe la alimentación inicial. Cada neurona de una columna produce una salida que alimenta a las neuronas de la siguiente columna. Finalmente la ultima capa de neuronas es la única que produce una salida visible, y por esto el resto de las neuronas se denominan nodos ocultos. Ejemplo: la figura 8 muestra una red neuronal que, a partir de dos entradas activadas entre los elementos A1,A2,A3, B1,B2,B3 (los tres primeros de la clase A y los tres últimos de la clase B), reconoce si éstos son de igual o distinta clase. A1 A2 1 1 1 Nodo11 0.5 Nodo21 1 1.5 A3 Distinta clase 1 -1 B1 B2 B3 1 1 1 0.5 -1 Nodo12 -1.5 Igual clase Nodo22 FIGURA 8 Para solucionar este problema se realiza la red neuronal mostrada en la figura anterior, que consta de una capa de nodos ocultos y una capa de nodos de salida que emiten las conclusiones. Se muestran los pesos asignados a las entradas además de los umbrales de cada nodo. Si por ejemplo, sólo se activan las entradas A1 y A3: el nodo11 computa 1*A1+1*A2+1*A3 = 1*1+1*0+1*1 = 2, y como 2>0.5 su salida S11=1 el nodo12 computa 1*B1+1*B2+1*B3 = 1*0+1*0+1*0 = 0, y como 0<=0.5 su salida s12= 0 el nodo21 computa 1*S11+1*S12 = 1*1+1*0 = 1, y como 1<=1.5 su salida S21=0. el nodo22 computa (-1)*S11+(-1)*S12 = (-1)*1+(-1)*0 = -1, y como –1>(-1.5) su salida S22=1. La interpretación de las salidas nos indica que las entradas A1 y A3 son de igual clase. Queda como ejercicio pendiente el probar con entradas de distinta clase, por ejemplo A1 y B1. Entrenamiento de redes neuronales Luego de un primer ejemplo con redes neuronales se puede concluir que la tarea más difícil es la asignación de los pesos wi y los umbrales para que la red se comporte de la manera deseada. En la práctica, las redes neuronales se entrenan con una serie de muestras de entrenamiento de manera que realizan el aprendizaje automático de los pesos y umbrales. Se consideran ejemplos de entrada de los que se conoce la salida deseada. A continuación se realiza el entrenamiento iterativo de la red con estos ejemplos. En cada paso se realizan pequeños ajustes a los valores de pesos y umbrales para acercarlos a los valores que proporcionarán el comportamiento deseado de la red. El entrenamiento finaliza cuando la salida obtenida sea la deseada. El algoritmo de entrenamiento usa una medida de calidad que indica la calidad de la red actual, es decir, cómo se comporta la red con los ejemplos de entrenamiento. La medida de calidad estará dada en función de los pesos y umbrales, y por lo tanto puede considerarse una función en el campo vectorial de los pesos y umbrales. En particular puede usarse la siguiente medida de calidad P: P = Σs Σz (-esz)2 donde s: índice para las muestras de entrenamiento z: índice para las salidas esz =dsz - osz, es el error entre la salida z-ésima deseada dsz y la salida z-ésima obtenida osz para la muestra s-ésima. El objetivo del algoritmo de entrenamiento es obtener en cada paso, los cambios de los valores de pesos y umbrales que proporcionen la máxima mejora de la medida de calidad. Esto es lo que se denomina ascenso del gradiente (el gradiente de una función indica la dirección en la que se encuentra la máxima variante de la función). Antes de seguir con el algoritmo de entrenamiento, cuestiones: se consideran dos Es conveniente tratar a pesos y umbrales de manera similar, por esto se unifica dicho tratamiento. En lugar de considerar una función de activación 1 si F=Σ si*wi > umbral 0 si F=Σ si*wi <= umbral se considera una nueva F’ 1 si F’=Σ si*wi – umbral > 0 0 si F’=Σ si*wi – umbral <= 0 De esta manera, el umbral es tratado como un peso de una entrada extra que siempre está en –1. Dado que la función de activación contiene un salto (figura 9.a) para tratarla matemáticamente en el algoritmo a explicar, se transforma en una función suave de derivada continua (figura 9.b). 1 1 0 0 0 0 a) b) FIGURA 9 La derivada de la función umbral F con respecto a su argumento se puede expresar como: F() = o (1-o) ECUACIÓN 1 Recordemos el objetivo: se tienen una serie de pesos que se desean mejorar y se tiene un conjunto de muestras de entrada junto con la salida deseada de cada una. La idea de ascenso del gradiente consiste en ascender la calidad o mejora de la función P más rápidamente, mediante la alteración de todos los pesos en proporción a la derivada parcial correspondiente. El cambio a cada peso en particular se realiza en la medida que este conduzca a reducir el error observado en la salida. En otras palabras, en cada paso, la variación de cada peso wi->j (correspondiente a la conexión de un nodo de la columna i con otro de la columna j) será proporcional a la derivada parcial de la medida de calidad P con respecto al peso: wi->j P wi->j ECUACIÓN 2 La medida de calidad P está dado como una suma sobre todas las muestras de entrada. A continuación se enfoca la atención a una muestra de entrada en particular para reducir los subíndices, sabiendo que luego se realizará la suma de los ajustes derivados de cada muestra. Para realizar la derivada parcial de P con respecto a wi->j de manera eficiente, se expresa usando la regla de la cadena, mediante la variable intermedia o j (la salida del nodo de la columna j): P = P o j wi->j o j wi->j ECUACIÓN 3 Dado que la salida de un nodo de la columna j, oj, es calculada en base a las entradas (salidas de los nodos de la columna anterior i), mediante la función umbral, se expresa como: o j = F(i oi wi->j) = F(i) ECUACIÓN 4 Luego se expresa la derivada parcial de la salida o j con respecto a wi->j usando la regla de la cadena, mediante la variable intermedia i: o j = F(i) i = wi->j i wi->j o i o j(1-o j) ECUACIÓN 5 Como el efecto de oj sobre P se efectúa a través de las salidas de los nodos de la capa siguiente, las ok, se puede aplicar la regla de la cadena para calcular la derivada parcial de P con respecto a oj : P oj k = P ok ok oj ECUACIÓN 6 Cada salida ok se determina mediante la suma de todas las entradas al nodo k, pasando el resultado a través de la función umbral F: o k = F(j oj wj->k)= F(k) ECUACIÓN 7 Se puede expresar entonces la derivada parcial de o k con respecto a oj usando la regla de la cadena mediante la variable intermedia k como: ok = F(k) k oj k oj = wj->k ok (1- ok) ECUACIÓN 8 Finalmente, la derivada de P con respecto a oj se expresa como: P oj k = P wj->k ok (1- ok) ok ECUACIÓN 9.a Se debe determinar la derivada parcial de P con respecto a la salida de la última capa oz: P = oz P -(dz - oz) 2(dz - oz) = oz ECUACIÓN 9.b Si se sustituyen estos cálculos en la ecuación 3 de la derivada parcial de P con respecto a wi->j y se multiplica por un factor de rapidez r, se obtiene: P = r P oi oj (1-oj) wi->j o j ECUACIÓN 10 En primer lugar, de la ecuación 10 se concluye que la derivada parcial de la medida de calidad con respecto a un peso depende de la derivada parcial de la medida de calidad con respecto a la salida. En segundo lugar, de la ecuación 9.a se concluye que la derivada parcial de la medida de calidad con respecto a una salida depende de la derivada parcial de la medida de calidad con respecto a las salidas de la capa siguiente. Por lo tanto, la derivada parcial de la medida de calidad con respecto a variables de una capa dada, se da en términos de los cálculos que ya se necesitaron dos capas a la derecha. Algoritmo de retropropagación 1.- Tomar parámetro de rapidez r 2.- Inicializar los pesos 3.- Hasta que la medida de calidad P sea satisfactoria, por cada muestra de entrada: a.- Calcular la salida resultante b.- Para los nodos de la capa de salida, calcular ecuación 9.a c.- Para los demás nodos ocultos, calcular ecuación 9.b d.- Calcular los cambios en los pesos con la ecuación 10 e.- Acumular los cambios de los pesos Cambiar los pesos con los cambios acumulados para todas las muestras Los cambios en los pesos son proporcionales a los errores de salida, y las salidas tenderán a 1 y 0, en consecuencia la medida de calidad normalmente se considera satisfactoria cuando, todas las salidas cuyo valor deseado es: - 1, muestran valores > 0.9 0, muestran valores < 0.1 A continuación se señalan algunas características del entrenamiento de redes neuronales: El entrenamiento puede requerir un número de pasos grande. Los pesos iniciales pueden ser puestos al azar, o siguiendo algún patrón regular con la condición de que sean diferentes entre sí. Si el parámetro de rapidez r es muy alto, los pesos se ajustan más rápido pero puede producirse inestabilidad en la red El entrenamiento de una red con muchas salidas puede hacerse: - en etapas: primero se entrena para una salida, luego se agrega otra y se entrena comenzando con los pesos ya entrenados para la primera, a continuación se entrena agregando una tercera salida, etc. - simultáneamente: la red se entrena para todas las salidas a la vez. Las redes neuronales se vuelven erráticas y poco confiables si tienen muchos pesos, situación denominada sobreentrenamiento. La siguiente heurística se usa para evitarlo: no de pesos < no de muestras de entrenamiento Una red neuronal entrenada puede usarse para predecir la salida de un elemento de entrada para el cual no fue entrenada. El diseño de redes neuronales es más considerado arte que exactitud. Se pueden enumerar diferentes consideraciones a la hora de diseñar una red neuronal: Representar la información y el problema a resolver mediante una red neuronal. Es decir, expresar los datos conocidos como entradas de la red, e interpretar las salidas de la red para determinar la solución del problema. Número nodos, capas ocultas, entradas, salidas, pesos, debe tener la red neuronal: si es muy pequeña tal vez no aprenda, pero si es muy grande es lenta de entrenar y se puede producir sobreentrenamiento. Parámetro de rapidez r: si muy es pequeño el entrenamiento es muy lento, pero si es muy grande se puede producir inestabilidad. Entrenamiento en etapas o simultáneo. Muestras de entrenamiento. 3.9.2. Perceptrones El perceptrón (figura 10) es la red neuronal más simple posible. Consta de: 1 neurona. una o más entradas binarias 1/0. cajas lógicas que pueden interponerse entre las entradas y el perceptrón. Cada caja lógica actúa de acuerdo a una tabla de verdad que produce una salida 1/0 para cada combinación posible de las entradas. una salida igual a 1/0 producida por la función umbral de la suma ponderada de las salidas de las cajas lógicas. X1 l1 X2 X3 li W1 Wi F=Σ li*wi 1 si F > umbral 0 si F<= umbral X4 ... Xm ln Wn FIGURA 10 Si hay m entradas, existen 2m combinaciones posibles de las mismas. Por lo tanto, si este número es muy grande no puede ser atendido por una sola caja lógica. Puede hacerse la siguiente clasificación de perceptrones: Perceptrón limitado por el orden n: cada caja lógica atiende n o menos entradas. Perceptrón limitado por el diámetro d: si las entradas se disponen bidimensionalmente (denominadas retina), cada caja lógica atiende entradas que están dentro de un círculo de diámetro d. Perceptrón directo: cada caja lógica atiende una entrada igual a la salida (equivale a perceptrón sin cajas lógicas). Existe un procedimiento simple para encontrar el conjunto de pesos. La idea consiste en ajustar los pesos cada vez que el perceptrón produce una respuesta errónea con una muestra, de manera que el error sea menos probable. Se incrementa o decrementa en 1 cada peso wi cuya salida de la cada lógica li correspondiente sea 1, dado que sólo estos pueden modificar la salida del perceptrón. Esto es equivalente a sumar o restar los vectores w y l. Al igual que en el entrenamiento de redes neuronales, el umbral es tratado como un peso agregando una entrada virtual siempre en 1 ponderada por (-umbral). El algoritmo de entrenamiento de perceptrón es el siguiente: 1- Inicializar el vector de pesos con (0,0,...,0) 2.- Hasta que el perceptrón produzca el resultado correcto con cada muestra de entrenamiento, por cada muestra: Si produce un 0 cuando debe producir 1: w = w + l Si produce un 1 cuando debe producir 0: w = w - l Si no se equivoca con la muestra no hacer nada. Este algoritmo converge siempre y cuando la solución exista para el conjunto de muestras de entrenamiento. Existen algunas tareas incluso superficialmente fáciles para las cuales el perceptrón no encuentra solución, por ejemplo, no puede reconocer conectividad en una imagen. Ejemplo: entrenar un perceptrón para que realice la operación lógica OR entre dos entradas. En este caso se utiliza un perceptrón directo, en el cual las entradas x coinciden con las salidas de las cajas lógicas l (figura 11). W1 X1 W2 X2 1 F=Σ li*wi 1 si F > 0 0 si F<= 0 W3 FIGURA 11 Se utiliza una tercera entrada siempre en 1 para modelar el umbral igual a (-w3). Las muestras de entrada son las siguientes: Muestras x1=l1 x2=l2 x3=l3 1 2 3 4 0 0 1 1 0 1 0 1 1 1 1 1 Salida deseada 0 1 1 1 1- Inicializa el vector w = (0,0,0) 2- Cicla a través de las muestras hasta que la salida obtenida con cada una sea igual a la salida deseada. - Muestra 1, salida = (0,0,1) (0,0,0) = 0, igual a la salida deseada. Muestra 2, salida = (0,1,1) (0,0,0) = 0, diferente a la salida deseada. Ajustar el vector w = (0,0,0) + (0,1,1) = (0,1,1) Muestra 3, salida = (1,0,1) (0,1,1) = 1, igual a la salida deseada. Muestra 4, salida = (1,1,1) (0,1,1) = 1, igual a la salida deseada. Muestra 1, salida = (0,0,1) (0,1,1) = 1, diferente a la salida deseada. Ajustar el vector w = (0,1,1) - (0,0,1) = (0,1,0) Muestra 2, salida = (0,1,1) (0,1,0) = 1, igual a la salida deseada. Muestra 3, salida = (1,0,1) (0,1,0) = 0, diferente a la salida deseada. Ajustar el vector w = (0,1,0) + (1,0,1) = (1,1,1) Muestra 4, salida = (1,1,1) (1,1,1) = 1, igual a la salida deseada. Muestra 1, salida = (0,0,1) (1,1,1) = 1, diferente a la salida deseada. Ajustar el vector w = (1,1,1) - (0,0,1) = (1,1,0) Muestra 2, salida = (0,1,1) (1,1,0) = 1, igual a la salida deseada. Muestra 3, salida = (1,0,1) (1,1,0) = 1, igual a la salida deseada. Muestra 4, salida = (1,1,1) (1,1,0) = 1, igual a la salida deseada. El algoritmo converge encontrando el vector w = (1,1,0) Ejemplo: dado un sistema de dígitos en pantallas digitales (figura 12) que informa cuál de los 7 segmentos están encendidos, realizar un perceptrón que aprenda a identificar un dígito en concreto, por ej. el 0. X2 X1 X3 X0 X6 X4 X5 FIGURA 12 Existen 7 entradas x0..x6 correspondientes a los segmentos del número, además de otra entrada x7 en 1 correspondiente al umbral. Las muestras de entrada son las siguientes: Dígito 0 9 8 7 6 5 4 3 2 1 X0 0 1 1 0 1 1 1 1 1 0 X1 1 1 1 0 1 1 1 0 0 0 X2 1 1 1 1 1 1 0 1 1 0 X3 1 1 1 1 0 0 1 1 1 1 X4 1 1 1 1 1 1 1 1 0 1 X5 1 1 1 0 1 1 0 1 1 0 X6 1 0 1 0 1 0 0 0 1 0 X7 1 1 1 1 1 1 1 1 1 1 Salida deseada 1 0 0 0 0 0 0 0 0 0 1- Inicializa el vector w = (0,0,0,0,0,0,0,0) 2- Cicla a través de las muestras hasta que la salida obtenida con cada una sea igual a la salida deseada. - Dígito 0, s0 = (0,1,1,1,1,1,1,1) (0,0,0,0,0,0,0,0) = 0, diferente a la salida deseada. Ajustar el vector w = (0,0,0,0,0,0,0,0) + (0,1,1,1,1,1,1,1) = (0,1,1,1,1,1,1,1) - Dígito 9, s9 = (1,1,1,1,1,1,0,1) (0,1,1,1,1,1,1,1) = 1, diferente a la salida deseada. Ajustar el vector w = (0,1,1,1,1,1,1,1) - (1,1,1,1,1,1,0,1) = (-1,0,0,0,0,0,1,0) - Dígito 8, s8 = (1,1,1,1,1,1,1,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 7, s7=(0,0,1,1,1,0,0,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 6, s6=(1,1,1,0,1,1,1,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 5, s5=(1,1,1,0,1,1,0,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 4, s4=(1,1,0,1,1,0,0,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 3, s3=(1,0,1,1,1,1,0,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 2, s2=(1,0,1,1,0,1,1,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 1, s1=(0,0,0,1,1,0,0,1) (-1,0,0,0,0,0,1,0) = 0, igual a la salida deseada. - Dígito 0, s0=(0,1,1,1,1,1,1,1) (-1,0,0,0,0,0,1,0) = 1, igual a la salida deseada. El algoritmo converge encontrando el vector w = (-1,0,0,0,0,0,1,0). 3.9.3. Redes de interpolación y de aproximación Redes de interpolación Una red de interpolación (figura 13) es una red neuronal especial con las siguientes características: Tiene dos capas de neuronas Cada neurona de la primera capa responde a una entrada de muestra m en particular. Calcula la función Gaussiana de la distancia entre el vector de entrada actual x y el vector muestra asociada a la neurona m: g( | x - m | ) Cada neurona de la segunda capa realiza la suma ponderada de sus entradas: i wi g(|x-mi|) Los pesos entre las dos capas se ajustan de manera que cada salida de neurona de la segunda capa sea exactamente la salida deseada de cada entrada muestra m. W1i X1 g1 ... Σ g(|x-mi|)*wi1 Wi1 X2 gi Xm gn Wij Σ g(|x-mi|)*wij Wnj FIGURA 13 El entrenamiento de la red de interpolación es casi directo: 1- Por cada muestra mi se crea un nodo centrado en la muestra. 2- Por cada entrada de muestra x se crea una ecuación de la forma siguiente: - Calcular la distancia entre la muestra x y los centros mi, |x - mi| - Calcular la función gaussiana de cada distancia g(|x - mi|) - Multiplicar cada función por el correspondiente peso wi, g(|x - mi|) wi - Igualar la salida de la muestra x con la suma de las funciones gaussianas ponderadas de la distancia. 3- Resolver las ecuaciones para los pesos wi Ejemplo: construir una red de interpolación para calificar del 1 al 10 una tarta en base a la cantidad de porciones comidas de la misma. Las muestras de entrada son las siguientes: Muestras 1 2 X=cantidad de porciones 4 7 Calificación 5 9 3 4 9 12 2 6 Para cada muestra de entrenamiento se construye una neurona de la primera capa con una función Gaussiana asociada (figura 14). Si el parámetro de la función de Gauss es pequeño, la campana será estrecha y por lo tanto la influencia de la muestra será local; si en cambio, el parámetro es grande, la campana será amplia y por lo tanto la influencia de la muestra será global. La red tiene una sola entrada x que es la cantidad de porciones comidas. X g1 W1 g2 W2 W3 Σ gi(|x-mi|)*wi g3 W4 g4 FIGURA 14 Se calculan los valores para cada peso, de manera que se produzcan las salidas correctas para cada muestra. Para ello se plantean tantas ecuaciones como incógnitas o pesos, por lo tanto, la resolución es directa. Para la muestra 1 5 = w1 g1(4-4) + w2 g2(4-7) + w3 g3(4-9) + w4 g4(4-12) Para la muestra 2 9 = w1 g1(7-4) + w2 g2(7-7) + w3 g3(7-9) + w4 g4(7-12) Para la muestra 3 2 = w1 g1(9-4) + w2 g2(9-7) + w3 g3(9-9) + w4 g4(9-12) Para la muestra 4 6 = w1 g1(12-4) + w2 g2(12-7) + w3 g3(12-9) + w4 g4(12-12) Redes de aproximación Si el número de muestras es muy grande, el número de nodos puede volverse irracionalmente grande. El planteamiento natural es tratar de aproximar la función desconocida con un número razonable de nodos representativos. Si se tienen menos nodos que muestras, ninguna selección de pesos puede asegurar que la red produzca la salida correcta para todas. Las redes de aproximación construyen aproximaciones razonables para un conjunto de muestras, considerando sólo un subconjunto pequeño de las mismas. Una manera de buscar una buena aproximación es mediante la técnica de ascenso del gradiente (usada en la sección 3.9.1.) para buscar el valor máximo de una medida de calidad P de la red de aproximación P = Σs Σz (-esz)2 donde s: índice para las muestras de entrenamiento z: índice para las salidas esz = ysz - dsz, es el error entre la salida z-ésima obtenida ysz y la salida z-ésima deseada dsz para la muestra s-ésima. Los cambios de un peso wi se hacen proporcionalmente a la derivada parcial de la medida de calidad P con respecto al peso wi. Finalmente se llega a la siguiente fórmula para calcular los cambios de peso: wiz = r Σs (dsz - ysz) g(|xs-mi|) ECUACIÓN 11 Para mejorar aún más la calidad de la red sobre los datos de muestra, se pueden ajustar no sólo los pesos sino también los puntos centrales o muestras con las que se crea la red de interpolación inicial. Los cambios de una muestra o centro m i se hacen proporcionalmente a la derivada parcial de la medida de calidad P con respecto a la muestra mi. Finalmente se llega a la siguiente fórmula para ajustar la componente j de la iésima muestra: mij = r Σs Σz wi (dsz - ysz) g(|xs-mi|)1/ (xsj -msj) ECUACIÓN 12 Para crear y entrenar una red de aproximación se realiza lo siguiente: 1.- Crear una red de interpolación mediante un subconjunto de muestras o centros. 2.- Tomar parámetro de rapidez r 3.- Hasta que la medida de calidad P sea satisfactoria, por cada muestra de entrada del conjunto total: a.- Calcular la salida resultante b.- Calcular los cambios en los pesos con la ecuación 11 c.- Acumular los cambios de los pesos d.- Calcular los cambios en los centros o muestras con la ecuación 12 e.- Acumular los cambios de los centros o muestras Cambiar los pesos y centros con los cambios acumulados