Descargar

Inteligencia artificial – Algoritmos genéticos

Enviado por ricardo prieto


  1. Resumen
  2. Introducción
  3. Historia
  4. ¿Cómo funciona la IA?
  5. Ramificaciones de la IA
  6. Conclusiones
  7. References

Resumen

En el presente documento se analizara de manera sintetizada el desarrollo a través del tiempo de la inteligencia artificial (I.A), Se dará una introducción donde se encuentran los conceptos básicos de la misma así como su historia, posteriormente procederemos a analizar los campos de investigación mas importantes y sus aplicaciones en la Sociedad. Pondrá especial énfasis en los algoritmos genéticos, como funcionan y para que fueron creados

Index Terms-Algoritmos, Aprendizaje, Inteligencia Artificial,

Introducción

L

A Inteligencia Artificial (desde ahora IA) es una disciplina que se dedica al desarrollo de software informático capaz de ejecutar trabajos inteligentes. Sus Principales objetivos son:

1) Estudiar el comportamiento inteligente de las personas humanas.

2) Crear programas computacionales inteligentes capaces de imitar el comportamiento humano [1]

Aunque los sistemas computacionales y sus algoritmos secuenciales han superado ampliamente la destreza humana en campos como el cálculo matemático, los computadores no han sido capaces de procesar información básica como por ejemplo el lenguaje natural, la visión, el aprendizaje por experiencia. [2]

Definiciones

Algunas definiciones importantes:

La IA es el arte de crear máquinas con capacidad de realizar funciones que realizadas por personas requieren de inteligencia. (Kurzweil,1990) La IA es el estudio de cómo lograr que las computadoras realicen tareas que, por el momento, los humanos hacen mejor. (Rich,Knight,1991). La IA es la rama de la ciencia de la computación que se ocupa de la automatización de la conducta inteligente. (Lugar y Stubblefied,1993). La IA es el campo de estudio que se enfoca a la explicación y emulación de la conducta inteligente en función de procesos computacionales. (Schalkoff, 1990). [4]

Historia

Aunque no forman parte de la IA los primeros pasos de la misma datan desde hace 300 años A.C., Aristóteles filósofo griego fue el primero en estudiar y entender de manera básica los silogismos o procesos que al ser emulados da como resultado conclusiones básicas de entendimiento.[8]

El génesis de la IA data desde los años 1943-1956 con Warren McCulloch y Walter Pitts, neurofisiólogo y matemático respectivamente presentaron su modelo de redes neuronales artificiales y termina con el taller en Dartmouth en donde se acuña finalmente el Termino "Inteligencia Artificial" a esta disciplina.[8]

En 1957 Newell y Simon realizan el desarrollo del General Problems Solver (GPS). GPS era un sistema orientado a la resolución de problemas matemáticos generales mediante lógica.[8][9]

A finales de los años 50 y comienzos de la década del 60 se desarrolla un programa dirigido a la lectura de oraciones en inglés y la extracción de conclusiones a interpretando su significado, su autor fue Robert K. Lindsay. [8]

En 1965-70, comenzaron a aparecer software profesional, los mismos que predicen la probabilidad de una solución matemática en cálculo complejo.[9]

En la década 1970-80, creció el uso de estos sistemas, muchas veces diseñados para problemas realmente muy complejos como MYCIN, que asistió a médicos en el diagnóstico y tratamiento de infecciones en la sangre. [8][9]

En 1980 hasta la actualidad la IA. se convierte en una industria y se retoman los estudios sobre las Redes Neuronales, esta aportando nueva teoría, para crear una computadora pensante aplicable a la robótica. [2],[3].

Desarrollo

¿Cómo funciona la IA?

La IA funciona mediante algoritmos, los mismos que son programados en leguaje de computadora. Algunos lenguajes mas utilizados para la programación de IA son Lisp y Prolog ya que son lenguajes de programación declarativos [5]. Aunque cabe recalcar que se comenzó desarrollando software de IA en lenguaje de muy bajo nivel como assembler, y con el desarrollo de la tecnología también se han desarrollado mejores lenguajes de programación, mas adaptables y sencillos para aplicaciones de IA. [6]

Por otro lado para resolver un problema se necesita primero tener un buen planteamiento del mismo, para eso hay que tomar en cuenta varias cosas:

1) Tener en cuenta cual es la situación original de la que se parte. (Condiciones iniciales)

2) Establecer el estado final o solución del problema. (Que se desea llegar a obtener)

3) Tener en claro cual es el conjunto de operadores y medios se van a utilizar para que el problema se resuelva

Si estos tres pasos no pueden darse, se considera que el problema esta mal planteado o formado.[6]

Aunque los 3 estados anteriores son básicos para el planteamiento del problema debemos tomar en cuenta otros 2 aspectos un tanto mas abstractos para el entendimiento de la maquina.[7][6]

1) Introducir el concepto de espacio de situaciones o estados posibles, en este punto se situara la situación inicial y final del problema.

2) Concepto de búsqueda esto quiere decir encontrar caminos para llevar desde el estado inicial hasta el estado final del problema.[7]

Teniendo en cuenta estos puntos podemos decir que siendo las condiciones iniciales del problema la raíz del mismo debemos encontrar caminos rápidos para llegar a la solución, esto a través de la introducción del concepto de espacio y búsqueda en el software [6]

Algunos ejemplos prácticos son los llamados algoritmos genéticos, que son algoritmos basados en las premisas de selección natural y evolución. Y sirven para estudiar el proceso evolutivo de las especies. [7]

Ramificaciones de la IA

La IA se ha dividido en campos para su estudio esto debido a la infinidad de aplicaciones que puede tener, a continuación veremos los campos más destacados:

1) Sistemas Expertos

Son sistemas interactivos basados en computadora que utiliza la herramienta de decisión tanto de los hechos y heurísticos[8] para resolver problemas complejos, decisiones basadas en los conocimientos de un experto[9]. Por definición, un sistema experto es un programa informático que simula el proceso de pensamiento de un experto humano para resolver problemas de decisión complejos en un dominio específico [8][9].

Los sistemas expertos son, por lo tanto, intermediarios entre el experto humano, que transmite sus conocimientos al sistema, y el usuario de dicho sistema, que lo emplea para resolver los problemas que se le plantean con la competencia de un especialista en la materia y que, además, puede adquirir una destreza semejante a la del experto gracias a la observación del modo de actuar de la máquina[13]

Los sistemas expertos se organizan en cuatro niveles diferentes: 1.1) El conocimiento de base se compone de reglas de resolución de problemas, procedimientos y datos intrínsecos relacionados con el dominio del problema. 1.2) La memoria de trabajo se refiere a tareas específicas de datos para el problema en cuestión. 1.3) Inferencia del motor es un mecanismo de control al que se aplica una base de conocimientos a los datos específicos de la tarea de llegar a alguna solución o conclusión. 1.4) User interfaz – el código que controla el diálogo entre el usuario y el sistema.[8][9][3]

2) Aprendizaje y Razonamiento Automático

Es el estudio y el modelado informático de los procesos de aprendizaje en sus múltiples manifestaciones constituyen el objeto de investigación del aprendizaje automático. [11]

También se podría considerar como tratar de construir sistemas informáticos que optimicen un criterio de rendimiento utilizando datos o experiencia previa. Una situación en la que se requiere aprender es cuando no existe experiencia humana o cuando no es fácilmente explicable [12]

Actualmente los estudios se centran es 3 ejes distintos

2.1) Estudios orientados a las tareas: A partir de una tarea predeterminada analizar los sistemas de aprendizaje aplicados para mejorar en el desarrollo de esa tarea.

2.2) Simulación cognoscitiva: La investigación y simulación informática del proceso de aprendizaje humano.

2.3) Análisis teórico: La exploración teórica del espacio de los posibles métodos de aprendizaje y los algoritmos con independencia del dominio de las aplicaciones [11]

3) Robótica

Los robots experimentales creados para estos efectos eran automatismos capaces de recibir información procedente del mundo exterior (sensores, cámaras de televisión, etc.), así como órdenes de un manipulador humano (expresadas en lenguaje natural). De este modo, el robo determinaba un plan y, de acuerdo con él, ejecutaba las órdenes recibidas mediante el empleo de un modelo del universo en el que se encontraba. Era incluso capaz de prever las consecuencias de sus acciones y evitar, así, aquéllas que más tarde pudieran resultarle inútiles o, en algún momento, perjudiciales.[13]

El principal problema con el que se enfrenta la inteligencia artificial aplicada a los robots es el de la visión. Mientras que la información recibida a través de censores se puede interpretar con relativa facilidad y entra a formar parte de la descripción del modelo de universo que emplea el robot para tomar decisiones, la percepción de las imágenes captadas y su interpretación correcta es una labor muy compleja. En cuanto a la interpretación de las imágenes captadas mediante cualquier sistema, se ha logrado ya el reconocimiento de formas preprogramadas o conocidas, lo que permite que ciertos robots lleven a cabo operaciones de reubicación de piezas o colocación en su posición correcta a partir de una posición arbitraria.[13]

Existen algunos algoritmos que pueden completar el recorrido de la gráfica, aunque algunos de los agentes de la matriz o la gráfica cambia durante la ejecución, siempre y cuando el gráfico permanece conectado. [12]

4) Procesamiento de Lenguaje Natural

El procesamiento del Lenguaje natural, en la IA trata sobre el análisis de los patrones del lenguaje e intentar crear algoritmos sobre los cuales el Computador entienda en palabras utilizadas en una conversación de alto nivel, abstrayendo datos y comprendiendo el mensaje, cabe recalcar que esto no solo se centra en el entendimiento de sonidos sino también textos. [15]

Existen técnicas de Recuperación de información, estos utilizan técnicas basadas en distribución de los términos del documento para estimar la relevancia con respecto a la consulta. Para esto inicialmente se necesita que el sistema emplee algoritmos que entiendan de cierta manera la consulta y la compare. Un grave problema al que se ve acompañado esta técnica es la gran variación del lenguaje, ya que el mismo concepto se puede operar y entender en varios circunstancias. [15]

5) Redes Neuronales

Las Redes Neuronales ratifícales son sistemas de procesamiento que copian esquemáticamente la estructura neuronal del cerebro para tratar de reproducir sus capacidades [17]

En consecuencia, son una clase de modelos no lineales flexibles que se caracterizan por ser sistemas paralelos, cuentan con una gran cantidad de procesadores elementales y cada uno de estos trabaja con una pequeña parte de un problema mayor. Estos procesos son muy adaptables de acuerdo al entorno. [16]

La característica más importante de estos sistemas es su capacidad de aprendizaje, donde el conocimiento se basa en un numero de muestras. Además las redes neuronales sugieren que poseen varias ventajas potenciales sobre los métodos estadísticos tradicionales. [16]

Algunas aplicaciones practicas que se han dado a las redes neuronales son los campos financieros ya que estos no se comportan de forma lineal.[16][1][18]

Las Redes neuronales también tienen aplicaciones es en la economía, primero para la clasificación de agentes económicos como las compañías para obtener una estimación de quiebra, capacidad acreedora de clientes bancarios. [16][18]

6) Algoritmos genéticos

"Los algoritmos genéticos son programas que evolucionan, simulando en cierto grado, la selección natural, alcanzan a resolver sistemas complejos, que ni siquiera quienes lo crearon pueden comprender plenamente" Jhon H. Holland [21]

Los algoritmos genéticos (AG) proporcionan un método de aprendizaje basado en la analogía con la evolución de las especies. Los AG generan un conjunto de hipótesis mediante la mutación y recombinación de parte del conjunto de hipótesis conocido. En cada paso el conjunto de hipótesis conocido como "población actual" se renueva remplazando una proporción de esta población por los sucesores de las hipótesis más "adecuadas". [14]

El comportamiento básico de un algoritmo genético es el siguiente: de forma iterativa va actualizando la población de hipótesis. En cada iteración, todos los miembros de la población son procesados por la función de evaluación, tras lo cual una nueva población es generada. La nueva generación estará compuesta por:

– Las mejores hipótesis de la población actual

(Seleccionadas probabilísticamente)

– Y el resto de hipótesis necesarias para mantener el número, que se consiguen mediante el cruce de individuos.

A partir de dos hipótesis padre (seleccionadas probabilisticamente a partir de la población actual) se generan dos hipótesis hijas recombinando sus partes siguiendo algún criterio establecido. [14][20]

Una vez llegados a este punto (con una nueva población con el mismo número de individuos), a un determinado porcentaje de la población se le aplica un operador de mutación. [14]

Una forma para la selección de individuos consiste en obtener una distribución de probabilidad asociada a cromosomas, habitualmente dividiendo la adaptación de uno en la suma de toda la población y en aprovechar dicha distribución a una ruleta, dando mas espacio en la misma a los individuos mas adaptados. [19][14]

Los investigadores mas pragmáticos creen que lo que hay que hacer con el uso de los algoritmos geneticos es no envidiar los métodos de la naturaleza de selección natural sino emular esos métodos para adaptarlos a las diferentes relaciones y acciones sociales existentes de esa manera entender el de mejor manera como la sociedad va evolucionando.[21][22]

Un problema muy real es que la selección natural elimina uno los problemas mas grandes de la programación de algoritmos al saber las necesidades naturales por adelantado lo que obstaculiza al realizar algoritmos del tipo genéticos. [23][14]

La ventaja usar algoritmos genéticos en el campo computacional es que pueden resolver mayores problemas que los algoritmos y programas tradicionales.[23][24]

En casi todos los organismos naturales la evolución se produce debido a dos procesos primarios: la selección natural y el proceso de reproducción. [25]

La primera determina que individuo sobrevivirá a los cambios naturales, mientras que la segunda asegura la mezcla y combinación de individuos y organismos, mejorando las capacidades de los mismos mediante la evolución.

Debido a esta mezcla los organismos evolucionan de una manera mas rápida.[22]

En cambio la selección constituye un proceso relativamente sencillo: Cuando un organismo falla en alguna prueba de idoneidad, este organismo muere.[26][29]

El problema principal de los algoritmos genéticos es encontrar un código que simule un código genético, este código que al ser recombinado pueda presentar mejoras en su propio algoritmo evolucionando de manera autónoma sin que la mano de su creador primigenio este inmiscuida en el mismo.[23]

Para evitar este problema, se ha debatido en las forma en la que un programa pueda reproducirse y mutarse a si mismo por lo que se ha conjeturado una serie de reglas que deben contener los algoritmos geneticos, cada una de estas reglas son especificas, y se darán siempre que un dato satisfaga sus condiciones.[26]

Estas condiciones equivalen a cadenas de bits en las entradas del sistema para que el sistema reaccione y comience a recombinarse.[27][22]

Aunque el rasgo mas importante de estas reglas sea su capacidad de reconocer parámetros, pueden servir también para reconocer parámetros.[19][27]

La forma para reconocer evolutivamente parámetros es la siguiente:

Se parte de datos aleatorios ceros y unos.

Se evalua cada de esos datos tomando en cuenta la calidad del resultado.[23]

Las cadenas de datos de mayor calidad se reproducen mientras las inferiores mueren. [25]

Mediante este método podemos obtener que al pasar las generaciones de cadenas, se obtendrá resultados del problema cada vez mas perfectos.[25]

Los problemas en los que mas se han utilizado este tipo de algoritmos van desde la teoría de juegos hasta diseño de maquinas complejas.[26]

Los AG se enfrentan a posteriori a un problema mayor cual de todas esas variantes de cadenas de datos es la respuesta mejor adapatada que se busca.[30][31]

Una técnica que generalmente es utilizada para resolver este problema es iniciar desde un punto elegido al azar, si una ligera modificación mejora la calidad de nuestra solución se continua por ese camino, de no ser asi se elige otro punto al azar y se continua con las pruebas.[28][16]

Pero mientras mas complejo sea el sistema mas puntos puede generar de posibles soluciones validas, esto aumenta mas la dificultad de encontrar la posible solución al problema, en este caso el procedimiento anterior para encontrar la solución al sistema se hace casi nula e invalida. [23][28]

Para el caso anterior se dota a los algoritmos genéticos no solo con la capacidad de reproducirse sino también con la capacidad de buscar entre todo el conjunto de soluciones las que contengan las mayores probabilidades de ser las correctas.

Esta habilidad de los AG para concentrar las soluciones mas prometedoras es fruto directo de poder intercambiar sus cadenas portadoras de soluciones parciales.[30][21]

Es Impórtate recalcar que las cadenas hijas resultado de la mezcla de las mismas no remplazan a las cadenas padres sino que ocupan las cadenas anteriormente eliminadas.[17][25]

En cuanto al tema de la mutación que ya venimos hablando anteriormente se estima que alrededor de cada 10000 bits de evolución en un algoritmo genético un bit se cambia de 0 a1 y viceversa, aunque esta habilidad no permite mejorar el encontrar soluciones a los problemas que se plantean, si dan la plena seguridad de que los mismos se mantengan en constante evolución y que por el motivo de la falta de mutacion dejen de evolucionar y se tornen inútiles en la búsqueda de la solución deseada.[13][28][29][30]

El algoritmo genético explota las mas altas posibilidades de soluciones en el espacio de estados, estas posibles soluciones se denominan regiones diana.[22]

Cuando existen unos y ceros contiguos, se les llama bloques contructivos, estos bloques tienen la mayor probabilidad de crecer para las siguientes generaciones, lo que al mismo tiempo les da alta probabilidad de encontrar la respuesta idónea a un problema propuesto[19][21]

Es también de suma importancia entender el sistema de clasificación de las reglas de un sistema con Algoritmos Genéticos, los Algoritmos Genéticos se diseñan de manera tal que las cadenas de códigos compitan entre si, para esto se intenta hacer competir diferentes partes del código, por el control del sistema, en esta competencia los códigos que se encuentren en la punta del control del sistema alcanzan mas oportunidad de seguirse reproduciendo, de esta manera, se acentúa aun mas el hecho de que se tiene que evolucionar de una manera mas eficaz para conseguir el control del sistema y por ende la punta de la cadena evolutiva. [22][19][23]

Conclusiones

Podemos concluir que la inteligencia artificial es un campo que estudia el comportamiento del cerebro humano y lo intenta simular de manera artificial en robots y computadoras.

En 56 años desde que fue acuñado el termino "Inteligencia Artificial" la misma a encontrado campos de aplicación importantes y de ayuda a la sociedad, los sistemas expertos aportan al diagnostico de enfermedades, las redes neuronales ayudan a la comprensión de fenómenos económicos sociales entre otros, los algoritmos genéticos facilitan a obtener una estimación de la evolución de genes y células. El aprendizaje automático nos permite simular las etapas de la enseñanza y la forma de entender y asimilar conceptos por parte de nuestro cerebro. En el campo de la robótica se intenta simular el comportamiento humano para que puedan realizar tareas comunes, de esta manera mejorar la calidad de vida de la humanidad.

Los algoritmos genéticos permiten modelar el sistema de reproducción de la vida y su selección natural, los algoritmos de este tipo emulan la evolución natural de varias maneras.

Primero la reproducción de esta manera las cadenas de código se aseguran de estar en evolución mediante la mezcla de dichas cadenas.

La selección natural es simulada mediante reglas y algoritmos que permitan escoger entre un grupo de soluciones posibles la que probablemente tenga una solución mas perfecta al problema planteado.

La mutación, como se vio anteriormente en el paper cada cierta cantidad de cadenas de código se cambia un bit en los mismos mutándolo lo que permite hacer que la evolución no se estanque y continúe el proceso.

La competencia es importante en los algoritmos genéticos se los hace competir entre diferentes algoritmos para obtener el control del sistema asegurando que intentaran evolucionar de manera mas rápida y eficaz para la obtención del control del sistema.

Aunque la inteligencia artificial tiene ya algún tiempo de desarrollo aun no se ha logrado concretar algoritmos que supongan una real simulación de las respuestas del cerebro, Se espera que con el mejoramiento de algoritmos, tecnología, materiales de construcción de computadoras y elementos electrónicos, se lograra un acercamiento mas profundo al modelado del cerebro humano, lo que nos hará comprender de una mejor manera nuestra forma de aprender del mundo y los procesos que intervienen en ello.

References

  • [1] Javier De Andrés Suárez, "Técnicas de la Inteligencia Artificial aplicadas al análisis de la solvencia empresarial", Articulo, pp. 1–4.

  • [2] Vicente Pablo Guerrero Bote, Cristina Lopez-Pujalte, "Inteligencia Artificial y documentación", Articulo, 2001, pp. 66–74.

  • [3] Stuart J. Russell, Peter Norvig, Artificial Intelligence A modern Approach, PrenticeHall, EnglewoodCliffs, NewJersey 07632, ch 1-7

  • [4] http://www.gestiopolis.com/administracion-estrategia/inteligencia-artificial.htm

  • [5] http://www.larevistainformatica.com/clasificacion-de-los-lenguajes-de-programacion.html

  • [6] Claudio Gutierrez, Un algoritmo de Inteligencia Artificial, Articulo, pp.6-26

  • [7] Davis, L. and Mitchell, M., Handbook of genetic algorithms, Article, Van Nostrand Reinhold, 1991

  • [8] Pearl, J., Heuristics: intelligent search strategies for computer problem solving, Book, Addison-Wesley Pub. Co., Inc., Reading, MA, 1984

  • [9] Obaid Mirza, Habeeb, Artificial Intelligence And Expert Systems, Paper

  • [10] Medicherla Pratyusha, Morla Sirisha, Artificial Intelligence & Learning computers,Paper, Nalanda Institute of Engineering, 2007

  • [11] http://www.itba.edu.ar/nuevo/archivos/secciones/art_revistas_5.pdf

  • [12] http://www.dia.fi.upm.es/index.php?page=aprendizaje-automatico&hl=es_ES

  • [13] I.A. Gravagne , B. Mulgrew, and P. M. Grant, "Large deflection dynamics and control for planar continuum robots," IEEE Trans.. June 2003

  • [14] David Díaz, Gastón Crevillén, "Inteligencia Artificial, Robótica, Neurocomputación, Programación Neuronal y otras Hierbas",2011

  • [15] Jesus Vilares Ferro, "Aplicaciones del Procesamiento del lenguaje natural en la recuperación de la información en español", Departamento de computación, Universidad la Coruña, 2006.

  • [16] Antonio Parisi F, "Evaluación de modelos de redes neuronales de predicción del signo de la variación del IPSA", 2002

  • [17] Martin del Brio, "Las redes neuronales Artificiales",1997

  • [18] Carlos Serrano Cinca, Bonifacio Martin del Brio, "Predicción de la quiebra bancaria mediante el empleo de Redes Neuronales" ,1993

  • [19] O. Cordon, F. Moya, M.C. Zarco, "Breve estudio sobre la aplicación de los Algoritmos Genéticos a la recuperación de la Información", Universidad de Granada.

  • [20] John H. Holland, "Algoritmos Genéticos", Investigación y Ciencia, 1992.

  • [21] E. Rich, K. Knight, "Inteligencia Artificial", McGraw Hill (1994). Capítulo 1

  • [22] Javier Bejar "Inteligencia Artificial"

  • [23] Fernández "Artificial, pero no inteligencia" (suministrado)

  • [24] J. Pitrat " El nacimiento de la Inteligencia Artificial" (suministrado

  • [25] S. Russel, "Inteligencia Artificial: Un enfoque moderno", Prentice Hall(1996)

  • [26] Varios. "Inteligencia artificial. Conceptos, técnicas y aplicaciones" Marcombo (1987).

  • [27] E. Charniak, D. McDermott "Introduction to Artificial Intelligence" Addison-Wesley (1985).

  • [28] R. Penrose, "La Inteligencia y los Ordenadores" (suministrado).

  • [29] R. Reddy, "The Challenge of Artificial Intelligence" (suministrado).

  • [30] T. Munakata (Guest Editor), "New Horizons in Commercial and Industrial AI" (suministrado)

  • [31] A. Humberto Vargas R "Aplicaciones de la inteligencia artificial"

 

 

Autor:

Prieto Galarza Ricardo Manuel.

Universidad Politécnica Salesiana

Cuenca-Ecuador