lunes, 2 de abril de 2012

Inteligencia Artificial (Base de Conocimientos)

La Inteligencia Artificial es una combinación de la ciencia del computador, fisiología y filosofía, tan general y amplio como eso, es que reúne varios campos (robótica, sistemas expertos, por ejemplo), todos los cuales tienen en común la creación de máquinas que pueden pensar.

La de idea construir una máquina que pueda ejecutar tareas percibidas como requerimientos de inteligencia humana es un atractivo. Las tareas que han sido estudiadas desde este punto de vista incluyen juegos, traducción de idiomas, comprensión de idiomas, diagnóstico de fallas, robótica, suministro de asesoría experta en diversos temas.
Es así como los sistemas de administración de base de datos cada vez más sofisticados, la estructura de datos y el desarrollo de algoritmos de inserción, borrado y locación de datos, así como el intento de crear máquinas capaces de realizar tareas que son pensadas como típicas del ámbito de la inteligencia humana, acuñaron el término Inteligencia Artificial en 1956.

La Inteligencia Artificial trata de conseguir que los ordenadores simulen en cierta manera la inteligencia humana. Se acude a sus técnicas cuando es necesario incorporar en un sistema informático, conocimiento o características propias del ser humano.

Podemos interrogar a algunas bases de datos de Internet en lenguaje natural, o incluso charlar con ellas nuestro idioma, porque por detrás se está ejecutando un programa de Inteligencia Artificial.

Otras herramientas inteligentes pueden utilizarse para escrutar entre los millones de datos que se generan en un banco en busca de patrones de comportamiento de sus clientes o para detectar tendencias en los mercados de valores.

Características de la Inteligencia Artificial:
Una característica fundamental que distingue a los métodos de Inteligencia Artificial de los métodos numéricos es el uso de símbolos no matemáticos, aunque no es suficiente para distinguirlo completamente. Otros tipos de programas como los compiladores y sistemas de bases de datos, también procesan símbolos y no se considera que usen técnicas de Inteligencia Artificial.
El comportamiento de los programas no es descrito explícitamente por el algoritmo. La secuencia de pasos seguidos por el programa es influenciado por el problema particular presente. El programa especifica cómo encontrar la secuencia de pasos necesarios para resolver un problema dado (programa declarativo). En contraste con los programas que no son de Inteligencia Artificial, que siguen un algoritmo definido, que especifica, explícitamente, cómo encontrar las variables de salida para cualquier variable dada de entrada (programa de procedimiento).
Las conclusiones de un programa declarativo no son fijas y son determinadas parcialmente por las conclusiones intermedias alcanzadas durante las consideraciones al problema específico. Los lenguajes orientados al objeto comparten esta propiedad y se han caracterizado por su afinidad con la Inteligencia Artificial.
El razonamiento basado en el conocimiento, implica que estos programas incorporan factores y relaciones del mundo real y del ámbito del conocimiento en que ellos operan. Al contrario de los programas para propósito específico, como los de contabilidad y cálculos científicos; los programas de Inteligencia Artificial pueden distinguir entre el programa de razonamiento o motor de inferencia y base de conocimientos dándole la capacidad de explicar discrepancias entre ellas.
Aplicabilidad a datos y problemas mal estructurados, sin las técnicas de Inteligencia Artificial los programas no pueden trabajar con este tipo de problemas. Un ejemplo es la resolución de conflictos en tareas orientadas a metas como en planificación, o el diagnóstico de tareas en un sistema del mundo real: con poca información, con una solución cercana y no necesariamente exacta.
Base de Conocimiento. Sistemas Basados en Conocimiento.
Los procedimientos generales desarrollados para la resolución de dificultades y técnicas de búsqueda al inicio de la era de la Inteligencia Artificial demostraron no ser bastantes para resolver los problemas encaminados a las aplicaciones, ni fueron capaces de satisfacer los difíciles exigencias de la investigación.
A este conjunto de métodos, procedimientos y técnicas, se lo presenta como Inteligencia Artificial Débil. La principal conclusión que se procedió de este trabajo inicial fue que los problemas difíciles sólo lograrían ser resueltos con el auxilio del conocimiento específico acerca del dominio del problema.
Experiencia, Habilidades y Conocimiento.
Los ejemplos de experiencia que son de interés en los métodos basados en conocimiento, pueden ser clasificados en tres categorías: asociativa, motora y teórica.
Los sistemas basados en conocimiento son excelentes para simbolizar conocimiento asociativo. Este ejemplo de experiencia refleja la destreza heurística o el conocimiento que es logrado mayoritariamente, a través de la investigación.
Puede ser que no se perciba puntualmente lo que sucede al interior de un sistema (caja negra), pero se pueden asociar entradas o estímulos con salidas o respuestas, para solucionar problemas que han estado previamente conocidos.
La práctica motora es más física que cognitiva. La destreza se logra esencialmente a través del ejercicio y la práctica física constante
La experiencia teórica y el conocimiento profundo permite que los humanos logren solucionar problemas que no se han visto antes, es decir, no existe una posibilidad asociativa.
El diseño de un sistema basado en conocimiento de alguna manera manifiesta la estructura cognitiva y los procesos humanos. La primera parte es la memoria de largo plazo, en la que guarda los casos (Base de Hechos) y los conocimientos (Base de Conocimientos) acerca del dominio en el que tiene experiencia.
Tecnología de los Sistemas Basados en Conocimiento.
Desde el punto de vista tecnológico, los Sistemas Basados en Conocimiento logran mostrar varias formas de aplicación:
Aislada: un Sistema Basado en Conocimiento único se relaciona con el entorno.
Integrada: varios Sistemas Basados en Conocimiento interrelacionados a bases de conocimiento comunes
Embebida: un Sistema Basado en Conocimiento está compuesto con otros sistemas y no se lo distingue.
Componentes: software de interfaz, base de datos, programa computacional.
1) El software de interfaz, mediante el cual el usuario expresa preguntas a éste, el sistema experto pide más información a partir del usuario y éste le expone al usuario la causa de razonamiento utilizado para alcanzar a una respuesta.
2) La base de datos, llamada la base de conocimiento que consiste de axiomas (hechos) y reglas para hacer inferencias a partir de esos hechos acerca del dominio del sistema.
3) El programa computacional, llamado el motor de inferencia, elabora el proceso de hacer inferencias, interpreta y evalúa los hechos en la base de conocimiento para proveer una respuesta.
Tecnologías Involucradas.
Lenguajes de Programación
En principio, cualquier lenguaje de programación puede ser utilizado.  Tradicionalmente LISP y PROLOG han sido los lenguajes que se han utilizado para la programación de sistemas expertos.
Estos lenguajes brindan características especialmente diseñadas para operar problemas generalmente hallados en Inteligencia Artificial.
 Una de las principales características que comparten los lenguajes LISP y PROLOG, como derivación de su respectiva estructura, es que logran ser utilizados para escribir programas capaces de examinar a otros programas, incluyendo a ellos mismos.
Lisp: Su nombre viene de LISt Processor. LISP fue el primer lenguaje para procesamiento simbólico. Fue desarrollado en 1958, en el Instituto de Tecnología de Massachusetts
Prolog: PRO gramming in LOGic (PROLOG), es otro de los lenguajes de programación utilizados en IA. PROLOG fue desarrollado en Francia, en 1973 en la Universidad de Marseilles.
OPS5: Official Production System 5 (OPS5), es un lenguaje para ingeniería cognoscitiva que aguanta el procedimiento de representación del conocimiento en forma de reglas.
Sistemas de Desarrollo
Históricamente, los primeros Sistemas Basados en Conocimiento fueron desarrollados utilizando lenguajes de programación como el LISP y el PROLOG. A medida que el desarrollo de Sistemas Basados en Conocimiento iba aumentado en cantidad y complejidad, la comunidad científica emprendió a investigar formas de desarrollar los métodos en menor tiempo y con menor esfuerzo.
Esto dio lugar al surgimiento, en primer lugar a sistemas vacíos como el EMYCIN.