1. Inicio
  2. Guías: la utilidad de…
  3. Agente basado en utilidad

Agente basado en utilidad: qué es y cómo funciona en IA

Actualizado el

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)

TipoCómo decideLimitaciónEjemplo
Reactivo simpleReglas condición-acción sobre la percepción actualFalla si necesita recordar o el entorno no es totalmente observableTermostato: si hace frío, enciende la calefacción
Reactivo basado en modelosMantiene un estado interno del mundo actualizado con un modelo de cómo evolucionaSigue reglas fijas; no planificaAspirador que recuerda qué habitaciones ha limpiado
Basado en objetivosBusca secuencias de acciones que lleven a un estado metaSolo distingue «cumple la meta» o «no la cumple»Navegador que encuentra cualquier ruta hasta el destino
Basado en utilidadAsigna un valor a cada estado y maximiza la utilidad esperadaDefinir y calcular la utilidad puede ser difícil y costosoNavegador que elige la ruta que mejor equilibra tiempo, peajes y riesgo de atasco
Que aprendeMejora sus componentes con la experiencia mediante un crítico y un generador de problemasNecesita datos, tiempo y una buena señal de rendimientoSistema 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:

  1. Grados de satisfacción: distingue entre llegar en 30 o en 50 minutos, gastar 5 o 20 en peajes.
  2. Objetivos en conflicto: velocidad y seguridad tiran en direcciones opuestas; la función de utilidad define el compromiso adecuado.
  3. 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.

RutaEscenarioProbabilidadTiempo (min)PeajeUtilidad
A (autopista)Fluida0,830658
A (autopista)Atasco0,260628
B (nacional)Fluida0,945055
B (nacional)Obras0,155045

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

VentajasLímites
Decide bien con incertidumbre y objetivos en conflictoDiseñar la función de utilidad correcta es difícil
Comportamiento racional demostrable si la utilidad es correctaCalcular la utilidad esperada de todas las acciones puede ser inviable
Permite ajustar prioridades cambiando pesosUna 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.