Revolución IA

La Inteligencia Artificial está llamada a protagonizar la próxima Revolución tecnológica

Inicio Sobre Revolucionia Temas Para saber más Contacto

Programación de agentes inteligentes

Fernando P.    17/08/2017

Temas:  Fundamentos

En un artículo anterior habíamos tratado el concepto de agente, como una entidad que es capaz de percibir el entorno que le rodea y que es capaz de realizar ciertas acciones en respuesta a la información que obtiene de su entorno y a las reglas de funcionamiento, o conocimiento, que posea el agente. En el mismo artículo también habíamos establecido las cualidades que definen a un agente racional.

Decíamos que el agente percibe el entorno mediante sensores y que actuaba sobre el mismo mediante actuadores.

Por otro lado, habíamos definido el concepto de programación del agente y habíamos visto que algunos agentes racionales no necesitaban de técnicas especialmente complejas para ser construídos, pero otros agentes sí que iban a precisar de técnicas de Inteligencia Artificial para su programación.

Por último, habíamos abordado una cuestión central a la hora de diseñar un agente, que es la complejidad del entorno que rodea a un agente.

En este artículo vamos a ver cuatro posibles aproximaciones, de complejidad creciente, a la programación de un agente, no necesariamente racional. El tipo de programación que necesitaremos para un agente concreto vendrá dado por la complejidad de su entorno y por el trabajo encomendado al agente.

Agentes con programación reactiva
Se trata del modelo de programación más sencilla para un agente que opere en entornos de poca complejidad, básicamente en entornos observables.

La lógica de un agente con programación reactiva puede resumirse en los siguientes pasos:

  1. El agente utiliza sus sensores del entorno para averiguar cual es el estado actual del entorno
  2. El agente consulta una base de datos de reglas, que le indican qué acción debe tomar como respuesta al estado actual del entorno
  3. El agente envía la orden de actuación a sus actuadores en base a la acción indicada

Aspiradora inteligente
Se trata de un modelo tan sencillo como pueda ser una simple tabla fija que tenga especificados todos los posibles estados del entorno y qué acción hay que tomar para cada estado.

Pero también puede ser algo bastante más complicado que incorpore varias variables para el estado del entorno y varias acciones para actuadores diferentes.

En general, este tipo de agentes no van a funcionar bien en entornos complicados, que no sean observables o que sean estocásticos.

Un ejemplo de programación reactiva para un agente la tendríamos en una aspiradora automática que operara según el siguiente esquema:

  1. Si hay suciedad donde estoy, la aspiro. Ir al paso 2
  2. Me muevo aleatoriamente una distancia fija. Ir al paso 1


Esta aspiradora sería capaz de limpiar algo, pero dista de lo que podríamos considerar como un agente racional. Básicamente, la aspiradora no tiene ni idea de por dónde va y limpia aleatóriamente. Su percepción del entorno es muy limitada.

Agentes con programación reactiva basada en modelo
En este caso, refinamos un poco el caso de la programación reactiva de forma que el agente pueda mejorar su percepción del entorno y trabajar de forma más eficaz adaptándose al entorno.

La lógica de un agente con programación reactiva basada en modelo puede resumirse en los siguientes pasos:

  1. El agente utiliza sus sensores del entorno para averiguar lo que pueda del estado actual del entorno
  2. El agente añade lo que sabe del estado actual a la historia de los estados anteriores del entorno
  3. El agente completa la historia de estados del entorno con las consecuencias de la última acción tomada
  4. El agente consulta una base de datos de reglas, que le indican qué acción debe tomar como respuesta a lo que sabe sobre estado actual del entorno
  5. El agente envía la orden de actuación a sus actuadores en base a la acción indicada


Básicamente, hacemos que el agente tenga memoria sobre lo que ha ido sucediendo y lo que él ha ido haciendo, para hacerse una idea amplia del estado del entorno, en caso de que el entorno sea parcialmente observable. También hacemos que el agente tenga información sobre cómo sus acciones alteran el entorno.

Siguiendo con el ejemplo de la aspiradora automática, podríamos mejorarla para que tenga una programación reactiva basada en un modelo, de forma que la aspiradora pasaría a operar según el siguiente esquema:

  1. Si hay suciedad donde estoy, la aspiro. Ir al paso 2
  2. Si la lista de sitios por los que he pasado está vacía, me muevo aleatoriamente una distancia fija, ir al paso 4. Si la lista no está vacía ir al paso 3
  3. Consultar la lista de sitios por los que he pasado, calcular un movimiento de distancia fija que me lleve a un sitio nuevo, me muevo a ese sitio, ir al paso 4
  4. Actualizamos la lista de sitios por los que hemos pasado. Ir al paso 1


Nuestra aspiradora mejorada ahora puede aspirar sin pasar dos veces por el mismo sitio (al menos en teoría, esto sería objeto de otra discusión, que ahora no nos interesa), así que hemos conseguido una aspiradora más eficiente con una programación reactiva basada en modelo.

Agentes con programación basada en objetivos
Se trata de un nuevo refinamiento de la programación que introduce el concepto de objetivo a lograr y que, de alguna manera, evita un comportamiento alocado en el agente. También introduce flexibilidad en el agente debido a que puede efectuar tareas distintas en base a objetivos distintos que se le planteen.

La lógica de un agente basado en objetivos puede resumirse en los siguientes pasos:

  1. El agente utiliza sus sensores del entorno para averiguar lo que pueda del estado actual del entorno
  2. El agente añade lo que sabe del estado actual a la historia de los estados anteriores del entorno
  3. El agente completa la historia de estados del entorno con las consecuencias de la última acción tomada
  4. El agente consulta una base de datos de reglas, que le indican qué acciones puede tomar como respuesta al estado actual del entorno
  5. El agente evalúa las acciones posibles y selecciona una que le lleve a conseguir su objetivo actual
  6. El agente envía la orden de actuación a sus actuadores en base a la acción seleccionada


Se trata de una mejora sobre el caso de programación reactiva con modelo que no tiene una relación tan estricta entre estados del entorno y acciones a tomar y que permite al agente decidir qué acción es la que debe tomar.

De nuevo, vamos al ejemplo de la aspiradora automática para mejorarla con una programación basada en objetivos. El algoritmo preciso de esta aspiradora basada en objetivos ya empieza a complicarse, pero no hace falta hacerlo explícito.

La mejora que necesitamos en nuestra aspiradora consiste en hacer que utilice la historia de sus movimientos para construir un mapa de la habitación que está limpiando, de forma que a la hora de elegir un movimiento nuevo pueda elegir uno que la lleve a una zona de la habitación que aún no ha limpiado (aún a riesgo de pasar dos veces por el mismo sitio).

Esta versión mejorada de las aspiradora sería capaz de limpiar toda una habitación (o lo que fuera, cambiando el objetivo).

Un agente con programación basada en objetivos puede llegar a ser un agente racional si el entorno no es muy complejo.

La tarea de decisión en un agente de este tipo puede llevar a la necesidad de usar técnicas de búsqueda y de planificación que caen dentro de las técnicas identificadas habitualmente con Inteligencia Artificial.

Agentes con programación basada en utilidad
Esta es la última vuelta de tuerca que vamos a dar a nuestro esquema de programación de agentes.

Se trata de una modificación a la programación basada en objetivos que introduce lógica adicional en la decisión sobre la próxima acción a tomar. Esta lógica permite al agente calcular una o varias medidas de utilidad para cada posible acción que permita alcanzar el objetivo deseado. De esta forma, el agente puede evaluar lo eficiente o deseable que es cada posible acción, para poder ejecutar la acción que hace que el comportamiento del agente sea verdaderamente racional.

Se trata de una modificación que parece pequeña desde el punto de vista del esquema general, que sigue siendo básicamente el mismo que para el caso de programación basada en objetivos, pero que introduce una enorme complejidad en el proceso de toma de decisión sobre qué acción se debe ejecutar.

Por ejemplo, en el caso de la aspiradora automática, hay muchas rutas posibles para cubrir una habitación completa, unas son más largas que otras y la aspiradora tiene una cantidad de energía limitada en su batería. Lo racional sería que no diera mil vueltas para limpiar la habitación y se expusiera a quedarse sin batería. La elección de cada nuevo movimiento debe realizarse buscando cubrir toda la habitación y buscando recorrer la mínima distancia posible en total.

Es en los agentes con programación basada en utilidad dónde normalmente se darán problemas de toma de decisiones lo suficientemente complejos como para necesitar en su resolución de técnicas de Inteligencia Artificial, al menos desde el punto de vista de la programación del agente.

Adicionalmente a la cuestión de la programación de un agente, ahora vista, está la posibilidad de que un agente sea capaz de aprender, que será tratada en otro artículo.


Para saber más:

Esta página de la Wikipedia trata el concepto de agente racional y proporciona alguna idea adicional sobre lo aquí expuesto.

Este libro tiene un capítulo completo dedicado a agentes inteligentes y seguramente sea el mejor recurso que se puede encontrar para profundizar en este tema.



 

Inicio Powered by NetBSD
 
HTML5
 
En general, todo el contenido de este sitio web es original, salvo referencias o enlaces a otros sitios web y citas o reproducciones expresamente presentadas como tales.

No está permitida la reproducción ni la copia del contenido de este sitio web sin el permiso expreso de la propiedad del mismo.

Este sitio web no utiliza cookies ni ningún otro mecanismo para almacenar información en los navegadores de los visitantes ni para realizar seguimiento de los mismos.

2017,2018 Revolucionia.net
Sobre Revolucionia
Temas
Para saber más
Contacto