**SVRAI** Agentes Inteligentes Diseño y Dimensiones # IA con Agentes !!!def Si tomamos como base los agentes, la Inteligencia Artificial (IA) 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. El 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 teniendo en cuenta 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. !!!note 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. Solo 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. !!!ejemplo: Agentes Inteligentes Naturales El representante más natural y cercano que tenemos de agente natural inteligente es el ser humano, y en cierta forma se convierte en el patrón de oro que rige nuestro ideal de inteligencia, aunque ya es comúnmente reconocido 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 organización ajena al propio ser humano. 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, planificar la construcción de un hormiguero, ejecutar conquistas de territorios ajenos, así como adaptarse a las circunstancias cambiantes. En un ejemplo propio del ser humano, las organizaciones empresariales 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 a la 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, al menos en algunas de sus habiilidades. Puede ser instructivo considerar de dónde viene la inteligencia humana, ya que su reconocimiento puede motivar medios para producir inteligencia artificial. En este sentido, podemos destacar 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 solo el lenguaje, sino también conjuntos de herramientas, conceptos y sabiduría que se transmite entre generaciones (por medios familiares, grupos, o por instituciones, y un conjunto de medios específicamente creados 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 ellas. La biología y la cultura han evolucionado juntas, y esta última interactúa fuertemente con el aprendizaje. Una parte importante del aprendizaje a lo largo de la vida es que se transmite por medios personales (de padres a hijos, de adultos del grupo a infantes) y sociales (por los sistemas educativos) y, en este proceso, el lenguaje, que forma parte de la cultura, proporciona quizás la herramienta fundamental para su consecución y, posiblemente, la optimización de 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. # Contexto !!!def La IA se basa en el **razonamiento deliberativo**: razonar para hacer algo. Es por ello que, emulando los agentes inteligentes naturales que podemos observar, un agente se compone de una combinación de **percepción**, **razonamiento** y **actuación**, en un ciclo permanente de actividad. Para que este ciclo tenga sentido, un agente está inmerso 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**. !!!note Interpretando un agente como una caja negra que procesa entradas del entorno, razona internamente, y actúa sobre él, podemos considerar las dependencias a priori siguientes: - 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 (concretamente, 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** almacenadas sobre acciones y estímulos anteriores, u otros datos, de los que puede aprender, - **Objetivos** que debe intentar alcanzar o, al menos, preferencias sobre los estados del mundo (con el objetivo de situarse en condiciones más preferentes), - **Habilidades**, las acciones primitivas que el agente es capaz de realizar (con un desempeño variable). Dentro de esta caja negra podemos imaginar distintas formas de ordenación e interacción entre estas dependencias. Por ejemplo, podemos imaginar un agente 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 puede ir desde las necesidades de 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. !!!side:1 Por ejemplo, para algunas aplicaciones puede ser apropiado modelar un perro como intencional, y para otras puede ser suficiente modelarlo como no intencional. !!!def 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 $^1$. Si un agente no tiene preferencias, por definición no le importa en qué estado del mundo acabe, y por tanto no hay posible importancia y valoración de sus acciones. Por ello, diseñar una solución con agentes pasa por inculcarles preferencias coherentes con los objetivos del problema a resolver, haciendo 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 !!!note 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 como 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: !!!side:2 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 distintos entornos ni a 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 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 este puede no necesitar hacer mucho para funcionar bien $^2$. !!!side:3 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. - 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 $^3$. Incluso si el agente flexible es nuestro obetivo deseado, 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, hasta el momento solo se han construido agentes particulares para nichos ambientales concretos. De esta forma, 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: !!!side:4 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. - La primera es simplificar los entornos y construir sistemas de razonamiento complejos para estos entornos simples $^4$. 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. !!!side:5 Inspirándose, por ejemplo, en ver cómo los insectos pueden sobrevivir en entornos complejos aunque tengan una capacidad de razonamiento muy limitada. - La segunda estrategia consiste en construir agentes sencillos en entornos naturales $^5$. A continuación, se hace 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. Estas tareas 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 estos 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). !!!ejemplo 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, solo 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 también en la zona existente 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 !!!side:6 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. !!!side:7 Como *entregar los paquetes rápidamente cuando lleguen* o *arreglar lo que sea que esté mal en el sistema eléctrico de la casa*. Una de las diferencias entre las representaciones de la IA y los programas informáticos desarrollados 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 $^6$. 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 solo se da de manera informal $^7$. ![Tareas. El papel de las representaciones en la resolución de tareas](img/tareas.png) En la figura anterior se 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. !!!def El **conocimiento** es la información sobre un dominio que puede utilizarse para resolver tareas en ese dominio. Resolver muchos tipos de 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. !!!note Un buen lenguaje de representación presenta un compromiso entre muchos objetivos que compiten entre sí, ya que debe conseguir que la representación verifique: - **Expresividad**: 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. - **Computabilidad**: Que pueda ser computada de forma eficiente para 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 realizan un balance entre la precisión y el tiempo de cálculo. - **Aprendizaje**: Se pueden adquirir a partir de las personas, los datos y las experiencias pasadas. !!!side:8 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. 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 $^8$. ## 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 solo 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. !!!side:9 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. Las tareas no suelen estar bien especificadas. No solo suelen quedar muchas cosas sin especificar, sino que las partes no especificadas no pueden rellenarse de forma arbitraria $^9$. 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? Además, a menudo no se quiere cualquier solución, sino la mejor solución según algunos criterios. !!!side:10 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. !!!side:11 Por ejemplo, una persona puede decirle a un robot que debe sacar toda la basura, o decirle que saque tres elementos de la basura. !!!side:12 Por ejemplo, puede que el robot no tenga que recorrer la distancia óptima para sacar la basura, sino que solo necesite acercarse, por ejemplo, al 10% de la distancia óptima. !!!side:13 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. !!!side:14 Por ejemplo, en el caso de los errores médicos. !!!def:Clases de Soluciones 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 $^{10}$. 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 solo alguna solución. Una solución satisfactoria es aquella que es suficientemente buena según alguna descripción de qué soluciones son adecuadas $^{11}$. - **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, solo necesitan acercarse lo suficiente $^{12}$. Algunos algoritmos de aproximación garantizan que una solución se encuentra dentro de un cierto rango del ó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 $^{13}$. 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 $^{14}$. ## 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. !!!note 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ísicos 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. !!!def:Sistema de símbolos físicos de Newell y Simon (1976) 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*.
No debemos menospreciar la hipótesis anterior: * 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. * 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, mientras que 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. !!!def:Modelo del 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 solo una parte del mundo y dejan fuera muchos de los detalles. El nivel de abstracción proporciona una ordenación parcial de la abstracción. Un agente puede tener múltiples modelos del mundo, incluso contradictorios. !!!warn Los modelos no se juzgan por si son correctos, sino por si son útiles. !!!ejemplo 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 los cuales pueden ser irrelevantes para el éxito de la implementación del robot, meintras que 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. !!!side:15 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. !!!note 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. A menudo, las descripciones de alto nivel dejan de lado detalles que pueden ser importantes para resolver la tarea. - Una descripción de bajo nivel puede ser más precisa y más predictiva, pero 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 $^{15}$. A menudo es una buena idea modelar un entorno en múltiples niveles de abstracción. !!!ejemplo 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. !!!side:16 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. !!!note Los siguientes niveles 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, así como cuáles son sus objetivos. Este nivel considera lo que un agente sabe, pero no cómo razona $^{16}$. 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. # Dimensiones 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. A continuación 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, y proporcionan una primera división del espacio de diseño para los agentes inteligentes, pero no son las únicas, hay otras muchas opciones de diseño que también deben tomarse para construir un agente inteligente. ## Modularidad !!!def 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. Suele expresarse en términos de descomposición jerárquica. !!!note Respecto a la modularidad, la estructura de un agente puede ser: - **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 puede ser a su vez un sistema jerárquico o un componente simple. 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. !!!ejemplo Al realizar un viaje desde su casa a un lugar de vacaciones en el extranjero, un individuo 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. !!!side:17 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. La descomposición jerárquica es importante para reducir la complejidad de construir un agente inteligente que actúe en un entorno complejo $^{17}$. 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 !!!side:18 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). !!!def El horizonte de planificación es la distancia a la que el agente *mira hacia el futuro* cuando decide qué hacer $^{18}$. Los puntos de tiempo considerados por un agente al planificar se denominan **etapas**. !!!side:19 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. !!!side:20 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. !!!side:21 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. !!!note 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 $^{19}$. En el caso degenerado en el que un agente sólo mira un paso de tiempo por delante, se dice que es **codicioso**, **voraz**, o miope. - Un planificador de **horizonte indefinido** es un agente que mira hacia delante un número finito, pero no predeterminado, de etapas $^{20}$. - Un planificador de **horizonte infinito** es un agente que planifica para siempre. A menudo se le llama **proceso** $^{21}$. ## Representación !!!def La representación se refiere a cómo se describe el mundo. Las diferentes formas en que puede estar el mundo se denominan **estados**, y especifican 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. !!!ejemplo 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 `cálido`. 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 `cómodo`, 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. 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. !!!ejemplo 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. Con estos datos, hay $2^{900}$ estados posibles de la imagen y, por tanto, $26^{(2^{900})}$ funciones diferentes que asocian un posible estado de la imagen a uno de los caracteres posibles de $\{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 las entidades involucradas (también podría llamarse cosa u objeto). Una relación sobre un individuo es una **propiedad**. Hay una característica para cada relación posible entre los individuos. Al razonar en términos de relaciones y entidades, un agente puede razonar sobre clases enteras de entidades sin enumerar nunca las características o las proposiciones, y mucho menos los estados. Un agente puede tener que razonar sobre conjuntos infinitos de entidades, 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 entidades, un agente no puede razonar en términos de estados o rasgos, debe razonar a nivel relacional. !!!note En la dimensión de representación, el agente razona en términos de: - **Estados**, - **Características**, o - **Entidades 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 entidades y relaciones. ## Límites computacionales !!!side:22 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 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 $^{22}$. 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. !!!note 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 por la incapacidad de los ordenadores para 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: 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. 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 solo 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. !!!note La dimensión del aprendizaje determina si * el **Conocimiento es Dado**, o * el **Conocimiento se Aprende** (a partir de datos o experiencias pasadas). !!!def 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, etc. ## Incertidumbre Un agente puede suponer que no hay incertidumbre, o puede tener en cuenta la incertidumbre en el dominio. !!!side:23 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. !!!side:24 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. !!!side:25 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. !!!def Aunque no son las únicas, lo más sencillo es considerar la incertidumbre dividida 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. Aunque en algunos casos 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 $^{23}$. 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 $^{24}$. 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 $^{25}$. En este caso, la dinámica 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 solo existe una distribución de probabilidad sobre los estados resultantes. Esta dimensión solo 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 !!!side:26 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. 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 $^{26}$. !!!side:27 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. !!!side:28 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. !!!note 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 $^{27}$. - Las **preferencias complejas** implican compensaciones entre la conveniencia de varios resultados, quizás en diferentes momentos. Una **preferencia ordinal** es aquella en la que solo es importante el orden de las preferencias. Una **preferencia cardinal** es aquella en la que la magnitud de los valores es importante $^{28}$. ## 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. !!!note 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 solo parcialmente observable. ## Interacción !!!note 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. 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. 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 inmediata y adecuada al entorno. ## Relación entre dimensiones La siguiente tabla resume las dimensiones de la complejidad. |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 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: * **Representación <-> Modularidad**: 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). * **Horizonte de planificación <-> 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. * **Incertidumbre <-> 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 las entidades y las relaciones es un área activa de investigación actual. * **Incertidumbre <-> 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. * **Preferencia <-> Incertidumbre**: Porque un agente tiene que elegir entre satisfacer un objetivo importante con cierta probabilidad o un objetivo menos deseable con una probabilidad mayor. * **Agentes múltiples <-> 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, sostienen que la inteligencia es una característica emergente de una sociedad de agentes no inteligentes. * **Aprendizaje <-> Representación**: 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 entidades 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. * **Interacción <-> Horizonte de planificación**: 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. * **Modularidad <-> Racionalidad limitada**: Ambas dimensiones juntas 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/proactivos**: 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 (como su nombre indica). - 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. Los más habituales, y los que responden más fielmente a lo que veremos en este curso, serían los agentes reactivos/proactivos, de los que podemos establecer cinco subcategorías según su nivel de complejidad: !!!side:29 ![](./img/simple-reflex-agent.png) **Agente reactivo simple**$^{29}$ * Toman decisiones basándose en las percepciones actuales e ignoran el resto del historial de percepciones. * Sólo tienen éxito en un entorno completamente observable. * No considera ninguna parte de la historia de percepciones durante su proceso de decisión y acción. * Trabaja con la regla condición-acción, lo que significa que asigna el estado actual a la acción. Por ejemplo, un agente limpiador de habitaciones, sólo funciona si hay suciedad en la habitación. * Problemas para el enfoque de diseño de este tipo de agente: * Tienen una inteligencia muy limitada. * No tienen conocimiento de las partes no perceptivas del estado actual. * En su mayoría demasiado grandes para generar y almacenar. * No se adaptan a los cambios del entorno. !!!side:30 ![](./img/model-based-reflex-agent.png) **Agente reactivo basado en modelos**$^{30}$ * Puede trabajar en un entorno parcialmente observable y hacer un seguimiento de la situación. * Tiene dos factores importantes: * **Modelo**: Es el conocimiento sobre _cómo suceden las cosas en el mundo_. * **Estado interno**: Es una representación del estado actual basada en el historial de percepciones. * En base al modelo realizan acciones. * La actualización del estado del agente requiere información sobre: * Cómo evoluciona el mundo. * Cómo la acción del agente afecta al mundo. !!!side:31 ![](./img/goal-based-agent.png) **Agente basado en objetivos (proactivos)**$^{31}$ * El conocimiento del estado actual del entorno no siempre es suficiente para que un agente decida qué hacer. * El agente necesita conocer su objetivo, que describe situaciones deseables. * Los agentes basados en objetivos amplían las capacidades de los agentes basados en modelos al disponer de información sobre el _objetivo_. * Eligen una acción para alcanzar el objetivo. * Estos agentes pueden tener que considerar una larga secuencia de posibles acciones antes de decidir si el objetivo se alcanza o no. Estas consideraciones de diferentes escenarios se denominan búsqueda y planificación, lo que hace que un agente sea _proactivo_. !!!side:32 ![](./img/utility-based-agent.png) **Agente basado en utilidad**$^{32}$ * Son similares a los basados en objetivos pero aportan un componente extra de medición de utilidad que los diferencia al proporcionar una medida de éxito en un estado dado. * Actúa basándose no sólo en los objetivos, sino también en la mejor manera de alcanzar el objetivo. * Es útil cuando hay múltiples alternativas posibles, y un agente tiene que elegir para realizar la mejor acción. * La función de utilidad asigna cada estado a un número real para comprobar la eficacia de cada acción en la consecución de los objetivos. !!!side:33 ![](./img/learning-agent.png) **Agente basado en aprendizaje**$^{33}$ * Puede aprender de sus experiencias pasadas: capacidad de aprendizaje. * Empieza a actuar con conocimientos básicos y luego es capaz de actuar y adaptarse automáticamente a través del aprendizaje. * Tiene principalmente cuatro componentes conceptuales, que son: * **Elemento de aprendizaje**: Se encarga de realizar mejoras aprendiendo del entorno. * **Crítico**: El elemento de aprendizaje recibe información del crítico, que describe lo bien que lo está haciendo el agente con respecto a un estándar de rendimiento fijo. * **Elemento de rendimiento**: Es responsable de seleccionar la acción externa. * **Generador de problemas**: Este componente es responsable de sugerir acciones que conduzcan a experiencias nuevas e informativas. * Por lo tanto, los agentes de aprendizaje son capaces de aprender, analizar el rendimiento y buscar nuevas formas de mejorar el rendimiento. # De los Agentes Inteligentes a los MAS !!!def 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. !!!note 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. !!!ejemplo 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. En los MAS, el estudio va más allá 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**, consideran que las organizaciones son principalmente medios de coordinación que permiten alcanzar objetivos globales. * **Institucionales**, 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.