Programación Genética – JGAP

Les presento un ejemplo de código en JAVA de programación genética con ayuda de la librería JGAP, parece muy complicado pero después de analizarlo tiene mucha lógica.

 

Anuncios

Ramas de la Inteligencia Artificial

La inteligencia artificial (IA) debido a su naturaleza cuenta con muchos campos de estudio, es decir, ramas en las que se divide y se investiga con especialización; cada una de estas ramas surge por medio de ideas innovadoras y el surgimiento de nuevos paradigmas de cómputo en el ámbito de la investigación computacional que permitieron nuevas técnicas de programación, éstas técnicas incluyen el concepto heurístico (Heurística: Idea Basada en la experiencia que ayuda a determinar cómo se debe proceder.) y se apoyan en nuevos sistemas de hardware que se derivan del desarrollo de la tecnología a traves de las generaciones de computadora.

Cada una de las ramas de la IA no son más que una metodología diferente para tratar la resolución de problemas aplicando el principio de inteligencia a los sistemas. Éstas ramas se pueden dividir en áreas clásicas y áreas de vanguardia de acuerdo a la época en que surguieron, pero esta clasificación varía debido a la diversidad de metodologías de IA existentes, por tal motivo se presentarán cada una de las ramas y sus características tratando de seguir el orden de surgimiento de cada una.

Como primer rama tenemos las “Redes de Petri”, surgidas de la tesis doctoral en 1962 de Carl Adam Petri, en donde se establece por primera vez una teoría general para sistemas discretos paralelos. Petri generalizó la teoría de autómatas e hizo que utilizaran métodos gráficos para la representación de sistemas por medio de condiciones y eventos, esto quiere decir que un modelo de red de Petri representa las propiedades de un sistema en el lenguaje de lógica y la representación algebraica, lo que le da un sentido nuevo a los procesos computacionales.

Derivados de este concepto surgen los “Sistemas Expertos” (SE) o también conocidos como “Sistemas Basados en Conocimiento”, un SE es un programa o un conjunto de programas informáticos que aplican el proceso de razonamiento del humano experto en la materia en la solución de probelmas específicos, la función de estos sistemas es tomar decisiones inteligentes con base al conocimiento y la heurística al interpretar grandes cantidades de datos, por lo que su función es auxiliar a los expertos, no para reemplazarlos. Unos ejemplo de aplicación son el área médica, el análisis químico, la exploración geológica, entre otros.

En 1965 Lofti A. Zadeh introdujo la “Lógica Fuzzy” o conocida también como “lógica borrosa”, que es básicamente una forma matemática que representa la impresición inherente al lenguaje natural, su principio es generalizar la lógica clásica haciendo que las variables tomen valores lingüisticos de verdad, en donde se divide la pertenencia a los conjuntos borrosos en forma gradual, para así poder implementar la forma de razonar propia de lo que conocemos como sentido común. Se implementa para ayudar a la toma de decisiones y al diagnóstico de situaciones.

Otra rama se conoce como “Procesamiento del Lenguaje Natural”, que es un intento de comunicación cada vez más clara entre humano-máquina y máquina-humano, dejando el uso de lenguajes de programación o de un conjunto de comandos, para procesar el lenguaje humano natural. Para procesar dicho lenguaje humano natural se necesita dividirlo, primero se obtiene la comprensión del lenguaje natural, que investiga métodos para que la computadora permita comprender instrucciones dadas en este tipo de lenguaje, para que así la computadora nos pueda comprender más fácilmente; como segundo paso es la generación de lenguaje natural, en donde la computadora es capaz de  expresarse en el lenguaje humano natural, de tal forma que podamos entenderla de manera más sencilla.

Una parte de la “Robótica” también se considera dentro de las ramas de la IA, partiendo de la idea de que un robot es un dispositivo electromecánico programado para que realice tareas manuales, utiliza el principio de IA sólo cuando es capaz de responder a cambios en su entorno en lugar de seguir instrucciones establecidas previamente, esto se puede llevar a cabo con la ayuda de sensores y de cámaras que le permitan interpretar las señales del ambiente que lo rodea y adaptarse al mismo.

El “Reconocimiento del Habla” es otra rama, ya que utiliza el método interactivo de comunicación primaria para el ser humano que es el habla, lo que le permite “escuchar” a una persona hablar, decodificar el significado de las palabras, interpretarlas, y transmitir una respuesta. Actualmente se utiliza mucho para personas con capacidades diferentes que no son capaces de utilizar el teclado y necesitan comunicarse por medio del habla para poder utilizar diferentes dispositivos.

Una rama más es la “Visión por Computadora” o mejor conocida como “Reconocimiento de Patrones”, parte del medio primario que tienen las personas para percibir su entorno, es decir, de la visión, a través de una cámara se captan las imágenes, las cuales se procesan y se reconocen patrones en el entorno, como por ejemplo un lápiz, una planta, una animal, etc, de tal manera que la computadora pueda entender exactamente lo que esta viendo.

La siguiente rama se conoce como “Aprendizaje y Razonamiento Automático”, la cual consiste en que una computadora sea capaz de planificar, tomar decisiones, plantear y evaluar estrategias, aprendiendo a partir de la experiencia y que por lo tanto se capaz de autoreprogramarse para adaptarse a su entorno.

Campos más actuales comienzan con las “Redes Neuronales” a partir de la década de los 80s, el objetivo es emular el proceso biológico del aprendizaje humano por medio de procesadores (estructuras neuronales) que operan en paralelo, cuya función se determina por los estimulos dados a través de la red, las conexiones y el procesamiento local realizado por los nodos neuronales, cuyo resultado es igual al aprendizaje de funciones matemáticas por medio de datos de entrenamiento. Hay que aclarar que estos sistemas como tal, no se programan sino que se entrenan con señales con ruido para reconocer objetos.

La siguiente rama es la “Lógica Difusa”, es la implementación de otra lógica a diferencia de la lógica tradicional booleana, que se basa en el razonamiento aproximado y el cálculo de palabras, para lograr simplificar y aproximar la descripción del problema de una manera más natural, robusta y eficiente. Por ejemplo la lógica booleana tiene valores de verdad de 0% y 100% únicamente, mientras que la lógica Difusa puede tener valores de verdad de 0%, 25%, 50%, 75% y 100% lo que conlleva a entender sentencias como “Alto”, “Muy Alto”, “Medianamente Alto”, “Poco Alto” y “No Alto”.

Dentro de las ramas se encuentra parte de lo que es la “Realidad Virtual”, una realidad virtual es la recreación de un mundo artificial en tiempo real que pueden ser captado por diversos canales sensoriales del espectador que navega inmerso a través de dicho mundo, su aplicación como IA radica en el mecanismo de interpretación de la interacción del ambiente virtual, como por ejemplo la luz del sol con respecto a las sombras de objetos, la sensación de velocidad, el rebote de una pelota, el flujo del agua, etc.

Los “Agentes” o “Wizards”, son programas invisibles que trabajan como espías observando las acciones comunmente realizadas por el usuario, las cuales son interpretadas y se guardan para llevar un control de las mismas, si existe alguna anomalía, como ejecutar un programa distinto al cotidiano, o un error en una acción realizada por el usuario el
programa lanza una alerta y sugiere una serie de soluciones, también es capaz de realizar las tareas cotidianas al iniciar el equipo para facilitar la tarea del usuario.

La “Computación Evolutiva” pertenece también a la rama de la biología, la cual desarrolla programas basados en la analogía de procesos biológicos tales como la selección natural y la evolución, esta idea parte de algoritmos genéticos y de un sistema computacional inmunizado; dentro de sus aplicaciones se encuentra la optimización de problemas,
programación automática y el aprendizaje de máquinas.

Los “Algoritmos Genéticos” (AG), son procedimientos de búsqueda y optimización que ayudan a modelar los mecanismos de selección natural de los seres vivos según los mecanismos genéticos. Surgen en 1975 por el estudio que realizó Holland sobre autómatas celulares. Su función es seleccionar de una población de soluciones candidatas (individuos), intentar producir nuevas generaciones de soluciones mejores que las anteriores, una y otra
vez hasta aproximar a una solución perfecta.

Existe también la “Programación Genética”, que aplica el principio de los AG para hacer evolucionar programas informáticos, el resultado es simple, se seleccionan los programas más aptos después de generaciones y herencia para la solución de un problema dado, también involucra factores de mutaciones aleatorias para desarrollar nuevos
programas.

Dentro de la IA también se analiza la “Teoría del Caos”, la cual se caracteriza por ser un conjunto de técnicas utilizadas para examinar y determinar relaciones altamente complejas entre datos que son de un inicio suministrados al azar. Lo importante en este aspecto es comprender los resultados que arroja cada técnica, clasificarlos, y aproximar de la
manera más cercana el comportamiento lógico que realiza cada uno de los elementos presentes en el cálculo.

Opinión

Es increible la cantidad de metodologías que tiene la IA, cada una de sus ramas es un mundo de investigación que cada vez más se está ampliando y da origen a nuevas ramas, lo que más resalta en todas ellas es que están estrictamente fundamentadas en modelos matemáticos sólidos, lo que quiere decir que las matemáticas forman parte fundamental de
cualquier inteligencia, y me atrevo a decir que es principalmente lo que la conforma.

Anteriormente contaba con el conocimiento de algunas de las ramas de la IA, pero no tenía idea que pertenecían a ella, por ejemplo, el reconocimiento de patrones y la realidad virtual, parece ser que la intención de estos estudios es asemejar con tecnología las capacidades que el ser humano tiene, para así poder comprender lo que somos, cómo
funcionamos, y sobre todo como pensamos. Partiendo de ahí se puede observar que la comodidad que ha buscado desde siempre el ser humano para las labores tanto cotidianas como complejas se puedan realizar sin hacer tanto esfuerzo físico y/o mental. También nos ayuda a entender el entorno que nos rodea y nos facilita la investigación científica.

El ser humano es tan inteligente que es capaz de emular inteligencia con la tecnología que desarrolla, y no es de extrañarse que desarrolle sistemas tan complejos aproximados a la misma inteligencia humana, aunque en mi opinión ningún sistema de este tipo podrá alcanzar a la capacidad humana por el simple hecho de que lo que nos rodea está hecho por señales analógicas y logarítmicas principalmente en lugar de simulaciones de unos y ceros que restan mucho la información que se puede llegar a obtener.

Referencias.

1.- Inteligencia Artificial e Ingeniería del Conocimiento. Gonzalo Pajares Martinsanz y Matilde
Santos Peñas. AlfaOmega. México, D.F. Mayo 2007.
2.- A Fondo: Inteligencia Artificial. Henry C. Mishkoff. Ediciones Anaya Multimedia S. A.
Madrid 1988.
3.- Ramas de la Inteligencia Artificial.
http://www.depi.itch.edu.mx/apacheco/ai/ramas.htm
Fecha: Viernes 13/Agosto/2010

Ejemplos Espacio-Estado y Reducción de Problemas

Estos ejemplos son más que nada para que se den una idea de lo que es espacio-estado y reducción de problemas para la representación de problemas, no se fíen de los ejercicios ya que no están terminados algunos y otros no están del todo bien hechos, recuerden que mientras más descriptivos sean mejor.

Definición de Inteligencia

La definición de inteligencia varía de acuerdo al punto de vista con el que se mire, desde que se empezó el análisis de lo que era inteligencia a tenido un enfoque filosófico, actualmente existe una variedad de definiciones según el diccionario o el área de investigación.

Si se buscan los sinónimos de inteligencia aparecen palabras como intelecto, mente, razón, entendimiento, intelectualidad, talento, lucidez, ingenio, capacidad o destreza, y si se busca en un diccionario es la “Facultad de entender, de comprender”, “Habilidad y experiencia”, lo que nos da una idea de que la inteligencia involucra el entendimiento y la comprensión a través de la habilidad y la experiencia del individuo, pero esto no nos deja tranquilos debido a su definición tan general.

Por tal motivo hay que comparar otras definiciones que nos permitan establecer un significado lo más amplio posible, por ejemplo, para muchos la inteligencia es la “Habilidad de percibir y adaptarce al entorno” ó “Capacidad de adquirir y aplicar conocimiento”, con esta s definiciones tenemos ya otras palabras clave, percepción, adaptación al entorno,
adquisición y aplicación de conocimiento.

A consecuencia de la variedad de interpretaciones que se le da a los conceptos de inteligencia existen sistemas que se consideran inteligentes por algunas personas, pero para otras no, por ejemplo, si la inteligencia es la habilidad de percibir y adaptarce al entorno, una calculadora no es inteligente debido a su naturaleza de reacción de acuerdo a eventos, se podría decir que percibe los impulsos que se le dan al introducir los numeros y operaciones, pero no se adapta al entorno, simplemente arroja números; pero si se toma la definición de adquirir y aplicar conocimiento, la calculadora sí es inteligente debido a su memoria que le permite “recordar” la operación pasada y almacenar los datos para calcularlos, y su aplicación del conocimiento al “saber” cómo hacer una operación matemática.

Si nos vamos al área de computación existen unas definiciones que nos favorecen a la hora de construir sistemas inteligentes, la definición más sencilla es que la inteligencia es la “Habilidad de percibir y adaptarce al entorno, tomar decisiones y realizar acciones de control”, sin embargo si se va al extremo de querer involucrar más a fondo lo que es
inteligencia se podría decir que es “Una propiedad que emerge cuando los procedimientos de focalizar la atención, búsqueda combinatoria y generalización son aplicados a la información de entrada en orden a producir salida”, es decir, que si un sistema cualquiera cuenta con un procedimiento de focalizar la atención, de realizar búsqueda combinatoria (toma de decisiones) y generalización (procesos secundarios) que se causen por medio de un estímulo (entrada) deberán generar una reacción (salida). Para los biólogos quedaría una definición como esta “Capacidad de percibir y entender eligiendo razonadamente y actuar satisfactoriamente bajo gran variedad de circunstancias, así como prosperar, sobrevivir y reproducirse en un entorno complejo y hostil”, esto aplica para sistemas más complejos como los seres vivos.

Estudios en áreas psicológicas y pedagógicas nos dicen que la inteligencia como tal no es una, sino que existen varios tipos de inteligencia, inclusive hay estudios que dicen que son infinidad de inteligencias que se accionan según el estímulo que se le de al individuo, por ejemplo, existe la inteligencia emocional; como somos seres vivos, no sólo pensamos, también sentimos y percibimos, la inteligencia emocional se encarga de controlar estos impulsos, mientras más inteligencia emocional se tenga, seremos más estables y tenderíamos menos a la depresión y el dejarnos llevar por los impulsos.

La inteligencia de memoria, de pensamiento (razon), cognoscitiva (conocimiento), emocional, de superación (sobresalir en un ambiente hostil de cualquier ámbito), son sólo algunas de las inteligencias más estudiadas. Ahora bién existen características que se pueden identificar para concluir la definición de inteligencia, es sólo una de muchas formas de determinar la inteligencia, se les conoce como “Actitudes esenciales de la inteligencia” propuestas por Douglas Hofstadter en su libro “Gödel, Escher, Bach: Un eterno y grácil bucle” ganador del premio Pulitzer, las cuales son:

1.- Responder de una manera muy flexible a las situaciones.
2.- Sacarle el sentido a mensajes contradictorios o ambiguos.
3.- Reconocer la importancia relativa de los diferentes elementos de una situación.
4.- Encontrar semejanzas entre las situaciones, a pesar de las diferencias que pueda haber entre ellas.
5.- Extraer diferencias entre situaciones a pesar de las similitudes que pueda haber entre ellas.

 

Se debe de aclarar que estos conceptos son dados de acuerdo a la comparación de inteligencia humana y no principalmente de la inteligencia de los demás seres vivos con inteligencia.

Opinión.

En fin, existen definiciones de todo tipo, depende de cada persona elegir la que más le convenga o le agrade. Para fines prácticos en nuestra carrera nos enfocamos más a los conceptos que tienen que ver con el proceso de toma decisiones, acciones de control, percepción, adaptación del entorno y operaciones, principalmente porque la computadora trabaja de esa forma y por tal motivo tenemos que adaptar esto para realizar actos de inteligencia al programar tanto hardware como software.

Estoy de acuerdo con la idea de que existen diferentes tipos de inteligencia, de ahí que surja el concepto de inteligencia artificial, es muy interesante e impresionante saber que existe tal varidead y que estamos lejos todavía de comprender al 100% almenos una de ellas, y le incluiría que de cada inteligencia de cada ser humano es diferente a la inteligencia
de otro, lo que hace un sin fin de posibilidades de inteligencias, gracias a esto se han hecho los grandes descubrimientos e inventos de la historia, no hay que olvidar que somos una especie altamente diversa.

Referencias.

1.- Inteligencia Artificial e Ingeniería del Conocimiento. Gonzalo Pajares Martinsanz y Matilde
Santos Peñas. AlfaOmega. México, D.F. Mayo 2007.
2.- A Fondo: Inteligencia Artificial. Henry C. Mishkoff. Ediciones Anaya Multimedia S. A.
Madrid 1988.
3.- Diccionario de la lengua española esencial. LAROUSSE Planeta. LAROUSSE Editorial,
S.A. México, D.F.
4.- Dicionario de sinónimos y antónimos e ideas afines. LAROUSSE Planeta. LAROUSSE
Editorial, S.A. México, D.F.

¿Qué es Inteligencia Artificial?

El concepto de Inteligencia Artificial (IA) tiene muchas variantes según el punto de vista que se tome, por tal motivo, es necesario analizar las diferentes definiciones para poder concretar un significado único.

De forma concreta el diccionario lo define generalmente como: “El estudio de las facultades mentales a través del uso de modelos computacionales” en cuanto al campo de investigación médico sobre las funciones del encéfalo y las áreas que lo conforman; y lo define como: “Aquella inteligencia exhibida por artefactos creados por humanos” como otro
tipo de inteligencia que emerge de sistemas no vivos.

Esto nos pone a reflexionar sobre las distintas formas en que se puede concebir, por ejemplo, se puede enunciar como una ciencia, como una forma de implementación y/o métodos de programación, tal es el caso de esta definición dicha por Marvin Minsky, el cuál dice que la IA: “Es el estudio de cómo programar computadoras que posean la facultad de
hacer aquello que la mente humana puede hacer”, o Hayes: “Implementación de razonamientos inteligentes mediante técnicas propias de la computación” como sistemas capaces de razonar.

También esta presente la idea de que la IA es una simulación de casos específicos de lo que el ser humano es capaz de realizar, “Es una ciencia orientada al diseño y construcción de máquinas que implementen tareas propias de humanos dotados de inteligencia”.

Entonces de acuerdo con esto, una tarea propia del ser humano podría ser mover un brazo, hablar, oír, oler, ver, sentir, pensar, contar, desidir, recordar, es decir, un sin número de posibilidades que se podrían hacer hasta que el limite de la computación lo permita.

Como conclusión se puede aclarar que la inteligencia artificial sí es otro tipo de inteligencia que asemeja la inteligencia humana de forma general y/o particular de manera simulada, pero se toma no sólo como el elemento, sino como ciencia que se enfoca a la investigación de todas las funciones del pensamiento e inteligencia cerebral por medio de
modelos computacionales capaces de implementar el razonamiento, la percepción y las inteligencias a la computadora para que sea capaz de hacer lo que la mente puede hacer.

Opinión.

El estudio de la inteligencia artificial es tan interesante que incluso se han realizado películas de ciencia ficción en donde se demuestran las aplicaciones que se derivarían en un futuro.

Personalmente me gusta mucho este tema porque es una ciencia que lleva de la mano la investigación, el razonamiento, la percepción y la imaginación, dejando un campo de estudio sin límites, sumado a que actualmente no se conoce mucho de lo que hace el cerebro ni de cómo lo hace.

Cabe resaltar que aunque este tema puede ser abordado por muchas áreas, el área que más tiene participación es la computación, por eso es necesario que un ingeniero en computación tenga los conocimientos necesarios sobre este tema tan importante que es partícipe en la tecnología actual.

Referencias.

1.- Inteligencia Artificial e Ingeniería del Conocimiento. Gonzalo Pajares Martinsanz y Matilde
Santos Peñas. AlfaOmega. México, D.F. Mayo 2007.
2.- A Fondo: Inteligencia Artificial. Henry C. Mishkoff. Ediciones Anaya Multimedia S. A.
Madrid 1988.
3.- Definicion inteligencia artificial.
http://www.inteligenciaartificial.cl/ciencia/software/ia/inteligencia_artificial.htm
Fecha: Viernes 13/Agosto/2010
4.- Inteligencia artificial – Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Inteligencia_artificial
Fecha: Viernes 13/Agosto/2010
5.- ¿QUE ES INTELIGENCIA ARTIFICIAL – Monografias.com
http://www.monografias.com/trabajos10/intelart/intelart.shtml
Fecha: Viernes 13/Agosto/2010
6.- Definición de inteligencia artificial
http://www.definicion.org/inteligencia-artificialfecha
Fecha: Viernes 13/Agosto/2010