Want to create interactive content? It’s easy in Genially!

Reuse this genially

PREVENT Artificial Intelligence Practial Session (UVIGO) - ES

Cristina López Bravo

Created on June 5, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Essential Business Proposal

Project Roadmap Timeline

Step-by-Step Timeline: How to Develop an Idea

Artificial Intelligence History Timeline

Momentum: First Operational Steps

Momentum: Employee Introduction Presentation

Mind Map: The 4 Pillars of Success

Transcript

Inteligencia Artificial - Proyecto PREVENT

Sesión Práctica

Comenzar

Sesión práctica de inteligencia artificial

Los ejercicios completados en esta sesión están diseñados para desarrollar una comprensión completa de la inteligencia artificial, desde algoritmos de búsqueda básicos hasta técnicas sofisticadas de aprendizaje automático, todo mientras se mantiene el interés de los estudiantes mediante retroalimentación visual y problemas desafiantes que reflejan aplicaciones del mundo real. Está basado en los materiales del curso Introducción a la Inteligencia Artificial (CS188) de la Universidad de California en Berkeley

Debido a limitaciones de tiempo, los laboratorios serán guiados/demostrados por los profesores.

Filosofía y Objetivos del Proyecto

Visualización

Los proyectos permiten a los estudiantes visualizar directamente los resultados de las técnicas de IA que implementan en acción, proporcionando retroalimentación inmediata y una mejor intuición sobre conceptos abstractos.

Escalado Mínimo

Cada proyecto contiene instrucciones claras y ejemplos de código sin un código inicial excesivo, fomentando que los estudiantes desarrollen y comprendan sus propias soluciones.

Desafío del Mundo Real

Pac-Man presenta un entorno realmente desafiante que exige soluciones creativas, reflejando la complejidad que se encuentra en las aplicaciones de IA del mundo real.

Estos principios crean un entorno en el que los estudiantes no solo implementan algoritmos, sino que desarrollan una intuición sobre cómo funcionan las técnicas de inteligencia artificial en la práctica, adquiriendo habilidades que se trasladan al procesamiento del lenguaje natural, la visión por computador, la robótica y otros campos de vanguardia.

Comenzando: Tutorial de UNIX/Python

Fundamentos de Python

Entorno UNIX

Introducción a los conceptos básicos del lenguaje de programación Python con énfasis en las funciones utilizadas en los proyectos de Pac-Man, incluyendo estructuras de datos y programación orientada a objetos.

Comandos esenciales de UNIX y configuración del entorno para desarrollar, probar y depurar de manera eficiente las implementaciones de IA requeridas para los proyectos posteriores.

Flujo de trabajo de desarrollo

Mejores prácticas para gestionar el código, ejecutar experimentos y analizar resultados de manera sistemática que preparan a los estudiantes para la naturaleza iterativa del desarrollo de IA.

Este tutorial preliminar garantiza que todos los estudiantes cuenten con la base técnica necesaria antes de adentrarse en los conceptos de inteligencia artificial. Al estandarizar el uso de Python sin dependencias externas, el curso mantiene su accesibilidad mientras enseña habilidades de programación prácticas que siguen siendo relevantes en el desarrollo moderno de la IA.

Algoritmos de Búsqueda

Búsqueda en Profundidad

Los estudiantes implementan este algoritmo fundamental donde Pac-Man explora lo más lejos posible en cada rama antes de retroceder, aprendiendo sobre fronteras basadas en pilas y recorrido de grafos.

Búsqueda en Anchura

La implementación se centra en encontrar el camino más corto en términos de movimientos, usando fronteras basadas en colas para explorar todos los vecinos en cada nivel de profundidad antes de continuar.

Búsqueda de Costo Uniforme

Los estudiantes extienden sus implementaciones para tener en cuenta diferentes costos de movimiento, introduciendo colas de prioridad y garantías de optimalidad.

Búsqueda A*

El proyecto culmina con la implementación de este algoritmo de búsqueda informada, requiriendo que los estudiantes diseñen heurísticas admisibles que mejoren significativamente la eficiencia de la búsqueda.

A través de estas implementaciones, los estudiantes observan cómo Pac-Man navega por laberintos de complejidad creciente, visualizando de forma concreta cómo los distintos algoritmos exploran el espacio de estados. La variación del problema del viajante de comercio desafía a los estudiantes a optimizar las rutas de recolección de puntos, introduciéndolos en problemas computacionalmente intratables.

Búsqueda Multi-Agente

Poda Alpha-Beta

Búsqueda Adversaril

La implementación de esta técnica de optimización mejora drásticamente la eficiencia de la búsqueda minimax al eliminar ramas que no influirán en la decisión final.

Los estudiantes modelan a Pac-Man y a los fantasmas como agentes en competencia, implementando estrategias de búsqueda minimax donde Pac-Man maximiza la puntuación mientras los fantasmas la minimizan.

Expectimax

Funciones de Evaluación

Los estudiantes desarrollan algoritmos para entornos estocásticos en los que los fantasmas se mueven de forma aleatoria, lo que requiere razonamiento probabilístico en lugar de asumir un comportamiento adversario en el caso peor.

El proyecto desafía a los estudiantes a diseñar e implementar funciones de evaluación de estado personalizadas que cuantifiquen la "bondad" de las posiciones en el juego cuando la búsqueda anticipada es limitada.

Este proyecto conecta la teoría clásica de juegos con la implementación práctica, demostrando cómo las técnicas de juegos para dos jugadores, como el ajedrez, se aplican a Pac-Man. Los estudiantes adquieren intuición sobre técnicas de poda y los compromisos entre diferentes modelos de comportamiento del oponente, conceptos esenciales en la inteligencia artificial de juegos moderna y la toma de decisiones bajo incertidumbre.

Aprendizaje por refuerzo

Iteración de valor

Los estudiantes implementan este algoritmo basado en modelos que calcula la política óptima dado un modelo completo del entorno, aprendiendo cómo los Procesos de Decisión de Markov formalizan los problemas de decisión secuenciales.

Q-Learning

Pasando al aprendizaje sin modelo, los estudiantes implementan este algoritmo de diferencia temporal, donde Pac-Man aprende un comportamiento óptimo mediante la interacción de prueba y error con el entorno.

Q-Learning Aproximado

Los estudiantes extienden su implementación para usar representaciones basadas en características, permitiendo aprender en el juego completo de Pac-Man donde el espacio de estados es demasiado grande para métodos tabulares.

Robot que gatea

El proyecto aplica las mismas técnicas a un brazo robot simulado, demostrando cómo el aprendizaje por refuerzo se generaliza más allá de los juegos a tareas de control físico.

Este proyecto demuestra cómo funciona el aprendizaje por refuerzo—el paradigma detrás de muchos avances recientes en IA. Los estudiantes observan agentes que comienzan con comportamientos aleatorios y mejoran gradualmente mediante la experiencia, ganando comprensión sobre el equilibrio entre exploración y explotación y el poder de la aproximación funcional en entornos complejos.

Inferencia Probabilística: Cazafantasmas

Modelos ocultos de Markov

Inferencia Exacta

Filtrado de Partículas

Los estudiantes implementan inferencia probabilística en un modelo oculto de Markov donde Pac-Man debe rastrear fantasmas invisibles basándose en lecturas ruidosas de sensores, aprendiendo sobre estados de creencia y estimación recursiva del estado.

La implementación del algoritmo hacia adelante permite que Pac-Man mantenga una distribución de probabilidad precisa sobre las ubicaciones de los fantasmas, demostrando cómo la regla de Bayes permite a los agentes razonar bajo incertidumbre.

Los estudiantes implementan este método de inferencia aproximada donde las creencias se representan mediante muestras, aprendiendo sobre los compromisos computacionales que permiten la inferencia en dominios complejos del mundo real.

Este proyecto da vida a los modelos probabilísticos mostrando cómo permiten la toma de decisiones inteligentes con información incompleta. Los estudiantes experimentan de primera mano cómo representar la incertidumbre explícitamente conduce a un comportamiento de agente más robusto—una idea clave que sustenta la robótica moderna, el reconocimiento de voz y otros sistemas de IA.

Clasificación en Aprendizaje Automático

En este proyecto final, los estudiantes implementan algoritmos fundamentales de aprendizaje automático para la clasificación de dígitos, incluyendo Naive Bayes (un modelo probabilístico generativo), Perceptrón (un algoritmo discriminativo en línea) y MIRA (un enfoque basado en márgenes).

La culminación ocurre cuando los estudiantes aplican estas técnicas para crear un agente de Pac-Man que aprende por observación de partidas de expertos. Esto conecta la clasificación con la toma de decisiones y demuestra cómo el aprendizaje supervisado permite a los agentes imitar el comportamiento humano—una técnica que se usa cada vez más en aplicaciones desde vehículos autónomos hasta asistentes virtuales.

A través de estos proyectos, los estudiantes adquieren tanto comprensión teórica como experiencia práctica en técnicas fundamentales de IA que impulsan las innovaciones tecnológicas modernas.

Sesión práctica de inteligencia artificial

Implementación

El proyecto Pacman

Los proyectos de Pac-Man fueron desarrollados para el curso introductorio de inteligencia artificial de la Universidad de California en Berkeley. Incluyen los diferentes proyectos presentados anteriormente:

  • Búsqueda: Los estudiantes implementan algoritmos de búsqueda en profundidad, en anchura, de coste uniforme y A*. Estos algoritmos se utilizan para resolver problemas de navegación y del viajante en el mundo de Pacman.
  • Búsqueda multiagente: Pacman clásico se modela como un problema de búsqueda adversaria y estocástica. Los estudiantes implementan algoritmos de minimax y expectimax multiagentes, además de diseñar funciones de evaluación.
  • Aprendizaje por refuerzo: Los estudiantes implementan algoritmos de aprendizaje por refuerzo basados en modelos y sin modelos.
  • Cazafantasmas: La inferencia probabilística en un modelo oculto de Markov rastrea el movimiento de fantasmas ocultos en el mundo de Pacman. Los estudiantes implementan inferencia exacta usando el algoritmo hacia adelante y inferencia aproximada mediante filtros de partículas.
  • Clasificación: Los estudiantes implementan algoritmos estándar de clasificación en aprendizaje automático usando Naive Bayes, Perceptron y modelos MIRA para clasificar dígitos. Además, extienden esto implementando un agente de Pacman que realiza clonación de comportamiento.

Búsqueda (I)

  • Agentes de planificación:
    • Preguntar “¿qué pasaría si”
    • Decisiones basadas en (hipotéticas) consecuencias de acciones
    • Debe tener un modelo de cómo evoluciona el mundo en respuesta a las acciones
    • Debe formular un objetivo (prueba)
    • Considerar cómo SERÍA el mundo
  • Planificación óptima vs. completa

Búsqueda (II)

  • Un problema de búsqueda consiste en:
    • Un espacio de estados
    • Una función sucesora(con acciones, costos)
    • Un estado inicial y una prueba de objetivo
  • Una solución es una secuencia de acciones (un plan) que transforma el estado inicial en un estado objetivo

“N”, 1.0

“E”, 1.0

Búsqueda (III): Ejemplo: Viajar en Rumania

  • Espacio de estados:
    • Ciudades
  • Función sucesora:
    • Carreteras: Ir a la ciudad adyacente con coste = distancia
  • Estado inicial:
    • Arad
  • Prueba de objetivo:
    • ¿El estado == Bucarest?
  • ¿Solución?

Búsqueda (IV): Espacio de estados

El estado del mundo incluye hasta el último detalle del entorno

Un estado de búsqueda solo mantiene los detalles necesarios para planificar (abstracción)

  • Problema: Enrutamiento
  • Estados: (x,y) ubicación
  • Acciones: N S E O
  • Sucesor: actualizar solo la ubicación
  • Prueba de objetivo: si (x,y)=FIN
  • Problema: Comer todos los puntos
  • Estados: {(x,y), booleanos de puntos}
  • Acciones: N S E O
  • Sucesor: actualizar ubicación y posiblemente un booleano de punto
  • Prueba de objetivo: todos los puntos en falso

Búsqueda (V): Grafos del espacio de estados

  • Grafo del espacio de estados: Una representación matemática de un problema de búsqueda
    • Los nodos son configuraciones del mundo (abstractas)
    • Los arcos representan sucesores (resultados de acciones)
    • La prueba de objetivo es un conjunto de nodos objetivo (puede ser solo uno)
  • En un grafo del espacio de estados, ¡cada estado aparece solo una vez!
  • Rara vez podemos construir este grafo completo en la memoria (es demasiado grande), pero es una idea útil

Búsqueda (VI): Árboles de búsqueda

Esto es ahora / inicio

“E”, 1.0

“N”, 1.0

Futuros posibles

  • Un árbol de búsqueda:
    • Un árbol “¿y si?” de planes y sus resultados
    • El estado inicial es el nodo raíz
    • Los hijos corresponden a los sucesores
    • Los nodos muestran estados, pero corresponden a PLANES que alcanzan esos estados
    • Para la mayoría de los problemas, nunca podemos construir todo el árbol

Buscar (VII): Buscando con un árbol de búsqueda

  • Buscar:
    • Expandir posibles planes (nodos del árbol)
    • Mantener una frontera de planes parciales bajo consideración
    • Intentar expandir la menor cantidad posible de nodos del árbol

Búsqueda (VIII): Búsqueda en profundidad

Búsqueda (IX): Búsqueda en anchura

Código para la implementación del algoritmo de búsqueda

Descarga el código:

  • git clone https://github.com/felipexil/pacman.git
Usando Python 2, prueba el juego:
  • cd pacman/search/search
  • python pacman.py
Pacman vive en un mundo brillante y azul de pasillos retorcidos y deliciosas bolitas. Navegar eficientemente en este mundo será el primer paso de Pacman para dominar su entorno. El agente más simple en searchAgents.py se llama GoWestAgent, que siempre va hacia el Oeste (un agente reflex trivial). Este agente puede ganar ocasionalmente:
  • python pacman.py --layout testMaze --pacman GoWestAgent
Pero, las cosas se complican para este agente cuando se requiere girar:
  • python pacman.py --layout tinyMaze --pacman GoWestAgent
Si Pacman queda atrapado, puedes salir del juego escribiendo CTRL-c en tu terminal. Ten en cuenta que pacman.py admite varias opciones que pueden expresarse de forma larga (por ejemplo, --layout) o corta (por ejemplo, -l). Puedes ver la lista completa de opciones y sus valores predeterminados mediante:
  • python pacman.py -h

Encontrar un Punto de Comida Fijo usando Búsqueda en Profundidad (I)

En searchAgents.py, encontrarás un SearchAgent completamente implementado, que planea una ruta a través del mundo de Pacman y luego ejecuta esa ruta paso a paso. Los algoritmos de búsqueda para formular un plan no están implementados — esa es tu tarea. Primero, prueba que el SearchAgent funciona correctamente ejecutando:

  • python pacman.py -l tinyMaze -p SearchAgent -a fn=tinyMazeSearch
El comando anterior indica al SearchAgent que use tinyMazeSearch como su algoritmo de búsqueda, que está implementado en search.py. Pacman debería navegar con éxito por el laberinto. Todas tus funciones de búsqueda deben devolver una lista de acciones que lleven al agente desde el inicio hasta la meta. Estas acciones deben ser movimientos legales (direcciones válidas, sin atravesar paredes). ¡Asegúrate de usar las estructuras de datos Stack, Queue y PriorityQueue proporcionadas en util.py! Implementa el algoritmo de búsqueda en profundidad (DFS) en la función depthFirstSearch en search.py. Para que tu algoritmo sea completo, escribe la versión de búsqueda en grafo de DFS, que evita expandir estados ya visitados.

Encontrar un Punto de Comida Fijo usando Búsqueda en Profundidad (II)

ALGORITMO procedimiento DFS(G,v): /* G  Grafo, v  vértice inicial */ dejar S como una pila S.push(v) mientras S no esté vacía v = S.pop() si v no está marcado como descubierto: marcar v como descubierto para todas las aristas desde v hasta w en G.adjacentEdges(v) hacer S.push(w)

  • python pacman.py -l tinyMaze -p SearchAgent -a fn=bfs
  • python pacman.py -l mediumMaze -p SearchAgent -a fn=bfs
  • python pacman.py -l bigMaze -z .5 -p SearchAgent -a fn=bfs

Encontrar un Punto de Comida Fijo usando Búsqueda en Profundidad (III)

def depthFirstSearch(problem): # Estructuras de datos necesarias st = util.Stack() parent = dict steps = lista have_visited = conjunto start_state = (problem.getStartState(), None, None) st.push(start_state) while (no st.isEmpty()): state = st.pop() have_visited.add(state[0]) # Visitar el estado actual # Estado objetivo encontrado si (problem.isGoalState(state[0])): # Rastrear el camino y invertirlo para obtener la secuencia correcta de pasos mientras (state != start_state): steps.append(state[1]) state = parent[state] steps.reverse() return steps # Expandir sucesores successors = problem.getSuccessors(state[0]) para sucesor en sucesores: si (successor[0] no en have_visited): parent[successor] = state st.push(successor) # La solución o camino no existe return Ninguno

Encontrar un Punto de Comida Fijo usando Búsqueda en Anchura

ALGORITMO nodo ← un nodo con ESTADO = problem.INITIAL-STATE, COSTE-DE-RUTA = 0 si problem.GOAL-TEST(nodo.ESTADO) entonces devolver SOLUCIÓN(nodo) frontera ← una cola FIFO con el nodo como único elemento explorado ← un conjunto vacío bucle hacer si VACÍO?(frontera) entonces devolver fallo nodo ← POP(frontera) /*elige el nodo superficial en la frontera*/ agregar nodo.ESTADO a explorado para cada acción en problem.ACCIONES(nodo.ESTADO) hacer hijo ← NODO-HIJO(problem,nodo,acción) si hijo.ESTADO no está en explorado o frontera entonces si problem.GOAL-TEST(hijo.ESTADO) entonces devolver SOLUCIÓN(hijo) frontera ← INSERTAR (hijo,frontera)