Universidad ORT Uruguay Facultad de Ingeniería Redes Neuronales para el Reconocimiento de Patrones Entregado como requisito para la obtención del título de Licenciado en Análisis de Sistemas de Información Juan Andrés Gómez Robaina - 129139 Tutor: Ing. Julio Fernández 2007 1 1 - Abstract ................................................................................................................ 3 2- Humanos y Computadoras .................................................................................. 4 3 - El Test de Turing ................................................................................................. 6 3.1 - Inteligencia Artificial Versus Inteligencia Natural.......................................... 7 4 - Redes Neuronales ............................................................................................... 8 4.1 - Analogía con el cerebro humano .................................................................... 9 4.2 - Redes neuronales biológicas ...................................................................... 9 El axón ................................................................................................................... 9 4.3 - Redes neuronales artificiales ........................................................................ 11 Entradas............................................................................................................... 12 Salidas ................................................................................................................. 12 Pesos ................................................................................................................... 12 5 - Reconocimiento de Patrones ........................................................................... 12 6 - Aprendizaje ........................................................................................................ 15 Cómo aprende una red ....................................................................................... 15 6.1 - Algoritmos de Aprendizaje ............................................................................ 16 6.2 - Entrenamiento Supervisado .......................................................................... 16 6.3 - Entrenamiento No Supervisado .................................................................... 17 6.4 - Índices de Aprendizaje................................................................................... 17 6.5 - Técnicas de Entrenamiento ........................................................................... 18 6.6 - Recolección de Datos y Preparación............................................................ 19 7 - Arquitecturas Típicas ........................................................................................ 19 8 - Aplicaciones de las Redes Neuronales ........................................................... 20 9 - Conclusiones ..................................................................................................... 22 Bibliografía .............................................................................................................. 23 2 1 - Abstract El objetivo de este documento es introducir a estudiantes y profesionales del área de la Informática a la aplicación de Redes Neuronales para el reconocimiento de patrones. Se pretende mostrar el funcionamiento de las mismas para entender y crear una base que permita profundizar en cualquiera de los amplios temas que forman parte del mundo de la Inteligencia Artificial. Entender el propósito de las redes neuronales para visualizar claramente cómo pueden aplicarse para solucionar importantes problemas en el área de sistemas de computación. Abordaremos las diferencias entre la inteligencia natural y la inteligencia artificial, contrastando tanto a nivel biológico como a nivel artificial, poniendo humanos y computadoras a ambos lados de la balanza. Se realizará una definición de lo que es una red neuronal y su cometido a través de ejemplos sencillos que puedan permitir la apertura suficiente a la dificultad que presenta el tema. Este artículo abarca los puntos fundamentales del reconocimiento de patrones, es por eso que también se hace hincapié en el proceso de aprendizaje, tanto en definir lo que es el mismo como en los diferentes caminos que podemos tomar para realizarlo. Por último, se presentan las conclusiones obtenidas. 3 2- Humanos y Computadoras A menudo decimos que los seres humanos son más inteligentes que las computadoras pero no tenemos claro el por que de esta afirmación. Puede influir que nuestra condición humana no nos deja pensar que un trozo de silicio y metal puede hacer lo mismo que nosotros o porque somos diferentes a las computadoras, en términos de las operaciones que realizamos. El objetivo de la inteligencia artificial se enfoca al estudio del comportamiento inteligente en las máquinas, este tipo de comportamiento supone aprender o entender de la experiencia, dar sentido a mensajes contradictorios o ambiguos, responder rápida y exitosamente a una nueva situación mediante flexibilidad o diferentes respuestas, usar el razonamiento para resolver problemas dirigiendo la conducta efectivamente, manejar situaciones perplejas, comprender e inferir mediante vías racionales, aplicar conocimiento para manipular el ambiente, pensar y razonar y reconocer la relativa importancia de diferentes elementos dentro de una situación. Una de las metas a largo plazo de la I.A. es el desarrollo de máquinas que puedan hacer todas estas cosas igual, o quizá incluso mejor que los humanos (RUSSEL Beale, 1990). Rich y Knight (1991) sostienen que: “La Inteligencia Artificial es el estudio de cómo hacer que las computadoras hagan cosas, que de momento, los humanos hacen mejor”, otra definición publicada sostiene que: “La IA es el comportamiento de una máquina, que realizado por un humano, sería considerado inteligente” (TURBAM Efraim, 2001). En lo que la mayoría de los expertos están de acuerdo es en que la IA abarca dos grandes conceptos. El primero involucra el estudio del proceso del pensamiento humano, para comprender que es la inteligencia, y el segundo, como representar estos procesos mediante máquinas tales como computadoras o robots Sumar unos cuantos números de ocho y nueve cifras puede ser una operación trivial para una computadora, pero requiere un gran esfuerzo incluso para una persona hábil. De todas maneras esto no responde la interrogante de si son más inteligentes que nosotros o no, aunque inicialmente se podría considerar que si, entonces consideremos los crucigramas. Muchas personas son excelentes resolviéndolos, pero otras pueden ser terribles. Pero todos podemos generalmente manejar varias pistas para tratar de descifrar una palabra en cuestión, y sin embargo, este tipo de tareas son extremadamente difíciles para las computadoras. Resolver crucigramas generalmente implica resolver una pista obscura, tenemos que sacar conjeturas y utilizar lo que llamamos intuición, donde seguimos caminos de investigación que no son inmediatamente obvios pero que surgen de alguna idea que sale adelante. Las computadoras no pueden hacer esto bien, quizás debamos ajustar nuestra definición y decir que las computadoras son lógicas y que solo pueden hacer cosas lógicas. 4 Entonces deberíamos tener en cuenta la visión; una actividad que resulta perfectamente lógica para nosotros, mirar algo, descubrir que es, darle un nombre, y posiblemente hacer algo con el. Si fuera una tasa de té, la reconoceríamos como tal y la beberíamos; si fuera una pelota de fútbol que viene rápidamente hacia nosotros, tendríamos que decidir cursos de acción más complejos. Pero de nuevo, las computadoras son muy malas realizando simples tareas visuales. Quizás el problema sea que, como las computadoras pueden hacer tareas que nosotros hacemos en una fracción de segundo, como complejas operaciones matemáticas o recordar un nombre o una dirección, esperamos que sean como nosotros en otros aspectos. La respuesta al por qué no pueden hacer las cosas que hacemos podría estar en la naturaleza. Un conocido filósofo, John Searle, cree que la materia de la que estamos hechos es fundamental para la inteligencia (Searle, 1980; Searle, 1992). Para él, el pensamiento sólo puede ocurrir en máquinas muy especiales – las máquinas vivientes hechas de proteínas. Si miramos dentro de una computadora, podemos ver cierta cantidad de chips, conteniendo circuitos y componentes, enchufados en un tablero de circuitos con resistores y otros elementos. Si miramos dentro del cerebro no veremos nada comparado con esa estructura ordenada, nuestra inspección inicial nos revelaría nada más que una enrollada masa homogénea de materia gris. Pero una investigación más profunda puede revelar que también el cerebro tiene componentes, pero estos están todos dispuestos de una manera inmensamente compleja, cada uno conectado a cientos de otros. Posiblemente sea esta diferencia en el diseño explique la diferencia en el funcionamiento entre los sistemas. Las computadoras están diseñadas para realizar una instrucción tras otra, extremadamente rápido, mientras que nuestro cerebro trabaja con unidades mucho más lentas. Cuando una computadora puede haber realizado unos millones de operaciones por segundo, las unidades en el cerebro responden diez veces por segundo. Sin embargo, el cerebro trabaja en más de una cosa a la vez, algo que las computadoras no pueden hacer hasta el momento. La computadora es una máquina serial de alta velocidad y es usada como tal, comparada con la lenta y altamente paralela naturaleza del cerebro. Dado esto todavía nos podemos seguir preguntando si resulta sorprendente que la computadora falle en funcionar de la misma manera que el cerebro. (RUSSEL Beale, 1990) 5 2.1 - Algunas diferencias entre el cerebro y las computadoras El cerebro procesa la información en paralelo, mientras que los ordenadores convencionales lo hacen secuencialmente. Por tanto, tenemos que construir nuevas variedades de ordenadores paralelos para realizar progresos en la IA. La maquinaria computacional está basada en lógica binaria (verdadero o falso). Las neuronas animales son mucho más complejas que simples conmutadores –los bloques constructivos básicos de los ordenadores actuales -. Para lo cual, necesitaríamos neuronas artificiales verdaderamente realistas para construir máquinas inteligentes. 3 - El Test de Turing En 1950 el británico matemático Alan Turing (Turing, 1950) propuso el Test de Turing(TT) como un reemplazo a la pregunta de si las máquinas pueden pensar. Desde entonces, las ideas de Turing han sido extensamente discutidas, atacadas y defendidas una y otra vez. Por un lado el TT ha sido considerado como el “comienzo” de la IA y el TT como su objetivo final, pero por otro, el TT ha sido catalogado como inútil, y hasta perjudicial. En el medio hay argumentos de conciencia, comportamiento, definiciones operacionales de inteligencia, el problema de “otras mentes”, condiciones necesarias y suficientes que otorguen inteligencia, y otros más. El propósito del Test es proveer un método para evaluar si una máquina puede pensar o no y consiste en un desafío al cual llamó “El juego de la Imitación”. El juego es jugado por un hombre(A), una mujer (B) y un interrogador (C) cuyo sexo no tiene importancia. El interrogador se mantiene en una habitación separada de A y B. El objetivo del interrogador es determinar cual de los otros dos es la mujer mientras que el objetivo del hombre y la mujer es convencer al interrogador que el o ella son la mujer y el otro no. La comunicación para tomar las decisiones debe ser realizada por una conexión de teletipo, para que sean los caracteres no sean manuscritos. Así el interrogador realiza las preguntas en lenguaje natural escrito y recibe las preguntas de la misma manera, las preguntas pueden ser de cualquier tema imaginable, desde matemáticas a poesía, el clima o ajedrez. La interrogante que plantea Turing surge en que sucedería si la máquina toma el lugar de (A) en el juego, es realmente una duda saber si el interrogador pueda distinguir cual es la mujer. Si el interrogador no es capaz de decidir si está hablando con un hombre o una mujer entonces se podría decir que la máquina es inteligente. 6 3.1 - Inteligencia Artificial Versus Inteligencia Natural El valor potencial de la inteligencia artificial se puede entender mejor contrastándolo con la inteligencia natural o humana (TURBAM Efraim, 2001). Esta última posee muchas ventajas: La IA es más permanente – La inteligencia natural es perecedera desde un punto de vista comercial ya que los empleados pueden cambiar su lugar de trabajo y olvidar la información. Por el contrario, la IA es permanente mientras los sistemas y programas se mantengan sin cambios. La IA ofrece facilidad de duplicación y diseminación – La transferencia de conocimiento de una persona a otra usualmente requiere un largo proceso de aprendizaje, y rara vez puede ser duplicado completamente. Sin embargo, cuando el conocimiento forma parte de un sistema computarizado, puede ser fácilmente transferido desde esa computadora a alguna otra por varios medios. La IA puede ser más barata que la inteligencia natural – Hay muchas circunstancias en las que comprar servicios informáticos es más barato que tener el correspondiente poder humano para llevar a cabo las mismas tareas. Esto es especialmente verdad cuando el conocimiento está diseminado por muchos lugares. La IA es consistente y cuidadosa – La inteligencia natural es errática porque los humanos lo son; no nos comportamos de manera consistente. La IA puede ser documentada – Las decisiones tomadas por computadora pueden ser fácilmente documentadas siguiendo el log de actividades del sistema. La inteligencia natural es difícil de documentar. Por ejemplo, una persona puede llegar a cierta conclusión en cierto momento, pero más adelante en el tiempo puede resultar incapaz de recrear el proceso de razonamiento que lo llevó a esa conclusión, o a tan siquiera a recordar los supuestos que fueron parte de la decisión. La IA puede ejecutar algunas tareas más rápidamente que los humanos. La IA puede realizar ciertas tareas mejor que muchas o que la mayoría de las personas. La Inteligencia Natural es creativa, mientras que la IA carece de inspiración. La habilidad de adquirir conocimiento es inherente al ser humano, pero con la IA, el conocimiento adaptado debe formar parte de un sistema cuidadosamente construido. 7 4 - Redes Neuronales La Inteligencia Artificial es un campo muy grande y tiene ramas en psicología cognoscitiva, filosofía, matemáticas, cibernética y por supuesto en las ciencias de la computación. Podemos decir ampliamente, que sin embargo distinguimos que algunos aspectos de la IA están enfocados a entender como el cerebro o la mente humana trabajan, y a intentos para modelar esto mediante el uso de ordenadores; en otras palabras, modelar el cerebro completo como una entidad única tratando de construir un modelo de computadora que se comporte de la misma manera. Tenemos objetivos planteados para saber como las criaturas capturan las ideas en sus cerebros, como procesan la información, como identifican patrones, como guardan datos históricos, como memorizan patrones e ideas y los asocian con nueva información y como razonan y manipulan conceptos abstractos. Son estas fascinaciones el motor del estudio que intenta alcanzar una comprensión más madura de la mente (NILS J. Nilson, 2000). Decimos que es una red neuronal porque es una red de elementos interconectados, inspirados en los estudios de sistemas nerviosos biológicos. En otras palabras, las redes neuronales son un intento de crear máquinas que trabajen en un modo similar al del cerebro humano construyendo estas máquinas usando componentes que se comporten como neuronas biológicas. La alternativa principal es tratar de mirar la estructura del cerebro, el cual está constituido por billones de neuronas interconectadas, y mirar si podemos producir una actividad similar a la del cerebro utilizando redes de neuronas artificiales. La función de una red neuronal es producir un patrón de salida respecto a un patrón de entrada. Este concepto es algo abstracto, como una de las operaciones para la que una red neuronal puede ser construida, el reconocimiento de patrones (RUSSEL Beale, 1990). 8 4.1 - Analogía con el cerebro humano 4.2 - Redes neuronales biológicas El cerebro humano está compuesto por células especiales llamadas neuronas. Estas células no mueren cuando un ser humano es dañado (las demás células se reproducen para reemplazarse y luego mueren), lo que podría explicar porque retenemos información. El número estimado de neuronas en un cerebro humano va de 50 billones a 150 billones, en los cuales podemos encontrar más de 100 tipos diferentes de neuronas, particionadas en grupos a los cuales llamamos redes. Cada red contiene varios cientos de neuronas que están altamente interconectadas, de esta manera, podemos ver al cerebro como una colección de redes neuronales. La habilidad para aprender y reaccionar a los cambios de nuestro ambiente requiere inteligencia. El pensamiento y el comportamiento inteligente son controlados por el cerebro y el sistema nervioso central. Por ejemplo, la gente que sufre daños cerebrales tiene dificultades en el aprendizaje y en la reacción a ambientes cambiantes. A pesar de esto, las partes no dañadas del cerebro pueden a menudo compensar con nuevos aprendizajes. Una neurona está formada por el cuerpo celular y diferentes prolongaciones como se muestra en la Figura 1: El axón Por aquí transitan los impulsos nerviosos o potenciales de acción desde el cuerpo celular hacia la siguiente célula. Los axones pueden agruparse y formar lo que comúnmente llamamos fibra nerviosa. La terminación axonal tiene forma abultada y se llama botón presináptico, el cual contiene las vesículas sinápticas incluyendo en su interior a los neurotransmisores, que son sustancias químicas responsables de transmitir los mensajes a la neurona que le sucede. Las dendritas Con número y estructura variable según el tipo de neurona, transmiten los potenciales de acción desde las neuronas adyacentes hacia el cuerpo celular o soma. 9 Se unen entre ellas a través de una unión discontinua llamada sinapsis. Si dicha sinapsis ocurre por contacto físico se trata de una sinapsis eléctrica, y si es a través de una hendidura se llama sinapsis química. Son células excitables especializadas para la recepción de estímulos y la conducción del impulso nervioso. Las neuronas se hallan en el encéfalo, la médula espinal y los ganglios nerviosos y están en contacto con todo el cuerpo. A diferencia de la mayoría de las otras células del organismo, las neuronas normales en el individuo maduro no se dividen ni se reproducen (como una excepción las células olfativas sí se regeneran). Los nervios mielinados del sistema nervioso periférico también tienen la posibilidad de regenerarse a través de la utilización del neurolema, una capa formada de los núcleos de las células de Schwann. Figura 1 – La neurona (Wikipedia, 2007) 10 4.3 - Redes neuronales artificiales Una red neuronal artificial modela a una red neuronal biológica. La computación neuronal utiliza actualmente un conjunto limitado de conceptos de los sistemas neuronales biológicos, es más una analogía con el cerebro humano que un modelo exacto del mismo. Los conceptos neuronales son usualmente implementados como simulaciones de software de los masivos procesos paralelos que involucran el procesamiento de elementos (también llamados neuronas artificiales) interconectados en una arquitectura de red. La neurona artificial recibe entradas análogas a los impulsos electromagnéticos que las dendritas de las neuronas biológicas reciben de otras neuronas. La salida de una red neuronal artificial corresponde a las señales enviadas desde una neurona biológica a través de su axón. Estas señales artificiales pueden ser cambiadas por pesos en un modo similar a los cambios físicos que ocurren en la sinápsis (Rich E. ,1985). Es importante reconocer que en un principio las redes neuronales fueron desde su origen propuestas para modelar la actividad del cerebro humano, pero este posee una mayor complejidad de la que el modelo puede capturar. Entonces, los modelos neuronales computacionales no son fieles representaciones de sistemas biológicos reales. A pesar de la intensa investigación en la neurobiología y la psicología, muchas importantes interrogantes de cómo el cerebro funciona siguen sin encontrar una respuesta (TURBAM Efraim, 2001). Red Neuronal Biológica Red Neuronal Artificial Cuerpo Celular Dendritas Axón Sinápsis Baja Velocidad Muchas neuronas (10 a la 9) Nodo Entrada Salida Peso Alta Velocidad Pocas neuronas (desde una docena a cientos de miles) Tabla 1 – Relaciones entre redes neuronales biológicas y artificiales (Medsker y Liebowitz, 1994) 11 Entradas Cada entrada corresponde a un simple atributo. Por ejemplo, si el problema consiste en decidir si aprobar o no un préstamo, algunos atributos podrían ser el nivel de ingreso del aplicante, su edad y su tipo de vivienda. El valor numérico, o la representación de un atributo es la entrada de la red. Muchos tipos de datos, como texto, imágenes o la voz, pueden ser usados como entradas, pero un preprocesamiento puede ser necesitado para convertir la información en entradas significativas desde información simbólica, o para escalar la información. La computación neuronal sólo puede procesar valores numéricos, si un problema involucra atributos cualitativos, debe ser preprocesada. Salidas Las salidas de una red contienen la solución a un problema. Por ejemplo, en el caso de la aprobación del préstamo puede ser si o no. La red neuronal asigna valores numéricos, como 1 para SI y 0 para NO. El propósito de la red neuronal es computar los valores de la salida. A menudo, se requiere un post proceso de las salidas. Pesos Los pesos son elementos claves en una red neuronal, expresan la fuerza relativa (o valor matemático) de la información de entrada o de las muchas conexiones que trasfieren información de una capa a otra. En otras palabras, los pesos expresan la relativa importancia de cada entrada a un elemento del proceso y en última instancia las salidas. Los pesos son cruciales porque mantienen patrones almacenados de información, y es mediante repetidos ajustes de los mismos que las redes aprenden. 5 - Reconocimiento de Patrones Mientras usted está leyendo estas sentencias su cerebro está teniendo que ordenar las señales que está recibiendo de sus ojos para poder identificar las letras en la página y convertirlas juntas en palabras, oraciones, párrafos y así sucesivamente. El acto de reconocer las letras individualmente es un reconocimiento de patrones, los símbolos en la página son los patrones que necesitan ser reconocidos (HILERA José R., 1995). Ahora, como este artículo ha sido impreso o usted lo está leyendo en un formato digital, las letras están en una tipografía particular, entonces todas las letras ‘a’s, por ejemplo, son más o menos las mismas. Una máquina se podría diseñar para reconocer la letra ‘a’ muy fácilmente, desde el momento de que solo tendría que reconocer sólo un patrón. 12 Pero si queremos construir una máquina que pueda leer caracteres manuscritos el problema es aún mucho más complicado por la gran variación, incluso entre ejemplos de la misma letra. Es por lo tanto muy difícil encontrar un caracter representativo para cada una de las letras, entonces un conjunto de los caracteres típicos para cada letra deberían ser construidos. Entonces, por ejemplo, todas las diferentes ‘a’ van a ser leídas por el mismo conjunto. Y de manera semejante con las demás letras, dando como resultado un conjunto de 27 letras en total. Cada conjunto de caracteres es llamado clase y tendremos ahora que construir una máquina que elija entre cual patrón de entrada pertenece a un clasificador de patrones. Esto es todavía un problema difícil, pero puede ser resuelto exitosamente porque los patrones de entrada no tienen que combinar exactamente con uno de los parámetros de la clase. En cambio, la máquina tiene que tener la capacidad de decidir que patrón de entrada es más similar a los miembros de una clase que cualquiera de los otros, lo que resulta una tarea más simple. El beneficio de usar clases de patrones en este problema es que un caracter manuscrito que es variable puede ser introducido al sistema, y un caracter impreso puede ser la salida. Pero otros problemas pueden ser resueltos utilizando el reconocimiento de algo que no puede ser enteramente descrito o predicho, entonces en esencia una red neuronal puede ser utilizada para implementar o solucionar un problema si ese problema puede ser reducido a una clasificación de patrones, y esto es posible en un gran número de casos. La función de una red neuronal es recibir patrones de entrada y producir un patrón de salida correcto para esa clase. 13 Se ha dicho que una red neuronal es un clasificador de patrones, pero no todos los clasificadores de patrones son redes neuronales, y la mejor manera de explicar esto es a través de un ejemplo. Imaginemos una situación en la que queremos hacer una decisión que pueda leer los números del 0 al 9 desde un documento. Los números pueden estar escritos de diversas maneras, tanto en estilos como tamaños y orientaciones como lo muestra la figura 3. Figura 3 – El número 3 y varias maneras de representarlo (PICTON Phil, 2000). Cualquiera de estas entradas pueden aparecer, pero queremos que la máquina responda de la misma manera cada vez, indicando que el número 3 se ha presentado. Figura 4 – Digitalización de un número (PICTON Phil, 2000) Como muestra la Figura 4, la entrada es digitalizada formando una cruda representación de lo que es el número 3, lo cual debe ser suficiente para distinguir los 10 números. 14 6 - Aprendizaje Informalmente, el aprendizaje es la capacidad de un sistema de absorber información de su ambiente sin requerir ningún agente externo inteligente que lo “programe”. El aprendizaje es la habilidad fundamental del cerebro, y es el mayor foco de la investigación. Desafortunadamente, los algoritmos de aprendizaje declarados en la literatura a lo largo del tiempo son inaceptablemente lentos en grandes redes. Aunque está claro que necesitamos la habilidad de escalar nuestras aplicaciones a redes más grandes, no está claro aún, cuales son los medios para alcanzar esto (JUDD J. Stephen, 1990). Cómo aprende una red Consideremos una única neurona que aprende la operación inclusiva OR- un problema clásico de la lógica simbólica. Existen dos elementos de entrada, X1 y X2. Si alguno de los dos o los dos tienen un valor positivo, entonces el resultado es positivo también. Caso X1 X2 Resultados Deseados 1 2 3 4 0 0 1 1 0 1 0 1 0 1 (Resultado Positivo) 1 (Resultado Positivo) 1 (Resultado Positivo) Tabla 2 – Operación OR La neurona debe ser entrenada para reconocer los patrones de entrada y clasificarlos para obtener las correspondientes salidas. El procedimiento consiste en presentarle a la neurona las secuencias de los cuatro patrones de entrada para que los pesos puedan ser ajustados luego de cada iteración (usando el feedback del error encontrado comparando el valor estimado con el valor obtenido). Este paso es repetido hasta que los pesos converjan en un conjunto de valores uniformes que permitan a la neurona clasificar los cuatro patrones correctamente. 15 6.1 - Algoritmos de Aprendizaje Una importante consideración en las redes neuronales es el uso apropiado de un algoritmo de aprendizaje o algoritmo de entrenamiento. Hay cientos de ellos, y pueden ser clasificados como de Entrenamiento Supervisado y Entrenamiento No Supervisado. Como se puede entender de tu propia experiencia el entrenamiento supervisado requiere un maestro, que puede ser un un conjunto de datos o un observador que califica el funcionamiento. De todos modos, tener un maestro es aprender por refuerzo. Cuando no hay un maestro externo, el sistema debe organizarse a si mismo por algún criterio designado dentro de la red, esto es aprender haciendo. El algoritmo más utilizado es el llamado backpropagation que consiste en minimizar un error (comúnmente cuadrático) por medio de gradiente descendiente, por lo que la parte escencial del algoritmo es cálculo de las derivadas parciales de dicho error con respecto a los parámetros de la red neuronal (TURBAM Efraim, 2001). 6.2 - Entrenamiento Supervisado De esta manera, la salida actual de una red neuronal es comparada con la salida deseada. Los pesos que generalmente son seteados al azar en un comienzo, luego son ajustados por la red para que en el próximo ciclo o en la próxima iteración, se produzcan resultados más acertados. El objetivo de todo proceso de aprendizaje es en definitiva minimizar el error entre la salida deseada y la correspondiente salida mediante la modificación de los pesos. Con el entrenamiento supervisado, es necesario entrenar la red antes de que la misma quede en estado operacional. El entrenamiento consiste en presentar datos de entrada y salida a la red, esta información es llamada juego de datos de entrenamiento. Esto es, para cada entrada presentada, la salida deseada es presentada también. La fase de entrenamiento puede consumir mucho tiempo, y se puede considerar completa cuando la red produce las salidas requeridas para un conjunto dado de entradas. Cuando no se necesita entrenamiento adicional, los pesos se congelan. Usando esta técnica, una red puede hacer cosas como tomar decisiones, memorizar información o generalizar. 16 6.3 - Entrenamiento No Supervisado Este tipo de entrenamiento es llamado en ocasiones entrenamiento autosupervisado. Aquí, las redes no utilizan influencias externas para ajustar sus pesos, en su lugar hay un monitoreo interno de la performance. La red busca regularidades o tendencias en las señales de entrada, y hace adaptaciones de acuerdo a su propio funcionamiento. Incluso sin ser instruida en cuando un resultado es correcto o incorrecto, la red todavía debe tener alguna información de como organizarse a si misma. Por ejemplo, una red podría aprender a seguir un objeto en movimiento coordinando algún punto en su retina simulada con el centro de la retina. Un algoritmo de aprendizaje no supervisado puede enfatizar la cooperación entre los grupos de los elementos de proceso. En este esquema, los grupos trabajarían juntos para tratar de simular cada uno. Si una entrada externa es activa algún nodo del grupo, la actividad del grupo puede ser incrementada en su totalidad. Asimismo, si las entradas externas a los nodos del grupo es decrementada, esto puede traer un efecto inhibidor a todo el grupo, entonces los mismos pueden comprimir la información a la siguiente capa. La competencia entre los elementos de proceso puede formar la base del aprendizaje también. El entrenamiento de grupos competitivos podría amplificar las respuestas de grupos específicos a estímulos específicos y asociar esos grupos con cada uno y con una respuesta específica apropiada. Por ejemplo, los elementos de proceso pueden ser organizados para discriminar entre varias características de los patrones, como bordes horizontales o verticales o bordes derechos e izquierdos. En su estado actual, este tipo de entrenamiento no es bien comprendido y es todavía objeto de mucha investigación. Es de gran interés para los gobiernos que enfrentan situaciones militares, muchas de estas situaciones no tienen un conjunto de datos disponible hasta que se suscita un conflicto. Pero por otro lado, el entrenamiento supervisado, ha adquirido una reputación produciendo buenos resultados en aplicaciones prácticas y están ganando en popularidad. 6.4 - Índices de Aprendizaje La velocidad del entrenamiento depende de muchas cosas, habiendo compensaciones en el aprendizaje. Obviamente un índice más bajo significa pasar mucho tiempo para lograr el entrenamiento para producir un sistema entrenado. Con un índice más rápido, si embargo, la red puede no estar habilitada para hacer discriminaciones más finas que con un sistema que aprende más lentamente, los investigadores están tratando de darnos lo mejor de los dos mundos. Muchos factores alrededor del tiempo deben ser tenidos en cuenta cuando se discuten las tareas del entrenamiento, que a veces puede ser descrito como “pesado”. Debemos tener en cuenta la complejidad de la red, su tamaño, la selección del paradigma, su arquitectura, el tipo de reglas del entrenamiento o las reglas empleadas y el nivel de exactitud deseado. Estos factores juegan un papel 17 significativo en determinar cuanto tiempo tomará entrenar una red. El cambio de cualquiera de estos factores puede extender el tiempo de entrenamiento a tiempos no razonables o llevar los resultados a niveles inaceptables. 6.5 - Técnicas de Entrenamiento En la programación tradicional, donde programas altamente estructurados son utilizados, el programador tendrá que recibir las entradas, algún tipo de requerimientos de proceso (que hacer con las entradas), y la salida deseada. El trabajo del programador es aplicar lo necesario; tiempo e instrucciones paso a paso para desarrollar la relación requerida entre la entrada y la salida. Las técnicas de programación basadas en conocimiento (Sistemas Expertos), usan incluso conceptos de un nivel más alto para especificar las relaciones entre entradas y salidas, esto se refiere a heurísticas, o más comúnmente, reglas En contraste, las redes neuronales no requieren ninguna instrucción, regla o requerimiento de proceso para como procesar la información de entrada. De hecho, las redes neuronales determinan la relación entre las entradas y las salidas mirando los ejemplos de muchos pares de entradas-salidas. Esta habilidad única de determinar como procesar la información usualmente se refiere a una autoorganización, este proceso es llamado también adaptación o aprendizaje. Pares de entradas y salidas son aplicadas a entradas y salidas, estos pares de datos son utilizados para enseñar o entrenar la red. Sabiendo que salida es esperada de cierta entrada, la red aprende automáticamente ajustando o adaptando los pesos de las conexiones entre los elementos del proceso. Este método para ajustar el proceso es llamado la regla de aprendizaje. Es imaginable que el conjunto de datos de entrenamiento debe ser lo suficientemente grande para contener toda la información pertinente para que la red pueda “aprender” todas las características y relaciones que son importantes. Supongamos que queremos enseñarle a una red de a una cosa primero antes de enseñarle algo nuevo, este acercamiento no funciona. Todos los pesos ajustados tan meticulosamente para un hecho pueden ser drásticamente alterados en aprender el nuevo hecho. Los pasos previos pueden ser “olvidados” en el proceso de aprender algo nuevo. Como resultado el sistema debe aprender todo junto, encontrando el mejor valor de los pesos para todo el conjunto de hechos. Tratando de enseñarlo a un sistema a reconocer patrones de píxeles para los diez dígitos, donde digamos tenemos 20 ejemplos de cada digito, no se van a presentar todos los ejemplos del número ‘3’ en el mismo momento. Después que la red supervisada se comporta bien con la información de entrenamiento, es importante luego analizar el comportamiento con información que nunca vio antes. Si el sistema no da salidas razonables para los datos de prueba entonces el período de entrenamiento no ha terminado (JUDD J Stephen, 1990). 18 6.6 - Recolección de Datos y Preparación Los primeros dos pasos en el proceso de desarrollo de una red neuronal involucran la recopilación de datos y separación en dos conjuntos, un conjunto de entrenamiento y un conjunto de testeo. El primer conjunto es utilizado para ajustar los pesos y el segundo juego de datos es utilizado para la validación de la red. En general, mientras más información sea utilizada, mejor pueden ser los resultados obtenidos. Un gran volumen de información incrementa el tiempo de entrenamiento pero mejora la exactitud de los resultados y a menudo lleva a una rápida convergencia en el seteo de los pesos. Para un volumen moderado de datos, el 80% es típicamente utilizado randómicamente para el entrenamiento, el 10% para realizar pruebas y el restante 10% para pruebas secundarias; para grandes cantidades de datos, se toma una gran porción como ejemplos y se lo trata como un volumen moderado de datos (TURBAM Efraim, 2001). 7 - Arquitecturas Típicas A menudo es conveniente visualizar las neuronas dispuestas en capas. Típicamente, las neuronas de una misma capa se comportan del mismo modo. Los factores claves para determinar el comportamiento de una neurona son su función de activación y el patrón de pesos cargados sobre los cuales se envían y reciben señales. Dentro de cada capa, las neuronas tienen la misma función de activación y el mismo patrón de conexiones hacia otras neuronas. Para ser más específicos, en muchas redes neuronales, las neuronas dentro de cada capa están completamente conectadas o desconectadas por completo. Si alguna neurona en una capa (la capa oculta) es conectada a una neurona en otra capa (la capa de salida), luego cada unidad escondida es conectada a cada neurona de salida (Beale, 1990). La distribución de neuronas en capas y los patrones de conexión dentro y entre las capas es llamada arquitectura de red. Muchas redes neuronales tienen una capa de entrada en las cuales la activación de cada unidad es igual a una señal de salida. La red ilustrada en la Figura 2 está compuesta por unidades de entrada, unidades de salida y una unidad escondida (una unidad que no es ni una entrada ni una salida) 19 Las redes neuronales pueden ser clasificadas como monocapa y multicapa. Para determinar el número de capas, las unidades de entrada no son contadas como una capa, porque no realizan cálculos Figura 2 – Red Neuronal Artificial (JUDD J Stephen, 1990) 8 - Aplicaciones de las Redes Neuronales Las redes neuronales son una tecnología computacional que puede utilizarse en un gran número y variedad de aplicaciones, tanto comerciales como militares. Los diferentes tipos de redes neuronales pueden tener una aplicación particular apropiada.(McCord Marilyn Nelson, 1990; SMITH Kate A., 2002) Es posible distinguir grupos según distintas disciplinas: Biología Aprender más acerca del cerebro y otros sistemas. Obtención de modelos de la retina. Empresas Evaluación de probabilidad de formaciones geológicas y petrolíferas. Identificación de candidatos para posiciones específicas. Explotación de Bases de Datos. Optimización de plazas y horarios en líneas de vuelo. Reconocimiento de caracteres escritos. Medio Ambiente Analizar tendencias y patrones. 20 Previsión del Tiempo. Finanzas Previsión de la evolución de los precios. Valoración del Riesgo de los créditos. Identificación de falsificaciones. Interpretación de firmas. Manufacturación Robots automatizados y sistemas de control (visión artificial y sensores de presión, temperatura, gas, etc.) Control de producción en líneas de proceso. Inspección de la calidad. Medicina Analizadores del habla para la ayuda en la audición en sordos profundos. Diagnóstico y tratamiento a partir de síntomas y/o de datos analíticos (electrocardiograma, encefalograma, análisis sanguíneo, etc.) Monitorización en cirugía. Predicción de reacciones adversas a los medicamentos. Lectores de Rayos X. Entendimiento de la causa de los ataques epilépticos. Militares Clasificación de las señales de radar. Creación de Armas Inteligentes. Optimización del uso de recursos escasos. Reconocimiento y seguimiento en el tiro al blanco. 21 9 - Conclusiones Las redes neuronales están enfocadas a desarrollar máquinas (ya que su implementación puede ser por hardware) o sistemas inteligentes capaces de simular, desarrollar y optimizar muchas de las funciones de un ser humano. Queda claramente demostrado en las aplicaciones comerciales probando altos niveles de efectividad y precisión adecuados. También la investigación científica puede es un campo en el que queda mucho camino por recorrer. Las redes neuronales pueden aplicarse a muchas áreas de investigación de muchas ramas de la ciencia, pueden hacer cosas que el hombre por sus limitaciones físicas no puede realizar. Su característica fundamental está en la capacidad de aprender, y nuestro desafío en encontrar mecanismos de aprendizaje y razonamiento para nuestras necesidades, ya que podemos elegir entre muchos algoritmos, arquitecturas, tecnologías o productos. Luego que definimos los puntos anteriores queda todavía la puesta a punto de la red definiendo como la vamos a alimentar, que tipo de entrenamiento vamos a realizar y definir los datos que en definitiva van a resultar en su base de conocimiento para la toma de decisiones. 22 Bibliografía - Artículo Original del Test de Turing , 2007 [online] Disponible en Internet http://cogprints.org/499/00/turing.html - FAUSETT, Laurene 1994 Fundamentals of Neural Networks; Architectures, Algorithms and Applications New Jersey, Prentice-Hall [Material Impreso en biblioteca] - HAYKIN, Simon 1994 Neural Networks, a Comprehensive Foundation IEEE Press – MacMillanCollege Publishing Company Inc. - HILERA, José R., et.al. 1995 Redes Neuronales Artificiales Addison Wesley [Material Impreso en biblioteca] - JUDD, J Stephen.1990. Neural Network Design and the Complexity of Learning MIT Press [Material Impreso en biblioteca] - McCord , Marilyn Nelson, et.al 1990 A practical guide to Neural Nets Reading: Addison-Wesley [Material Impreso en biblioteca] - NILS, J. Nilson. 2000. Inteligencia Artificial, una nueva síntesis. McGraw Hill - PICTON, Phil 2000 Neural Networks Londres: Polgrave - Rich E. 1985 Inteligencia Artificial McGraw-Hill ,Inc. - RUSSEL, Beale. 1990. Neural Computing: An Introduction. CRC Press [Online] http://books.google.com - SMITH, Kate A, et.al.2002 Neural networks in business IDEA GROUP INC [Online] http://books.google.com - TURBAM, Efraim, et.al. 2001. Decisión Support Systems and Intelligent Systems Prentice-Hall, Inc. - Turing Test: 50 Years Later 2007 [online] Disponible en Internet http://www.fil.ion.ucl.ac.uk/~asaygin/tt/ttest.html - WIKIPEDIA, 2007 [online] Disponible en Internet: <http://es.wikipedia.org/wiki/Neuronas> 23