Como especificar un problema en IA
Para producir una especificación formal de un problema se deben definir:
- espacio de estados válidos;
- estado inicial del problema;
- estado objetivo o final;
- estado de falla
- reglas que se pueden aplicar para pasar de un estado a otro.
Un estado es la representación de un problema en un instante dado. Para definir el espacio de estados no es necesario hacer una enumeración exhaustiva de todos los estado válidos, sino que es posible definirlo de manera más general.
El estado inicial consiste en uno o varios estados en los que puede comenzar el problema.
El estado objetivo consiste en uno o varios estados finales que se consideran solución aceptable.
Las reglas describen las acciones u operadores que posibilitan un pasaje de estados.
Una regla tiene una parte izquierda y una parte derecha.
La parte izquierda determina la aplicabilidad de la regla, es decir, describe los estados a los que puede aplicarse la regla.
La parte derecha describe la operación que se lleva a cabo si se aplica la regla, es decir, como obtener el estado sucesor.
Por ejemplo, en el problema de jugar al ajedrez:
el espacio de estados son la totalidad de tableros que se puede generar en un juego de ajedrez;
el estado inicial es el tablero de 8 x 8 donde cada celda contiene un símbolo de acuerdo a las piezas situadas;
el objetivo o estado final se define como cualquier posición de tablero en la que el contrario no puede realizar ningún movimiento legal y su rey esté amenazado.
las reglas son los movimientos legales, que pueden describirse mediante una parte patrón para ser contrastado con la posición actual de tablero y otra parte que describe el cambio que debe producirse en el tablero.
dado que escribir exhaustivamente todas las reglas es imposible prácticamente, (en el ejemplo, escribir todas las posiciones
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:
historia de la IA
Tags: Inteligencia artificial
Algoritmo primero en profundidad
El algoritmo primero en profundidad funciona de la manera como lo muestra este esquema:
A continuacion, el algoritmo de busqueda Depth First:
Begin
open := [Start];
closed := [ ];
while open ? [ ] do
begin
remove leftmost state from open, call it X;
if X is a goal then returns SUCCESS
else begin
generate children of X;
put X on closed;
discard children of X if already on open or closed;
put remaining children on left end of open
end
end
return FAIL
end
A continuacion se muestra un arbol, el cual va a ser recorrido hasta encontrar el nodo U
La implementacion del algoritmo seria:
open = [A]; closed = [ ]
open = [B,C,D]; closed = [A]
open = [E,F,C,D]; closed = [B,A]
open = [K,L,F,C,D]; closed = [E,B,A]
open = [S,L,F,C,D]; closed = [K,E,B,A]
open = [L,F,C,D]; closed = [S,K,E,B,A]
open = [T,F,C,D]; closed = [L,S,K,E,B,A]
open = [F,C,D]; closed = [T,L,S,K,E,B,A]
Continua hasta encontrar U, o open = [ ].
Ciencias de la computacion y su logros
Logros de las Ciencias de la Computacion:
Contribuciones fundamentales a la ciencia y la sociedad.
- Definición formal de computación y de computabilidad
- Demostración de que existen problemas a los que no hay una solución computacional y problemas intratables.
- Concepto de lenguaje de programación, una herramienta para la expresión precisa de información metodológica con diferentes niveles de abstracción
- Tecnologías revolucionarias: computadoras de uso general, Internet, firmas digitales, comercio electrónico y los motores de búsqueda
- Nuevas formas de investigación científica: Física computacional Química computacional
Maquina de Turing Funcionamiento
Descripcion 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
Definicion de una maquina de Turing de una sola cinta :una 6- tupla
,
es un conjunto finito de estados.
El alafabeto de la cinta, un conjunto finito de símbolos de cinta
Estado Incial.
Ssímbolo denominado blanco.
es el conjunto de estados finales de aceptación.
función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.
Ciencias de la Computacion
Ciencias de la Computacion
Las ciencias de la computación es el estudio de las bases teóricas de la información y la computación ademas de su aplicación practica en sistemas computacionales.(Wikipedia)
Diferenctes campos de estudio:
- Resultados específicos del cómputo (ej gráficos por computadora),
- Teoría de la complejidad computacional
- Problemas que requieren la implementación de cómputos.
Fuente: Aprender Programacion
Tags: complejidad
Ordenes de Complejidad
Ordenes de Complejidad
- O (1) Contantante
- O(ln n) Orden Logaritmico
- O(n): Orden lineal
- O (ln n n) Orden casi lineal
- O(n2) Orden Cuadratico
- O(n3) Orden cubico<
- O(na) Orden polinomico
- O(2n) Orden Exponencial
- O (n!) Orden factorial
Tags: complejidad
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
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.
Tipos de Busqueda, Busqueda Heuristica
Tipos de búsqueda según estrategias de control:
ALGORITMO
Disponemos de información segura sobre qué operación aplicar
BUSQUEDA EXHAUSTIVA (A CIEGAS)
Exploración del árbol de búsqueda sistemáticamente pero sin información
BUSQUEDA HEURÍSTICA (INFORMADA)
información sobre el problema (información del dominio) que permite reducir la búsqueda
Del griego “heuriskein” que significa descubrir o encontrar
La heurística es una ayuda para guiar el proceso de búsqueda.
En general, con la utilización de heurísticas no se van a conseguir
siempre resultados óptimos (la mejor solución), pero si se van a conseguir resultados de buena calidad en un tiempo razonable.
Se utilizan en problemas complejos donde aparece el problema de la explosión combinatoria. En este tipo de problemas, los algoritmos de búsqueda exhaustiva tienen costos inaceptablemente altos (sólo son válidos para problemas sencillos).
Usar información “heuristica” para “adivinar” cuál nodo expandir
la heurística aparece bajo la forma de una función de evaluación basada en la información específica para el dominio o contexto relacionado con el problema
el problema de búsqueda se puede considerar como la maximización o minimización de una función.
La función de evaluación nos proporciona una manera de evaluar un nodo “localmente” basado en una estimación del costo de llegar desde el nodo actual al nodo meta.
Problemas con la Heurística
la heurística suele ser poco certera – problema abierto
puede no encontrar la mejor respuesta – superado por algoritmo A*
La heurística es una técnica la cual produce resultados, pero no siempre.
Mucho de lo que hacemos en la vida cotidiana involucra soluciones heurísticas a los problemas. Usualmente trabaja, o usualmente trabaja lo suficientemente bien, y cuando no trabaja, entonces se trata el problema de otra forma.
La palabra heurística, no solo describe los casos donde una solución podría no ser encontrada, sino que describe los casos donde deseamos encontrar la mejor solución.
La heurística podría ayudar a encontrar soluciones que pueden ser buenas, pero talvez no la mejor solución. Obviamente la medida de cuan bueno es y la evaluación de las técnicas heurísticas, es relativa al dominio, y a la tarea específica que la solución del problema será aplicada al dominio.
