Aplicaciones de la Inteligencia Artificial
Capítulo I - Introducción a la Inteligencia Artificial
1.1 Concepto de Inteligencia Artificial: La Inteligencia Artificial (I.A, por simplificar) es una rama de la Informática que trata de enfocar el concepto de Inteligencia en las máquinas. Según el Diccionario de la Real Academia Española, Inteligencia es: “Potencia Intelectual, facultad de entender, de conocer, de entender o comprender.” La I.A persigue dos clases de metas: Metas Científicas, al saber como funciona el Cerebro Humano y de Ingeniería, ya que persigue el objetivo de crear sistemas Inteligentes. Algunas personas creen que las placas de silicio (Circuitos) no podrán pensar jamás y que la materia cerebral esta diseñada explícitamente para ello. Otros creen que esto será posible algún día. Sorprendentemente los científicos han encontrado seres unicelulares que pueden ser explicados como máquinas, como el Bacteriógrafo E6, que inyecta ADN vírico en una célula y ensambla los virus resultantes, este comportamiento es igual al de una máquina, por lo que se ha estudiado su ADN y se ha descubierto que tiene 1 830 137 pares de bases que serían aproximadamente 3,6 x 106 bits (Aproximadamente 360 Kb). Hay 4 conceptos variados sobre I.A:
- Sistemas que piensan como humanos: Sistemas con procesos de pensamiento humano.
- Sistemas que actúen como humanos: Sistemas que al realizar trabajos requieran inteligencia.
- Sistemas que piensen racionalmente: Se enfoca en el estudio de las facultades mentales.
- Sistemas que actúen racionalmente: Se enfoca en el diseño de agentes inteligentes.
- Tratamiento de Lenguajes Naturales: Capacidad de Traducción, Órdenes a un Sistema Operativo, Conversación Hombre-Máquina, etc.
- Sistemas Expertos: Sistemas que se les implementa experiencia para conseguir deducciones cercanas a la realidad.
- Robótica: Navegación de Robots Móviles, Control de Brazos móviles, ensamblaje de piezas, etc.
- Problemas de Percepción: Visión y Habla, reconocimiento de voz, obtención de fallos por medio de la visión, diagnósticos médicos, etc.
- Aprendizaje: Modelización de conductas para su implante en computadoras.
Capítulo II - Prueba de Turing
En los comienzos de la I.A se daban grandes listas de lo que un sistema de I.A debía cumplir para serlo. Alan Turing, propuso un Test en 1950, para acabar con estas listas tan largas e inútiles, ya que lo único que buscaban era imitar al ser humano y no desarrollar una I.A científica. Turing basó su prueba en una entrevista entre un humano con un computador y otro humano ocultos, de manera que ninguno se pueda ver. Si el entrevistador no puede distinguir las respuestas dadas por el hombre y la máquina, se puede hablar de un Sistema Inteligente. Esta prueba merece ser reconocida, ya que no ha perdido validez hasta hoy. Para poder superar la Prueba de Turing original, el computador debe contar con:
- Procesamiento del Lenguaje Natural que permita comunicarse perfectamente en inglés.
- Representación del Conocimiento para almacenar lo que se conoce o siente.
- Razonamiento Automático, para usar la información almacenada para responder a preguntas o extraer conclusiones.
- Aprendizaje Automático, para adaptarse a muchas circunstancias y para detallar y extrapolar patrones.
- Visión Computacional, para percibir objetos.
- Robótica, para manipular y mover objetos.
Capítulo III - Agentes
Un Agente es algo que razona (Viene del latín agere, hacer). Sin embargo los agentes informáticos deben tener algo que los diferencie de los programas comunes. Entre ellos está tener controles autónomos, percibir su entorno, que persistan por un periodo de tiempo prolongado, que se adapten a los cambios y que sean capaces de alcanzar objetivos distintos.
3.1 Tipos:
- Agente Racional: Es el que actúa con la intención de obtener el mejor resultado, o si hay incertidumbre, el mas apropiado. Estos agentes se basan en Inferencias, aunque existen situaciones en las que no se puede hacer nada correcto, pero se debe tomar una decisión; también poseen Actos Reflejos, ya que son mucho mas eficientes que una larga inferencia en algunos casos. Para pasar la Prueba de Turing, los sistemas deben tener estas características. Estudiar la I.A en base a Agentes Racionales, es beneficioso ya que nos hace diseñar al agente en base a inferencias, una forma correcta según las leyes del pensamiento. Sin embargo, por cuestiones de espacio es imposible diseñar una personalidad perfecta. En la práctica se usa una racionalidad limitada, por razones de tiempo y espacio.
- Agente Inteligente: Son capaces de percibir un medio ambiente, usando sensores y actuar usando actuadotes, los sensores pueden ser de un agente robot: Teclado, red, detectores de luz, etc. Y los activadores pueden ser una pantalla o la red. Se dice que una agente tiene percepción si puede recibir múltiples entradas en cualquier instante. En general este agente tomará decisiones de acuerdo a todas las entradas que recibió. A esta secuencia se le ordena en una tabla, no obstante por lo infinita o grande que puede llegar a ser, se limitan algunas entradas. El Agente es manejado por el programa del Agente, se debe diferenciar entre la función que es una descripción abstracta en el programa con el propio programa, que es la implementación real.
- Norte: Se mueve una celda arriba.
- Sur: Se mueve una celda abajo.
- Este: Se mueve una celda a la derecha.
- Oeste: Se mueve una celda a la izquierda.
- Características:
- Acción: De las características definidas, lo siguiente que debemos hacer es darles alguna definición para que puedan cumplir su cometido.
Capítulo III - Búsqueda Heurística
3.1 Introducción: Se llama Búsqueda Heurística debido a que usa conocimientos específicos del problema. Con esta búsqueda podemos encontrar soluciones más eficientemente en el tiempo mas rápido posible sin repetir ninguna ciudad. No obstante existe un tope de 30 ciudades, ya que aún a 1 µseg por solución, se tardaría 1020 años en resolver el problema. (El universo solo tiene 1,6 x 1010 años). Una solución común es de 9 ciudades, que nos da una combinación de 9!=362 880 viajes posibles. Como se ve, la Búsqueda Heurística nos da la ventaja de rapidez en estos casos.
A la aproximación de la Búsqueda Heurística, la llamaremos: Búsqueda Primero el Mejor. Existen algunas variantes:
3.2 Algoritmo *A: Es la forma de búsqueda Primero el Mejor más conocida, sirve para el pathfinding (Búsqueda de Caminos) y es muy usada en juegos. Un ejemplo es el famoso juego Pacman: Los fantasmas que persiguen a Pacman buscan el camino mas corto, en lugar de aparecer en forma aleatoria en el Mapa del Juego, otro ejemplo es el Age of Empires, un juego de conquista de civilizaciones, los enemigos salvan obstáculos para llegar a la ciudad del adversario. El Algoritmo *A, no desarrolla un camino por interacción, sino que desarrolla varios caminos y elige los más prometedores. (Para ver un ejemplo del Algoritmo *A véase el Anexo A).
4.3 Algoritmo MINIMAX: Se poseen 2 jugadores: MAX y MIN, primero jugará MAX y así seguirá el flujo hasta acabar el juego. Existe un árbol de juegos que los programas utilizan para calcular los Movimientos Legales (Permitidos). El valor MINIMAX será un valor que determine el estado final del juego (En le ajedrez: -1, 0, 1; que son triunfo, derrota o empate). En algunos juegos este valor MINIMAX puede ser muy alto (Como en el Backgamon, se estima algo de -192 a 192 valores).
Incluso el TicTacToe (3 en Raya), es complejo para armar el árbol de juegos. A los niveles del árbol se les llama capas.
Para determinar la estrategia óptima a seguir se usan valores MINIMAX. MAX adoptará el valor máximo y MIN el mínimo. La decisión MINIMAX supone que los 2 jugadores son óptimos, si uno es un novato será fácilmente derrotado por esta decisión.
El Algoritmo MINIMAX es la forma computacional en la que se calcula el valor MINIMAX de cada estado de sucesos. Lo interesante del Algoritmo MINIMAX es que no calcula todo el árbol de juegos, sino que calcula solo un horizonte de k niveles. Un cálculo detallado del árbol de juegos perdería tiempo, ya que como ejemplo, en el ajedrez se calculan algo de 35100 movimientos totales. El objetivo de MAX aquí es ganar a MIN tomando alguna decisión sobre la mejor jugada que se puede hacer. El Algoritmo MINIMAX no se usa como tal en la Industria de Juegos, ya que es en algunas ocasiones lento, en vez de este se usan versiones optimizadas que veremos a continuación.
4.4 Poda - : El resultado del Algoritmo MINIMAX es el valor MINIMAX que nos permite tomar la decisión más acertada para el horizonte de búsqueda fijado, no obstante hay ocasiones en el que la ramificación del árbol de juegos es muy alta. (En ajedrez se calcula algo de 35100 o 10154 movimientos). Sería un derroche tratar de probarlos todos, esta es la razón por la cual el Algoritmo MINIMAX no se usa como tal en la Industria de Juegos. Afortunadamente se puede simplificar el proceso, evitando algunos nodos. Esto se basa en que al momento de explorar se determina que el nodo no va a cambiar el valor MINIMAX, es obviado, ya que no nos va a servir de mucho. Estos nodos quedan “Podados”, ahorrando así tiempo de proceso en los programas.
El Algoritmo que implementa la poda - se llama Algoritmo - , y se basa en ajustar los límites llamados: límite -" y límite +"; para el nodo raíz estos son de -" y "+; ya que el valor MINIMAX estará entre esos 2 límites. Estos valores se propagan hacia abajo y se actualizan. Los nodos MAX actualizan su valor si v> y los nodos MIN actualizan su valor si v< . La situación de Poda se detecta si un nodo satisface a " y ello implica obviar la exploración del sub-árbol siguiente y devolver como si se tratara de un nodo MIN. Si no existiera Poda (Es decir no se satisface la expresión " ), el algoritmo se comportará como un Algoritmo MINIMAX normal.
4.5 Algoritmo MTD-f: El hecho de que la llamada al Algoritmo - , tenga los argumentos 0=-" y 0=+", significa que el valor MINIMAX v del nodo raíz, satisface a -"<v<+". Esta es una ventana que se puede cambiar, no obstante al contrario de lo que queremos, esto consume tiempo considerable, por lo que si restringimos los valores habremos ahorrado una gran cantidad de tiempo. Si restringimos los valores a: = -1, podemos hablar de Ventana Nula, en contraposición a la clásica ventana infinita.
Una sola llamada al esquema de la Ventana Nula, nos dará una cota, no el valor MINIMAX, para hallarlo debemos usar distintas cotas para modificar los límites de -" y +", para encontrar el valor MINIMAX. A este proceso se le llama Algoritmo MTD-f. (Memory-Enhanced Test Driver). Las cotas f+ y f-, se inicializan a +" y -" respectivamente. Luego se comienzan a ajustar las cotas hasta que se la cota superior iguale o supere a la inferior; esto se hace en el procedimiento - con = -1, es decir búsqueda de Ventana Nula que devuelve g. Si g< , ajustamos la cota a ese valor y sino ajustaremos la cota inferior. Este valor g, nos sirve para ajustar a (Por lo tanto de = -1) para la siguiente iteración. El número de estas dependerá de lo lejos que este la estimación inicial de f del verdadero valor MINIMAX del nodo raíz.
Capítulo V - Visión Artificial:
Hasta ahora los agentes usaban formas sensoriales demasiado limitadas. La Visión por Computador, es uno de los campos más extensos de la I.A ya que influyen muchos aspectos. La Visión para los humanos no es ningún problema, pero para las máquinas es un campo muy complicado. Influyen Texturas, Luminosidad, Sombras, Objetos Complejos, etc. El primer paso es captar la imagen mediante una cámara de TV. Las imágenes a color tienen una matriz I(x,y,t); donde x y y nos indican la ubicación de un punto en la matriz de colores y t, nos indica el tiempo.
Este proceso obtiene una imagen invertida, pero simplemente rotarla no nos dará la visión del terreno. Influyen muchos elementos haciendo a este proceso complicado.
En la actualidad, algunos Robots emiten una señal y la reciben generando bajo esto una especie de espacio, esta forma de “ver” es muy rústica, pero se sigue usando ya que desafortunadamente es imposible lograr una reconstrucción de la imagen capturada. Y aunque así fuera, las computadoras no podrían distinguir un objeto de juguete y uno real. Lo peor es que los modelos que existen tratan de resolver esto de forma muy complicada. Al proceso de captar imágenes podemos dividirlo en: Bajo Nivel, Nivel Medio y Alto Nivel. El primero se encarga de suavizar y quitar ruido a la imagen y de extraer características de la imagen bidimensional, en particular de las aristas, el segundo se encarga de agrupar estas aristas para formar imágenes bidimensionales y la tercera de usar estas imágenes para reconocer objetos del mundo real. Generalmente las imágenes captadas por los robots son suficientes para sus propósitos.
Capítulo VI - Redes Neuronales
En biología, las neuronas tienen un cuerpo circular y una serie de ramificaciones: El axón y las dendritas. El axón transporta la señal de salida otra célula y las dendritas permiten que la información llegue a la neurona. Las conexiones intermedias se llaman Sinapsis, si la neurona pasa el umbral impuesto por la sinapsis, se dispara, caso contrario no hace nada. Esto la asemeja a dispositivos digitales, siendo esta la base de la Redes Neuronales, que buscan imitar a la neurona en términos computacionales. Se hace esto ya que se considera que la neurona es la base de la capacidad de aprendizaje. No obstante la emulación de la neurona no es perfecta, a la fecha se investigan algunas cualidades importantes como la Computación Distribuida para tolerar Ruido (Distorsión) en la entrada y para el aprendizaje. Cada conexión Neuronal computacional posee un peso numérico que limita la fuerza con la que el impulso sale de la neurona, de no ser así la información crecería demasiado con resultados imprevisibles. Las Redes Neuronales reconocen solo dos estados: 0 (No hay impulso) y 1 (Si lo hay), esto las asemeja a las compuertas lógicas de cualquier tipo: AND, XOR, OR, etc. (Para ver las Compuertas Lógicas más comunes, véase el Anexo B).
Capítulo VII - Sistemas Expertos
Son programas de computación inteligentes que usan conocimientos y procesos de inferencia, para resolver problemas sumamente difíciles para un humano ya que requerirían de mucha experiencia. En sí un Sistema Experto; emula la capacidad de experiencia de un ser humano para tomar decisiones. Aunque los Sistemas Expertos se centran el domino del problema, no tienen conocimientos mas allá de donde fueron programados, esto es, no relaciona ningún otro concepto, a menos que este específicamente indicado. A este conocimiento se le llama Dominio del Conocimiento y como ya se apuntó es muy cerrado. Los Sistemas Expertos se basan en las Redes Neuronales. Sus partes son: La Base del Conocimiento, el Motor de Inferencia, el Subsistema de Explicación y la Interfaz.
- La Base del Conocimiento: Aquí están almacenados todos los datos que el Sistema Experto tiene para tomar decisiones.
- El Motor de Inferencias: Contiene todos los procesos que manipulan la Base del Conocimiento, para deducir la información pedida por el usuario. (Por Ejemplo, resolución, encadenamiento atrás hacia delante, etc).
- El Subsistema de Explicación analiza la estructura del razonamiento y da una explicación al usuario.
- La Interfaz, que es el puente de comunicación entre el sistema y el usuario.
Capítulo VIII - Robótica
Es uno de los campos de aplicación más apasionantes de la I.A; los Robots son agentes físicos que realizan tareas mediante la manipulación física del mundo; por ser agentes y realizar su trabajo en forma autónoma, se excluyen a los robots que son controlados por un operario humano, como son los que hacen tareas de rutina, ya que la I.A busca robots con sistemas autónomos. La palabra Robot, proviene de la voz eslovaca Robota, que significa Trabajador Forzado. En realidad esta rama comenzó como una historia de Ciencia Ficción, pero interesó mucho a los desarrolladores de I.A. Los primeros Robots, solo podían seguir una línea blanca pintada en el suelo. En la actualidad este campo a avanzado tremendamente.
8.1 Clases:
- Robots Manipuladores: Son brazos robóticos que están fijos en un lugar de trabajo y se usan generalmente para ensamblar piezas, aunque también hay brazos usados para ayudar en hospitales o incluso brazos que pintan lienzos con resultados muy originales.
- Robots Móviles: Se desplazan por el medio usando ruedas, piernas u otros. Hay 3 variantes: ULV (Vehículo Terrestre sin Tripulación, en inglés), son robots que permiten un desplazamiento autónomo por autopistas. UAV (Vehículo Aéreo sin Tripulación, en Inglés), son robots que permiten operaciones de fumigación autónoma, así como de vigilancia o militares. AUV (Vehículo Submarino sin Tripulación), son robots que permiten exploraciones marinas autónomas o incluso paseos planetarios.
- Robots Humanoides: Son un tipo de Robots que se asemejan al torso humano. Esta clase usa sus efectores mejor que los otros tipos, pero son mucho mas complejas que los otros robots.
- Sensores: Hay 2 clases, los Sensores Pasivos, que solo recogen información del medio, su desventaja es que su margen de error es alto, y los Sensores Activos, que emiten energía al medio y la reciben para usarla para las mediciones. Su única desventaja es que a más se implementen en un robot, mayor es el riesgo de interferencia. Su ventaja es que su margen de error es mínimo. Existen algunos que merecen ser mencionados:
- Escáneres de Rango: Miden la distancia.
- Sistemas Táctiles: Sensores sensibles al tacto.
- GPS: Calculan la posición absoluta del robot en la tierra.
- Sensores de Imagen: Permiten obtener imágenes y procesarlas.
- Sensores Perceptores: Informan al robot de su propio estado.
- Decodificadores de Ejes: Permiten medir las revoluciones de los motores para usarlas en mediciones, en odometría. Este proceso es muy propenso a error debido a desgaste físico.
- Sensores Inerciales: Una alternativa al decodificador de ejes, pero no soluciona mucho.
- Sensores de Fuerza y Tensión: Le indican al robot con cuanta fuerza está cogiendo algo y con cuanta fuerza lo está girando.
- Efectores: Existen varias clases:
- Articuladores de Revolución: Generan movimiento rotacional.
- Articulación Prismática: Genera desplazamiento lateral.
Los robots no holomínicos son aquellos que tienen más grados de libertad efectivos que controlables, y los holomínicos son los que tienen el mismo número, sin embargo los holomínicos aunque son fáciles de manejar, son más complejos de desarrollar.
- Los Robots de Impulsión poseen 2 ruedas; como un tanque y cada rueda se mueve independientemente de la otra.
- La Conducción Sincronizada se da cuando pueden girar y moverse en su propio eje.
- Un Robot es dinámicamente estable si puede mantenerse en pie mientras camina.
- Un Robot es estáticamente estable, si el centro de gravedad está encima del polígono que une a sus piernas.
8.3 Aplicaciones:
- Industria y Agricultura: Los Robots han sido usados en entornos peligrosos para el hombre y en muchas ocasiones son más rentables que trabajadores humanos. En la Agricultura, los Robots, están siendo usados para sustituir las grandes máquinas usadas para excavar, cosechar, etc. Por ahora son prototipos, pero pronto remplazarán a los humanos en estas tareas.
- Transporte: Los robots han servido mucho aquí: Desde helicópteros autónomos hasta sillas de ruedas automáticas, e incluso portadores de carga que superan a humanos especializados. Incluso algunos ayudan transportando cosas en los hospitales, como el Robot Helpmate.
- Entornos Peligrosos: Los Robots ayudaron en la limpieza de lugares de accidentes nucleares como Chernobyl, Three Mile Island. Incluso estuvieron en la búsqueda y limpieza durante el colapso del World Trade Center, ingresando a entornos muy peligrosos, además hay otros que desactivan bombas o limpian campos minados.
- Exploración: Los Robots han explorado lugares inaccesibles para la gente, como Marte y los Volcanes. Incluso existen los Drones, vehículos aéreos autónomos usados para fines militares.
- Salud: Los Robots son usados para ayudar en operaciones de alto riesgo, también sirven de ayuda a los ancianos como andadores robóticos o juguetes que recuerdan cuando tomar la medicación.
- Servicios Personales: Algunos robots pueden prestar servicio en el hogar, como aspirar el hogar, cortar el césped e incluso remplazar los quioscos por quioscos robóticos.
- Entretenimiento: Los robots han empezado a conquistar la industria de los juguetes, por ejemplo el robot-perro Sony AIBO; está siendo usado para estudios de I.A en todo el mundo, siendo a la vez un juguete. En 1995 se inició el torneo de fútbol de robots autónomos Robocup, cuyo objetivo es lograr que robots autónomos ganen un partido de fútbol. Esto está provocando una investigación más eficiente de la I.A, como a su vez darle algo de animación al campo.
- Aumento Humano: Se han creado máquinas que puede transportar gente, además se investiga como aumentar la fuerza de las personas usando partes robóticas. Hay además proyectos de Robots que se asemejan al ser humano, aunque en forma muy superficial. Estos Robot están en venta por algunas compañías en Japón.
Capítulo IX - La Comunicación
Es el medio principal por el que las personas se comunican, sirve para:
- Informar: Para no repetir los mismos errores.
- Preguntar: Para recabar información sobre el resto del mundo.
- Compartir experiencias.
- Descripciones Incompletas: Muchas cosas deben deducirse.
- Ambigüedad de Significado: La misma frase en contextos distintos significa cosas diferentes.
- No Completitud: Los lenguajes naturales tienen siempre nuevas palabras.
- Ambigüedad de Expresión: Un mismo significado puede ser dicho de muchas formas.
- Dependencia de Idioma: El procesamiento del lenguaje natural será distinto en otro idioma.
- Aceptación de Peticiones
- Solicitar la realización de acciones
- Prometer o comprometerse a un plan.
- Lenguajes Formales: Son lenguajes en los que están muy bien definidos lo que se puede y no puede decir. Sus definiciones son muy estrictas, a estos lenguajes pertenecen los Lenguajes de Programación (ASM, C++, Basic, Java, etc).
- Lenguajes Naturales: Son lenguajes que, al contrario de los formales tienen una gramática más flexible y se pueden añadir nuevas palabras. A estos lenguajes pertenecen los lenguajes del mundo (Inglés, Danés, Español, etc).
- Intención: Por algún motivo A, desea transmitirle información a B.
- Generación: A; planifica como transmitirle su mensaje B.
- Síntesis: A; pone en práctica su plan para transmitir su mensaje a B. Puede transmitir el mensaje por medio de la voz, papel, etc.
- Percepción: B recibe el mensaje de A y lo decodifica de acuerdo a la forma en la que fue transmitido.
- Análisis: B inferirá que el mensaje recibido por A, tiene algún significado. Esto puede causar algunos problemas ya que algunas palabras se interpretan en varios sentidos y esto da lugar a la ambigüedad: No saber el significado de ciertas palabras.
9.3 Aplicaciones:
- Basadas en Texto: Encontrar documentos relacionados con ciertos temas en una base de datos documental, extraer información de mensajes y artículos, traducir texto entre idiomas y resumir texto.
- Basadas en Diálogo: Síntesis del control en un lenguaje natural, donde la salida puede ser un comando a un sistema operativo, un robot, etc; sistema automático de mensajes, compras por teléfono, sistema de acceso a una base de datos en lenguaje natural y sistemas tutores.