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:
- Función sucesora:
- Carreteras: Ir a la ciudad adyacente con coste = distancia
- Estado inicial:
- Prueba de objetivo:
- ¿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:
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)
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:
View
Essential Business Proposal
View
Project Roadmap Timeline
View
Step-by-Step Timeline: How to Develop an Idea
View
Artificial Intelligence History Timeline
View
Momentum: First Operational Steps
View
Momentum: Employee Introduction Presentation
View
Mind Map: The 4 Pillars of Success
Explore all templates
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 (I)
Búsqueda (II)
“N”, 1.0
“E”, 1.0
Búsqueda (III): Ejemplo: Viajar en Rumania
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)
Búsqueda (V): Grafos del espacio de estados
Búsqueda (VI): Árboles de búsqueda
Esto es ahora / inicio
“E”, 1.0
“N”, 1.0
Futuros posibles
Buscar (VII): Buscando con un árbol de búsqueda
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: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)
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)