programaIntArt

Anuncio
Introducción a la Inteligencia Artificial
PROFESORA
Ing. María José Abásolo
ASIGNATURA
Código 2719
Optativa de 3er. año de la carrera Informática de Gestión
Curso 2000-2001, 2do. cuatrimestre
Aproximadamente 15 semanas de clase
EXÁMENES
12 de junio del 2001
11 de septiembre del 2001
HORARIOS
Martes 10.30-12.30 hs. (Teórica Aula P9 - Práctica Aula 8)
Viernes 10.30-12.30 hs. (Teórica Aula P9 - Práctica Aula 8)
TUTORÍAS
Lunes 10.30-13.30 hs y 14.30-17.30
OBJETIVOS
En esta asignatura se pretende que el alumno se introduzca en el área de
Inteligencia Artificial. Se tratan dos grandes temas de aplicaciones de IA: los
juegos y el aprendizaje.
En la parte práctica, se introducirá el uso del lenguaje de programación Lisp en
aplicaciones de IA. Se pretende que el alumno llegue a implementar algoritmos de
IA en este lenguaje, por ej. juegos, y pueda comprobar la conveniencia del mismo
para aplicaciones de esta área frente a lenguajes convencionales.
TEMARIO
1- INTRODUCCIÓN
1.1. Definición de Inteligencia Artificial (IA) y evolución histórica
1.2. Técnicas de resolución de problemas de IA
1.3. Criterios de éxito de la IA
1.4. Resolución de problemas de IA:
1.4.1. Definición formal del problema
1.4.2. Estrategia de control: Métodos de búsqueda
1.4.2.1. Búsqueda Breadth-First Search
1.4.2.2. Búsqueda Depth-First Search
1.4.2.3. Búsqueda Heurística
1.4.3. Análisis del problema
1.4.4. Representación del conocimiento
1.4.5. Técnicas de resolución: Métodos de búsqueda heurística
1.4.5.1. Generación y prueba
1.4.5.2. Escalada (hill climbing)
1.4.5.3. Búsqueda best-first search
1.4.5.4. Reducción del problema
1.4.5.5. Verificación de restricciones (constraint satisfaction)
1.4.5.6. Análisis de medios y fines (means-ends analysis)
2- JUEGOS
2.1. Introducción
2.2. Juegos sin adversario: algoritmo A*
2.3. Juegos con adversario : algoritmo Minimax
2.3.1. Búsqueda Minimax
2.3.2. Poda alfa-beta de la búsqueda Minimax
2.3.3. Refinamientos adicionales
2.3.3.1. Poda de inultilidades
2.3.3.2. Espera del reposo
2.3.3.3. Búsqueda secundaria
2.3.3.4. Uso de movimientos de libro
2.3.3.5. Búsqueda sesgada
2.4. Algoritmos alternativos
2.4.1. Minimax dependiente de adversario
2.4.2. Profundización iterativa
2.4.2.1. Profundización iterativa en juegos bipersonales:
MINIMAX
2.4.2.2. Profundización iterativa en juegos unipersonales
3- APRENDIZAJE
3.1. Aprendizaje memorístico
3.2. Aprendizaje a través de consejos
3.3. Aprendizaje en la resolución de problemas
3.3.1. Aprendizaje por medio de ajustes de parámetros
3.3.2. Aprendizaje con macro-operadores
3.3.3. Aprendizaje mediante troceado
3.4. Aprendizaje a partir de ejemplos: inducción
3.5. Aprendizaje basado en explicaciones
3.6. Aprendizaje con redes neuronales
PRÁCTICAS
Tutorial de Lisp: aprender Lisp a través de un tutorial en el que se aplican
conceptos de Inteligencia Artificial aplicada a la educación (ej. GREATERP de
John Anderson, ELM-ART). Como ejercicios prácticos el alumno implementará
juegos usando el lenguaje de programación Lisp.
Explicación breve de los temas a estudiar
Juegos
Los juegos provocan una inexplicable fascinación y, la idea de que las
computadores puedan jugar existe desde que existen las computadoras:
- Siglo XIX, Babbage, arquitecto de computadoras, pensó en programar su
máquina analítica para que jugara al ajedrez.
- '50, Shannon describió los mecanismos que podían usarse en un programa
jugara al ajedrez
- '50, Turing describió un programa para jugar al ajedrez pero no lo construyó
- '60, Samuel construyó el primer programa de juegos importante y operativo, el
cual jugaba a las damas y podía aprender de sus errores para mejorar su
comportamiento
Los juegos proporcionan una tarea estructurada en la que es muy fácil medir el
éxito o el fracaso. En comparación con otras aplicaciones de inteligencia artificial,
por ejemplo comprensión del lenguaje, los juegos no necesitan grandes
cantidades de conocimiento. En un primer momento se pensó que se podrían
resolver por búsqueda exhaustiva en el árbol del juego, es decir, un árbol que
contenga todos los movimientos posibles de ambos jugadores. Considerando por
ejemplo el juego de ajedrez, en una partida cada jugador realiza una media de 50
movimientos, con un factor de ramificación medio de 35 posibilidades, por lo tanto
para examinar el árbol de juego completamente se tendrían que examinar 35 100
posibilidades. Resulta evidente que una simple búsqueda directa no es posible de
realizar en la práctica, y por lo tanto es necesario algún tipo de procedimiento de
búsqueda heurística.
Aprendizaje
En lugar de hacer aquellas actividades para las que han sido programadas,
¿pueden las máquinas aprender cosas nuevas y adaptarse a nuevas situaciones?
En 1961, Ada Augusta dijo "la máquina analítica ... puede hacer lo que sea si se le
ha indicado la manera de hacerlo". Es decir, no hay nada que prohiba que a una
computadora se le diga como interpretar sus entradas de modo que su
rendimiento aumente gradualmente.
En 1983 Simon propuso que el aprendizaje implica "cambios en el sistema que se
adaptan en el sentido de que le permiten llevar a cabo la misma tarea a partir de
las mismas condiciones de un modo más eficiente y eficaz a la vez". Así definido
el aprendizaje cubre una amplia gama de fenómenos desde la adquisición de
conocimiento hasta el perfeccionamiento de la habilidad.
El simple almacenamiento de información computada conocido como aprendizaje
memorístico, constituye la actividad de aprendizaje más básica.
Otra forma de aprender es pidiendo consejos. Esta técnica resulta similar a la
anterior, solo que puede ser necesario que los consejos de alto nivel sean primero
operacionalizados para que los programas los utilicen en la resolución de
problemas.
También es posible aprender a través de la propia experiencia adquirida en la
resolución de problemas. A partir de la estructura de un problema y los métodos
que se emplearon para resolverlo, se puede generalizar el método para solucionar
otros problemas relacionados de un modo más fácil.
Otra forma de aprendizaje es el aprendizaje a partir de ejemplos. Esto se basa en
aprender a clasificar las cosas sin haber recibido reglas explícitas. Algunos
programas hacen uso de un profesor que ayuda a clasificar las cosas corrigiendo
errores.
Lenguaje de programación LISP
La inteligencia artificial es un conjunto de métodos y filosofía, y por lo tanto no está
atada a un lenguaje en particular. Los problemas de IA requieren que los
programas manipulen conocimiento en lugar de números. Los investigadores
desarrollaron nuevos lenguajes para atacar estos problemas.
Lisp, de "List Processing", fue creado por McCarthy (MIT) en los '60. Es un
lenguaje de propósito general, procedural, basado en aritmética y manipulación de
símbolos. Lisp usa datos de entrada, y una función Lisp especifica como operar en
los datos para obtener el resultado. La programación en términos de relaciones
entre símbolos se denomina programación simbólica. Dado que el conocimiento
consiste en símbolos y asociaciones entre ellos, Lisp resulta uno de los lenguajes
más convenientes en aplicaciones de inteligencia artificial.
En esta asignatura se realizarán prácticas en el lenguaje Lisp, y en particular se
implementarán algoritmos de juegos para aplicar los conceptos aprendidos en el
capítulo dedicado a este tema.
Otro de los lenguajes usados en IA, en particular en sistemas expertos, es el
lenguaje declarativo Prolog. Es un lenguaje de programación específico basado en
lógica, que describe relaciones entre datos. Un usuario pregunta a un programa
Prolog acerca de si un hecho es conocido o puede derivarse de la base de datos.
BIBLIOGRAFÍA (a completar)
[Rich98] Rich E., Knight K. Inteligencia Artificial. McGraw-Hill, ISBN: 84-481-18588, 1998
Winston P. Inteligencia Artificial. Addison-Wesley Iberoamericana, ISBN: 0-20151876-7, 1994
Lisp
Henderson P. Functional Programming. Application and Implementation. Prentice
Hall ISBN: 0-13-331579-7, 1980
Winston P., Horn B. Lisp. Addison-Wesley, ISBN: 0-201-08329-90-201-08372-8,
1981.
Descargar