Docencia: Inteligencia Artificial 2021-22
Ficha Técnica
Grado: Ingeniería de Computadores
Aula: H1.12
Horario: X (17:40 - 19:30) y V (15:30 - 17:20)
Tutorias: Acordar cita con el profesor
Sistema de Implementación: NetLogo
Profesor: Fernando Sancho Caparrini
Despacho: H1.48
Objetivos
El objetivo general del curso es introducir al estudiante en técnicas avanzadas de Inteligencia Artificial (IA), desde las más clásicas hasta las más novedosas, con el fin de que sea capaz de explicar, analizar e implementar dichas técnicas en sus proyectos futuros, ya sean profesionales o académicos. Sin embargo, y por encima de las técnicas individuales, se espera que el alumno tenga un visión en conjunto de qué es la IA, cuáles son sus principales características, y porqué es una de las áreas fundamentales de la Computación.
Tras haber realizado este curso con aprovechamiento, el estudiante ideal debería ser capaz de:
- Describir y reconocer un buen número de las principales técnicas de IA, tanto en términos generales como en detalle.
- Comparar y evaluar la idoneidad de varias técnicas de IA para resolver problemas concretos.
- Aplicar técnicas concretas de IA a problemas concretos.
- Combinar diferentes técnicas de IA, tanto desde un punto de vista teórico como práctico.
- Reconocer las dificultades generales y los errores más habituales en el uso práctico de diversas técnicas de IA.
- Explorar de manera independiente la literatura relevante de proyectos de IA específicos.
- Implementar técnicas no triviales de IA en un lenguaje de programación.
- Escribir informes científicos con la documentación relativa a sistemas de IA, tanto de sus implementaciones como de las teorías sobre las que se soporta.
Metodología
La asignatura tiene un marcado carécter práctico y de descubrimiento, por lo que usaremos una metodología que se puede englobar en lo que hoy en día se conoce como Aula invertida:
Un enfoque pedagógico en el que la instrucción directa se desplaza del grupo al individuo, reutilizando los espacios grupales restantes (las clases en el sentido clásico) en un ambiente de aprendizaje dinámico e interactivo en el que el profesor guía a los estudiantes en la aplicación de los conceptos y en su involucramiento creativo con el contenido del curso.
Los fundamentos del aula invertida se centran principalmente en dedicar el tiempo de clase a tareas en las que el alumnado sea el protagonista del aprendizaje (resolver problemas, trabajar de forma colaborativa, etc.) y no a la realización de explicaciones teóricas que pueden realizarse en casa a través de diferentes medios tecnológicos, permitiendo así la adaptación a los diferentes ritmos de aprendizaje de los alumnos. De esta forma, en el aula invertida el objetivo es asignar a los estudiantes textos, videos o contenidos adicionales para revisar fuera del aula.
Esta forma de trabajo impone algunos condicionantes que deben ser reconocidos previamente:
- Todo el contenido teórico está disponible de forma abierta en este mismo sitio web. Aquellas actividades que requieran de necesidades específicas (entregas de tareas, clases online, etc.) se harán usando las herramientas disponibles (correo electrónico, Plataforma de Enseñanza Virtual de la Universidad de Sevilla, etc.).
- El curso está diseñado como una serie de sesiones cuyo contenido debe ser abordado por el alumno por adelantado, y que será explicitado en el diario de clase en esta misma página.
- Una sesión estándar constará de: un breve resumen del contenido (centrado en los puntos principales del mismo, sin entrar en detalles que ya han estado a disposición del alumno), resolución de dudas concretas planteadas por los alumnos (que pueden realizar en ese momento, o plantear previamente por los medios disponibles), planteamiento y resolución de problemas relacionados con el contenido, y ocasionalmente una última sección para la consulta del material correspondiente a la siguiente sesión (con el fin de facilitar el trabajo individual posterior).
Contenido
El contenido que se muestra aquí es orientativo, y podrá ser adaptado durante la ejecución del curso, tanto por condicionantes externos (por ejemplo, cambios en las medidas sanitarias y administrativas) como internos al curso:
Introducción: Generalidades | ||
Sobre la IA... Breve Historia de la IA |
||
NetLogo (NetLogo QuickGuide) | ![]() |
|
Parte I: IA Clásica | ||
Sistemas Lógicos: | ![]() |
![]() ![]() ![]() |
Resolución General de Problemas: | ![]() |
![]() |
Estrategias de Búsqueda: | ![]() ![]() ![]() |
![]() |
Búsquedas con Adversario e Incertidumbre: |
![]() |
![]() |
Resumen Librería IA NetLogo Parte I | ||
Parte II: Inteligencia Computacional | ||
Inteligencia Colectiva | ![]() |
![]() |
Algoritmos Genéticos (AG) | ![]() |
![]() |
Optimización por Enjambres de Partículas (PSO) | ![]() |
![]() |
Algoritmos de Colonias de Hormigas (ACO) Resolviendo PSR con ACO |
![]() |
![]() |
Parte III: Aprendizaje Automático | ||
Introducción al Aprendizaje Automático Aprendizaje Supervisado y No Supervisado Rendimiento de un aprendizaje |
![]() |
![]() |
Algoritmos de Clustering | ![]() |
![]() |
Árboles de Decisión: ID3 y C4.5 | ![]() |
![]() |
Redes Neuronales Artificiales (Artificial Neural Networks in NetLogo) | ![]() |
![]() |
La tabla anterior muestra el contenido del curso dividido en secciones conceptuales y unidades. En la columna de la derecha de cada unidad (o bloque de unidades) se ofrecen los enlaces a las distintas implementaciones y ejemplos en NetLogo de los métodos vistos en el tema (disponibles como proyecto de Github), así como un enlace a la sección correspondiente de los ejercicios propuestos.
Colección de Problemas Propuestos
Cada unidad (o en su defecto, un bloque de unidades temáticamente relacionadas) dispone de un conjunto de ejercicios propuestos que son de realización indispensable para una correcta asimilación de los conceptos teóricos introducidos, así como de sus aplicaciones prácticas. Debe destacarse que la mayoría de los problemas admiten una solución práctica en NetLogo haciendo uso de las librerías diseñadas al efecto.
Criterios de Evaluación
La asignatura tiene un marcado carácter práctico, lo que significa que todos los contenidos teóricos (aquellos que tengan sentido) van acompañados de implementaciones de los algoritmos estudiados que se pueden reutilizar de forma directa para la resolución de muchos de los ejercicios propuestos y de las diversas pruebas de evaluación.
La evaluación continua se puede aprobar por medio de la realización de 2 exámenes escritos y 1 trabajo práctico que pesan lo mismo y que necesitan de, al menos, una nota de 3 sobre 10 para poder hacer media.
Como es habitual, las convocatorias de Diciembre, Febrero y Septiembre son independientes, de ahí que sus pesos sean del 100%. En las convocatorias oficiales la prueba a superar será de un examen escrito a realizar en la fecha acordada para cada convocatoria.
Las fechas de entrega de los trabajos y exámenes de las evaluación continua se publicarán con suficiente antelación.
Algunas notas importantes a tener en cuenta son:
- En la evaluación continua, junto a la corrección del trabajo, el profesor puede acordar con el alumno una entrevista personal para determinar los conocimientos y autoría del trabajo.
- Excepcionalmente, si un alumno ha aprobado dos de las tres pruebas, el profesor podrá darle la opción voluntaria de cambiar el examen de la convocatoria oficial de Febrero por la recuperación de la prueba no superada. En este caso, las condiciones serán las mismas que en la evaluación continua.
- El punto anterior solo es válido para la convocatoria de Febrero, no se guarda ninguna prueba para las convocatorias oficiales de septiembre y diciembre, donde el alumno que no haya superado la asignatura tendrá que presentarse a un examen escrito que cubre toda la materia del curso.
- Los exámenes escritos pueden tener preguntas prácticas a resolver con el sistema de implementación (NetLogo) usado para el curso.
Anuncios y Sesiones
Aquí se irán publicando anuncios relevantes relativos al desarrollo del curso (en rojo), así como el contenido de las diferentes sesiones que se irán planificando (en azul). Las publicaciones serán en orden temporal inverso (arriba las más recientes):
- Anuncio: Publicadas las calificaciones del Primer Examen Parcial en la Plataforma de Enseñanza Virtual de la asignatura.
- Miércoles 15/12/21: Sesión 23.
- Lecturas: Charla Invitada
- Viernes 10/12/21: Sesión 22.
- Lecturas: Árboles de Decisión.
- Viernes 03/12/21: Sesión 21.
- Lecturas: Examen 1 Evaluación Alternativa.
- Miércoles 01/12/21: Sesión 20.
- Lecturas: Algoritmos de Clustering.
- Viernes 26/11/21: Sesión 19.
- Miércoles 24/11/21: Sesión 18.
- Lecturas: Introducción al Aprendizaje Automático.
- Lecturas: Introducción al Aprendizaje Automático.
- Viernes 19/11/21: Sesión 17.
- Miércoles 17/11/21: Sesión 16.
- Lecturas: Algoritmos de Colonias de Hormigas.
- Viernes 12/11/21: Sesión 15.
- Lecturas: Optimización por Enjambres de Partículas.
- Lecturas: Optimización por Enjambres de Partículas.
- Miércoles 10/11/21: Sesión 14.
- Lecturas: Inteligencia Colectiva y Algoritmos Genéticos.
- Viernes 5/11/21: Sesión 13.
- Ejercicios Monte Carlo Tree Search.
- Miércoles 3/11/21: Sesión 12.
- Lecturas: Monte Carlo Tree Search.
- Viernes 29/10/21: Sesión 11.
- Lecturas: Minimax.
- Miércoles 27/10/21: Sesión 10.
- Ejercicios Templado Simulado.
- Viernes 22/10/21: Sesión 9.
- Ejercicios Representación + Búsqueda.
- Miércoles 20/10/21: Sesión 8.
- Lecturas: Búsquedas Locales y Estocásticas.
- Templado Simulado en NetLogo.
- Viernes 15/10/21: Sesión 7.
- Lecturas: Búsquedas Informadas.
- A* en NetLogo.
- Miércoles 13/10/21: Sesión 6.
- Lecturas: Metaheurísticas (I y II).
- BFS en NetLogo.
- Viernes 08/10/21: Sesión 5.
- Miércoles 06/10/21: Sesión 4.
- Lecturas: Lógica de Primer Orden.
- Ejercicios de Lógica.
- Viernes 01/10/21: Sesión 3.
- Lecturas: Breve historia de la Lógica y Lógica Proposicional.
- Miércoles 29/09/21: Sesión 2.
- Lecturas: Curso de NetLogo: Temas Generales.
- Ejercicios de NetLogo.
- Viernes 24/09/21: Sesión 1.
- Lecturas: Introducción a IA y Breve Historia de la IA.
- Introducción a NetLogo.
- Miércoles 22/09/21: Sesión 0. Presentación de la asignatura.
Sistema de Implementación
IMPORTANTE: El libro de NetLogo disponible en este sitio web NO ES NECESARIO para el desarrollo de la asignatura. Los conocimientos necesarios sobre NetLogo para seguir el contenido de esta asignatura se ofrecen de forma abierta y gratuita por medio de los recursos que se ofrecen aquí y el trabajo personal del alumno. El libro está pensado para adquirir destrezas adicionales en el modelado de sistemas multiagente con NetLogo, no para aprender los fundamentos de Inteligencia Artificial. |
El sistema de implementación seleccionado para todos los bloques del curso ha sido NetLogo (excepcionalmente, y a modo de demostración, es posible que se use algún otro software para alguna de las partes del curso, lo que se avisará con suficiente antelación):
NetLogo es un entorno completo de desarrollo de modelos orientado principalmente al uso del paradigma multi-agente, y que proporciona simultáneamente un lenguaje de programación (que también se llama NetLogo), un generador de interfaces para permitir al usuario interactuar con los modelos, y un entorno de simulación y experimentación. En sus inicios tuvo una marcada orientación educativa pero, debido a las buenas cualidades que presenta, su uso en entornos académicos y de investigación superior lo han convertido en el paquete de programación multi-agente más extendido. El proyecto, iniciado por Uri Wilensky como un proyecto propietario, pero gratuito, dentro del Center for Connected Learning de la Universidad de Northwestern, se ha convertido desde hace unos años en un proyecto Open Source mantenido por una comunidad de desarrollo en Github.
Entre las variadas razones por las que ha sido elegido NetLogo para un curso de Inteligencia Artificial queremos destacar las siguientes:
- El tiempo de desarrollo de modelos es extremadamente reducido, lo que facilita que en cuestión de minutos se puedan poner en práctica ideas acerca de cómo aplicar soluciones teóricas a problemas concretos.
- Gracias a las capacidades gráficas que proporciona, las soluciones a los problemas se presentan de una forma visual que mejora la comprensión de los conceptos subyacentes.
- Presenta un lenguaje de programación y entorno de trabajo sencillo, por lo que no se emplea un tiempo excesivo en su aprendizaje y se puede dedicar la mayoría del tiempo disponible en la asignatura a conceptos propios de su contenido, no a resolver dificultades técnicas de implementación.
- Proporciona de forma nativa y natural un sistema de modelado basado en agentes, algo especialmente adecuado a un enfoque moderno de Inteligencia Artificial.
- Es capaz de cubrir diversas áreas de Inteligencia Artificial de manera uniforme y sin el uso de extensiones del lenguaje o librerías externas, algo que con otros lenguajes de programación requeriría mayor esfuerzo.
- Está basado en un paradigma de programación declarativo y con tintes funcionales, algo que, por sí solo, ya supone una razón suficientemente fuerte para ser incluído en el currículo de una Ingeniería Informática.
- Tiene una amplia comunidad de usuarios y proporciona cientos de ejemplos de modelado que facilitan una primera aproximación al modelado de problemas.
Los conocimientos mínimos de NetLogo que el alumno debe adquirir para poder seguir la asignatura con comodidad contienen (pero no se limitan a) la siguiente lista:
- Estructuras de datos básicas (incluyendo los agentes): listas, cadenas, patches, tortugas, links, ...
- Estructuras de programación: repeat, while, if, ifelse, ask (with), ...
- Funciones y procedimientos más habituales: min, max, list, remove, ...
- Cómo crear procedimientos y funciones.
- Contextos de ejecución y procedimientos específicos de agentes por tipo.
- Cómo crear especies de agentes y propiedades específicas por especie.
- Manipulación, comunicación y modificación entre agentes.
- Funciones de orden superior: map, reduce, filter, foreach.
Recursos Digitales
Bibliografía
En cada una de las unidades se proporciona un conjunto de enlaces que sirven de referencia específica y ampliación al contenido asociado a la unidad.
Además, junto a esta bilbiografía específica se propone la siguiente bibliografía general que puede usarse de forma transversal al curso (algunas podrán servir para todos los bloques, y otras solo para algunos de ellos):
Russell, S. y Norvig, P. Artificial Intelligence (A Modern Approach), 4th. ed. Prentice Hall International, 2020.
- Russell, S. y Norvig, P. Inteligencia Artificial (Un Enfoque Moderno), Segunda ed. Prentice-Hall International, 2004. (Traducción al español de la segunda edición del anterior).
- Nilsson, N.J. Inteligencia artificial (Una nueva síntesis). McGraw-Hill, 2001.
Millington, I. y Funge, J. Artificial Intelligence for Games. Elsevier Inc., 2006.
- Teahan, W. J. Artificial Intelligence - Agents and Environment / Agent Behaviour. William John Teahan & Ventus Publishing ApS, 2010.
- Marsland, S. Machine Learning: An Algortihmic Perspective. Chapman & Hall/Crc Machine Learning & Pattern Recognition, 2009.
- Mitchell, T. Machine Learning. McGraw Hill, 1997.
García Vázquez, J.C. y Sancho Caparrini, F. NetLogo: Una herramienta de Modelado. 2016.