**SVRAI** Agentes Inteligentes Diseño y Dimensiones # IA con Agentes
Si tomamos como base los agentes, la inteligencia artificial se podría definir como el campo que estudia la síntesis y análisis de agentes computacionales que actúan de forma inteligente.
En esta especie de definición hay multitud de supuestos que debemos analizar por separado: 1. Un agente es algo que **actúa** en un entorno, que hace algo. Entre los agentes se encuentran los gusanos, los perros, los termostatos, los aviones, los robots, los seres humanos, las empresas y los países. Lo que a nosotros nos interesa en este contexto es lo que hace un agente, es decir, cómo actúa. Juzgamos a un agente por sus acciones. 2. Un agente actúa de forma **inteligente** cuando: - lo que hace es apropiado para sus circunstancias y sus objetivos, teniendo en cuenta las consecuencias a corto y largo plazo de sus acciones, - es flexible ante los cambios del entorno y de los objetivos, - aprende de la experiencia, - toma las decisiones adecuadas dadas sus limitaciones perceptivas y computacionales. 3. Un agente **computacional** es un agente cuyas decisiones sobre las acciones que evalúa pueden explicarse en términos de computación. Es decir, la decisión puede descomponerse en operaciones primitivas que pueden implementarse en un dispositivo físico que sigue las normas habituales (teóricas y prácticas) de lo que consideramos Ciencias de la Computación. Esta computación puede adoptar muchas formas: en los humanos esta computación se lleva a cabo en el *wetware*, mientras que en los ordenadores se lleva a cabo en el *hardware*. Aunque hay algunos agentes que posiblemente no sean computacionales, como el viento y la lluvia que erosionan un paisaje, es una cuestión abierta si todos los agentes inteligentes son computacionales o no. 4. Todos los agentes son **limitados**. Ningún agente es omnisciente ni omnipotente. Solo en casos muy concretos, en dominios muy especializados, donde *el mundo* está muy restringido, los agentes pueden observar todo sobre el mundo. Entre estas limitaciones, hay dos muy claras: los agentes tienen una memoria finita, y no disponen de un tiempo ilimitado para decidir y actuar. !!! Desde este ángulo, el objetivo científico central que intenta abarcar la IA es comprender los principios que hacen posible el comportamiento inteligente en los sistemas naturales y/o artificiales. Este objetivo se persigue mediante la conjugación de varias tareas simultáneas y entrelazadas: - el análisis de agentes naturales y artificiales, - la formulación y comprobación de hipótesis sobre lo que se necesita para construir agentes inteligentes, y - el diseño, la construcción y la experimentación de sistemas computacionales que realizan tareas que se consideran habitualmente inteligentes. Como parte de la ciencia, los investigadores construyen sistemas empíricos para poner a prueba las hipótesis o para explorar el espacio de los posibles diseños. Es esencial tener en cuenta que estas construcciones pueden ser muy distintas de aquellas que tienen como objetivo ser útiles para un dominio de aplicación. La definición no se refiere únicamente al pensamiento inteligente. Sólo nos interesa el pensamiento inteligente en la medida en que conduce a un comportamiento más inteligente. El papel del pensamiento es afectar a la acción. El objetivo central de ingeniería de la IA es el diseño y la síntesis de artefactos útiles e inteligentes. En realidad, queremos construir agentes que actúen de forma inteligente... en un futuro más o menos cercano, estos agentes podrán ser útiles en muchas aplicaciones de forma general, y no de carácter específico. !!!Tip El representante más natural y cercano que tenemos de agente natural inteligente es el ser humano, y en cierta se convierte en la medida de oro que rige nuestro ideal de inteligencia, aunque ya es comúnmente aceptado que no es el único ejemplo de inteligencia que podemos encontrar. Una clase de agentes inteligentes que puede ser más inteligente que los humanos es la de las organizaciones. Las colonias de hormigas son un ejemplo prototípico de este tipo de organizaciones. Cada hormiga individual puede no ser muy inteligente, pero una colonia de hormigas puede actuar de forma más inteligente que cualquier hormiga individual... y que muchos humanos. La colonia puede descubrir comida y explotarla de forma muy eficaz, así como adaptarse a las circunstancias cambiantes. Las empresas pueden ser más inteligentes que los individuos: desarrollan, fabrican y distribuyen productos en los que la suma de las habilidades requeridas es muy superior de lo que cualquier individuo podría dominar. Los ordenadores modernos, desde el hardware de bajo nivel hasta el software de alto nivel, son más complicados de lo que cualquier humano puede entender, y sin embargo son fabricados diariamente por organizaciones de humanos. La sociedad humana, vista como un agente, es posiblemente el agente más inteligente conocido. Puede ser instructivo considerar de dónde viene la inteligencia humana, ya que puede motivar medios para producir inteligencia artificial. Hay tres fuentes principales: 1. **Biología**: Los humanos han evolucionado hasta convertirse en animales adaptables que pueden sobrevivir en diversos hábitats. 2. **Cultura**: La cultura proporciona no sólo el lenguaje, sino también herramientas útiles, conceptos útiles y la sabiduría que se transmite entre generaciones (por medios familiares, o por instituciones creadas para ello). 3. **Aprendizaje Continuo**: Los seres humanos aprenden a lo largo de su vida y acumulan conocimientos y habilidades. Estas fuentes interactúan de forma compleja. La evolución biológica ha proporcionado etapas de crecimiento que permiten un aprendizaje diferente en las distintas etapas de la vida, posiblemente cumpliendo distintos objetivos en cada una de las etapas. La biología y la cultura han evolucionado juntas, y esta útima interactúa fuertemente con el aprendizaje. Una parte importante del aprendizaje a lo largo de la vida es lo que los padres y los profesores enseñan a las personas. Y en este proceso, el lenguaje, que forma parte de la cultura, proporciona quizás la herramientas fundamental para optimizar los resultados. Cuando se construye un sistema inteligente, los diseñadores tienen que decidir cuáles de estas fuentes de inteligencia deben programarse y cuáles pueden aprenderse. Es muy poco probable que podamos construir un agente que empiece de cero y lo aprenda todo. Pero de igual forma, los agentes inteligentes más interesantes y útiles aprenden a mejorar su comportamiento, y no se limitan a lo que ha sido inicialmente implantado en su diseño. # Entornos
La IA se basa en el razonamiento práctico: razonar para hacer algo. Es por ello que, emulando los agentes inteligenets naturales que podemos observar, un agente se compone de una combinación de **percepción**, **razonamiento** y **actuación**. Un agente actúa en un entorno, que puede incluir a otros agentes. Un agente junto con su entorno se denomina **mundo**.
Un agente podría ser, por ejemplo, un acoplamiento de un motor computacional con sensores y actuadores físicos, llamado **robot**, donde el entorno es un escenario físico. Puede ser el acoplamiento de un ordenador que da consejos, un **sistema experto**, con un humano que proporciona información perceptiva y lleva a cabo la tarea. Un agente puede ser un programa que actúa en un entorno puramente computacional, un **agente software**. !!! Viendo un agente como una caja negra que procesa entradas del entorno y actúa sobre él, en cualquier momento, lo que hace un agente depende de: - el **Conocimiento Previo** sobre el agente y el entorno, - el **Historial de Interacción** con el entorno, que se compone de: - **Estímulos** recibidos del entorno (concetamente, de la localidad del entorno en la que se encuentre el agente en cada momento), que pueden incluir observaciones sobre el entorno, así como acciones que el entorno impone al agente, y - **Experiencias** pasadas de acciones y estímulos anteriores, u otros datos, de los que puede aprender, - **Objetivos** que debe intentar alcanzar o preferencias sobre los estados del mundo, - **Habilidades**, las acciones primitivas que el agente es capaz de realizar (con un desempeño variable). Dentro de la caja negra podemos imaginar distintas formas de operar con estas dependencias, por ejemplo, un agente podemos imaginarlo con un estado de creencias interno que le permite mantener una representación/codificación de las creencias sobre su entorno, lo que ha aprendido, lo que intenta hacer y lo que pretende hacer. Un agente actualiza este estado interno en función de los estímulos. Utiliza el estado de creencias y los estímulos para decidir sus acciones. Gran parte del trabajo con agentes inteligentes consiste en ver cómo diseñar lo que hay dentro de esta caja negra. Se trata de una visión global de los agentes inteligentes, cuya complejidad varía desde un simple termostato hasta un sistema de asesoramiento de diagnóstico cuyas percepciones y acciones están mediadas por seres humanos, pasando por un equipo de robots móviles... o la propia sociedad. !!! Los agentes **intencionales** tienen **preferencias** o **metas**. Prefieren algunos estados del mundo a otros, y actúan para intentar alcanzar los estados que más prefieren. Los agentes no intencionales se agrupan en lo que denominaríamos **naturaleza**. El hecho de que un agente sea o no intencional es una suposición de modelización que puede ser más o menos apropiada. Por ejemplo, para algunas aplicaciones puede ser apropiado modelar un perro como intencional, y para otras puede ser suficiente modelarlo como no intencional. Si un agente no tiene preferencias, por definición no le importa en qué estado del mundo acabe, y por tanto no le importa lo que haga. Por ello, la razón para diseñar uns solución con agentes es inculcarles preferencias, hacer que prefieran algunos estados del mundo y que sus acciones vayan encaminadas a intentar alcanzarlos. A pesar de ello, un agente no tiene por qué conocer sus preferencias explícitamente. Por ejemplo, un termostato es un agente que percibe el mundo y enciende o apaga un calentador. El termostato tiene preferencias, como mantener a los ocupantes de una habitación a una temperatura agradable, aunque podría decirse que el termostato no sabe que esas son sus preferencias. Las preferencias de un agente suelen ser las de su diseñador, pero a veces puede adquirir objetivos y preferencias en tiempo de ejecución que modifican su comportamiento. # Diseño A pesar de todo, los agentes artificiales se diseñan para tareas específicas, y todavía no estamos en condiciones de diseñar un agente cuyo objetivo sea sobrevivir y reproducirse en un entorno natural. ## Tiempo de Computación !!! A la hora de decidir lo que hará un agente, hay que distinguir tres aspectos de la computación: 1. La computación que se realiza para **diseñar** el agente. La lleva a cabo el diseñador del agente, no el propio agente. 2. La computación que el agente puede realizar antes de observar el mundo y tener que actuar, se denomina **computación offline**, y puede incluir tareas comom la compilación del agente y los procesos de aprendizaje que ejecute en momentos *desconectados* del mundo. Fuera de línea, un agente puede tomar conocimientos y datos de fondo y compilarlos en una forma utilizable llamada *base de conocimientos*. Así pues, los conocimientos previos pueden darse en el momento del diseño o fuera de línea. 3. La computación que realiza el agente mientras actúa, que se denomina **computación en línea**, y es la que realiza entre la observación del entorno y la actuación en el mismo. Una pieza de información obtenida en línea se denomina **observación**. Normalmente, un agente debe utilizar su base de conocimientos, sus creencias y sus observaciones para determinar qué hacer a continuación. Es importante distinguir entre el conocimiento en la mente del diseñador y el conocimiento en la mente del agente. Consideremos los casos extremos: - En un extremo está un agente altamente especializado que funciona bien en el entorno para el que fue diseñado, pero que es impotente fuera de ese nicho. El diseñador puede haber realizado un trabajo considerable en la construcción del agente, pero éste puede no necesitar hacer mucho para funcionar bien. Un ejemplo es un termostato. Puede ser difícil diseñar un termostato para que se encienda y apague exactamente a las temperaturas adecuadas, pero el termostato en sí no tiene que hacer mucho cálculo. Otro ejemplo es un robot de pintura de coches que siempre pinta las mismas piezas en una fábrica de automóviles. Puede haber mucho tiempo de diseño o computación fuera de línea para que funcione a la perfección, pero el robot de pintura puede pintar las piezas con poca computación en línea; detecta que hay una pieza en posición, y luego lleva a cabo las acciones predefinidas. Estos agentes tan especializados no se adaptan bien a los distintos entornos ni a los cambios de objetivos. El robot de pintura no se daría cuenta de que hay una pieza diferente y, aunque lo hiciera, no sabría qué hacer con ella. Tendría que ser rediseñado o reprogramado para pintar piezas diferentes o para convertirse en una lijadora o en una lavadora de perros, a pesar de tener una composición muy similar. - En el otro extremo está un agente muy flexible que puede sobrevivir en entornos arbitrarios y aceptar nuevas tareas en tiempo de ejecución. Los agentes biológicos simples, como los insectos, pueden adaptarse a entornos cambiantes y complejos, pero no pueden realizar tareas arbitrarias. Diseñar un agente que pueda adaptarse a entornos complejos y a objetivos cambiantes es un gran reto. El agente sabrá mucho más sobre las particularidades de una situación que el diseñador. Ni siquiera la biología ha producido muchos agentes de este tipo. Los humanos son el único ejemplo existente, pero incluso ellos necesitan tiempo para adaptarse a nuevos entornos. Incluso si el agente flexible es nuestro último sueño, los investigadores tienen que alcanzar esta meta a través de objetivos más mundanos. En lugar de construir un agente universal, que pueda adaptarse a cualquier entorno y resolver cualquier tarea, han construido agentes particulares para nichos ambientales concretos. Así, el diseñador puede explotar la estructura del nicho particular y el agente no tiene que razonar sobre otras posibilidades. En la construcción de agentes se han seguido dos grandes estrategias: - La primera es simplificar los entornos y construir sistemas de razonamiento complejos para estos entornos simples. Por ejemplo, los robots de las fábricas pueden realizar tareas sofisticadas en el entorno de ingeniería de una fábrica, pero pueden ser inútiles en un entorno natural. Gran parte de la complejidad de la tarea puede reducirse simplificando el entorno. Esto también es importante para la construcción de sistemas prácticos, ya que muchos entornos pueden diseñarse para que sean más sencillos para los agentes. - La segunda estrategia consiste en construir agentes sencillos en entornos naturales. Esto se inspira en ver cómo los insectos pueden sobrevivir en entornos complejos aunque tengan una capacidad de razonamiento muy limitada. A continuación, los investigadores hacen que los agentes tengan más capacidad de razonamiento a medida que sus tareas se complican. Una de las ventajas de simplificar los entornos es que puede permitirnos demostrar propiedades de los agentes u optimizarlos para situaciones concretas. La demostración de propiedades o la optimización suelen requerir un modelo del agente y de su entorno. El agente puede razonar poco o mucho, pero un observador o diseñador del agente puede ser capaz de razonar sobre el agente y el entorno. Por ejemplo, el diseñador puede ser capaz de probar si el agente puede alcanzar un objetivo, si puede evitar meterse en situaciones que pueden ser malas para el agente (**seguridad**), si se quedará atascado en algún sitio (**liveness**), o si finalmente llegará a hacer cada una de las cosas que debería hacer (**fairness**). Por supuesto, la prueba es tan buena como el modelo. La ventaja de construir agentes para entornos complejos es que éstos son los tipos de entornos en los que viven los humanos y en los que queremos que estén nuestros agentes para obtener una ganancia directa (y una mayor eficiencia en las tareas que queremos desarrollar). !!!Tip Incluso los entornos naturales pueden abstraerse en entornos más simples. Por ejemplo, para un coche autónomo que circule por la vía pública, el entorno puede simplificarse conceptualmente de modo que todo sea una carretera, otro coche o algo que deba evitarse. Aunque los coches autónomos cuentan con sofisticados sensores, sólo disponen de un número limitado de acciones: *girar*, *acelerar* y *frenar*. Afortunadamente, se están llevando a cabo investigaciones en ambas líneas, y entre estos extremos. En el primer caso, los investigadores parten de entornos sencillos y los hacen más complejos. En el segundo caso, los investigadores aumentan la complejidad de los comportamientos que pueden realizar los agentes. ## Tareas Una de las diferencias entre las representaciones de la IA y los programas informáticos en lenguajes tradicionales es que, en muchas ocasiones, una representación de la IA suele especificar lo que hay que calcular, no cómo hay que hacerlo. Podemos especificar que el agente debe encontrar la enfermedad más probable que tiene un paciente, o especificar que un robot debe conseguir café, pero no dar instrucciones detalladas sobre cómo hacer estas cosas. Gran parte del razonamiento de la IA implica la búsqueda en el espacio de posibilidades para determinar cómo completar una tarea. Normalmente, una tarea sólo se da de manera informal, como *entregar los paquetes rápidamente cuando lleguen* o *arreglar lo que sea que esté mal en el sistema eléctrico de la casa*. ![Tareas. El papel de las representaciones en la resolución de tareas](img/tareas.png) Esta figura muestra el marco general de la resolución de tareas por ordenador. Para resolver una tarea, el diseñador de un sistema debe: - determinar lo que constituye una solución, - representar la tarea de forma que el ordenador pueda razonar sobre ella, - utilizar el ordenador para calcular un resultado, que son las respuestas que se presentan al usuario o las acciones que deben realizarse en el entorno, e - interpretar el resultado como una solución a la tarea. El **conocimiento** es la información sobre un dominio que puede utilizarse para resolver tareas en ese dominio. Resolver muchas tareas requiere mucho conocimiento, y este conocimiento debe representarse en el ordenador. Como parte del diseño de un programa para resolver tareas, debemos definir cómo se representará el conocimiento, para lo que se utiliza un **lenguaje de representación** específico. Una representación de algún conocimiento son las **estructuras de datos** particulares que se utilizan para codificar el conocimiento de manera que se pueda razonar con él. Una **base de conocimiento** es la representación de todo el conocimiento que almacena un agente. !!! Un buen lenguaje de representación es un compromiso entre muchos objetivos que compiten entre sí, ya que debe verificar: - **expresivo**: lo suficientemente rica como para expresar el conocimiento necesario para resolver la tarea. - **natural**: lo más parecido a una especificación natural de la tarea; debe ser compacta, natural y fácil de mantener. Debe ser fácil ver la relación entre la representación y el dominio representado, de modo que sea fácil determinar si el conocimiento representado es correcto. Un pequeño cambio en la tarea debe dar lugar a un pequeño cambio en la representación de la misma. - **computable**: Que sea susceptible de ser computada de forma eficiente, es decir, que el agente pueda actuar con la suficiente rapidez. Para asegurar esto, las representaciones explotan las características de la tarea para obtener beneficios computacionales y compensan la precisión y el tiempo de cálculo. - **aprendizaje**: Se pueden adquirir a partir de las personas, los datos y las experiencias pasadas. Se han diseñado muchos lenguajes de representación diferentes. Muchos de ellos comienzan con algunos de estos objetivos y luego se amplían para incluir los demás. Por ejemplo, algunos se diseñan para el aprendizaje, quizás inspirados en las neuronas, y luego se amplían para permitir la resolución de tareas más ricas y la capacidad de inferencia. Algunos lenguajes de representación se diseñan pensando en la expresividad, y luego se añaden la inferencia y el aprendizaje. Algunos diseñadores de lenguajes se centran en la trazabilidad y potencian la riqueza, la naturalidad y la capacidad de adquisición. ## Definir una Solución Dada una descripción informal de una tarea, antes incluso de considerar una implementación, el diseñador de un agente debe determinar lo que constituiría una solución. Esta cuestión se plantea no sólo en la IA, sino en cualquier diseño de software. Gran parte de la ingeniería de software implica refinar la especificación de la tarea. Las tareas no suelen estar bien especificadas. No sólo suelen quedar muchas cosas sin especificar, sino que las partes no especificadas no pueden rellenarse de forma arbitraria. Por ejemplo, si un usuario pide a un agente comercial que averigüe toda la información sobre los centros turísticos que pueden tener prácticas alimentarias insalubres, no quiere que el agente devuelva toda la información sobre todos los centros turísticos, aunque toda la información solicitada esté en el resultado. Sin embargo, si el agente comercial no tiene un conocimiento completo de los complejos turísticos, la devolución de toda la información puede ser la única forma de garantizar que toda la información solicitada está ahí. Del mismo modo, no se quiere que un robot de reparto, cuando se le pide que lleve toda la basura al cubo, lleve todo al cubo, aunque sea la única forma de garantizar que se ha llevado toda la basura. Gran parte del trabajo en IA está motivado por el razonamiento de sentido común: queremos que el agente sea capaz de llegar a conclusiones de sentido común sobre los supuestos no declarados. Dada una tarea bien definida, la siguiente cuestión es si importa que la respuesta devuelta sea incorrecta o incompleta. Por ejemplo, si la especificación pide todas las instancias, ¿importa si faltan algunas?, ¿importa si hay algunas instancias de más? A menudo, una persona no quiere cualquier solución, sino la mejor solución según algunos criterios. !!! En este sentido, hay cuatro clases comunes de soluciones: - **Solución Óptima**: Una solución óptima para una tarea es aquella que es la mejor solución según alguna medida de calidad. Por ejemplo, un robot puede necesitar sacar la mayor cantidad de basura posible. En un ejemplo más complejo, es posible que se quiera que el robot de reparto lleve la mayor cantidad de basura posible al contenedor, minimizando la distancia recorrida, y que se especifique explícitamente un compromiso entre el esfuerzo requerido y la proporción de basura sacada. También hay costes asociados a los errores y a tirar objetos que no son basura. Puede ser mejor perder algo de basura que perder demasiado tiempo. Una medida general de la deseabilidad, conocida como **utilidad**, se utiliza en la teoría de la decisión. - **Solución satisfactoria**: A menudo, un agente no necesita la mejor solución para una tarea, sino sólo alguna solución. Una solución satisfactoria es aquella que es suficientemente buena según alguna descripción de qué soluciones son adecuadas. Por ejemplo, una persona puede decirle a un robot que debe sacar toda la basura, o decirle que saque tres elementos de la basura. - **Solución óptima aproximada**: Una de las ventajas de una medida cardinal de éxito es que permite realizar aproximaciones. Una solución óptima aproximada es aquella cuya medida de calidad se aproxima a la mejor que podría obtenerse teóricamente. Normalmente, los agentes no necesitan soluciones óptimas para las tareas, sólo necesitan acercarse lo suficiente. Por ejemplo, puede que el robot no tenga que recorrer la distancia óptima para sacar la basura, sino que sólo necesite acercarse, por ejemplo, al 10% de la distancia óptima. Algunos algoritmos de aproximación garantizan que una solución se encuentra dentro de un cierto rango de lo óptimo, pero para algunos algoritmos no existen garantías.Para algunas tareas, es mucho más fácil computacionalmente obtener una solución aproximadamente óptima que una solución óptima. Sin embargo, para otras tareas, es tan difícil encontrar una solución aproximadamente óptima que esté garantizada dentro de algunos límites del óptimo como encontrar una solución óptima. - **Solución Probable**: Una solución probable es aquella que, aunque no sea realmente una solución para la tarea, es probable que lo sea. Es una forma de aproximar, de manera precisa, una solución satisfactoria. Por ejemplo, en el caso de que el robot de reparto pueda dejar caer la basura o no recogerla cuando lo intente, es posible que se necesite que el robot esté seguro en un 80% de que ha recogido tres artículos de basura. A menudo se quiere distinguir la tasa de error falso-positivo (la proporción de las respuestas dadas por el agente que no son correctas) de la tasa de error falso-negativo (la proporción de las respuestas no dadas por el agente que sí son correctas). Algunas aplicaciones son mucho más tolerantes con uno de estos tipos de errores que con el otro (por ejemplo, los errores médicos). ## Representaciones Una vez que se tienen algunos requisitos sobre la naturaleza de una solución, hay que representar la tarea para que un agente pueda resolverla. !!! Los agentes computacionales implementados en ordenadores y las mentes humanas son ejemplos de sistemas de **símbolos físicos**: *Un símbolo es un patrón con significado que puede ser manipulado*. Ejemplos de símbolos son las palabras escritas, las frases, los gestos, las marcas en el papel o las secuencias de bits. Un sistema de símbolos crea, copia, modifica y destruye símbolos. Esencialmente, un símbolo es uno de los patrones manipulados como unidad por un sistema de símbolos. Se utiliza el término *físico* porque los símbolos de un sistema de símbolos físico son objetos físicos que forman parte del mundo real, aunque puedan ser internos a los ordenadores y cerebros. También pueden afectar físicamente a la acción o al control motor. !!!Tip Gran parte de la IA se basa en la hipótesis del sistema de símbolos físicos de Newell y Simon (1976): *Un sistema de símbolos físicos tiene los medios necesarios y suficientes para la acción inteligente general*. Esta es una hipótesis fuerte. Significa que cualquier agente inteligente es necesariamente un sistema de símbolos físicos. También significa que un sistema de símbolos físicos es todo lo que se necesita para la acción inteligente; no se necesita magia ni un fenómeno cuántico aún por descubrir. No implica que un sistema de símbolos físicos no necesite un cuerpo para sentir y actuar en el mundo. Existe un debate sobre si las variables ocultas, a las que no se ha asignado un significado, pero que son útiles, pueden considerarse símbolos. La hipótesis del sistema de símbolos físicos es una hipótesis empírica que, al igual que otras hipótesis científicas, debe juzgarse por lo bien que se ajusta a las pruebas y por las hipótesis alternativas que existen. De hecho, podría ser falsa. Se puede considerar que un agente inteligente manipula símbolos para producir una acción. Muchos de estos símbolos se utilizan para referirse a cosas del mundo. Otros símbolos pueden ser conceptos útiles que pueden tener o no un significado externo. Otros símbolos pueden referirse a estados internos del agente. Un agente puede utilizar un sistema de símbolos físicos para modelar el mundo. Un modelo del mundo es una representación de las creencias de un agente sobre lo que es cierto en el mundo o sobre cómo cambia el mundo. El mundo no tiene que ser modelado al nivel más detallado para ser útil. Todos los modelos son abstracciones; representan sólo una parte del mundo y dejan fuera muchos de los detalles. Un agente puede tener un modelo muy simplista del mundo, o puede tener un modelo muy detallado del mundo. El nivel de abstracción proporciona una ordenación parcial de la abstracción. Una abstracción de nivel inferior incluye más detalles que una abstracción de nivel superior. Un agente puede tener múltiples modelos del mundo, incluso contradictorios. Los modelos no se juzgan por si son correctos, sino por si son útiles. !!!Tip Un robot de reparto puede modelar el entorno a un alto nivel de abstracción en términos de habitaciones, pasillos, puertas y obstáculos, ignorando las distancias, su tamaño, los ángulos de dirección necesarios, el deslizamiento de las ruedas, el peso de los paquetes, los detalles de los obstáculos, la situación política de Cataluña y prácticamente todo lo demás. El robot podría modelar el entorno a niveles inferiores de abstracción teniendo en cuenta algunos de estos detalles. Algunos de estos detalles pueden ser irrelevantes para el éxito de la implementación del robot, pero otros pueden ser cruciales para que el robot tenga éxito. Por ejemplo, en algunas situaciones el tamaño del robot y los ángulos de dirección pueden ser cruciales para no quedarse atascado en una esquina concreta. En otras situaciones, si el robot se mantiene cerca del centro del pasillo, puede no ser necesario modelar su anchura o los ángulos de dirección. La elección de un nivel de abstracción adecuado es difícil por las siguientes razones: - Una descripción de alto nivel es más fácil de especificar y comprender para un humano. - Una descripción de bajo nivel puede ser más precisa y más predictiva. A menudo, las descripciones de alto nivel dejan de lado detalles que pueden ser importantes para resolver la tarea. - Cuanto más bajo es el nivel, más difícil es razonar con él. Esto se debe a que una solución a un nivel de detalle inferior implica más pasos y existen muchos más cursos de acción posibles entre los que elegir. - Un agente puede no conocer la información necesaria para una descripción de bajo nivel. Por ejemplo, el robot de reparto puede no saber con qué obstáculos se encontrará o lo resbaladizo que estará el suelo en el momento en que deba decidir qué hacer. A menudo es una buena idea modelar un entorno en múltiples niveles de abstracción. Los sistemas biológicos, y los ordenadores, pueden describirse en múltiples niveles de abstracción. A niveles sucesivamente inferiores se encuentran el nivel neuronal, el nivel bioquímico (qué sustancias químicas y qué potenciales eléctricos se transmiten), el nivel químico (qué reacciones químicas se llevan a cabo) y el nivel de la física (en términos de fuerzas sobre los átomos y fenómenos cuánticos). Qué niveles por encima del nivel neuronal son necesarios para explicar la inteligencia sigue siendo una cuestión abierta. Estos niveles de descripción se reflejan en la estructura jerárquica de la propia ciencia, donde los científicos se dividen en físicos, químicos, biólogos, psicólogos, antropólogos, etc. Aunque ningún nivel de descripción es más importante que otro, conjeturamos que no es necesario emular todos los niveles de un humano para construir un agente de IA, sino que se pueden emular los niveles superiores y construirlos sobre la base de los ordenadores modernos. Esta conjetura forma parte de lo que estudia la IA. !!! Los siguientes son dos niveles que parecen ser comunes a las entidades biológicas y computacionales: - El **nivel de conocimiento** es el nivel de abstracción que considera lo que un agente sabe y cree y cuáles son sus objetivos. Este nivel considera lo que un agente sabe, pero no cómo razona. Por ejemplo, el comportamiento del agente de reparto puede describirse en términos de si sabe que un paquete ha llegado o no y si sabe dónde está una persona concreta o no. Tanto los agentes humanos como los robóticos se pueden describir a nivel de conocimiento. En este nivel, no se especifica cómo se calculará la solución ni siquiera cuál de las muchas estrategias posibles de que dispone el agente se utilizará. - El **nivel de símbolos** es un nivel de descripción de un agente en términos del razonamiento que realiza. Para implementar este nivel, un agente manipula símbolos para producir respuestas. Muchos experimentos de la ciencia cognitiva están diseñados para determinar qué manipulación de símbolos se produce durante el razonamiento. Mientras que el nivel de conocimiento trata de lo que el agente cree sobre el mundo exterior y cuáles son sus objetivos en relación con el mundo exterior, el nivel de símbolos trata de lo que ocurre dentro de un agente para razonar sobre el mundo exterior. # Dimesiones Los agentes que actúan en entornos varían en complejidad, desde termostatos hasta empresas con múltiples objetivos que actúan en entornos competitivos. Aquí describimos diez dimensiones de complejidad en el diseño de agentes inteligentes. Estas dimensiones pueden considerarse por separado, pero deben combinarse para construir un agente inteligente. Estas dimensiones definen un espacio de diseño para la IA donde se obtienen diferentes puntos en este espacio variando los valores de cada dimensión. Estas dimensiones proporcionan una división gruesa del espacio de diseño para los agentes inteligentes. No son las únicas, hay otras muchas opciones de diseño que también deben hacerse para construir un agente inteligente. ## Modularidad
La modularidad es el grado en que un sistema puede descomponerse en módulos que interactúan y que pueden entenderse por separado.
La modularidad es importante para reducir la complejidad. Es evidente en la estructura del cerebro, sirve de base a la informática y es un aspecto importante de cualquier gran organización. La modularidad suele expresarse en términos de descomposición jerárquica. !!! Respecto a la modularidad, la estructura de un agente es una de las siguientes: - **Plana**: no hay estructura organizativa, - **Modular**: el sistema se descompone en módulos que interactúan y que pueden entenderse por sí mismos. - **Jerárquica**: además del sistema modular, los propios módulos se descomponen en módulos más simples, cada uno de los cuales son sistemas jerárquicos o componentes simples. En una estructura plana o modular, el agente suele razonar a un solo nivel de abstracción. En una estructura jerárquica, el agente razona en múltiples niveles de abstracción. Los niveles inferiores de la jerarquía implican un razonamiento a un nivel inferior de abstracción. !!!Tip Al realizar un viaje desde su casa a un lugar de vacaciones en el extranjero, un agente, como usted, debe ir desde su casa a un aeropuerto, volar a un aeropuerto cercano al destino, y luego ir desde el aeropuerto al destino. También debe realizar una secuencia de movimientos específicos de piernas o ruedas para desplazarse realmente. En una representación plana, el agente elige un nivel de abstracción y razona en ese nivel. Una representación modular dividiría la tarea en una serie de subtareas que pueden resolverse por separado (por ejemplo, reservar los billetes, llegar al aeropuerto de salida, llegar al aeropuerto de destino y llegar al lugar de vacaciones). En una representación jerárquica, el agente resolverá estas subtareas de forma jerárquica, hasta que la tarea se reduzca a tareas sencillas como el envío de una solicitud http o la realización de un paso concreto. La descomposición jerárquica es importante para reducir la complejidad de construir un agente inteligente que actúe en un entorno complejo. Las grandes organizaciones tienen una organización jerárquica para que los responsables de la toma de decisiones de alto nivel no se vean abrumados por los detalles y no tengan que microgestionar todas las actividades de la organización. La abstracción procedimental y la programación orientada a objetos en informática están diseñadas para permitir la simplificación de un sistema explotando la modularidad y la abstracción. Hay muchas pruebas de que los sistemas biológicos también son jerárquicos. Para explorar las otras dimensiones, inicialmente ignoramos la estructura jerárquica y asumimos una representación plana. Ignorar la descomposición jerárquica suele estar bien para tareas pequeñas o de tamaño moderado, como ocurre con los animales simples, las organizaciones pequeñas o los programas informáticos de tamaño pequeño o moderado. Cuando las tareas o los sistemas se vuelven complejos, se requiere cierta organización jerárquica. ## Horizonte de planificación El horizonte de planificación es la distancia en el tiempo con la que el agente planifica. Por ejemplo, consideremos un perro como agente. Cuando se llama a un perro para que venga, debe darse la vuelta para empezar a correr con el fin de obtener una recompensa en el futuro. No actúa sólo para obtener una recompensa inmediata. Es plausible que un perro no actúe por objetivos arbitrariamente lejanos en el futuro (por ejemplo, dentro de unos meses), mientras que las personas sí lo hacen (por ejemplo, trabajar duro ahora para conseguir unas vacaciones el año que viene).
El horizonte de planificación es la distancia a la que el agente *mira hacia el futuro* cuando decide qué hacer. Para completar, incluimos el caso de no planificación en el que el agente no razona en el tiempo. Los puntos de tiempo considerados por un agente al planificar se denominan etapas.
!!! En el horizonte de planificación, un agente tiene varias opciones: - Un agente **no planificador** es un agente que no considera el futuro cuando decide qué hacer o cuando el tiempo no está involucrado. - Un agente con **horizonte finito de planificación** es un agente que busca un número finito fijo de etapas. Por ejemplo, un médico puede tener que tratar a un paciente pero puede tener tiempo para realizar una prueba, por lo que puede haber dos etapas que planificar: una etapa de prueba y otra de tratamiento. En el caso degenerado en el que un agente sólo mira un paso de tiempo por delante, se dice que es codicioso o miope. - Un planificador de **horizonte indefinido** es un agente que mira hacia delante un número finito, pero no predeterminado, de etapas. Por ejemplo, un agente que debe llegar a un lugar determinado puede no saber a priori cuántos pasos tendrá que dar para llegar allí, pero, al planificar, no tiene en cuenta lo que hará después de llegar al lugar. - Un planificador de **horizonte infinito** es un agente que planifica para siempre. A menudo se le llama proceso. Por ejemplo, el módulo de estabilización de un robot con patas debe continuar para siempre, no puede detenerse cuando haya alcanzado la estabilidad, porque el robot tiene que evitar caerse. ## Representación
La representación se refiere a cómo se describe el mundo.
Las diferentes formas en que puede estar el mundo se denominan estados. Un estado del mundo especifica el estado interno del agente (su estado de creencia) y el estado del entorno. En el nivel más sencillo, un agente puede razonar explícitamente en términos de estados identificados individualmente. !!!Tip Un termostato para una calefacción puede tener dos estados de creencia: apagado y calefacción. El entorno puede tener tres estados: frío, cómodo y caliente. Por tanto, hay seis estados que corresponden a las diferentes combinaciones de estados de creencia y de entorno. Puede que estos estados no describan completamente el mundo, pero son adecuados para describir lo que debe hacer un termostato. El termostato debe pasar a, o permanecer en, calefacción si el entorno es frío y pasar a, o permanecer en, apagado si el entorno es cálido. Si el entorno es confortable, el termostato debe permanecer en su estado actual. El agente del termostato mantiene la calefacción encendida en el estado de calefacción y mantiene la calefacción apagada en el estado de apagado. En lugar de enumerar estados, a menudo es más fácil razonar en términos de características del estado o proposiciones que son verdaderas o falsas del estado. Un estado puede describirse en términos de rasgos, donde un rasgo tiene un valor en cada estado. !!!Tip Un agente que tiene que cuidar una casa puede tener que razonar sobre si las bombillas están rotas. Puede tener características para la posición de cada interruptor, el estado de cada interruptor (si funciona bien, si está en cortocircuito, o si está roto), y si cada luz funciona. La característica *posicion_s2* puede ser una característica que tiene valor arriba cuando el interruptor *s2* está arriba y tiene valor abajo cuando el interruptor está abajo. El estado de la iluminación de la casa puede describirse en términos de valores para cada una de estas características. Estas características dependen unas de otras, pero no de forma arbitrariamente compleja, por ejemplo, que una luz esté encendida puede depender sólo de que esté bien, de que el interruptor esté encendido y de que haya electricidad. Una proposición es una característica booleana, lo que significa que su valor es verdadero o falso. Treinta proposiciones pueden codificar $2^{30} = 1073741824$ estados. Puede ser más fácil especificar y razonar con las 30 proposiciones que con más de 1000 millones de estados. Además, tener una representación compacta de los estados indica comprensión, porque significa que un agente ha captado algunas regularidades en el dominio. !!!Tip Consideremos un agente que tiene que reconocer las letras del alfabeto. Supongamos que el agente observa una imagen binaria, una cuadrícula de $30 \times 30$ píxeles, donde cada uno de los $900$ puntos de la cuadrícula es blanco o negro. La acción consiste en determinar cuál de las letras $\{a, \dots, z\}$ está dibujada en la imagen. Hay $2900$ estados posibles de la imagen, y por tanto $26^{2900}$ funciones diferentes desde el estado de la imagen a los caracteres $\{a, \dots, z\}$. Ni siquiera podemos representar esas funciones en términos del espacio de estados. En su lugar, los sistemas de reconocimiento de escritura definen las características de la imagen, como los segmentos de línea, y definen la función de las imágenes a los caracteres en términos de estas características. Las implementaciones modernas aprenden las características que son útiles. Al describir un mundo complejo, las características pueden depender de las relaciones y los individuos. Lo que llamamos individuo también podría llamarse cosa, objeto o entidad. Una relación sobre un individuo es una propiedad. Hay una característica para cada relación posible entre los individuos. !!!Tip El agente que cuida una casa del ejemplo 1.6 podría tener las luces y los interruptores como individuos, y las relaciones *posición* y *conectado_a*. En lugar del rasgo *posicion_s2 = arriba*, podría utilizar la relación *posicion(s2, arriba)*. Esta relación permite al agente razonar sobre todos los interruptores o tener un conocimiento general sobre los interruptores que se puede utilizar cuando el agente se encuentra con un interruptor. Al razonar en términos de relaciones e individuos, un agente puede razonar sobre clases enteras de individuos sin enumerar nunca las características o las proposiciones, y mucho menos los estados. Un agente puede tener que razonar sobre conjuntos infinitos de individuos, como el conjunto de todos los números o el conjunto de todas las frases. Para razonar sobre un número ilimitado o infinito de individuos, un agente no puede razonar en términos de estados o rasgos, debe razonar a nivel relacional. !!! En la dimensión de representación, el agente razona en términos de: - **Estados**, - **Características**, o - **Individuos y Relaciones** (a menudo llamadas representaciones relacionales). Algunos de los marcos se desarrollarán en términos de estados, otros en términos de características y otros en términos de individuos y relaciones. ## Límites computacionales A veces, un agente puede decidir su mejor acción con la suficiente rapidez como para actuar. A menudo hay límites de recursos computacionales que impiden a un agente llevar a cabo la mejor acción. Es decir, el agente puede no ser capaz de encontrar la mejor acción lo suficientemente rápido dentro de sus limitaciones de memoria para actuar mientras esa acción sigue siendo la mejor. Por ejemplo, puede que no sirva de mucho tomarse 10 minutos para deducir qué era lo mejor que se podía hacer hace 10 minutos, cuando el agente tiene que actuar ahora. A menudo, en cambio, un agente debe compensar el tiempo que tarda en obtener una solución con lo buena que es la solución; puede ser mejor encontrar una solución razonable rápidamente que encontrar una solución mejor más tarde porque el mundo habrá cambiado durante el cálculo. !!! La dimensión de los límites computacionales determina si un agente tiene: - **Racionalidad Perfecta**, cuando un agente razona sobre la mejor acción sin tener en cuenta sus limitados recursos computacionales, o - **Racionalidad Limitada o Acotada**, en la que un agente decide la mejor acción que puede encontrar dadas sus limitaciones computacionales. Las limitaciones de recursos computacionales incluyen el tiempo de cálculo, la memoria y la precisión numérica causada la incapacidad de los ordenadores en representar los números reales de forma exacta. Un **algoritmo de tiempo indefinido** es un algoritmo en el que la calidad de la solución mejora con el tiempo. En concreto, es un algoritmo que puede producir su mejor solución actual en cualquier momento, pero que si se le da más tiempo podría producir soluciones aún mejores. Podemos asegurarnos de que la calidad no disminuya permitiendo que el agente almacene la mejor solución encontrada hasta el momento y la devuelva cuando se le pida una solución. Aunque la calidad de la solución puede aumentar con el tiempo, esperar a actuar tiene un coste; puede ser mejor que un agente actúe antes de haber encontrado la que sería la mejor solución. Para tener en cuenta la racionalidad limitada, un agente debe decidir si debe actuar o razonar durante más tiempo. Esto es un reto porque un agente no suele saber cuánto mejor le iría si sólo dedicara un poco más de tiempo a razonar. Además, el tiempo dedicado a pensar si debe razonar puede restarle tiempo al razonamiento real sobre el dominio. ## Aprendizaje En algunos casos, el diseñador de un agente puede tener un buen modelo del agente y su entorno. Pero a menudo no es así, por lo que un agente debe utilizar los datos de sus experiencias pasadas y otras fuentes para ayudarle a decidir qué hacer. !!! La dimensión del aprendizaje determina si - el **Conocimiento es Dado**, o - el **Conocimiento se Aprende** (a partir de datos o experiencias pasadas).
El aprendizaje suele consistir en encontrar el mejor modelo que se ajuste a los datos.
A veces es tan sencillo como ajustar un conjunto fijo de parámetros, pero también puede significar elegir la mejor representación de entre una clase de representaciones. El aprendizaje es un campo enorme en sí mismo, pero no está aislado del resto de la IA. Hay muchas cuestiones que van más allá del ajuste de datos, entre ellas cómo incorporar el conocimiento de fondo, qué datos recoger, cómo representar los datos y las representaciones resultantes, qué sesgos de aprendizaje son apropiados y cómo puede utilizarse el conocimiento aprendido para afectar a la forma de actuar del agente. ## Incertidumbre Un agente puede suponer que no hay incertidumbre, o puede tener en cuenta la incertidumbre en el dominio. !!! La incertidumbre se divide en dos dimensiones: una para la incertidumbre de la detección y otra para la incertidumbre sobre los efectos de las acciones. 1. **Incertidumbre de detección**: En algunos casos, un agente puede observar el estado del mundo directamente. Por ejemplo, en algunos juegos de mesa o en una fábrica, un agente puede conocer exactamente el estado del mundo. En muchos otros casos, puede que sólo tenga una percepción ruidosa del estado y lo mejor que puede hacer es tener una distribución de probabilidad sobre el conjunto de estados posibles basada en lo que percibe. Por ejemplo, dados los síntomas de un paciente, un médico puede no saber realmente qué enfermedad tiene el paciente y puede tener sólo una distribución de probabilidad sobre las enfermedades que puede tener el paciente. La dimensión de incertidumbre de detección se refiere a si el agente puede determinar el estado a partir de los estímulos: - **Totalmente observable** significa que el agente conoce el estado del mundo a partir de los estímulos. - **Parcialmente observable** significa que el agente no observa directamente el estado del mundo. Esto ocurre cuando muchos estados posibles pueden resultar de los mismos estímulos o cuando los estímulos son engañosos. Asumir que el mundo es totalmente observable es una suposición simplificadora habitual para que el razonamiento sea manejable. 2. **Incertidumbre de los efectos**: Un modelo de la dinámica del mundo es un modelo de cómo cambia el mundo como resultado de las acciones, o cómo cambia aunque no haya ninguna acción. En algunos casos, un agente conoce los efectos de su acción. Es decir, dado un estado y una acción, el agente puede predecir con precisión el estado resultante de llevar a cabo esa acción en ese estado. Por ejemplo, un agente software que interactúa con el sistema de archivos de un ordenador puede ser capaz de predecir los efectos de borrar un archivo dado el estado del sistema de archivos. Sin embargo, en muchos casos, es difícil predecir los efectos de una acción, y lo mejor que puede hacer un agente es tener una distribución de probabilidad sobre los efectos. Por ejemplo, un profesor no puede saber los efectos de la explicación de un concepto, aunque se conozca el estado de los alumnos. En el otro extremo, si el profesor no tiene ningún indicio del efecto de sus acciones, no habría ninguna razón para elegir una acción en lugar de otra. !!! La dinámica en la dimensión de incertidumbre del efecto puede ser: - **determinista**, cuando el estado resultante de una acción está determinado por una acción y el estado anterior, o - **estocástica**, cuando sólo existe una distribución de probabilidad sobre los estados resultantes. Esta dimensión sólo tiene sentido cuando el mundo es totalmente observable. Si el mundo es parcialmente observable, un sistema estocástico puede modelarse como un sistema determinista en el que el efecto de una acción depende de alguna característica no observada. Se trata de una dimensión independiente porque muchos de los marcos desarrollados son para el caso de acciones estocásticas totalmente observables. ## Preferencias Los agentes normalmente actúan para obtener mejores resultados. La única razón para elegir una acción sobre otra es porque la acción preferida conduce a resultados más deseables. Un agente puede tener una meta simple, que podría representarse como una proposición que el agente quiere que sea verdadera en un estado final. Por ejemplo, el objetivo de conseguir un café para mí significa que el agente quiere llegar a un estado en el que yo tenga café. Otros agentes pueden tener preferencias más complejas. Por ejemplo, un médico puede tener en cuenta el sufrimiento, la esperanza de vida, la calidad de vida, los costes monetarios (para el paciente, el médico y la sociedad), la capacidad de justificar las decisiones en caso de demanda, y muchos otros desiderata. El médico tiene que negociar estas consideraciones cuando entran en conflicto, como ocurre invariablemente. !!! La dimensión de las preferencias tiene en cuenta si el agente tiene objetivos o preferencias más amplias: - Un **objetivo** es, o bien un **objetivo de logro**, que es una proposición que debe ser verdadera en algún estado final, o un **objetivo de mantenimiento**, una proposición que debe ser verdadera en todos los estados visitados. Por ejemplo, los objetivos de un robot pueden ser entregarme una taza de café y un plátano, y no ensuciar ni hacer daño a nadie. - Las **preferencias complejas** implican compensaciones entre la conveniencia de varios resultados, quizás en diferentes momentos. Una **preferencia ordinal** es aquella en la que sólo es importante el orden de las preferencias. Una **preferencia cardinal** es aquella en la que la magnitud de los valores es importante. Por ejemplo, una preferencia ordinal puede ser que yo prefiera el té al capuchino y el capuchino al café solo. Una preferencia cardinal puede dar una compensación entre el tiempo de espera y el tipo de bebida, y una compensación entre el desorden y el sabor, en la que estoy dispuesto a soportar más desorden en la preparación del café si el sabor del mismo es excepcionalmente bueno. ## Número de agentes Que un agente razone sobre lo que debe hacer en un entorno en el que es el único agente es bastante difícil. Sin embargo, razonar sobre lo que debe hacer cuando hay otros agentes que también razonan es mucho más difícil. Un agente en un entorno multiagente debe razonar estratégicamente sobre otros agentes; los otros agentes pueden actuar para engañar o manipular al agente o pueden estar disponibles para cooperar con él. Con múltiples agentes, a menudo es óptimo actuar al azar porque otros agentes pueden explotar estrategias deterministas. Incluso cuando los agentes cooperan y tienen un objetivo común, la tarea de coordinación y comunicación hace que el razonamiento multiagente sea más difícil. Sin embargo, muchos dominios contienen múltiples agentes e ignorar el razonamiento estratégico de otros agentes no es siempre la mejor manera de que un agente razone. !!! Desde el punto de vista de un solo agente, la dimensión del número de agentes tiene en cuenta si el agente considera explícitamente a otros agentes: - El razonamiento de **un solo agente** significa que el agente asume que no hay otros agentes en el entorno o que todos los demás agentes forman parte de la naturaleza y, por tanto, no tienen propósito. Esta es una suposición razonable si no hay otros agentes o si los otros agentes no van a cambiar lo que hacen en función de la acción del agente. - El razonamiento de **múltiples agentes** (o razonamiento **multiagente**) significa que el agente tiene en cuenta el razonamiento de otros agentes. Esto ocurre cuando hay otros agentes inteligentes cuyos objetivos o preferencias dependen, en parte, de lo que haga el agente o si el agente debe comunicarse con ellos. Razonar en presencia de otros agentes es mucho más difícil si los agentes pueden actuar simultáneamente o si el entorno es sólo parcialmente observable. ## Interacción Un agente que vive en un entorno no suele tener el lujo de pensar fuera de línea mientras el mundo espera a que considere la mejor opción. Sin embargo, el razonamiento fuera de línea, en el que el agente puede razonar sobre lo mejor que puede hacer antes de tener que actuar, suele ser una suposición simplificadora. !!! La dimensión de la interacción considera si el agente hace: - Razonamiento **fuera de línea**, en el que el agente determina qué hacer antes de interactuar con el entorno, o - Razonamiento **en línea**, en el que el agente debe determinar qué acción realizar mientras interactúa en el entorno, y necesita tomar decisiones oportunas. Algunos de los algoritmos se simplifican para hacer lo que podría llamarse **pensamiento puro**, sin interacción con el entorno durante la toma de decisiones. Los agentes más sofisticados razonan mientras actúan, esto incluye el razonamiento estratégico de largo alcance, así como el razonamiento para reaccionar de manera oportuna al entorno. ## Relación entre dimensiones La siguiente tabla resume las dimensiones de la complejidad. Por desgracia, no podemos estudiar estas dimensiones de forma totalmente independiente porque interactúan de forma compleja. A continuación presentamos algunos ejemplos de las interacciones. |Dimensión | Valores| |----------|--------| Modularidad | plana, modular, jerárquica Horizonte de planificación |no planificación, etapa finita, etapa indefinida, etapa infinita Representación | estados, características, relaciones Límites computacionales| racionalidad perfecta, racionalidad limitada Aprendizaje | el conocimiento está dado, el conocimiento se aprende Incertidumbre de detección| totalmente observable, parcialmente observable Incertidumbre de los efectos| determinista, estocástica Preferencia| objetivos, preferencias complejas Número de agentes| un agente, varios agentes Interacción|fuera de línea, en línea La dimensión de la representación interactúa con la dimensión de la modularidad en el sentido de que algunos módulos de una jerarquía pueden ser lo suficientemente sencillos como para razonar en términos de un conjunto finito de estados, mientras que otros niveles de abstracción pueden requerir un razonamiento sobre individuos y relaciones. Por ejemplo, en un robot de reparto, un módulo que mantiene el equilibrio puede tener sólo unos pocos estados. Un módulo que debe priorizar la entrega de múltiples paquetes a múltiples personas puede tener que razonar sobre múltiples individuos (por ejemplo, personas, paquetes y habitaciones) y las relaciones entre ellos. A un nivel superior, un módulo que razona sobre la actividad a lo largo del día puede requerir sólo unos pocos estados para cubrir las diferentes fases del día (por ejemplo, podría haber tres estados del robot: ocupado, disponible para pedidos y recargando). El horizonte de planificación interactúa con la dimensión de modularidad. Por ejemplo, a un nivel alto, un perro puede obtener una recompensa inmediata cuando llega y recibe una golosina. En el nivel de decidir dónde colocar sus patas, puede pasar mucho tiempo hasta que obtenga la recompensa, por lo que en este nivel puede tener que planificar para una etapa indefinida. La percepción de la incertidumbre es probablemente la que más influye en la complejidad del razonamiento. Es mucho más fácil para un agente razonar cuando conoce el estado del mundo que cuando no lo conoce. Aunque la detección de la incertidumbre con los estados se conoce bien, la detección de la incertidumbre con los individuos y las relaciones es un área activa de investigación actual. Las dimensiones de la incertidumbre interactúan con la dimensión de la modularidad: en un nivel de la jerarquía, una acción puede ser determinista, mientras que en otro nivel puede ser estocástica. Como ejemplo, consideremos el resultado de volar a París con un compañero al que se quiere impresionar. En un nivel puede saber dónde está (en París), en un nivel inferior, puede estar bastante perdido y no saber dónde está en un mapa del aeropuerto. En un nivel aún más bajo, responsable de mantener el equilibrio, puede saber dónde está: está de pie en el suelo. En el nivel más alto, puede estar muy inseguro de haber impresionado a su acompañante. Los modelos de preferencia interactúan con la incertidumbre porque un agente tiene que elegir entre satisfacer un objetivo importante con cierta probabilidad o un objetivo menos deseable con una probabilidad mayor. Los agentes múltiples también pueden utilizarse para la modularidad; una forma de diseñar un agente único es construir múltiples agentes que interactúen y que compartan el objetivo común de hacer que el agente de nivel superior actúe de forma inteligente. Algunos investigadores, como Minsky (1986), sostienen que la inteligencia es una característica emergente de una *sociedad* de agentes no inteligentes. El aprendizaje se suele plantear en términos de aprendizaje con características, es decir, determinando qué valores de características predicen mejor el valor de otra característica. Sin embargo, el aprendizaje también puede llevarse a cabo con individuos y relaciones. El aprendizaje con jerarquías, a veces llamado aprendizaje profundo, ha permitido el aprendizaje de conceptos más complejos. Se ha trabajado mucho en el aprendizaje en dominios parcialmente observables y en el aprendizaje con múltiples agentes. Cada uno de ellos supone un reto por sí mismo sin tener en cuenta las interacciones con múltiples dimensiones. La dimensión de la interacción interactúa con la dimensión del horizonte de planificación en el sentido de que cuando el agente razona y actúa en línea, también necesita razonar sobre el horizonte a largo plazo. La dimensión de interacción también interactúa con los límites computacionales; aunque un agente esté razonando fuera de línea, no puede tardar cientos de años en calcular una respuesta. Sin embargo, cuando tiene que razonar sobre lo que debe hacer en, por ejemplo, $\frac{1}{10}$ de segundo, debe preocuparse por el tiempo que tarda en razonar y por la compensación entre pensar y actuar. Dos de estas dimensiones, la modularidad y la racionalidad limitada, prometen hacer más eficiente el razonamiento. Aunque hacen que el formalismo sea más complicado, dividir el sistema en componentes más pequeños y hacer las aproximaciones necesarias para actuar a tiempo y dentro de las limitaciones de la memoria, debería ayudar a construir sistemas más complejos. # Arquitecturas Normalmente, se consideran cuatro posibles **arquitecturas** en el diseño de agentes: - Agentes **basados en la Lógica**: en los que la decisión sobre la acción a ejecutar se realiza a través de la deducción lógica. - Agentes **reactivos**: en los que la toma de decisiones se implementa en alguna forma de mapeo directo de la situación a la acción. - Agentes de **creencia-deseo-intención**: en los que la toma de decisiones depende de la manipulación de estructuras de datos que representan las creencias, deseos e intenciones del agente. - Arquitecturas por **capas**: en donde la toma de decisiones se realiza a través de varias capas de software, cada una de las cuales razona más o menos explícitamente sobre el entorno en diferentes niveles de abstracción. # Aplicaciones Prototipo Las aplicaciones de la IA están muy extendidas y son muy diversas: diagnóstico médico, programación de procesos en fábricas, robots para entornos peligrosos, juegos, coches autónomos, sistemas de traducción del lenguaje natural, asistentes personales y sistemas de tutoría. En lugar de tratar cada aplicación por separado, abstraemos las características esenciales de dichas aplicaciones para permitirnos estudiar los principios que subyacen al razonamiento y la acción inteligentes. Aunque los siguientes ejemplos se presentan de forma sencilla, los dominios de aplicación son representativos de la gama de dominios en los que se pueden utilizar, y se están utilizando, las técnicas de IA. Los cuatro ámbitos de aplicación prototípicos son: - Un **robot de reparto** autónomo recorre un edificio entregando paquetes y café a los habitantes del mismo. Este agente de reparto debe ser capaz de encontrar caminos, asignar recursos, recibir peticiones de las personas, tomar decisiones sobre las prioridades y entregar los paquetes sin herir a las personas o a sí mismo. - Un **asistente de diagnóstico** ayuda a un humano a resolver problemas en las tareas y sugiere reparaciones o tratamientos para rectificarlas. Un ejemplo es el asistente de un electricista que sugiere lo que puede estar mal en una casa, como un fusible fundido, un interruptor de luz roto o una luz quemada, dados algunos síntomas de problemas eléctricos. Otro ejemplo es un asistente de diagnóstico médico que encuentra posibles enfermedades, pruebas útiles y tratamientos adecuados basándose en el conocimiento de un ámbito médico concreto y en la historia clínica electrónica de un paciente, que registra el historial de síntomas, pruebas, resultados de pruebas, tratamientos, etc. del paciente. Un asistente de diagnóstico debe ser capaz de explicar su razonamiento a la persona que actúa en el mundo. Esa persona es responsable de sus actos. - Un **sistema de tutoría** interactúa con un estudiante, presentando información sobre algún dominio y realizando pruebas de conocimiento o rendimiento del estudiante. Esto supone algo más que presentar información a los alumnos. Hacer lo que hace un buen profesor, es decir, adaptar la información presentada a cada alumno en función de sus conocimientos, sus preferencias de aprendizaje y sus malentendidos, es más difícil. El sistema debe entender la materia, conocer al alumno y en general saber cómo aprenden los estudiantes. - Un **agente comercial** sabe lo que quiere una persona y puede comprar bienes y servicios en su nombre. Debe conocer las necesidades y preferencias de la persona y saber cómo compensar los objetivos que compiten entre sí. Por ejemplo, para unas vacaciones familiares, un agente de viajes debe reservar hoteles, vuelos de avión, coches de alquiler y entretenimiento, todo lo cual debe encajar. Debe determinar las compensaciones del cliente. Si el hotel más adecuado no puede alojar a la familia durante todos los días, debe determinar si prefieren quedarse en ese hotel sólo durante una parte de la estancia y cambiarse a la mitad o si prefieren no cambiarse de hotel. Incluso puede buscar ofertas especiales o esperar a que aparezcan buenas ofertas. Muchas veces se considera como prototípico el caso de una casa inteligente, que puede verse como una mezcla de todas las aplicaciones anteriores, tomando aspectos de cada uno de los otros dominios de aplicación. # De los Agentes Inteligentes a los Sistemas Multiagente
Un sistema multiagente (MAS) es un sistema compuesto por múltiples agentes inteligentes que interactúan para resolver problemas que están más allá de las capacidades o conocimientos individuales de cada uno.
Los MAS se caracterizan por: 1. Cada agente tiene información o capacidades incompletas para resolver el problema y, por tanto, tiene un punto de vista limitado. 2. No hay un control global del sistema. 3. Los datos están descentralizados. 4. La computación es asíncrona. Es decir, los MAS pueden verse como solucionadores de **problemas distribuidos** utilizados para resolver problemas que son difíciles o imposibles de resolver por un agente individual o un sistema monolítico. En estas situaciones, o bien no es factible un controlador central, o bien se quiere hacer un buen uso de una distribución de recursos existente. !!!Tip Un buen ejemplo es una red de sensores, que consta de múltiples unidades de procesamiento, cada una de ellas con capacidades locales de sensor, una potencia de procesamiento limitada, un suministro de energía limitado y un ancho de banda de comunicación limitado. A pesar de estas limitaciones, las redes de sensores son capaces de proporcionar algunos servicios globales. La investigación en MAS se ocupa del modelado, el análisis y la construcción de una colección de agentes autónomos, posiblemente preexistentes, que interactúan entre sí y con su entorno. Los agentes se consideran entidades autónomas, como programas de software o robots. En los MAS, el estudio de estos sistemas va más allá del estudio de la inteligencia individual para considerar, además, la resolución de problemas que tienen componentes sociales. Las interacciones en los MAS pueden ser **cooperativas** o **egoístas**. Es decir, los agentes pueden compartir un objetivo común (por ejemplo, una colonia de hormigas) o pueden perseguir sus propios intereses (como en una economía de libre mercado). En las situaciones cooperativas, los agentes colaboran para lograr un objetivo común, compartido entre los agentes o, alternativamente, el objetivo de un diseñador central que está diseñando los distintos agentes. La interacción entre agentes egoístas suele utilizar técnicas de coordinación basadas en subastas u otros mecanismos de reparto de recursos. La definición de los mecanismos de coordinación entre los distintos tipos de agentes es una parte importante de los MAS, lo que da lugar a implementaciones en las que los aspectos sociales, los objetivos y los comportamientos forman parte de la arquitectura de los agentes específicos. Desde el punto de vista de la ingeniería, el desarrollo de los MAS no es sencillo. Aunque se acepta comúnmente que *suele ser necesaria alguna forma de estructurar la sociedad para reducir la complejidad del sistema, aumentar su eficiencia y modelar con mayor precisión el problema que se aborda*, en muchas situaciones, los individuos no comparten ni persiguen necesariamente los mismos objetivos y requisitos que el sistema global o la sociedad a la que pertenecen. En estos casos, la visión de la coordinación y el control debe ampliarse para considerar no sólo una perspectiva centrada en el agente, sino que también adopta un enfoque social. Sin embargo, muchos enfoques asumen un tipo o clase de agente predefinido a la hora de diseñar MAS. Una desventaja es que entonces los sistemas son cerrados para los agentes que no pueden utilizar el mismo tipo de coordinación y comportamiento, y que todas las características y requisitos globales se implementan en los agentes individuales y no fuera de ellos. La búsqueda de soluciones abiertas para los MAS, que sean independientes de las arquitecturas de un conjunto concreto de agentes, ha dado lugar al concepto de enfoques basados en la organización para los MAS. Éstos pueden dividirse en dos categorías principales: **estructurales** e **institucionales**. Los enfoques estructurales consideran que las organizaciones son principalmente medios de coordinación que permiten alcanzar objetivos globales. Las instituciones son mecanismos utilizados para regular la acción social mediante la definición y el mantenimiento de normas. Este visión de las organizaciones, desde una perspectiva de diseño, como un mecanismo que puede ser elaborado para permitir la coordinación entre agentes no es la única posible. Una visión complementaria de las organizaciones es la emergente, que parte del supuesto de que los MAS no requieren ninguna estructura o patrón real y los resultados de la interacción son impredecibles. Desde una perspectiva emergente, los MAS se ven como una población de agentes (simples) que interactúan localmente entre sí y con su entorno. En estos sistemas, la organización no se diseña, sino que se toma como un resultado observable externamente del comportamiento colectivo de los agentes. La comunicación suele basarse en la modificación del entorno (**estigmergia**). No existe una estructura de control centralizada (ni explícita, en forma de coordinador, ni implícita, en forma de reglas internas que asumen una jerarquía) que dicte cómo deben comportarse los agentes individuales, por lo que se espera que las interacciones locales entre dichos agentes conduzcan a la aparición de un comportamiento global. Los sistemas de agentes emergentes se utilizan sobre todo en los ámbitos de la simulación social, la planificación adaptativa, la logística y la vida artificial. # De los Sistemas Multiagente a las Organizaciones Multiagente Una diferenciación importante en los enfoques organizativos es la del *enfoque*, que conduce a la distinción entre los enfoques centrados en los agentes, que codifican implícitamente los aspectos organizativos a nivel de los agentes, y los enfoques centrados en las organizaciones, que proporcionan una representación explícita y referenciable de los componentes organizativos. Los MAS, tal y como se ham descrito en el apartado anterior, ofrecen una visión en la que los agentes se comunican, negocian y colaboran directamente entre sí. La estructura organizativa existe dentro del estado de los agentes individuales, y su propensión a organizarse suele estar predeterminada por sus comportamientos codificados. El atractivo de este enfoque es que los propios agentes encapsulan la organización, pero esto también significa que la organización no tiene representación porque sólo es observable implícitamente a través de las interacciones de los agentes. Sin embargo, como la organización está distribuida y cableada, es difícil de mantener, revisar y ampliar. Además, este tipo de soluciones suelen dar lugar a sistemas con altas barreras de entrada, ya que los agentes de terceros deben tener en sí mismos el conocimiento de cómo interactuar con los agentes existentes correctamente y mantener la integridad del sistema. La respuesta es refactorizar el sistema para construir una representación explícita de la organización, externa a los agentes, lo que abre la puerta a los sistemas abiertos, porque los agentes y, en particular, los nuevos participantes en el sistema pueden entonces razonar sobre la estructura organizativa, los objetivos y las políticas, si se presentan de forma adecuada. En los enfoques centrados en la organización, las organizaciones se conceptualizan, en general, en términos de su estructura, es decir, el patrón de relaciones de información y control que existe entre los agentes y la distribución de las capacidades de resolución de problemas entre ellos. La estructura de una organización proporciona un marco para las interacciones de los agentes mediante la definición de roles, expectativas de comportamiento y relaciones de autoridad. En la resolución cooperativa de problemas, una estructura proporciona a cada agente una visión de alto nivel de cómo el grupo resuelve los problemas. La coordinación se consigue a menudo mediante la comunicación entre agentes (utilizando una infraestructura de comunicación de agentes como FIPA), pero la interacción a través del entorno también es común, sobre todo en sistemas en los que los agentes son muy simples (por ejemplo, en los sistemas de enjambre, los agentes interactúan implícitamente a través del uso de los recursos del entorno). La estructura de la organización proporciona un margen para las interacciones, permite la fuerza en los números, reduce o gestiona la incertidumbre y aborda la necesidad de redundancia. Al mismo tiempo, las organizaciones también pueden afectar negativamente a la sobrecarga computacional o de comunicación, reducir la flexibilidad o reactividad general y añadir una capa adicional de complejidad al sistema. Esto requiere una cuidadosa reflexión sobre el diseño de las estructuras organizativas. Los enfoques de los MAS orientados a la organización son adecuados para entender y diseñar los MAS de forma que amplíen y complementen los enfoques tradicionales centrados en los agentes. Las organizaciones multiagente pueden entenderse como entidades complejas en las que interactúan multitud de agentes, dentro de un entorno estructurado que persigue algún propósito global. Esto es especialmente importante para los MAS en dominios complejos, dinámicos y distribuidos.