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

Aprendizaje en agentes inteligentes

Fernando P.    28/08/2017

Temas:  Fundamentos

En un serie de artículos anteriores, habíamos introducido el concepto de agente inteligente, también habíamos hablado sobre el reto de diseñar un agente en base al entorno que lo rodea y por último, habíamos tratado la cuestión de la programación de agentes inteligentes.

Nos quedaba por tratar un último concepto a la hora de diseñar un agente inteligente, un concepto que es el que realmente acerca la cuestión de los agentes inteligentes a la Inteligencia Artificial. Se trata de introducir la posibilidad de que un agente inteligente pueda aprender.

En general, hablaremos en este artículo de agentes refiriéndonos a agentes inteligentes, dado que el aprendizaje no va a tener mucho sentido en los casos más sencillos de agentes.

Necesidad del aprendizaje en un agente
Desde el punto de vista de la complejidad de la programación de un agente, habíamos identificado cuatro tipos básicos de programación para un agente, de menor a mayor complejidad: reactiva, reactiva basada en modelo, basada en objetivos y basada en utilidad.

Ciertamente, hay agentes muy sencillos, como la mayoría de los que pueden funcionar con programación reactiva, cuyo universo de posibles situaciones es bastante limitado. De forma que no es complicado codificar una base de datos de reglas que cubra todas las situaciones posibles.

El caso de una puerta automática que se abre o cierra cuando detecta personas delante es un ejemplo de agente con un rango pequeño de posibles estados, que puede funcionar bien con un conjunto completamente predefinido de reglas de comportamiento.
Aprendizaje de agente
Pero, a medida que surge la necesidad de construir agentes más complicados, sobre todo de agentes que tengan que funcionar con modelos de programación basada en objetivos o en utilidad, sucede que se complica mucho la tarea de crear la base de datos de reglas de actuación que los rige.

También puede suceder que un agente simple en un entorno muy complejo tenga problemas para determinar el estado real del entorno, por ejemplo con un entorno parcialmente observable. En este caso también se va a complicar la tarea de definir con exactitud cuales han de ser sus reglas de funcionamiento.

En el momento en el que tengamos problemas para definir a priori con precisión cuales van a ser las reglas que rijan el comportamiento del agente, nos queda el recurso al aprendizaje por parte del agente.

En el artículo sobre programación de un agente usábamos como ejemplo de agente una aspiradora autónoma que iba mejorando a medida que la íbamos dotando de modelos de programación más elaborados.

Siguiendo este mismo paradigma de la aspiradora, podríamos pensar que cada aspiradora va a tener que funcionar en entornos diferentes y que sería interesante poder dotar a la aspiradora de capacidad de aprendizaje para poder evitar situaciones no deseables propias del entorno específico en el que trabaja cada aspiradora.

Un ejemplo de esto sería tener la capacidad de que la aspiradora pudiera evitar una esquina concreta de la casa llena de cables en la que ya se haya quedado atascada alguna vez o que fuera capaz de aprender a reconocer cuales son las mascotas de la casa, para no tener encontronazos con ellas.

Agentes y aprendizaje
La inclusión de capacidad de aprendizaje en un agente concreto va más allá de los tipos de programación que puede incorporar el agente.

La capacidad de aprendizaje es algo que se puede incorporar al agente independientemente de su modelo de programación.

De alguna manera, cuando creamos un agente con capacidad de aprender realizamos un proceso en dos etapas:


¿ Qué funcionalidades extra son las que permiten al agente aprender ?

Pues básicamente, se trata de dos nuevas funcionalidades que operan dentro del agente de la misma forma que operan los distintos procesos que ya vimos en la programación de un agente.

Se trata de la unidad crítica de aprendizaje y del generador de problemas.


La unidad crítica de aprendizaje
Se trata de un proceso esencial para el aprendizaje de un agente, que opera con el siguiente algoritmo:

  1. Tomamos como entrada: última acción ejecutada por el agente, regla que usó el agente para tomar esa acción y el estado del entorno que provocó el uso de esa regla
  2. También tomamos como entrada información concreta del entorno en el momento actual
  3. Consultamos una base de datos de comportamiento general que nos permite detectar situaciones a evitar o situaciones deseables
  4. Evaluamos la última acción del agente en base a los datos de entrada y a la base de datos de comportamiento general
  5. Si la evaluación detecta que la última acción del agente no ha conseguido los resultados esperados o incluso ha sido contraproducente, vamos al paso 7
  6. Si la evaluación detecta que la última acción del agente ha funcionado muy bien, vamos al paso 8. En caso contrario terminamos
  7. Introducimos una modificación en la base de datos de reglas del agente para tratar de que se produzca un mejor resultado la próxima vez que suceda lo mismo. Terminamos
  8. Introducimos una modificación en la base de datos de reglas del agente para marcar la regla que se usó por última vez como especialmente buena, de forma que en en futuras situaciones similares tenga tendencia a usarse y no pueda modificarse fácilmente


Básicamente, la unidad crítica de aprendizaje es una especie de superagente que evalúa todos los pasos del agente, usando una base de datos específica como guía para la evaluación.

A partir de la evaluación, el superagente tiene capacidad para modificar las reglas que rigen el comportamiento del agente, de forma que éste se adapte mejor a la realidad o, en otras palabras, que aprenda cómo es la realidad.

Puede ocurrir que alguna modificación de las reglas empeore el rendimiento del agente, pero a largo plazo, el mecanismo de refuerzo en caso de que agente trabaje bien tenderá a corregir estos problemas y a establecer reglas robustas.
Estructura aprendizaje agente
Siguiendo con nuestro ejemplo de la aspiradora autónoma, una unidad crítica de aprendizaje tendría capacidad de detectar si la aspiradora se queda astascada y podría intentar deducir qué es lo que ha llevado a la aspiradora a esa situación para intentar evitarlo en el futuro. También podría aprender a evitar a las mascotas si toca a una de ellas y la aspiradora recibe un golpe como resultado.

Generador de problemas
Un agente dotado de una unidad crítica de aprendizaje puede modificar su comportamiento para corregir errores que se han debido a la imperfección en la especificación de las reglas o a cambios en el entorno que han vuelto ineficaces a algunas reglas.

De alguna manera, la unidad crítica de aprendizaje permite aprender en base a problemas que han ocurrido.

Pero también podemos usar un registro de experiencias pasadas para intentar anticiparnos a los acontecimientos.

En general, un agente funciona en el corto plazo, toma decisiones en base a lo que sabe en el momento actual. Puede suceder que una acción sea óptima con la información actual pero sea mala en el largo plazo porque tenemos indicios sobre lo que puede a suceder a continuación.

El generador de problemas es un proceso que, a la vista de cada decisión que va tomando el agente, antes de que sea enviada a los actuadores, intenta buscar situaciones similares en el pasado y ver qué sucedió entonces (apoyándose en la unidad crítica de aprendizaje) para tratar de evitar acciones que tengan alta probabilidad de ser poco eficientes a la vista de lo que ha ocurrido en el pasado.

Básicamente, el generador de problemas es una especie de simulador de posibles escenarios que permite al agente no ser cortoplacista y tener la capacidad de mirar un poco más adelante, para seleccionar acciones que sean razonables tanto en el corto plazo como en el largo plazo.

Por ejemplo, un generador de problemas en nuestra aspiradora autónoma podría deducir que en situaciones pasadas la mascota de la casa tiende a quitarse del camino de la aspiradora si la dejamos suficiente tiempo para ello. En un momento dado, igual conviene que la aspiradora se detenga o vaya más despacio haciendo su trabajo para dar tiempo a que la mascota se mueva y evitar así un encontronazo con la mascota. El objetivo de aspirar la casa de forma rápida quedaría en este caso relegado y primaría la seguridad en el caso de que el generador de problemas detectara que hay alta probabilidad de tropezarse con la mascota.

En general, un agente puede aprender sin un generador de problemas, no es un componente esencial del mecanismo de aprendizaje del agente y es un componente difícil de implementar con eficacia.

¿ Es difícil hacer agentes con capacidad de aprendizaje ?
Sí que lo es. Realmente, no hay directrices claras sobre cómo podemos dotar a un agente de la capacidad de aprendizaje. Las estructuras que hemos descrito aquí son ideas bastante generales sobre cómo debería operar todo el mecanismo, pero no hay directrices claras sobre cómo implementarlo de forma precisa.

Una unidad crítica de aprendizaje puede ser algo bastante simple que sólo evite determinadas situaciones concretas o puede llegar a ser un proceso muy complejo. El generador de problemas puede existir o no. Puede incorporarse cierta capacidad de aprendizaje a un agente con modificaciones sencillas o podemos tratar de que tenga una gran capacidad de aprendizaje incorporando procesos muy complejos para la unidad crítica de aprendizaje y para el generador de problemas. Se trata de una cuestión con un rango enorme de posibilidades.

Hay problemas concretos que están bastante bien estudiados y para los que se conocen técnicas de Inteligencia Artificial relativamente eficaces que pueden incorporar la capacidad de aprendizaje al agente correspondiente. Pero, en general, no hay una forma única de plasmar en procesos concretos las ideas generales que hemos dado aquí.

Diseñar agentes inteligentes con capacidad de aprendizaje es uno de los problemas más complicados que afronta la Inteligencia Artificial y dónde se ponen a prueba la mayor parte de las técnicas desarrolladas.


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.

El aprendizaje automático o machine learning es una disciplina de las ciencias de la computación que trata la cuestión de sí las máquinas pueden llegar a aprender por la vía de la generalización. El diseño de agentes inteligentes que pueden aprender cae de lleno en esta disciplina.

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