close Novedades IAIC

Docencia: Inteligencia Artificial

Modificado el 21 de Enero de 2017
These icons link to social bookmarking sites where readers can share and discover new web pages.
  • BarraPunto
  • Del.icio.us
  • Digg
  • email
  • Facebook
  • Google
  • LinkedIn
  • PDF
  • Reddit
  • Slashdot
  • Twitter

Anuncios

  • (20/01/2017) Han sido publicadas las notas finales de la 1ª Convocatoria del curso 2016-2017.

Accede al historial de anuncios del curso aquí.

Ficha Técnica

Grado: Ingeniería de Computadores

Aula: I0.10

Horario: Martes (12:40 - 14:30) y Viernes (10:40 - 12:30)

Lugar Tutorías: Despacho H1.48

Horario Tutorias: Acordar cita con el profesor

Sistema de Implementación: NetLogo

Profesor: Fernando Sancho Caparrini

Objetivos

El objetivo general del curso es introducir al estudiante en técnicas avanzadas de Inteligencia Artificial, desde las más clásicas hasta las más novedosas, haciendo especial énfasis en las relacionadas con sistemas multiagente, 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.

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 Inteligencia Artificial, tanto en términos generales como a un nivel técnico detallado.
  • Comparar y evaluar la idoneidad de varias técnicas de Inteligencia Artificial para resolver un problema concreto dado.
  • Combinar diferentes técnicas de Inteligencia Artificial tanto desde un punto de vista teórico como práctico.
  • Aplicar una técnica concreta de Inteligencia Artificial a un problema concreto dado.
  • Reconocer las dificultades generales y los errores más habituales en el uso práctico de técnicas de Inteligencia Artificial.
  • Explorar de manera independiente la literatura relevante de un proyecto de Inteligencia Artificial específico.
  • Implementar técnicas no triviales de Inteligencia Artificial.
  • Escribir un informe de estilo científico con la documentación de un sistema de Inteligencia Artificial implementado y de las teorías sobre las que se soporta.

Contenido

Título Fecha
Problemas del curso   
Introducción  
Introducción a la IA

23/09/2016

Pensando y Resolviendo por Modelos

No

Sistemas Multiagente y Simulación

No

NetLogo (NetLogo QuickGuide) (snnipets)

23/09/2016

27/09/2016

Parte I: IA Clásica  
Resolución de Problemas con Búsquedas

30/09/2016

Estrategias de Búsqueda

-

30/09/2016

04/10/2016

07/10/2016

Resolución de Problemas

11/10/2016

Examen NetLogo

14/10/2016

Resolución de Problemas (Problema Granjero)

18/10/2016

Juegos con Adversario: Minimax

21/10/2016

Satisfacción de Restricciones 

No

Introduciendo decisiones:

-

No

No

No

Parte II: Inteligencia Computacional  
Inteligencia Colectiva 

25/10/2016

Aproximaciones a Sistemas Complejos: Sistemas Dinámicos y Redes Complejas

25/10/2016

Introducción a las Redes Complejas 

28/10/2016

Fractales 

31/10/2016

Autómatas Celulares (Modelado con NetLogo)

31/10/2016

Resolución de Problemas

04/11/2016

Examen Bloque I (Resuelto)

08/11/2016

Inspirándose en la naturaleza

-

11/11/2016

15/11/2016

18/11/2016

Optimización en el Espacio de Parámetros de un Modelo

18/11/2016

Resolución de Problemas

22/11/2016

Simulación Social

No

Parte III: Aprendizaje Automático  
Introducción al Aprendizaje Automático

25/11/2016

Algoritmos Supervisados y No Supervisados

29/11/2016

Examen Bloque II (Resuelto)

02/12/2016

Aprendizaje Inductivo: Árboles de Decisión

09/12/2016

Métodos Combinados de Aprendizaje

09/12/2016

Mapas Auto-Organizados (Self Organizing Maps in NetLogo)

13/12/2016

Redes Neuronales Artificiales (Artificial Neural Networks in NetLogo)

16/12/2016

Resolución de Problemas

20/12/2016

10/01/2017

Examen Bloque III

13/01/2017

Aprendizaje por Refuerzo: Algoritmo Q Learning

No

Examen 1ª Convocatoria Oficial

20/01/2017

Sistema de Implementación

El sistema de implementación seleccionado para todos los bloques del curso ha sido NetLogo:

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 llo ha colocado en el entorno 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 en un proyecto Open Source mantenido por una comunidad de desarrollo en Github.

Las razones por las que ha sido elegido NetLogo para un curso de Inteligencia Artificial son variadas, entre las que podemos destacar las siguientes:

  • El tiempo de desarrollo de modelos es extremadamente rápido, 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 porcentaje de tiempo excesivo en su aprendizaje, pudiendo emplear 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 lenguajes de programación declarativos y con tintes funcionales, lo que por sí solo 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.

Criterios de Evaluación

La asignatura tiene un marcado carácter práctico, lo que significa que casi todos los contenidos teóricos 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 exámenes.

La nota de la evaluación alternativa del curso se obtendrá a partir de la valoración de 3 exámenes (que corresponden con cada uno de los 3 bloques principales de la asignatura) junto con 1 control adicional sobre el sistema de implementación que se usará en el curso, siguiendo la siguiente proporción:

Control (1): 10%

Exámenes (3): 30% + 30% + 30%

Las 4 actividades evaluables serán puntuadas sobre 10, y es imprescindible sacar un mínimo de un 30% de la nota en cada una de ellas (es decir, un 3 sobre 10 en cada actividad) para poder aprobar el curso. Además, evidentemente, la suma ponderada de todas ellas debe superar la nota de 5.

El control será de carácter técnico, para comprobar que el alumno ha adquirido la destreza suficiente en el uso del sistema de implementación, y se hará, probablemente, a mediados de Octubre. Los conocimientos mínimos que debe adquirir un alumno para poder seguir la asignatura con comodidad contienen (pero no se limitan a) la siguiente lista:

  • Estructuras de datos (incluyendo los agentes) básicas: patches, tortugas, links, listas,...
  • Estructuras de programación: repeat, foreach, while, if, ifelse, ask (with), ...
  • Cómo crear procedimientos y funciones. Recursión.
  • Contextos de ejecución y procedimientos específicos de agentes.
  • Creación de propiedades y razas de agentes.
  • Manipulación, comunicación y modificación entre agentes.
  • Funciones de orden superior: map, reduce, filter

Los exámenes se realizarán unos días después de la finalización del bloque temático correspondiente, y se comunicarán al alumnado con suficiente antelación. Todas las pruebas de la evaluación alternativa se realizarán durante las horas de clase, salvo que haya un consenso que especifique lo contrario entre el profesor y los alumnos.

Los alumnos que tras realizar la evaluación alternativa hayan superado la asignatura tendrán la opción de presentar un trabajo complementario en el podrán obtener una nota adicional máxima de 2 puntos y que se sumará a la media conseguida con las pruebas anteriores. La temática, condiciones de entrega y fechas, serán comunicadas a lo largo del curso.

Puedes acceder a la hoja (requiere contraseña) de calificaciones de la evaluación alternativa por medio de este enlace:

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. Se recomienda encarecidamente su realización como medio de preparación para los exámenes de la evaluación alternativa.

Recursos

NetLogo se puede descargar gratuitamente en la siguiente dirección (en sus versiones para Linux, Mac o Windows, así como su reciente versión web, que todavía no es funcional al 100%):

https://ccl.northwestern.edu/netlogo/

Se puede encontrar un videocurso de NetLogo que cubre los conocimientos necesarios para la realización de este curso en la siguiente dirección:

http://www.cs.us.es/~fsancho/NLC/

Otros recursos de la asignatura (como los fuentes de los modelos vistos en clase) se pueden encontrar en el siguiente repositorio Github:

https://github.com/fsancho/IA

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.

Además, junto a esta bilbiografía específica se propone la siguiente bibliografía general que puede usarse de forma transversal al curso en algunos de sus bloques: