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.
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:
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.
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 |
![]() ![]() |
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 |