Introduccion a técnicas de de resolucion de problemas usando IA

Uno de los resultados que surgieron de las primeras investigaciones en IA fue que la inteligencia necesita conocimiento. El conocimiento posee algunas propiedades poco deseables como:

  • Es voluminoso
  • Es difícil caracterizarlo
  • Cambia
  • Se organiza de manera que tiene correspondencia con la forma en que va a ser usado

Una técnica de IA es un método que explota el conocimiento representado de manera que:

  • Representa generalizaciones, es decir, no es necesario representar cada situación individual, sino que las situaciones que comparten propiedades importantes se agrupan.
  • Debe ser entendido por las personas que lo provean.
  • Puede ser modificado para corregir errores y reflejar cambios en el mundo
  • Puede usarse en muchas situaciones aun sin ser totalmente exacto o completo
  • Puede usarse para superar su propio volumen, y disminuir el rango de posibilidades que normalmente deben considerarse

Se pueden caracterizar las técnicas de IA con independencia del problema a tratar.

Para solucionar problemas complicados, los programas que utilizan las técnicas de IA presentan numerosas ventajas con respecto a los que no lo hacen:

  • Son menos frágiles, es decir, que no se “caen” frente a una perturbación en la entrada
  • El conocimiento del programa es comprendido fácilmente por la gente
  • Usa generalizaciones
  • Tiene facilidad de extensión

Las técnicas de solución de problemas en IA, en general, incorporan un proceso de búsqueda.

Todo proceso de búsqueda puede ser visualizado como el recorrido por un árbol en el que cada nodo representa un estado y cada rama representa las relaciones entre los estados cuyos nodos conecta.

En general, las reglas contienen en forma implícita el árbol, y se genera en forma explícita sólo aquellas partes que se decide explorar.

La dirección en la cual se conduce la búsqueda (hacia adelante o hacia atrás).

La estrategia de control, o forma de seleccionar las reglas que pueden ser aplicables. Los principales requerimientos de una buena estrategia de control son: que cause desplazamiento en el espacio de estado; y, que sea sistemático.

La forma de representar cada nodo del proceso de búsqueda (representación del conocimiento).

Muchas veces, tratar el proceso como búsqueda en un grafo en lugar de una búsqueda en un árbol, puede reducir el esfuerzo que se gasta en explorar senderos, esencialmente iguales, varias veces. Sin embargo, los requisitos asociados, son:

  • Cada vez que se genere un nodo se debe chequear para ver si ha sido generado antes.

Plateamiento de problemas en IA

A continuación se plantean tres soluciones diferentes del problema de tres en raya analizando la conveniencia de cada una. Cada una de las soluciones plantea un enfoque diferente, pero solo la última simula la forma en que una computadora lo resolveria de forma inteligente:

Solución 1:

  • Una primera solución directa a este juego podría ser la de almacenar en un vector las 19.693 posibilidades de un tablero de 3 x 3 con tres valores posibles en cada casilla (vacío-X-O), así como las correspondientes jugadas sucesoras.
  • Para realizar una jugada, bastaría con acceder a la posición del tablero actual y la jugada sucesora correspondiente.
  • Las desventajas de este eficiente programa son bastante obvias:
  • Necesita gran cantidad de memoria; alguien debe realizar el pesado trabajo de introducir todas las jugadas y sus sucesoras; y el juego no se puede ampliar, por ejemplo a tres dimensiones.

Solución 2:

  • El programa posee una estrategia para cada turno de jugador.
  • Analiza el posible triunfo a partir de un estado del tablero dado.
  • Aunque es menos eficiente que la solución anterior en términos de tiempo, tiene la ventaja que es más eficiente en términos de espacio.
  • Su estrategia es más fácil de comprender y realizar cambios, aunque el programador debe comprender la totalidad de la estrategia de antemano.
  • Además, no es posible generalizar parte del conocimiento del programa hacia un dominio distinto, como tres en raya 3D.

Solución 3:

  • Una estructura contiene el tablero actual, así como una lista de posiciones del tablero que podrían ser el próximo movimiento, y una estimación de la probabilidad de que esa jugada lleve a la victoria.
  • Para decidir la siguiente jugada se tienen en cuenta las posiciones de tablero que resultan de cada movimiento posible.
  • Se decide la posición que corresponde a la mejor jugada, considerando si la jugada produce la victoria, y en caso contrario considerando todos los movimientos que el oponente puede realizar asumiendo que éste elegirá el peor para nosotros.
  • El algoritmo inspecciona varias secuencias de movimientos intentando maximizar la probabilidad de victoria.
  • Necesita mucho más tiempo que los demás, ya que debe realizar una búsqueda en un árbol de posibilidades antes de realizar cada movimiento. Sin embargo, es superior a las demás soluciones pues podría ser ampliado para manipular juegos más complicados.
  • Además, puede aumentar su potencia usando conocimiento sobre el juego, por ejemplo, en lugar de considerar todos los posibles movimientos considerar solo un subconjunto siguiendo algún criterio razonable.

Este último es un ejemplo del uso de una técnica de IA.

Dado este ejemplo, podemos definir tres parámetros importantes para poder resolver un problema usando IA:

  • Búsqueda: proporciona una forma de resolver problemas en los que no se dispone de un método directo
  • Uso del conocimiento: proporciona una forma de resolver problemas complejos explotando las estructuras existentes entre los objetos involucrados
  • Abstracción: proporciona una forma de separar aspectos y variaciones importantes de aquellos otros sin importancia, y que en caso contrario podrían colapsar el proceso.

Más adelante describiremos en detalle cada uno de estos elementos.

Breve reseña historica de la IA

El desarrollo de la IA ha sido bien documentada a travez del tiempo. Con una excelente herramienta como es el Internet, resulta muy sencillo entender el desarrollo de la misma, gracias personajes muy como Turing.

Empero existen otros personajes importantes en el desarrollo de esta rama de la ciencia de la computación, que no son muy conocidos, más no por ello menos importantes de resaltar. Hea qui en breve resumen por períodos del desarrollo de la IA:

  • 1950-1965. Periodo “clásico…”

Resolvedor general de problemas (GPS) [Newell, Simon]. Resolución de problemas de sentido común, los cuales incluyen razonamiento de objetos físicos y sus relaciones, como también razonamiento de acciones y sus consecuencias. Solo se resolvieron tareas simples, pues no se pudo crear un programa con la cantidad suficiente de conocimiento de un dominio específico.

Principal énfasis en la implementación de juegos (ajedrez, damas, etc.) así como en la demostración de teoremas matemáticos.

  • 1965-1975. Periodo “romántico”

Representación “general” del conocimiento.

Redes semánticas [Quillian]

Prototipos (frames) [Minsky]

Perceptrón [Minsky y Papert]

Lógica [Kowalski]

Mundo de bloques [Winograd]

Percepción (visión y habla), compresión de lenguaje natural, robótica.

Dificultades de representación “general”, problemas de “juguete”.

  • 1975-actualidad. Periodo “moderno”, inteligencia “especifica” vs. “general”.

Se identifica la necesidad de trabajar en sociedad con profesionales de otras áreas de conocimiento

Representación explícita del conocimiento específico del dominio.

Sistema experto médico MYCIN (experto en enfermedades infecciosas de la sangre) iniciado en la Universidad de Stanford

Sistemas expertos o basados en conocimiento.

Regreso de redes neuronales [Hopfield, Rumelhart, Hinton], algoritmos genéticos [Holland, Goldberg]

Reconocimiento de voz , incertidumbre (Lógica difusa), planeación, aprendizaje

Aplicaciones “reales” (medicina, finanzas, ingeniería, exploración, etc.).

Comercialización de la IA, etapa de conocimiento general de la misma

Estos son breves rasgos de la historia actual de la IA. Para mayor informacion , aqui.


Tags: , ,

Aplicaciones y Fundamentos de la IA

El trailer IRobot, lo publico porque esta película da una buena aproximacion, bastante realista, de los alcances la IA tendra en el futuro. Les recomiendo ver esta pelicula. Si pudiera la subiria completa, de todas maneras les dejo un link para el correspondiente torrent.

Primeramente, veamos algunos fundamentos teóricos sobre los cuales se apoya actualmente este medio de represetnacion del la inteligencia humana.
Durante más de 2000 años de tradición en filosofía han surgido diversas teorías del razonamiento y del aprendizaje, simultáneamente con el punto de vista de que la mente se reduce al funcionamiento de un sistema físico

Esto , aunado con un estudio matemático, han permitido el surgmiento de  teorías formales relacionadas con la lógica, probabilidad, teoría de decisiones y la computación. Las matemáticas nos han provisto de las herramientas para manipular las aseveraciones de certeza lógica, así como las inciertas de tipo probabilista. Así mismo prepararon el terreno para el manejo del razonamiento con algoritmos

La Psicología ofrece herramientas que permiten la investigación de la mente humana, así como un lenguaje científico para expresar las teorías que se van creando. Los psicólogos reforzaron la idea de que los humanos y otros animales podían ser considerados como máquinas para el procesamiento de información.

La Lingüística ofrece teorías sobre la estructura y significado del lenguaje. Los lingüistas demostraron que el uso de un lenguaje se ajusta dentro de estas estructuras.

Las Ciencias de la Computación, proveen herramientas que permiten que la inteligencia artificial sea una realidad. Dentro de esta rama,la ingeniería en computación ofreció el dispositivo que permite hacer realidad las aplicaciones de la inteligencia artificial. Los programas de inteligencia artificial por lo general son extensos y no funcionarían sin los grandes avances de velocidad y memoria aportadas por la industria de cómputo.

En conclusión, las ciencias que aportan a la Inteligencia Artificial son:

  • Filosofía
  • Medicina
  • Matemáticas
  • Psicología
  • Lingüística
  • Ciencias de la Computaciòn

Aplicaciones de la IA

Hoy en dia, muchos instrumentos y dispositivos que rodean nuestra vida, y que realmente forman parte importante de la misma, tiene a mayor o menor grado, una inteligencia inplícita. Es por ello que para clasificar las aplicaciones, podemos hacerlo por medio de tareas:

Tareas de la vida diaria

  • Percepción (visión y habla)
  • Lenguaje natural (comprensión, generación, traducción)
  • Control de un robot

Tareas formales

  • Juegos (ajedrez, damas)
  • Matemáticas (geometría, lógica, cálculo, demostración de propiedades)

Tareas de los expertos

  • Ingeniería (diseño, detección de fallas, planificación de manufactura)
  • Análisis científico
  • Diagnóstico médico
  • Análisis financiero …

Podemos tambien clasificarlas segun el proposito para el cual va a ser utilizada:

Aprendizaje:

  • Captación automática de conocimiento.

Razonamiento:

  • Sistemas basados en conocimiento.
  • Bases de datos inteligentes.
  • Prueba de teoremas y juegos.

Percepción:

  • Comprensión de lenguaje natural.
  • Interpretación de escenas visuales (Visión por computadora).

Locomoción y Manipulación:

  • Realizar procesos mecánicos y tareas manuales (Robótica).

Creación:

  • Generación, verificación, depuración y optimización automática de programas.

Estas son clasficaciones muy generales. Mas adelante, con mayor informacion daremos ejemplos específicos de su correcta aplicacion.

Próximamente:

Un resumen historico de los avances de la IA

Inteligencia Artificial: Introducción

Hace poco más de 10 años, la sola idea de otorgarle inteligencia a un sistema computacional, parecía utópica, rayando en lo imposible. Hoy dia, contamos con infinidad de productos que demuestran inteligencia a mayor o menor grado, lo cual facilita en mucho nuestra vida y el concepto que tenemos acerca de ella.

Actualmente, nos estamos acostumbrando a la idea de lograr, en el futuro, maquinas con un grado de inteligencia muy cercano a la humana, de tal manera que podriamos considerarlos como automatas e independientes de los deseos u propósitos para los que fueron creados. Es asi, de tal manera que escuchamos noticias como que para el 2050 podríamos conseguir robots amantes, algo muy polémico por cierto, pero no descartable. Esto me hace acuerdo del capitulo de futurama, en el que se recomendaba muy energicamente no tener citas con robots, ya que la reproducción humana estaba en riego. Para muestra un boton

Esto lleva a muchos a intentar entender los conceptos claves de esta inteligencia no humana, ni siquiera perteneciente a un ser vivo. Es por eso que se la conoce como intelifencia artificial. Estos seran una serie de posts dedicados a este tema. Mi intención es dar una idea general de los conceptos básicos de la misma, porque este campo es muy extenso y muy complejo, pero es importante tener un conocimiento basico de la misma

Inteligencia artificial, se conoce como una de las áreas de las ciencias computacionales encargadas de la creación de hardware y software con comportamiento inteligente. Esto engloba el estudio de técnicas que permite percibir, razonar y actuar de forma inteligente, ademas de lograr que las máquinas realizen tareas que, en algunos casos, son realizadas mejor por los sereshumanos.

Cuidado: uno de los errores más comunes a cometer en la definición de IA es afirmar que simula la inteligencia humana. La IA busca REPRODUCIR el efecto de la inteligencia humana en la resolucion u análisis de un problema. Para recalcar el punto, hagamos una analogía con el vuelo de las aves.

Los precursores en la fabricación de aviones, si bien es cierto estudiaron la estructura osea de las aves para inspirarse en sus invenciones, trataron de reproducir el efecto en sus inventos, es decir, que lograrar volar. NO intentaron reproducir un ala de ave a tamaño gigante, ni los procesos biologicos y químicos que permiten al ave batir sus alas para volar. Si fuea asi, veríamos a los aviones batiendo sus alas para remotarse en el cielo

Los Estudios en el Campo de la IA, tiene 2 objetivos principales:

  • Objetivos a largo plazo: Desarrollar sistemas que alcancen niveles de inteligencia similares/comparables o incluso mejores que los seres humanos. Esto no resulta muy viable por lo menos en los próximos 20 o 30 años.
  • Obejtivos a corto plazo: Desarrollar sistemas para realizar tareas “especificas” que puedan necesitar inteligencia.

Estos es todo por hoy, mas adelante veremos:

aplicaciones de IA

historia de la IA


Complejidad Computacional

May 31st, 2008 Escribi un comentario   Categoria complejidad

La complidad computacional es un area de las Ciencias de la Computacion
que estudia el usos de los recursos para resolver un problema durante el calculo de los algoritmos respectivos.

Los 2 recursos principalmente analizados son:

  1. Tiempo
  2. Espacio (memoria)

En la actualidad las computadoras resuelven a lo sumo problemas que tienen complejidad Polinomica (Ver Ciencias de la Computacion - Complejidad)
Los problemas que no se resuelven con nuestras computadoras actuales ( no se podrian resolver en un tiempo adecuado), poseen una complejidad del Tipo Factorial o Exponencial

Fuente: Aprender Programacion

Ordenes de Complejidad

May 30th, 2008 Escribi un comentario   Categoria complejidad

Ordenes de Complejidad

  1. O (1) Contantante
  2. O(ln n) Orden Logaritmico
  3. O(n): Orden lineal
  4. O (ln n n) Orden casi lineal
  5. O(n2) Orden Cuadratico
  6. O(n3) Orden cubico<
  7. O(na) Orden polinomico
  8. O(2n) Orden Exponencial
  9. O (n!) Orden factorial

Complejidad, automatas y Computabilidad

El campo de la Teoría de la computación en Ciencias de la computacion involucra las subareas de

  1. Teoría de la computación
  2. Teoría de autómatas: estudia matemáticamente máquinas abstractas y problemas que éstas son capaces de resolver
  3. Teoria de la computabilidad: estudia los problemas de decisión que pueden ser resueltos con un algoritmo o equivalentemente con una máquina de Turing.
  4. Teoría de la complejidad computacional: Estudia teoricamente los recursos requeridos durante el cálculo para resolver un problema (tiempo y espacio)

Criptografia, grafos, logica y teoria detipos

May 28th, 2008 Escribi un comentario   Categoria Criptografia, grafos

El campo de los Fundamentos matemáticos de las Ciencias de la Computacion involucra la criptografia, teoria de grafos, logica y teoria de tipos

  1. Criptografía: Algoritmos de proteccion de datos privados y cifrado de informacion
  2. Teoria de grafos: Estructuras de almacenamiento de datos y algoritmos de busqeda (problemas como del viajante, o la mejor ruta son clasicos en la tematica)
  3. Logica matemática: Se divide en cuatro subcampos: teoría de modelos, teoría de la demostración, teoría de conjuntos y teoría de la recursión.
  4. Teoria de tipos: Estudio y analisis sobre los tipos de datos y u aplicacion en las propiedades de los programas y su seguridad

Maquina de Turing Funcionamiento

Maquina de TuringDescripcion de la maquina de Turing.

La idea de la maquina funcion con un Cabeza de Lectura y Escritura que lee una cinta infinita.

Cada vez que lee, borrar el contenido anterior, escribe un nuevo contenido, para luego Avanzar un lugar hacia la izquierda o Derecha.

Con esta maquina se puede realizar cualquier computo de las maquinas computadoras actuales

La maquina de Turing puede considerarse un automata capaz de leer lenguajes formales (es un conjunto de palabras (Palabras son cadenas de caracteres) de longitud finita que se forman a partir de un alfabeto (_Conjunto de caracteres) finito.

Definicion de una maquina de Turing de una sola cinta :una 6- tuplaM=(Q, \Gamma, s, b, F, \delta)\,,

  • Q \, es un conjunto finito de estados.
  • \Gamma \, El alafabeto de la cinta, un conjunto finito de símbolos de cinta
  • s \in Q Estado Incial.
  • b \in \Gamma Ssímbolo denominado blanco.
  • F \subseteq Q es el conjunto de estados finales de aceptación.
  • \delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \{L,R\}\, función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.