Agente basado en utilidad: qué es y cómo funciona en IA
Un agente basado en utilidad es un tipo de agente inteligente que no se conforma con alcanzar una meta: evalúa cada situación posible con una función de utilidad (un número que mide lo deseable que es) y elige la acción con la mayor utilidad esperada. Es uno de los cinco tipos de agentes descritos en el manual clásico de Stuart Russell y Peter Norvig, Inteligencia artificial: un enfoque moderno.
Qué es un agente en inteligencia artificial
En IA, un agente es cualquier sistema que percibe su entorno mediante sensores y actúa sobre él mediante actuadores. Un robot aspirador percibe obstáculos y suciedad y actúa con ruedas y cepillos; un programa que juega al ajedrez percibe el tablero y actúa moviendo piezas; un asistente de compras percibe precios y actúa comprando.
Lo que el agente hace en cada momento lo determina su función de agente: una correspondencia entre la secuencia de percepciones recibidas y la acción elegida. Un agente racional es el que elige la acción que maximiza su medida de rendimiento esperada, dada la información de que dispone. Para describir un problema de agentes se usa a menudo el esquema REAS (en inglés PEAS): Rendimiento, Entorno, Actuadores y Sensores.
Los cinco tipos de agentes (Russell y Norvig)
| Tipo | Cómo decide | Limitación | Ejemplo |
|---|---|---|---|
| Reactivo simple | Reglas condición-acción sobre la percepción actual | Falla si necesita recordar o el entorno no es totalmente observable | Termostato: si hace frío, enciende la calefacción |
| Reactivo basado en modelos | Mantiene un estado interno del mundo actualizado con un modelo de cómo evoluciona | Sigue reglas fijas; no planifica | Aspirador que recuerda qué habitaciones ha limpiado |
| Basado en objetivos | Busca secuencias de acciones que lleven a un estado meta | Solo distingue «cumple la meta» o «no la cumple» | Navegador que encuentra cualquier ruta hasta el destino |
| Basado en utilidad | Asigna un valor a cada estado y maximiza la utilidad esperada | Definir y calcular la utilidad puede ser difícil y costoso | Navegador que elige la ruta que mejor equilibra tiempo, peajes y riesgo de atasco |
| Que aprende | Mejora sus componentes con la experiencia mediante un crítico y un generador de problemas | Necesita datos, tiempo y una buena señal de rendimiento | Sistema de recomendación que ajusta sus preferencias con los clics |
El agente que aprende no es un nivel más en la escala, sino una arquitectura que puede envolver a cualquiera de los anteriores: por ejemplo, un agente basado en utilidad que aprende su propia función de utilidad a partir de la experiencia.
Por qué no basta con un objetivo
Los objetivos son binarios: llegar al aeropuerto es un éxito; no llegar, un fracaso. Pero hay muchas formas de llegar, y no todas son igual de buenas. Un agente basado en utilidad resuelve tres problemas que un agente de objetivos no puede:
- Grados de satisfacción: distingue entre llegar en 30 o en 50 minutos, gastar 5 o 20 en peajes.
- Objetivos en conflicto: velocidad y seguridad tiran en direcciones opuestas; la función de utilidad define el compromiso adecuado.
- Incertidumbre: cuando ninguna acción garantiza el éxito, permite ponderar la probabilidad de cada resultado por su importancia.
La función de utilidad
La función de utilidad U asigna a cada estado s un número real U(s). Cuanto mayor, más preferido. Es la versión interna de la medida de rendimiento: si la función de utilidad del agente está alineada con la medida externa, el agente que maximiza su utilidad se comporta de forma racional.
Cuando el resultado de una acción es incierto, el agente calcula la utilidad esperada: la media de la utilidad de cada resultado posible ponderada por su probabilidad.
UE(a) = Σ P(s′ | s, a) · U(s′)
y elige la acción que la maximiza:
a* = argmaxₐ UE(a)
Este principio, la maximización de la utilidad esperada, viene de la teoría de la decisión y de la economía. Si quieres profundizar en sus fundamentos, consulta la teoría de la utilidad, cómo se construye una función de utilidad y la calculadora de utilidad esperada.
Propiedades importantes
- Solo importa el orden… si no hay incertidumbre. En decisiones deterministas basta con saber qué estado se prefiere (utilidad ordinal). Con incertidumbre, las magnitudes importan (utilidad cardinal): la diferencia se explica en utilidad ordinal y cardinal.
- Actitud ante el riesgo. Una función cóncava representa aversión al riesgo: el agente prefiere un resultado seguro a una apuesta con el mismo valor medio. Es la misma idea que la utilidad marginal decreciente en economía.
- Utilidad multiatributo. Cuando hay varios criterios (tiempo, coste, seguridad), una forma sencilla es una suma ponderada: U = w₁·x₁ + w₂·x₂ + … El reto está en elegir los pesos.
Ejemplo resuelto: elegir una ruta
Un agente de navegación debe elegir entre dos rutas. Su función de utilidad puntúa cada llegada así: U = 100 − tiempo en minutos − 2 × coste en peajes.
| Ruta | Escenario | Probabilidad | Tiempo (min) | Peaje | Utilidad |
|---|---|---|---|---|---|
| A (autopista) | Fluida | 0,8 | 30 | 6 | 58 |
| A (autopista) | Atasco | 0,2 | 60 | 6 | 28 |
| B (nacional) | Fluida | 0,9 | 45 | 0 | 55 |
| B (nacional) | Obras | 0,1 | 55 | 0 | 45 |
Utilidad esperada de A = 0,8 × 58 + 0,2 × 28 = 46,4 + 5,6 = 52.
Utilidad esperada de B = 0,9 × 55 + 0,1 × 45 = 49,5 + 4,5 = 54.
El agente elige la ruta B, aunque la A es más rápida en el mejor caso. Un agente basado en objetivos habría aceptado cualquiera de las dos porque ambas llegan al destino. Si cambiamos el peso del peaje de 2 a 1, A pasa a valer 58 y B sigue en 54: la decisión depende de las preferencias codificadas en la función.
Pseudocódigo
Esquema de un agente basado en utilidad con un modelo del entorno, inspirado en la descripción de Russell y Norvig:
función AGENTE-BASADO-EN-UTILIDAD(percepción):
persistente: estado # creencia actual sobre el mundo
modelo # cómo cambia el mundo con cada acción
U # función de utilidad: estado -> número
acción # última acción ejecutada
estado <- ACTUALIZAR-ESTADO(estado, acción, percepción, modelo)
mejor_acción <- ninguna
mejor_valor <- -infinito
para cada a en ACCIONES-POSIBLES(estado):
valor <- 0
para cada (s_siguiente, p) en modelo.RESULTADOS(estado, a):
valor <- valor + p * U(s_siguiente)
si valor > mejor_valor:
mejor_valor <- valor
mejor_acción <- a
acción <- mejor_acción
devolver acción La misma idea en JavaScript, aplicada al ejemplo de las rutas:
const U = (r) => 100 - r.tiempo - 2 * r.peaje;
const acciones = {
A: [{ p: 0.8, tiempo: 30, peaje: 6 }, { p: 0.2, tiempo: 60, peaje: 6 }],
B: [{ p: 0.9, tiempo: 45, peaje: 0 }, { p: 0.1, tiempo: 55, peaje: 0 }]
};
function elegir(acciones) {
let mejor = null, max = -Infinity;
for (const [nombre, resultados] of Object.entries(acciones)) {
const ue = resultados.reduce((s, r) => s + r.p * U(r), 0);
if (ue > max) { max = ue; mejor = nombre; }
}
return { mejor, max };
}
console.log(elegir(acciones)); // { mejor: 'B', max: 54 } En problemas reales no se pueden enumerar todos los estados: se usan búsqueda con poda, programación dinámica, procesos de decisión de Markov (MDP) o aprendizaje por refuerzo, donde la «recompensa» acumulada desempeña el papel de la utilidad.
Ejemplos de agentes basados en utilidad
- Vehículos autónomos: equilibran seguridad, comodidad, tiempo y normas de tráfico.
- Sistemas de recomendación: estiman qué contenido maximiza la satisfacción esperada del usuario.
- Agentes de trading: ponderan rentabilidad esperada y riesgo.
- Videojuegos: la «IA basada en utilidad» puntúa acciones como atacar, huir o curarse según la salud, la distancia y la munición.
- Termostatos inteligentes: combinan confort y coste energético en lugar de seguir una temperatura fija.
- Asistentes y agentes de software que eligen entre varias herramientas o planes según coste, tiempo y probabilidad de éxito.
Ventajas y límites
| Ventajas | Límites |
|---|---|
| Decide bien con incertidumbre y objetivos en conflicto | Diseñar la función de utilidad correcta es difícil |
| Comportamiento racional demostrable si la utilidad es correcta | Calcular la utilidad esperada de todas las acciones puede ser inviable |
| Permite ajustar prioridades cambiando pesos | Una utilidad mal especificada produce conductas indeseadas: el agente optimiza lo que mides, no lo que quieres |
Este último punto, la especificación de la utilidad, es uno de los temas centrales en el debate sobre la alineación de sistemas de IA: un agente muy eficaz maximizando una función mal definida puede ser más problemático que uno torpe.
Terminología: algunas traducciones hablan de «agentes reflejos» en lugar de «reactivos» y de «agentes basados en metas» en lugar de «en objetivos». Se refieren a lo mismo.
Preguntas frecuentes
¿Qué es un agente basado en utilidad?
Es un agente de inteligencia artificial que, en lugar de limitarse a alcanzar un objetivo, asigna a cada estado posible un valor numérico de conveniencia (utilidad) y elige la acción que maximiza la utilidad esperada.
¿En qué se diferencia de un agente basado en objetivos?
El agente basado en objetivos solo distingue entre estados que cumplen o no la meta. El basado en utilidad puede comparar grados: qué camino es más rápido, más seguro o más barato, y equilibrar objetivos en conflicto o inciertos.
¿Qué es la función de utilidad en IA?
Es una función que transforma un estado (o una secuencia de estados) en un número real que representa lo deseable que es para el agente. Es la versión interna de la medida de rendimiento.
¿Cuáles son los tipos de agentes según Russell y Norvig?
Agentes reactivos simples, agentes reactivos basados en modelos, agentes basados en objetivos, agentes basados en utilidad y agentes que aprenden, estos últimos como una arquitectura que puede mejorar cualquiera de los anteriores.