MODULO INTELIGENCIA ARTIFICIAL
Edgar Alberto Quiroga Rojas
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA PROGRAMA INGENIERIA DE SISTEMAS BOGOTÁ D.C., 2005
MODULO INTELIGENCIA ARTIFICIAL @Copyright Universidad Nacional Abierta y a Distancia ISBN Autor: Edgar Alberto Quiroga Rojas Diseño Portada Juan Olegario Monroy V.
2005 Centro Nacional de Medios para el Aprendizaje
CONTENIDO INTRODUCION JUSTIFICACIÓN INTENCIONALIDADES FORMATIVAS UNIDADES DIDÁCTICAS Primera Unidad INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
Capítulos Objetivos y aplicaciones de la inteligencia Artificial
Temas Definiciones, historia y limites de la I.A. El test de turing Aplicaciones (Sistemas expertos, procesamiento del lenguaje natural, Percepción) Agentes Definiciones y características de un Agente Inteligentes Inteligente. Tipos y arquitecturas de agentes. Complejidad de Problemas de tiempo polinomial (P) los problemas. Problemas no polinomiales (NP) Segunda Unidad Capítulos Temas LOS SISTEMAS Introducción a los El papel de la búsqueda en la Inteligencia Artificial. DE BUSQUEDA sistemas de Componentes de un sistema de búsqueda búsquedas Clasificación. Algoritmos generales de búsqueda. Búsquedas en Estrategias de búsqueda. espacios de Búsqueda heurística estados Otros tipos de Algoritmos Genéticos búsquedas Búsqueda en sistemas de juegos Tercera Unidad Capítulos Temas Paradigmas simbólico y conexionista. REPRESENTACI El papel del ÓN DEL conocimiento en Modelos de representación Puntos de vista declarativos y normativos CONOCIMIENTO la Inteligencia Aplicaciones en la ciencia e Ingeniería Y Artificial. RAZONAMIENTO Representacione El lenguaje de la lógica de predicados Extensiones de la lógica clásica s basadas en Programación lógica lógicas Gestión de reglas Inferencia de producción Reglas de producción sin y con variables Introducción al aprendizaje automático de reglas.
INTRODUCCIÓN Inteligencia Artificial es un curso de carácter teórico, que se inscribe en el campo de formación electiva profesional del Programa de Ingeniería de Sistemas con un valor académico de tres créditos. El estudiante en el desarrollo de este curso recibe una Introducción a la Inteligencia Artificial (IA) conociendo algunos de los métodos utilizados para construir Sistemas Inteligentes. Para ello se introducen las técnicas más comunes de manipulación y representación del conocimiento y se analizan las características de las herramientas disponibles para la construcción de aplicaciones reales. Dada la naturaleza constructiva y experimental de la IA se da una gran importancia a la parte práctica es decir se busca que el estudiante en forma personal trabaje en las técnicas de programación efectiva de este tipo de sistemas, también es de resaltar que como estudiante, a este nivel de la carrera, los conocimientos de las áreas de Teoría de Grafos, Estructuras de Datos y Lógica le van a permitir abordar el curso con más suficiencia en los conocimientos. El enfoque "orientado al método" que se utilizara en el curso hace hincapié en los modelos de resolución de problemas, el aprendizaje, conexionismo lenguajes de programación o herramientas de construcción de sistemas basados en conocimientos. En lo referente a las prácticas se concede mayor importancia a estas ya que el alumno debe utilizar lenguajes de programación o herramientas de desarrollo para construir programas que apliquen los métodos vistos en la teoría para resolver pequeños problemas de mundo real. Como se expone en las líneas anteriores en el curso hemos de considerar los trabajos prácticos como el medio ideal para: • • •
Fomentar la capacidad evaluadora y de decisión de los alumnos. Comprender y afianzar los conocimientos adquiridos en el estudio teórico del curso. Conseguir que los alumnos tomen conciencia de la aplicabilidad de las técnicas aprendidas.
En este sentido, es importante resaltar que las prácticas de los alumnos no deben consistir en meros esfuerzos de programación, el planteamiento que debe primar es el que el alumno se vea obligado a evaluar distintas posibilidades de solución, seleccionar e integrar técnicas, comprobar que las soluciones obtenidas respondan a lo esperado, comparar los resultados obtenidos con técnicas distintas y, en definitiva, aprender a aplicar la IA en dominios cotidianos. Según esto, la programación de técnicas no debe considerarse como un fin en sí mismo, sino más bien como un medio para alcanzar los objetivos mencionados. Además existe
una preferencia generalizada por la utilización de problemas reales, para potenciar la capacidad de análisis del alumno. Durante este curso, la metodología de trabajo buscará dinamizar la experiencia individual y grupal así como el acompañamiento que el tutor realiza al estudiante para dinamizar el aprendizaje y la formación, que favorecerá la disposición a ser partícipe en la solución de problemas. El trabajo que se promueve en el estudiante es de dos tipos: individual y grupal. El trabajo individual que es un estudio independiente y personal en donde las actividades se realizan autónomamente como por ejemplo lecturas, desarrollo de tareas, interacción con medios tecnológicos y tutoriales, al igual que la revisión de los materiales que se presentan en el módulo y el aula virtual. El trabajo grupal que se refiere a las actividades en pequeños grupos colaborativos de aprendizaje para el desarrollo de talleres y tareas relacionadas. Mediante diversas actividades de aprendizaje que orientan el trabajo de los estudiantes se pretende que se logren los objetivos, de la siguiente manera: • • • • •
Tutor-estudiante: a través del acompañamiento individual, foros, chat, correo electrónico. Estudiante-estudiante: mediante la participación activa en los grupos colaborativos de aprendizaje. Estudiantes-tutor: a través del acompañamiento a los pequeños grupos colaborativos de aprendizaje, grupos de discusión, foros, chat, correo electrónico Tutor-estudiantes: mediante el acompañamiento en grupo de curso Estudiantes-estudiantes: en los procesos de socialización que se realizan en el grupo de curso.
El sistema de evaluación del curso se realiza a través de la evaluación formativa, que constituye distintas formas de comprobar el avance en el autoaprendizaje del estudiante. En este sentido, se realizarán tres tipos de evaluación alternativas y complementarias, estas son: • • •
Autoevaluación: evaluación que realiza el estudiante para valorar su propio proceso de aprendizaje. Coevaluación: se realiza a través de los grupos colaborativos, y pretende la socialización de los resultados del trabajo personal. Heteroevaluación: Es la valoración que realiza el tutor.
No olvidar que la evaluación tiene un examen nacional de 40% y regional de 60% Para el desarrollo del curso es importante el papel que juega los recursos tecnológicos como medio activo e interactivo, buscando la interlocución durante todo el proceso de diálogo Tutor-estudiante.
• • • •
Los materiales impresos en papel, se han convertido en el principal soporte para favorecer los procesos de aprendizaje autodirigido. Aula Virtual: propician el acercamiento al conocimiento, la interacción y la producción de nuevas dinámicas educativas. Sistemas de interactividades sincrónicas: permite la comunicación a través de encuentros presenciales directos o de encuentros mediados (chat, audio conferencias, videoconferencias, tutorías telefónicas) Sistemas de interactividades diferidas: permite la comunicación en forma diferida favoreciendo la disposición del tiempo del estudiante para su proceso de aprendizaje, mediante la utilización de correo electrónico, foros, grupos de discusión, entre otros.
El acceso a documentos adquiere una dimensión de suma importancia en tanto la información sobre el tema exige conocimientos y planteamientos preliminares, por tal razón es imprescindible el recurso a diversas fuentes documentales y el acceso a diversos medios como son: bibliotecas electrónicas, hemerotecas digitales e impresas, sitios Web especializados. Por último y para alcanzar los objetivos planteados en este curso es importante que usted como gestor de su propio proceso de aprendizaje considere los siguientes puntos como rectores de sus tareas autónomas: • • • •
Organización del tiempo. Organización del material. Desarrollo de actividades de autoaprendizaje. Desarrollo de tareas individuales y grupales.
Organización del tiempo: dedique por lo menos una hora diaria al estudio de este curso. El éxito de este aprendizaje está fundamentado en la disciplina individual que Ud. se proponga como hábito personal. No deje acumular su trabajo para la víspera de la fecha de entrega de las tareas. Organización del material y de estudio: planifique diariamente tanto el tiempo como el material que va a utilizar y revisar en cada actividad. Intercambie sus puntos de vista, materiales encontrados, opiniones de textos y autores con el propósito de alimentar y enriquecer su producto final. Desarrollo de actividades de autoaprendizaje: desarrolle ejercicios y actividades de autoaprendizaje, incorpore a su estudio, otros contenidos que sean producto de investigaciones bibliográficas y de Internet. Desarrollo de tareas individuales y grupales: desarrolle a conciencia cada una de las tareas individuales y grupales a distancia. La suma de estos trabajos integrarán gran parte de su trabajo final.
JUSTIFICACIÓN Dentro del campo de la Informática una de las áreas que más ha hecho evolucionar los problemas que se pueden resolver por la utilización de los computadores ha sido la Inteligencia Artificial. El objetivo de la Inteligencia Artificial consiste en la construcción de sistemas tanto hardware como software que sean capaces de replicar aspectos de lo que se suele considerar inteligencia. Evidentemente este objetivo está muy ligado a la definición de la propia palabra inteligencia de la que existe aproximadamente una definición por cada persona. Esto nos obliga a adoptar un punto de vista practico y definir la Inteligencia Artificial como el conjunto de técnicas métodos herramientas y metodologías que nos ayudan a construir sistemas que se comportan igual que un humano en la resolución de problemas concretos. Según esta definición la Inteligencia Artificial involucra a muchos campos de investigación y desarrollo diferentes tales como la Robótica, la Visión Artificial, la Resolución de Problemas, los Sistemas Expertos, la Traducción Automática etc. Nuestro curso académico se va a centrar en las técnicas básicas de realización de este tipo de sistemas, que son la representación del conocimiento y la búsqueda de soluciones. Ya que el tipo de conocimiento que poseemos, sobre un determinado campo, no está normalmente estructurado; según los mecanismos de representación utilizados en programación convencional como pilas, listas, matrices, variables etc. sino que están estructurados, utilizando mecanismos de representación más complejos, es necesario ampliar el conjunto de técnicas computacionales básicas, con un conjunto de formalismos de representación, que permitan mostrar estas estructuras más complejas que empleamos los humanos. Estos formalismos son los que se estudiaran en la unidad didáctica titulada Representación del Conocimiento Una vez representado el conocimiento del humano, utilizando estos formalismos de representación, es necesario resolver los mismos problemas que resuelve el humano experto. Apoyados en la unidad didáctica de los Sistemas de Búsqueda particularmente en la búsqueda heurística, en donde se estudian una serie de métodos de selección, de las mejores alternativas de decisión para poder resolver problemas. Utilizando el desarrollo de árboles de búsqueda que describen las posibles alternativas que tiene la resolución de un determinado problema. Así mismo se estudiará cómo representar y manejar el conocimiento que hace que las personas expertas resuelvan directamente problemas complejos seleccionando en la mayor parte de las ocasiones las mejores alternativas. Esto se hará definiendo el concepto de heurística que consiste en el conocimiento que ayuda a los expertos en un campo a resolver problemas de forma mas eficiente, que los faltos de experiencia en el mismo campo.
Características de la Inteligencia Artificial. La característica fundamental que distingue a los métodos de Inteligencia Artificial de los métodos numéricos es el uso de símbolos no matemáticos, aunque no es suficiente para distinguirlo completamente. Las conclusiones de un programa declarativo no son fijas y son determinadas parcialmente por las conclusiones intermedias alcanzadas durante las consideraciones al problema específico. Los lenguajes orientados al objeto comparten esta propiedad y se han caracterizado por su afinidad con la Inteligencia Artificial. El razonamiento basado en el conocimiento, implica que estos programas incorporan factores y relaciones del mundo real y del ámbito del conocimiento en que ellos operan. Al contrario de los programas para propósito específico, como los de contabilidad y cálculos científicos; los programas de Inteligencia Artificial pueden distinguir entre el programa de razonamiento o motor de inferencia y base de conocimientos dándole la capacidad de explicar discrepancias entre ellas. Aplicabilidad a datos y problemas mal estructurados, sin las técnicas de Inteligencia Artificial los programas no pueden trabajar con este tipo de problemas. Un ejemplo es la resolución de conflictos en tareas orientadas a metas como en planificación, o el diagnóstico de tareas en un sistema del mundo real: con poca información, con una solución cercana y no necesariamente exacta. Las competencias que promueve el curso y que son necesarias son: COGNITIVA : Capacidad de apropiarse de un conjunto de conocimientos a través del desarrollo, monitoreo y aplicación de procesos de pensamiento. COMUNICATIVA: Capacidad de comprender, expresar mensajes y de desarrollar procesos argumentativos, apoyados por la asertividad en las relaciones interpersonales. CONTEXTUAL: Capacidad de ubicar el conocimiento en el contexto científico, político, cultural, tecnológico, social y en el plano nacional e internacional, así como la disposición y capacidad para aplicarlo en procesos de transformación que inciden en la calidad de vida de la población. VALORATIVA: Capacidad de apropiarse de valores como el respeto a la vida. La dignidad humana, la convivencia, la solidaridad, la tolerancia y la libertad que orientan las acciones del individuo como persona, como ser social y como profesional. Para el logro de éstas competencias, es necesario que se planifique de manera responsable el proceso de autoestudio por parte del estudiante si se quieren lograr
resultados positivos en el aprendizaje de los conceptos incluidos en el curso, este proceso se puede planificar de la siguiente manera: • • • • •
Autoestudio: Estudio individual del material sugerido y consulta de otras fuentes (documentales, consulta en biblioteca, Internet, bibliografía recomendada, consulta a bases de datos documentales, entre otros) Trabajo en grupo: Creación de grupos de estudio o discusión con el propósito de preparar consultas estructuradas al tutor. Consultas al tutor: Consulta al tutor de las inquietudes surgidas en el punto anterior. Retroalimentación: Una vez el tutor haya resuelto las inquietudes, estudie nuevamente el tema, teniendo en cuenta las sugerencias o respuestas dadas por el tutor. Procesos de evaluación: Una vez se haya realizado el proceso de retroalimentación, desarrolle los diferentes momentos de evaluación propuestos en el curso como son la autoevaluación, coevaluación y heteroevaluación.
INTENCIONALIDADES FORMATIVAS PROPÓSITOS •
Facilitar la apropiación de conocimientos para que el estudiante pueda Adquirir los conceptos básicos de la inteligencia artificial.
•
Lograr que el estudiante Comprenda los elementos básicos de representación, eligiendo el formalismo más adecuado y entender el funcionamiento de los diferentes algoritmos de búsqueda.
OBJETIVOS •
Estudiar los conceptos fundamentales de la inteligencia artificial (IA) y usar algunos de los métodos más utilizados para construir Sistemas Inteligentes.
•
Analizar problemas y decidir si se puede o no aplicar búsqueda y en caso afirmativo que tipo de técnica utilizar.
•
Examinar las principales características de los Agentes Inteligentes, su funcionamiento, estandarización y elementos que los componen.
COMPETENCIAS •
El estudiante conoce La lógica de predicados consistente en un lenguaje para expresar proposiciones y reglas para inferir nuevas proposiciones a partir de las que ya conocemos.
•
El estudiante desarrolla la capacidad de abstracción y análisis teórico en relación con la teoría, para adquirir herramientas como los algoritmos de búsqueda y los árboles de búsqueda para aplica estas capacidades a algunas asignaturas de la carrera.
METAS Al terminar el curso el estudiante: • Debe demostrar la asimilación de los conceptos fundamentales mediante la resolución de problemas acerca de los mismos, así como la realización de un reducido grupo de practicas en el computador. •
Desarrollará la capacidad de entender los problemas computacionales, y logrará una comprensión acabada de ciertos tópicos de la ciencia de la computación; en particular, en lo referente a modelos básicos de conmutabilidad y complejidad de problemas.
UNIDAD DIDÁCTICA 1 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL INTRODUCCIÓN
OBJETIVO GENERAL
OBJETIVOS ESPECIFICOS
ESTRUCTURA TEMÁTICA
1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL 1.1. inteligencia, definición de Inteligencia Artificial (IA) y evolución histórica 1.2. Técnicas de resolución de problemas de IA 1.3. Criterios de éxito de la IA 1.4. Resolución de problemas de IA: 1.4.1. Definición formal del problema 1.4.2. Estrategia de control: Métodos de búsqueda 1.4.3. Análisis del problema 1.2. Agentes Inteligentes 1.2.1 Definiciones y características de un Agente Inteligente. 1.2.2 Tipos y arquitecturas de agentes. 1.3 Complejidad de los problemas. 1.3.1 Problemas de tiempo polinomial (P) 1.3.2 Problemas no polinomiales (NP)
CONCEPTOS BÁSICOS 1.
INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
1.1. Inteligencia, definición de Inteligencia Artificial. La Inteligencia Artificial, o IA en términos cortos, es una combinación de la ciencia de las computadoras, la sicología y la filosofía. La IA cubre un espectro amplio, consistente en campos de estudio diferentes, estos van desde la visión por computadora hasta las redes neuronales y los sistemas expertos. El elemento que los campos de la IA tienen en común es la creación o simulación de maquinas que puedan “pensar”.
Para clasificar las maquinas como pensantes, es necesario definir inteligencia. El problema que aparenta ser simple es uno de los más complejos del área, en el entendido que la inteligencia puede representar, por ejemplo, la solución adecuada de problemas complejos o a establecer generalizaciones y relaciones entre objetos. ¿Qué se podría decir acerca de la percepción y la comprensión? ¿Dónde podrá situarse las formas de adquisición del conocimiento? y, si el pensar es un acto natural concomitante con la naturaleza ¿Cuáles son las herramientas que se necesitan para simular un comportamiento natural del pensar humano? INTELIGENCIA Es completamente posible establecer una escala aproximada de la inteligencia: muchas personas son más inteligentes que algunos chimpancés, un procesador de textos es una máquina más inteligente que una maquina de escribir mecánica, etc. Sin embargo no existe una definición científica de inteligencia. Se reconoce que es difícil precisar el significado de la Inteligencia, sin embargo algunas definiciones mencionadas por algunos investigadores son: a) BINET: buen discernimiento, buena comprensión, buen razonamiento. b) SPEARMAN: la inteligencia general..... supone principalmente saber relacionar y correlacionar. c) TERMAN: capacidad para desarrollar conceptos y captar su significado. d) VERNON: todo lo relacionado con capacidad para pensar o eficiencia mental. e) BURT: capacidad innata, general, habilidad cognoscitiva. f) HEIM: la inteligencia denota capacidad para captar lo esencial de una situación y responder en consecuencia. g) WECHSLER: capacidad general o global del individuo para actuar según un propósito, pensar racionalmente y relacionarse eficazmente con su entorno. h) PIAGET: adaptación al entorno físico y social. i) MINSKY: inteligencia es todo lo que puede ser medido mediante pruebas de inteligencia. La combinación de aptitudes, criterio, comprensión, razonamiento, conceptualización, saber responder adecuadamente, adaptación, etc. que se encuentran presentes en estas definiciones señalan la naturaleza polifacética de la inteligencia. La inteligencia por otra parte esta relacionada con la habilidad para reconocer patrones, deducir conclusiones razonables, analizar sistemas complejos como elementos simples y resolver sus contradicciones, y aun es mucho más que todo lo mencionado. La inteligencia esta en un nivel mayor que la información y el conocimiento pero debajo del nivel de la sabiduría. Una de las formas mas aceptadas para explicar la inteligencia, desde el punto de vista computacional, constituye la prueba de Alan Turing elaborada en 1950. La idea de la prueba de Turing es que si un interrogador decide erróneamente que
una máquina es una persona, entonces se dice que dicha máquina exhibe inteligencia. INTELIGENCIA ARTIFICIAL
Resulta obvió que la inteligencia es de por sí un concepto bastante complicado de definir. Por esta razón intentar definiciones para la inteligencia artificial es también compleja. Quizá la inteligencia artificial debería llamarse inteligencia sintética para que concuerde mejor con el lenguaje comercial. Así los diamantes artificiales son falsas imitaciones, mientras que los diamantes sintéticos son diamantes auténticos, sólo que manufacturados en lugar de desenterrados. No obstante el nombre, la inteligencia artificial aspira a una inteligencia auténtica, no a una falsa imitación. Marvin Minsky sugiere el carácter practico de la inteligencia artificial mencionando: “La inteligencia artificial es la ciencia de hacer que las máquinas hagan cosas que requerirían inteligencia si fueran hechas por seres humanos”. Elaine Rich: “La inteligencia artificial es el estudio de cómo hacer que los ordenadores hagan cosas que por el momento las personas realizan de una forma más perfecta”. Otras definiciones que pueden darnos una idea de lo que se llama inteligencia artificial: • • •
Una de las áreas de las ciencias computacionales encargadas de la creación de hardware y software con comportamiento inteligentes. El estudio de las computaciones que permiten percibir, razonar y actuar Estudia como lograr que las máquinas realicen tareas que, por el momento, son realizadas mejor por los seres humanos.
Desde el punto de vista de los objetivos, la IA puede considerarse como parte de la ingeniería o de la ciencia: •
•
El objetivo ingenieril de la IA es resolver problemas reales, actuando como un armamento de ideas acerca de cómo representar y utilizar el conocimiento, y de como ensamblar sistemas El objetivo científico de la IA es explicar varios tipos de inteligencia. Determinar qué ideas acerca de la representación del conocimiento, del uso que se le da a éste, y del ensamble de sistemas explican distintas clases de inteligencia.
Algunas aplicaciones de la inteligencia artificial:
•
•
•
Tareas de la vida diaria (más difícil para una máquina que las tareas de un experto) o Percepción (visión y habla) o Lenguaje natural (comprensión, generación, traducción) o Sentido común o Control de un robot Tareas formales o Juegos (ajedrez, backgammon, damas) o Matemáticas (geometría, lógica, cálculo, demostración de propiedades) Tareas de los expertos (necesitan un conocimiento menor que el conocimiento necesario en las tareas más comunes) o Ingeniería (diseño, detección de fallos, planificación de manufacturación) o Análisis científico o Diagnosis médica o Análisis financiero
Objetivos
Puesto que la meta de la inteligencia artificial es desarrollar sistemas que se comporten de manera inteligente, es decir de manera similar a los seres humanos, Cercone & McCalla en 1984 diseñaron objetivos que cualquier sistema ideal de inteligencia artificial debe cumplir. Un investigador de la inteligencia artificial debe ser capaz de: a) Desarrollar un sistema de trabajo que se comporte de una manera inteligente. b) Validar el comportamiento del sistema mediante comparaciones con seres humanos (objetivo de diseño externo); c) Entender las implicaciones del sistema - su cobertura, lo que puede hacer (objetivo de diseño interno); d) Determinar que es lo que puede ser generalizado acerca del sistema, las lecciones que enseña, las áreas de impacto. AREAS DE INVESTIGACION Los mayores esfuerzos de la investigación en inteligencia artificial se concentraron en el entendimiento del lenguaje natural, la visión por computadora, aprendizaje, prueba de teoremas y programación lógica, búsqueda, solución y planeación de problemas, sistemas expertos, representación de conocimiento y otras categorías tales como instrucción y tutoría inteligente asistida por computadoras, juegos, pronunciación, programación automática y herramientas de inteligencia artificial. Sistemas Expertos
Son programas computacionales diseñados para actuar como expertos en un dominio particular restringido. Es importante debido a que trabaja con conocimiento en lugar del tradicional dato.
La investigación en representación de conocimiento es central para el avance de los sistemas expertos. Los componentes básicos de un sistema experto son: a) Base de Conocimiento. Es la representación el conocimiento del dominio para la solución de problemas específicos, normalmente dicho conocimiento se estructura en forma modular y declarativa. b) Máquina de Inferencia. Es el procedimiento que se encarga de realizar el razonamiento a partir de los datos y utilizando el conocimiento acumulado en la base de conocimiento. Es genérica, es decir, se puede aplicar a diferentes dominios sólo cambiando la base de conocimiento. c) Memoria de Trabajo. Es el lugar donde se almacenan los datos de entrada y conclusiones intermedias que se van generando durante el proceso de razonamiento. d) Interfaz de Usuario. Se refiere a la entrada/salida al usuario del sistema, incluyendo, normalmente, mecanismos de pregunta (porqué) y de explicación (cómo). e) Interfaz de Adquisición. Hace referencia a la interface para la adquisición del conocimiento del dominio, puede incluir mecanismos para facilitar su adquisición y depuramiento interactivo y para automatizar la adquisición (aprendizaje). Los Sistemas Expertos son uno de los puntos que componen las investigaciones en el campo de la IA. Un sistema de ordenadores que trabaje con técnicas de IA deberá estar en situación de combinar información de forma "inteligente", alcanzar conclusiones y justificarlas. Los Sistemas Expertos son una expresión de los sistemas basados en el conocimiento. Con la aplicación de técnicas de Inteligencia Artificial finaliza la transición del procesamiento de datos al procesamiento de conocimientos. Los sistemas expertos se aplican por norma general en problemas que implican un procedimiento basado en el conocimiento. Un procedimiento de solución basado en el conocimiento comprende las siguientes capacidades: a) Utilización de normas o estructuras que contengan conocimientos y experiencias de expertos especializados. b) Deducción lógica de conclusiones. c) Capacidad para interpretar datos ambiguos. d) Manejo de conocimientos afectados por valores probabilísticos. Debido a la gran capacidad de almacenamiento de los computadores, los sistemas expertos tienen el potencial de interpretar estadísticas, para interpretar el formalismo de representación conocido como reglas de producción. Un sistema experto trabaja de manera parecida a un detective encargado de resolver un misterio. Utilizando la información, y un formalismo de representación de conocimiento, un sistema experto puede resolver el problema que se le plantee. Por ejemplo un sistema experto diseñado para distinguir aves puede tener la siguiente configuración:
EJEMPLO DE SISTEMA ESPERTO OJO
Fig. 1.2. Reglas del Sistema Experto en Aves
El Procesamiento del Lenguaje Natural (PLN) es una parte esencial de la IA que investiga y formula mecanismos computacionalmente efectivos que faciliten la interrelación hombremáquina y permitan una comunicación mucho más fluida y menos rígida que los lenguajes formales. Todo sistema de PLN intenta simular un comportamiento lingüístico humano; para ello debe tomar conciencia tanto de las estructuras propias del lenguaje, como del conocimiento general acerca del universo de discurso. De esta forma, una persona que participa en un diálogo sabe cómo combinar las palabras para formar una oración, conoce los significados de las mismas, sabe cómo éstos afectan al significado global de la oración y posee un conocimiento del mundo en general que le permite participar en la conversación. El PLN hace referencia a programas que permiten la comunicación hombremaquina en un lenguaje parecido al humano. Cuenta con dos áreas: comprensión del lenguaje natural y generación del lenguaje natural. La comprensión del lenguaje natural investiga los métodos que permitan al computador comprender las instrucciones dadas en lenguaje natural, de tal manera que los computadores puedan entender de manera más fácil al ser humano. La generación del lenguaje natural intenta mostrar que el ordenador puede ser capaz de expresarse en lenguaje ordinario, de tal forma que se pueda entender a los computadores de una manera mucho más sencilla. Reconocimiento del Habla
Hace ya tiempo que se estudia la posibilidad de desarrollar interfaces hombremáquina controlados por la voz para sustituir en ciertas aplicaciones a las interfaces tradicionales basadas en teclados, paneles y dispositivos similares. Este nuevo tipo de interfaz constaría de dos módulos de entrada/salida: uno de reconocimiento de habla, mediante el cual el ordenador sería capaz de extraer
información de los comandos orales del operador o usuario, y otro de síntesis de voz, que podría ser una de las vías de presentación de resultados. La utilización de la voz, y el Reconocimiento de Habla, como vía de dar ordenes a los computadores ofrece varias ventajas respecto al método tradicional de comunicación entre el usuario y la máquina: a) Hace esta comunicación más rápida, y más agradable para los nuevos usuarios, ya que al ser la forma natural de comunicarse no se necesita ninguna habilidad especial. b) Permite tener las manos libres para utilizarlas en alguna otra actividad, a la vez que se van dando ordenes por medio de la voz. c) Permite movilidad, ya que la voz se puede enviar a distancia y ser recogida por un micrófono, por oposición a un teclado que no se puede mover de la mesa de trabajo. d) Permite acceso remoto, al poder acceder a un ordenador usando la red telefónica, que es la red de comunicaciones más extendida. e) Permite la disminución del tamaño de los paneles de control. Piense en el panel de un avión, cuantos conmutadores manuales podrían suprimirse si se utilizara la voz como forma de comunicación con un sistema de control Esta área de investigación permite que los ordenadores entiendan el habla humana, de tal manera que se puedan oír voces y reconocer palabras habladas, simplificando el proceso de comunicación interactiva hombre - maquina. Incrementa el método interactivo de comunicación primaria utilizada por las personas, el habla. Visión por Computador
El término Visión por Computador (VC) dentro del campo de la Inteligencia Artificial puede considerarse como el conjunto de todas aquellas técnicas y modelos que permiten el procesamiento, análisis y explicación de cualquier tipo de información espacial obtenida a través de imágenes digitales. Desde sus inicios la VC ha inspirado sus desarrollos en el estudio del sistema visual humano el cual sugiere la existencia de diferentes tipos de tratamiento de la información visual dependiendo de metas u objetivos específicos, es decir, la información visual percibida es procesada en distintas formas con base en las características particulares de la tarea a realizar, por lo que la VC propone varias técnicas que permiten obtener una representación del mundo a partir del análisis de imágenes obtenidas desde cámaras de video. Debido a que la información visual es una de las principales fuentes de datos del mundo real, resulta útil el proveer a una computadora digital del sentido de la vista (a partir de imágenes tomadas con cámaras digitales o analógicas), que junto con otros mecanismos como el aprendizaje hagan de esta una herramienta capaz de detectar y ubicar objetos en el mundo real.
Fig. 1.3. Procedimiento macro para obtener una imagen digital Por consiguiente la investigación en visión por computador tiene como objetivo dotar a los computadores con la herramienta de visualización para el entendimiento y comprensión del entorno que el computador está observando. Robótica
Cuando se escucha la palabra Robot, algunas ocasiones se piensa de manera directa en esas películas que han sorprendido por presentar Robots que realizan acciones superiores a las capacidades del ser humano. Los modelos más famosos de robots han sido los creados por George Lucas en su película Star Wars a quienes se conoce como C3PO y R2D2.
Mikell Groover, en su libro Automation, Production Systems and Computer Integrated Manufacturing, define al robot industrial como: “una máquina programable, de propósito general, que posee ciertas características antropomórficas, es decir, con características basadas en la figura humana...”. Cabe destacar que la característica antropomórfica más común en nuestros días es la de un brazo mecánico, el cual realiza diversas tareas industriales. Existen en el mercado diversas empresas dedicadas a la fabricación de robots industriales por lo que existen diferentes marcas y modelos. Estos últimos son normalmente asignados para identificarlos o de acuerdo a su función. Un resumen general de lo que constituye un robot industrial puede ser considerado sobre la base de los siguientes puntos: a) Un robot industrial es una máquina programable de propósito general que posee ciertas características antropomórficas. b) El componente principal lo constituye el manipulador, el cual consta de varias articulaciones y sus elementos. c) Las partes que conforman el manipulador reciben los nombres de cuerpo, brazo, muñeca y efector final o gripper. Otros elementos son el controlador, los mecanismos de entrada y salida de datos y los dispositivos especiales.
d) Existen dos categorías de efectores finales (grippers): las pinzas y las herramientas. Las pinzas pueden ser de tipo pivotante o de movimiento lineal entre otras. Entre las herramientas se tiene a los desarmadores y las pistolas para soldar. e) Los movimientos de un robot están relacionados con los grados de libertad que posea. Un grado de libertad es un número o tipo de movimiento del manipulador. Los grados de libertad se determinan por los movimientos que ejecutan el brazo y la muñeca del robot que pueden ser de uno a tres cada uno. La investigación en esta área tiende al estudio de las capacidades de los robots de poder insertarse en la sociedad a manera de seres mecánicos capaces de controlar y resolver los problemas discretos y mecanizados de su entorno. Otras Áreas Otras áreas significativas para su estudio al interior de la inteligencia artificial son: las lógicas no clásicas como la Lógica Difusa, las Redes Neuronales, los Algoritmos Genéticos, la Realidad Virtual, la Vida Artificial, los Agentes Inteligentes, etc. Estas áreas pueden ser visualizadas en la Fig. 1.5.
En el resto del texto la visión que se intenta brindar es la comprensión, análisis y aplicación de estas áreas de la inteligencia artificial. No es intención revisar a detalle cada una de estas áreas, sin embargo es menester reconocer la importancia que han cobrado en esta última década de investigación en la inteligencia artificial. La mayor de las expectativas es compartir los principios y fundamentos básicos que proporcionan la importancia natural a estas áreas, tan trilladas y comentadas en este ultimo tiempo. Desarrollo histórico de la Inteligencia Artificial según Jackson:
•
1950-1965. Periodo "clásico'' .
- Gestación [McColluck y Pitts, Shannon, Turing] -1956, la I.A. tuvo su boom a partir de la conferencia efectuada en Darmouth College. Estaban presentes importantes científicos como McCarty (le dio el nombre a esta nueva área del conocimiento), Minsky (fundador del laboratorio de IA del MIT), Shannon (laboratorios Bell), Rodhester (IBM), Newell (presidente de la A.A.A.I. Asociación Americana de IA), Simmon (premio Nóbel de Carnegie Mellon University) - Redes neuronales, robótica (Shakey). -Búsqueda en un espacio de estados, Heurísticas, LISP. - Resolutor general de problemas (GPS) [Newell, Simon]. Resolución de problemas de sentido común, los cuales incluyen razonamiento de objetos físicos y sus relaciones, como también razonamiento de acciones y sus consecuencias. Solo se resolvieron tareas muy simples, pues no se pudo crear un programa con la cantidad suficiente de conocimiento de un dominio específico - Se pone principal énfasis en la implementación de juegos (ajedrez, damas, etc.) así como en la demostración de teoremas matemáticos. - Limitaciones de pura búsqueda, explosión combinatoria. •
1965-1975. Periodo "romántico''
- Representación "general'' del conocimiento. - Redes semánticas [Quillian] - Prototipos (frames) [Minsky] - Perceptrón [Minsky y Papert] - Lógica [Kowalski] - Mundo de bloques (SHDRLU) [Winograd] - Percepción (visión y habla), compresión de lenguaje natural, robótica. - Dificultades de representación "general'', problemas de "juguete''. 1975- actualidad. Periodo "moderno'', Inteligencia "especifica'' vs. "general''. - Se identifica la necesidad de trabajar en sociedad con profesionales de otras áreas de conocimiento. - Representación explícita del conocimiento específico del dominio. - Sistema experto médico MYCIN (experto en enfermedades infecciosas de la sangre) iniciado en la Universidad de Stanford. - Sistemas expertos o basados en conocimiento. -Regreso de redes neuronales [Hopfield, Rumelhart, Hinton], algoritmos genéticos [Holland, Goldberg].
-Reconocimiento de voz (HMM), incertidumbre (RB, Lógica difusa), planeación, aprendizaje. -Aplicaciones "reales'' (medicina, finanzas, ingeniería, exploración, etc.). - Comercialización de la IA
1.2. Técnicas de resolución de problemas de IA Uno de los resultados que surgieron de las primeras investigaciones en IA fue que la inteligencia necesita conocimiento. El conocimiento posee algunas propiedades poco deseables como: • • • •
Es voluminoso Es difícil caracterizarlo Cambia Se organiza de manera que se corresponde con la forma en que va a se usado
Una técnica de IA es un método que explota el conocimiento representado de manera que se cumpla que: •
• • • •
Representa generalizaciones, es decir, no es necesario representar cada situación individual, sino que las situaciones que comparten propiedades importantes se agrupan. Debe ser entendido por las personas que lo provean. Puede ser modificado para corregir errores y reflejar cambios en el mundo Puede usarse en muchas situaciones aun sin ser totalmente exacto o completo Puede usarse para superar su propio volumen, y disminuir el rango de posibilidades que normalmente deben considerarse
Se pueden caracterizar las técnicas de IA con independencia del problema a tratar. Para solucionar problemas complicados, los programas que utilizan las técnicas de IA presentan numerosas ventajas con respecto a los que no lo hacen: • • • •
son menos frágiles, es decir, que no se despistan frente a una perturbación pequeña de la entrada. el conocimiento del programa es comprendido fácilmente por la gente usa generalizaciones. tiene facilidad de extensión.
Como contraposición, generalmente tienen más complejidad que otras soluciones.
Se analizan brevemente a continuación dos tipos de problemas bien diferenciados, y dentro de cada uno se ejemplifica lo que se entiende por una técnica de IA. Ejemplo 1: tres en raya A continuación se plantean tres soluciones diferentes del problema de tres en raya analizando la conveniencia de cada una. Para mejor detalle de las mismas consultar [Rich98]. •
Solución 1: Una primera solución directa a este juego podría ser la de almacenar en un vector las 19.693 (39) posibilidades de un tablero de 3 x 3 con tres valores posibles en cada casilla (vacío-X-O), así como las correspondientes jugadas sucesoras. Para realizar una jugada, bastaría con acceder a la posición del tablero actual y la jugada sucesora correspondiente. Las desventajas de este eficiente programa son bastante obvias: necesita gran cantidad de memoria; alguien debe realizar el pesado trabajo de introducir todas las jugadas y sus sucesoras; y el juego no se puede ampliar, por ejemplo a tres dimensiones.
•
Solución 2: El programa posee una estrategia para cada turno de jugador. Analiza el posible triunfo a partir de un estado del tablero dado. Aunque es menos eficiente que la solución anterior en términos de tiempo, tiene la ventaja que es más eficiente en términos de espacio. Su estrategia es más facil de comprender y realizar cambios, aunque el programador debe comprender la totalidad de la estrategia de antemano. Además, no es posible generalizar parte del conocimiento del programa hacia un dominio distinto, como tres en raya 3D.
•
Solución 3: Una estructura contiene el tablero actual, así como una lista de posiciones del tablero que podrían ser el próximo movimiento, y una estimación de la probabilidad de que esa jugada lleve a la victoria. Para decidir la siguiente jugada se tienen en cuenta las posiciones de tablero que resultan de cada movimiento posible. Se decide la posición que corresponde a la mejor jugada, considerando si la jugada produce la victoria, y en caso contrario considerando todos los movimientos que el oponente puede realizar asumiendo que éste elegirá el peor para nosotros. El algoritmo inspecciona varias secuencias de movimientos intentando maximizar la probabilidad de victoria. Necesita mucho más tiempo que los demás, ya que debe realizar una búsqueda en un árbol de posibilidades antes de realizar cada movimiento. Sin embargo, es superior a las demás soluciones pues podría ser ampliado para manipular juegos más complicados. Además, puede aumentarse su potencia usando conocimiento sobre el juego, por ejemplo, en lugar de considerar todos los posibles movimientos considerar solo un
subconjunto siguiendo algún criterio razonable. Este programa es un ejemplo del uso de una técnica de IA.
Ejemplo 2: respuestas a preguntas Se quiere realizar un programa que a partir de un texto escrito en español pueda responder a preguntas en español sobre este texto. En este caso, es más difícil que en el ejemplo anterior determinar formalmente y con precisión en qué consiste el problema y en qué consiste una solución correcta para él. Un ejemplo de programa de preguntas y respuestas en inglés es el programa POLITICS (Carbonell, 1980). A continuación se plantean tres soluciones diferentes analizando la conveniencia de cada una. Para mejor detalle de las mismas consultar [Rich98]. Solución 1: Se tienen conjunto de plantillas (templates) preguntas, por ejemplo "Que x y" asociada con patrones (patterns) respuesta, por ejemplo "y x z". Responde a las preguntas usando el texto de entrada de forma literal. Se hace coincidir fragmentos de texto de entrada con el patrón respuesta, y se obtiene la respuesta, por ejemplo "z". Este algoritmo no puede contestar el tipo de preguntas que la gente puede responder después de una simple lectura del texto. La habilidad para responder depende de la forma exacta de la pregunta, y de las variaciones contempladas en el diseño de plantillas y patrones. El proceso de sustitución de patrones usado es llamado pattern matching. Pese a que lo que se entiende por IA no incluye programas como éste, ésta técnica es la usada en uno de los programas más célebres de IA, ELIZA. Solución 2: Transforma el texto de entrada dándole una estructura interna que intenta capturar el significado de las frases, y también transforma las preguntas de igual manera. Las respuestas se encuentran emparejando unas con otras formas estructuradas. Este enfoque está más basado en conocimiento que el primero, y también es más efectivo. Puede responder a la mayoría de las preguntas cuyas respuestas se encuentran en el texto, y es menos quebradizo con respecto a las formulaciones exactas de preguntas y respuestas. Algunas preguntas necesitan conocimiento adicional sobre el mundo con el que trate el texto, que esta solución no posee. Solución 3: Al igual que la solución anterior se transforma el texto en forma estructurada, pero a diferencia del anterior, se combina esta forma con otras formas estructuradas que describen conocimiento previo sobre los objetos y situaciones que aparecen en el texto. Este programa es más potente que los otros dos, debido a que
responde a preguntas usando esta estructura de conocimiento aumentada. Se utiliza lo que se denomina técnica de IA, pues está basado en el conocimiento y en uso computacional eficaz de ese conocimiento. Estos ejemplos ponen de manifiesto tres importantes técnicas de IA: • •
•
Búsqueda: proporciona una forma de resolver problemas en los que no se dispone de un método directo Uso del conocimiento: proporciona una forma de resolver problemas complejos explotando las estructuras existentes entre los objetos involucrados Abstracción: proporciona una forma de separar aspectos y variaciones importantes de aquellos otros sin importancia, y que en caso contrario podrían colapsar el proceso.
1.3. Criterios de éxito de la IA Para determinar el éxito de un programa de IA, se deben realizar las siguientes preguntas: • • • • •
¿Está definida con claridad la tarea? ¿Existe un proceso instrumentado que efectúa la tarea? ¿Existe un conjunto de restricciones identificables a partir de las cuales el procedimiento implantado tiene poder? ¿Resuelve un problema real? ¿Crea una nueva oportunidad?
Test de Turing En 1950, Alan Turing propuso el siguiente método para determinar si una máquina es capaz de pensar. Una persona es un entrevistador y se halla en una habitación separado de otra persona y un ordenador a evaluar. El entrevistador hace preguntas a ambos de forma escrita. Si luego de un cierto número de preguntas y respuestas, el interrogador no puede identificar quién es el computador y quién es la persona, entonces podemos decir que el computador piensa. ¿Se puede calibrar el éxito de la IA en dominios más restringidos? Por ejemplo, El éxito de un programa que juega al ajedrez se puede evaluar según los jugadores que pueda derrotar; El éxito de otros programas puede medirse comparando el tiempo que tarda un ordenador en llevar a cabo una tarea con el que tarda una persona en hacer lo mismo. Por ej. programas usados en empresas informáticas para configurar sistemas particulares a las necesidades del cliente; en tareas de cada día es más difícil, por ej. parafrasear un artículo del periódico, la mejor forma de evaluarlo es ver si el programa responde de la misma forma que haría una persona.
Cuando se quiere diseñar un programa de IA, se debe intentar especificar tan bien como sea posible el criterio de éxito para el funcionamiento del programa en su dominio particular.
1.4. Resolución de problemas de IA Para construir un sistema que resuelva un sistema específico, es necesario: 1- Definir el problema formalmente con precisión. 2- Analizar el problema. 3- Representar el conocimiento necesario para resolver el problema. 4- Elegir la mejor técnica que resuelva el problema y aplicarla.
1.4.1. Definición formal del problema. El primer paso para diseñar un programa que resuelva un problema es crear una descripción formal y manejable del propio problema. Sería adecuado contar con programas que produzcan descripciones formales a partir de descripciones informales, proceso denominado operacionalización. Dado que por ahora no se conoce la forma de construir estos programas este proceso debe hacerse manualmente. Hay problemas que por ser artificiales y estructurados son fáciles de especificar (por ej. el ajedrez, el problema de las jarras de agua, etc. ). Otros problemas naturales, como por ej. la comprensión del lenguaje, no son tan sencillos de especificar. Para producir una especificación formal de un problema se deben definir: espacio de estados válidos; estado inicial del problema; estado objetivo o final; reglas que se pueden aplicar para pasar de un estado a otro. Un estado es la representación de un problema en un instante dado. Para definir el espacio de estados no es necesario hacer una enumeración exhaustiva de todos los estado válidos, sino que es posible definirlo de manera más general. El estado inicial consiste en uno o varios estados en los que puede comenzar el problema. El estado objetivo consiste en uno o varios estados finales que se consideran solución aceptable. Las reglas describen las acciones u operadores que posibilitan un pasaje de estados. Una regla tiene una parte izquierda y una parte derecha. La parte izquierda determina la aplicabilidad de la regla, es decir, describe los estados a los
que puede aplicarse la regla. La parte derecha describe la operación que se lleva a cabo si se aplica la regla, es decir, como obtener el estado sucesor. Por ejemplo, en el problema de jugar al ajedrez: El espacio de estados son la totalidad de tableros que se puede generar en un juego de ajedrez. El estado inicial es el tablero de 8 x 8 donde cada celda contiene un símbolo de acuerdo a las piezas situadas. El objetivo o estado final se define como cualquier posición de tablero en la que el contrario no puede realizar ningún movimiento legal y su rey esté amenazado. Las reglas son los movimientos legales, que pueden describirse mediante una parte patrón para ser contrastado con la posición actual de tablero y otra parte que describe el cambio que debe producirse en el tablero. Dado que escribir exhaustivamente todas las reglas es imposible prácticamente, (en el ejemplo, escribir todas las posiciones de tablero), las reglas deben escribirse de la manera más general posible. La representación como espacio de estados forma parte de la mayoría de los métodos de IA. Su estructura se corresponde con la resolución de problemas porque: •
•
permite definir formalmente el problema, mediante la necesidad de convertir una situación dada en una situación deseada mediante un conjunto de operaciones permitidas. permite definir el proceso de resolución de un problema como una combinación de técnicas conocidas y búsqueda (la técnica general de exploración del espacio intenta encontrar alguna ruta desde el estado actual hasta un estado objetivo).
Ejercicio 1: Problema de las jarras de agua Se tienen dos jarras de agua, una de 4litros y otra de 3litros sin escala de medición. Se desea tener 2 litros de agua en la jarra de 4 litros. Las siguientes operaciones son válidas: llenar las jarras, tirar agua de las jarras, pasar agua de una jarra a otra. Solución: El espacio de estados se define como { (X,Y)/ X son los litros en la jarra de 4l con 0<=X<=4 AND Y son los litros de la jarra de 3l con 0<=Y<=3 }
•
El estado inicial es (0,0)
•
El estado final es (2,0). El estado final podría ser (2,N) en caso de que no importen los litros de la segunda jarra.
•
Las reglas que se pueden aplicar son:
1. Llenar la jarra de 4l: Si (X,Y) AND X<4 => (4,Y) 2. Llenar la jarra de 3l: Si (X,Y) AND Y<3 => (X,3) 3. Vaciar la jarra de 4l: Si (X,Y) AND X>0 => (0, Y) 4. Vaciar la jarra de 3l: Si (X,Y) AND Y>0 => (X, 0) 5. Pasar agua de la jarra de 4l a la jarra de 3l hasta llenarla: Si (X,Y) AND X>0 AND X+Y>=3 => (X-(3-Y),3) 6. Pasar agua de la jarra de 3l a la jarra de 4l hasta llenarla: Si (X,Y) AND Y>0 AND X+Y>=4 => (4, Y-(4-X)) 7. Pasar toda el agua de la jarra de 4l a la jarra de 3l: Si (X,Y) AND X>0 AND X+Y<3 => (0,X+Y) 8. Pasar toda el agua de la jarra de 3l a la jarra de 4l: Si (X,Y) AND Y>0 AND X+Y<4 => (X+Y,0) El programa debería encontrar un pasaje de estados para ir del estado (0,0) al estado (2,0). Puede existir más de un pasaje de estados hacia la solución, por ejemplo: (0,0) => (0,3) => (3,0) => (3,3) => (4,2) => (0,2) => (2,0) en la cual, a partir del estado inicial, se aplicaron las reglas 2, 8, 2, 6, 3 y 8, hasta conseguir el estado objetivo. Otro pasaje de estados hacia la solución es la siguiente (0,0) => (4,0) => (1,3) => (1,0) => (0,1) => (4,1) => (2,3) => (2,0) en la cual se aplicaron las reglas 1, 5, 4, 7, 1, 5 y 4 Con respecto a las reglas se puede concluir que: •
•
Las condiciones que se establecen en la parte izquierda a veces no son altamente necesarias pero restringen la aplicación de la regla a estados más adecuados. Esto incrementa la eficiencia del programa que utiliza las reglas. En el ejemplo anterior, la regla 1. Llenar la jarra de 4l: Si (X,Y) AND X<4 => (4,Y) contiene la condición (X<4), especificando que la jarra no se encuentra llena. Si esta condición no se incluye, se puede aplicar la regla aún cuando la jarra está llena. Dado que en este caso el estado del problema no cambia la aplicación de la regla se considera inútil. Las reglas no sólo deben describir el problema sino también algún tipo de conocimiento sobre su solución. Si en el ejemplo anterior se considera la siguiente nueva regla: Vaciar "un poco" la jarra de 4l: Si (X,Y) AND X>0 =>
•
(X-Q, Y) es decir, tirar agua sin cuantificar, intuitivamente se concluye que la aplicación de esta regla nunca nos acercará a la solución del problema. A veces, cuando se alcanzan algunos estados resulta obvio cómo se debe continuar hacia la solución. Es posible agregar reglas de propósito especial que capturen el conocimiento sobre casos especiales que conducen a la resolución del problema. En el ejemplo anterior, se pueden agregar las siguientes reglas de propósito especial: Si (X,2) => (2,0) Si (2,Y) AND Y>0 => (2,0)
Estas reglas no añaden más potencia al sistema ya que las operaciones que describen las proporcionan otras reglas más generales. En el ejemplo, la primera regla agregada es equivalente a la aplicación de las reglas generales 3 y 8; y la segunda regla agregada es equivalente a la aplicación de la regla general 4. Dependiendo de la estrategia de control que se utilice para seleccionar reglas durante la resolución del problema se puede mejorar el rendimiento si se les da preferencia a las reglas de casos especiales.
Ejercicio 2: Problema de los Caníbales y Monjes Se tienen 3 monjes y 3 caníbales en el margen Oeste de un río. Existe una canoa con capacidad para dos personas como máximo. Se desea que los seis pasen al margen Este del río, pero hay que considerar que no debe haber más caníbales que monjes en ningún sitio porque entonces los caníbales se comen a los monjes. Además, la canoa siempre debe ser conducida por alguien. Solución: El espacio de estados está definido por {(Mo, Co, Me, Ce, C) / Mo es el número de monjes en el margen oeste con 0<=Mo<=3 AND Co es el número de canívales en el margen oeste con 0<=Co<=3 AND (Co<=Mo OR Mo=0) AND Me es el número de monjes en el margen este con 0<=Me<=3 AND Ce es el número de canívales en el margen este con 0<=Ce<=3 AND (Ce<=Me OR Me=0) AND Co+Ce=3 AND Mo+Me=3 AND C = [E|O] es el margen dónde está la canoa} El estado inicial es (3,3,0,0,O) El estado final es (0,0,3,3,E) Las reglas que se pueden aplicar son: 1. Viajan un monje y un caníbal de O a E: Si (Mo, Co, Me, Ce, O) AND Mo>=1 AND Co>=1 AND Ce+1<=Me+1 => (Mo-1, Co-1, Me+1, Ce+1, E)
2. Viajan un monje y un caníbal de E a O: Si (Mo, Co, Me, Ce, E) AND Me>=1 AND Ce>=1 AND Co+1<=Mo+1=> (Mo+1, Co+1, Me-1, Ce-1,O) 3. Viajan dos monjes de O a E: Si (Mo, Co, Me, Ce, O) AND Mo>=2 AND (Mo-2=0 OR Co<=Mo-2) AND Ce<=Me+2=> (Mo-2, Co, Me+2, Ce, E) 4. Viajan dos monjes de E a O: Si (Mo, Co, Me, Ce, E) AND Me>=2 AND (Me-2=0 OR Ce<=Me-2) AND Co<=Mo+2 => (Mo+2, Co, Me-2, Ce, O) 5. Viajan dos caníbales de O a E: Si (Mo, Co, Me, Ce, O) AND Co>=2 AND (Me=0 OR Ce+2<=Me) => (Mo, Co-2, Me, Ce+2, E) 6. Viajan dos caníbales de E a O: Si (Mo, Co, Me, Ce, E) AND Ce>=2 AND (Mo=0 OR Co+2<=Mo) => (Mo, Co+2, Me, Ce-2, O) 7. Viaja un monje de O a E: Si (Mo, Co, Me, Ce, O) AND Mo>=1 AND (Mo-1=0 OR Co<=Mo-1) AND Ce<= Me+1 => (Mo-1, Co, Me+1, Ce, E) 8. Viaja un monje de E a O: Si (Mo, Co, Me, Ce, E) AND Me>=1 AND (Me-1=0 OR Ce<=Me-1) AND Co<=Mo+1 => (Mo+1, Co, Me-1, Ce,O) 9. Viaja un caníbal de O a E: Si (Mo, Co, Me, Ce, O) AND Co>=1 AND (Me=0 OR Ce+1<=Me) => (Mo, Co-1, Me, Ce+1, E) 10. Viaja un caníbal de E a O: Si (Mo, Co, Me, Ce, O) AND Ce>=1 AND (Mo=0 OR Co+1<=Mo) => (Mo, Co+1, Me, Ce-1, E) Nota: En referencia a la regla 3 la condición Ce<=Me+2 puede intuirse como redundante. Esta condición no se cumple sólo en el caso Ce=3 y Me=0. Pese a que es un estado que pertenece al espacio de estados válidos, podemos intuir que nunca se llega a tener 3 caníbales y ningún monje del lado Este y la barca del lado Oeste. De todas maneras sólo se puede eliminar si podemos demostrar formalmente la imposibilidad de esta situación. Un pasaje de estados para ir de (3,3,0,0,O) a (0,0,3,3,E) es el siguiente: (3,3,0,0,O) => (3,1,0,2,E) => (3,2,0,1,O) => (3,0,0,3,E) => (3,1,0,2,O) => (1,1,2,2,E) => (2,2,1,1,O) => (0,2,3,1,E) => (0,3,3,0,O) => (0,1,3,2,E) => (0,2,3,1,O) =>(0,0,3,3,E) 1.4.2. Estrategia de control: Métodos de búsqueda El problema puede resolverse con el uso de reglas en combinación con una estrategia de control para trasladarse a través del espacio de estados hasta encontrar un camino desde el estado inicial hasta el estado final. Se elige una regla entre aquellas cuya parte izquierda concuerda con el estado actual. Se
aplica la regla elegida realizando el cambio de estado tal como se describe en la parte derecha de la regla. Si el nuevo estado es estado objetivo o final se ha encontrado la solución. En caso contrario se continúa con la aplicación de reglas al nuevo estado. Una estrategia de control especifica el orden en el que se deben aplicar las reglas, así como también la forma de resolver conflictos cuando es posible aplicar más de una regla. Para que una estrategia de control sea válida debe cumplir con dos requisitos: •
Causar cambios:
las estrategias de control que no causan cambios de estado nunca alcanzan la solución. Un ejemplo de estrategia de control que no causa cambios es seleccionar siempre la primera regla aplicable de la lista de reglas definidas. En el ejemplo de las jarras de agua, se continuaría indefinidamente aplicando las reglas 1 y 3 sin posibilidad de arribar a la solución. •
Ser sistemática:
las estrategias de control que no son sistemáticas pueden utilizar secuencias de operaciones no apropiadas varias veces hasta alcanzar la solución. Un ejemplo de estrategia de control no sistemática es seleccionar la regla a aplicar al azar. Esta estrategia puede encontrar la solución eventualmente, pero luego de haber realizado varios pasos innecesarios e incluso haber vuelto varias veces al mismo estado. En caso de no contar con una aproximación directa al problema, el proceso de búsqueda resulta fundamental en la resolución del mismo. Los algoritmos de búsqueda detallados a continuación son ejemplos de estrategias de control sistemáticas. Todos se basan en considerar un árbol de estados cuya raíz es el estado inicial, y en cada nivel se hallan los estados sucesores correspondientes.
Búsqueda Breadth-First Search (primero en ancho) Este algoritmo de búsqueda visita cada nodo del árbol por niveles, es decir, visita todos los nodos de un nivel antes de visitar los del siguiente. A continuación se detalla un pseudo-código de este algoritmo:
Lista_nodos = [estado_inicial]; Mientras Not Vacia(lista_nodos) estado_actual = lista_nodos.primero; Si EstadoFinal(estado_actual) entonces Terminar; Sino
lista_reglas = ReglasAplicables (estado_actual); Mientras NOT Vacia(lista_reglas) estado_sucesor = AplicarRegla (lista_reglas); lista_nodos = lista_nodos + [estado_sucesor]; Fin Mientras; Fin Sino; Fin Mientras; Este algoritmo básico debería modificarse para detectar el caso en que se vuelva a alcanzar un estado que ya ha sido visitado con anterioridad. En este caso, debería realizarse una "poda" de la rama del árbol, ya que en caso contrario se volvería a generar un subárbol ya generado. Con la búsqueda a lo ancho se asegura que una vez alcanzada una solución no existe otra ruta hacia la solución que tenga menor cantidad de pasos. Una desventaja de este algoritmo es que para alcanzar una solución de n pasos, debe haber explorado todo el espacio de estados hasta ese nivel. Ejercicio: Realizar el árbol de búsqueda a lo ancho para encontrar la solución del problema de las jarras de agua. Búsqueda Depth-First Search (primero en profundidad) Este algoritmo de búsqueda continúa por una rama del árbol hasta encontrar la solución o decidir terminar la búsqueda por esa dirección (por llegar al estado final, por tener un largo de ruta que supera una cota máxima determina, por haber llega a un estado ya visitado, etc.). Al fracasar una ruta, se realiza un backtracking o vuelta atrás, continuando la exploración en el paso inmediatamente anterior. A continuación se detalla un pseudo-código de este algoritmo recursivo que incialmente es llamado con el estado_inicial:
Función Buscar (estado_actual) devuelve Boolean Comienzo Si EstadoFinal(estado_actual) entonces Devolver TRUE; Sino exito = FALSE; lista_reglas = ReglasAplicables (estado_actual); Mientras NOT exito AND NOT Vacia(lista_reglas) estado_sucesor = AplicarRegla (lista_reglas); exito = Buscar (estado_sucesor); Fin Mientras; Devolver exito; Fin Sino; Fin Buscar;
Este algoritmo básico debería modificarse para terminar la búsqueda en una rama que se alcanza un estado que ya visitado. Con la búsqueda en profundidad no es necesario tener almacenado todo el espacio de estados, sino sólo el camino que se está explorando. Puede encontrar la solución sin tener que explorar gran parte del espacio de estados. Como desventajas de este algoritmo se señala que puede seguir una ruta infructuosa durante muchos pasos, y además la primera solución que encuentra puede distar mucho de ser la solución de mínima cantidad de pasos. Búsqueda Heurística Existen algunos problemas en los que resulta imposible explorar el árbol del espacio de estados pues resulta en una explosión combinatoria. Por ej. en el problema del viajante, se debe encontrar la ruta mínima entre N ciudades a visitar. Si se aplica cualquiera de los dos algoritmos de búsqueda anteriores, nos encontramos ante un costo computacional no polinomial O(N!). Una heurística es una técnica que aumenta la eficiencia de un proceso de búsqueda. El objetivo es guiar al proceso de búsqueda en la dirección más provechosa sugiriendo el camino a seguir cuando hay más de una opción. Las heurísticas pueden ser: •
generales: son adecuadas para una amplia variedad de dominios. Por ej. la heurística del vecino más próximo (nearest neighbor) se aplica a muchos problemas combinatorios. En el ejemplo del problema del viajante, se comienza por una ciudad arbitraria continuando en cada paso por la ciudad más cercana no visitada. Esto resulta en una reducción del costo computacional a O(N2).
•
de propósito especial: explotan el conocimiento específico de un dominio para resolver problemas particulares.
Las heurísticas pueden sacrificar la completitud, es decir, pueden pasar por alto una buena solución. Sin embargo, existen varios argumentos a favor de usarlas: • •
•
•
Sin el uso de heurísticas se puede tener una explosión combinatoria. En muchos casos no se necesita la solución óptima sino una buena aproximación. Según Simon (1981), las personas resuelven problemas "satisfaciendo" y no "optimizando". Las aproximaciones que se logran con heurísticas pueden ser malas para los peores casos de un problema, pero éstos raramente sedan en el mundo real. El esfuerzo de intentar comprender por qué funciona o no una heurística sirve para profundizar en la comprensión del problema.
Las heurísticas se pueden incorporar a un proceso de búsqueda basado en reglas de dos maneras: •
Dentro de las mismas reglas. Por ej. en el ajedrez, las reglas pueden describir, además de los movimientos legales, también las buenas jugadas.
•
Como una función que evalúa estados determinando su grado de "deseable". Esta función evalúa aspectos del problema dando pesos a aspectos individuales, de manera que el valor que devuelve es una estimación de que el nodo pertenece a la ruta que conduce a la mejor solución. Por ej. en el ajedrez se puede tener una función a maximizar la cual devuelve el número de piezas de ventaja; en el problema del viajante se puede tener una función a minimizar la cual devuelve la suma de distancias recorridas; en el tres en raya se puede tener una función que compute un punto por cada ficha en cada fila, columna o diagonal que se pueda ganar.
En conclusión, las heurísticas representan el conocimiento general y específico del mundo, que hace que sea abordable solucionar problemas complejos. 1.4.3. Análisis del problema Luego de definir el problema formalmente, el segundo paso en la resolución del problema es el análisis del mismo. A fin de poder elegir el método más apropiado para resolver un problema particular, es necesario analizar distintas cuestiones que afectan a al definición del mismo y a las características de la solución deseada. Existen varias preguntas a responder acerca del problema: 1. ¿Puede descomponerse el problema en subproblemas más pequeños? 2. ¿Pueden deshacerse pasos inadecuados hacia la solución? 3. ¿Es predecible el universo del problema? 4. ¿Una solución es buena de manera absoluta o relativa? 5. ¿La solución deseada es un estado o la ruta hacia un estado? 6. ¿El conocimiento se necesita para resolver el problema o para restringir la búsqueda de la solución? 7. El programa que soluciona el problema ¿busca la solución solo o necesita interactuar con una persona? 1. ¿Puede descomponerse el problema en subproblemas más pequeños? Algunos problemas pueden descomponerse en subproblemas independientes, de manera que encontrar una solución global es la composición de soluciones particulares. Por ej. en la resolución de integrales, una integral puede descomponerse por partes, y resolver las partes simples directamente o descomponerlas recursivamente. Por otra partes, existen otros problemas que no pueden descomponerse y componer la solución a partir de las soluciones parciales de sus partes. Por el
contrario, una solución necesita considerar globalmente el problema. Por ej. el problema del mundo de los bloques. 2. ¿Pueden deshacerse pasos inadecuados hacia la solución? Algunos problemas permiten deshacer uno o varios pasos hacia una solución una vez realizados. En este aspecto, existen tres categorías en las que puede dividirse un problema: •
•
•
Recuperables: En un punto dado es posible deshacer todos los pasos inadecuados hacia la solución. Por ej. en el juego 8-puzzle. La estructura de control se implementa con una pila push-down en la que se almacenan las decisiones para poder volver atrás. No recuperables: En un punto dado no es posible deshacer ningún paso realizado. Por ej. en una partida de ajedrez no se puede volver atrás una vez movidas las piezas. En estos problemas el sistema debe esforzarse en la toma de decisiones pues éstas son irrevocables. Algunos usan una planificación en la que se analiza por adelantado una secuencia de pasos antes de realizar el primer paso para descubrir a donde conduce. Ignorables: en un punto dado es posible ignorar los pasos realizados hasta el momento y comenzar de nuevo con una nueva solución. Por ej. un demostrador de teoremas puede abandonar una demostración basada en un lema dado y comenzar nuevamente. Estos problemas se resuelven con estrategias de control sencillas que nunca vuelven hacia atrás.
3. ¿Es predecible el universo del problema? Los problemas pueden se de: •
•
Consecuencia cierta: es posible planificar una secuencia de movimientos estando seguros del resultado a obtener. Se puede realizar una planificación para generar operadores que garanticen llegar a la solución. Consecuencia incierta: no es posible planificar con certeza pues no se sabe que ocurrirá luego del siguiente movimiento. Sin embargo, se puede realizar una planificación para generar operadores que tengan una buena probabilidad de llegar a la solución.
Los problemas más difíciles de resolver son los no recuperables de consecuencia incierta. Por ej. el control del brazo de un robot: es de consecuencia incierta pues alguien puede interponer un objeto en la ruta del brazo, se puede atascar, etc. 4. ¿Una solución es buena de manera absoluta o relativa? La solución de un problema puede consistir en encontrar:
•
•
Algún camino: sólo importa encontrar una solución sin importar si existen otros caminos que conducen a la solución. Generalmente se resuelven con heurísticas. Por ej. programa de respuestas a preguntas. El mejor camino:importa encontrar la ruta más corta hacia la solución. Son problemas más complicados de computar. Algunos requieren una búsqueda más exhaustiva que usando heurísticas. Por ej. en el problema del viajante importa encontrar la ruta más corta entre las ciudades a visitar.
5. ¿La solución deseada es un estado o la ruta hacia un estado? La solución de un problema puede consistir en encontrar: • •
un estado final: no es necesario el registro del proceso seguido, sólo importa arribar a la solución final. Por ej. interpretar texto. una ruta hacia un estado final: se necesita dar el camino seguido desde el estado inicial al estado final. Por ej. problema de las jarras de agua.
6. ¿El conocimiento se necesita para resolver el problema o para restringir la búsqueda de la solución? El conocimiento puede emplearse para: •
•
Reconocer la solución: se necesita gran cantidad de conocimiento acerca del problema para poder encontrar una solución. Por ej. comprensión de texto. Acotar la búsqueda: la solución básica puede encontrarse con poco conocimiento, pero para restringir el árbol de búsqueda y encontrar la solución de manera más eficiente es necesario contar más conocimiento. Por ej. en el ajedrez se necesita básicamente poco conocimiento para conocer los movimientos legales y un mecanismo sencillo de búsqueda. Pero dado que para aumentar la eficiencia de la búsqueda ésta debe restringirse, se necesita conocimiento de heurísticas de buenas estrategias y tácticas para jugar.
7. El programa que soluciona el problema ¿busca la solución solo o necesita interactuar con una persona? Con respecto a la relación programa-usuario, existen dos tipos de programas que solucionan el problema: •
•
Solitarios: reciben como entrada el problema y dan como salida la solución. No importa el razonamiento que haya seguido la máquina para encontrar la solución. Por ej. problema de las jarras de agua. Conversacionales: existe una comunicación hombre-máquina de manera que el usuario puede ayudar a la máquina o la máquina puede informar al usuario durante la búsqueda de la solución. Para que esta comunicación sea posible debe existir una correspondencia entre el razonamiento seguido
por la máquina y la forma de razonamiento humano. Por ej. en un sistema experto de diagnóstico médico, el usuario no aceptaría el veredicto de una máquina si no puede comprender el razonamiento que la llevó a él.
1. 2 AGENTES INTELIGENTES Una de las ramas de la inteligencia artificial que empieza a tener más auge hoy en día, es la de los Agentes Inteligentes. A pesar de que esta tuvo su origen a principios de los 80s, es apenas hasta ahora cuando se empieza ha ver su aplicación debido al gran desarrollo que han tenidos las redes. Los Agentes Inteligentes se caracterizan por desenvolverse en un entorno, ejecutar acciones sobre el, basándose en percepciones para lograr metas deseadas por el usuario. INTRODUCCION Hoy en día lo que podemos encontrar en Internet son servicios sofisticados y herramientas para acceder a ellos, como servidores de información o navegadores. Pero lo que los usuarios desean realmente son soluciones concretas: encontrar en la red el hotel más cómodo al mejor precio o la mejor inversión en bolsa. Para lograr estos los Agentes Inteligentes dialogan con el usuario de forma sencilla y natural definiendo así lo que este realmente desea, después de haber definido el problema, el agente empieza a solucionarlo consultando sus fuentes de información o dialogando con otros agentes, y le va informando de manera evolutiva las soluciones logradas al usuario. Si éste no queda satisfecho, continúa la búsqueda hasta agotar las fuentes o hasta que el usuario quede satisfecho con la solución. La inteligencia del agente es demostrada a través de su funcionalidad. El usuario se dará cuenta de esta a medida que el agente le resuelva las tareas que le plantee, de manera eficiente; su funcionalidad mejorará a medida que resuelve mayor número de casos. Esta capacidad de adaptación permite al agente conocer mejor las preferencias de los usuarios y atenderlos de forma personalizada. Los Agentes Inteligentes se caracterizan por actuar en un ambiente en particular y ser capaces de realizar ciertas acciones, basados en su entorno, hasta realizar la tarea que les fue encomendada, esas tareas van desde recomendaciones para el usuario hasta solución de problemas. A pesar de que los Agentes Inteligente son una rama de la Inteligencia Artificial relativamente muy nueva, se tienen grandes expectativas sobre estos ya que tiene enormes perspectivas de aplicación ¿QUÉ ES UN AGENTE? Existen muchas definiciones de Agentes, pero una de las mas simples es la de Franklin and Graesser “Un agente es un sistema situado en y parte de un entorno
que siente ese entorno y actúa sobre él, a través del tiempo, persiguiendo sus propios objetivos de forma que afecte lo que siente en el futuro.” Basándonos en algunos ejemplos que mostraremos posteriormente, el entorno en el cual esta situado el agente, es Internet, la percepción se puede ver cuando actúa sobre el entorno a medida que va recibiendo e instruyéndose de las peticiones que hace el usuario sobre el y las acciones se clarifican cuando el agente nos muestra información que el mismo ha buscado en Internet. Como podemos ver en la imagen 1 el agente percibe su ambiente mediante sensores y actúa en él mediante actuadores, para entender esto de una mejor manera, observemos un agente humano, este posee ojos y oídos los cuales le sirven como sensores, así como piernas, manos, boca y otros órganos que le sirven como actuadores.
Imagen 1 V. Julián, V. Botti Dpto. sistemas
Informáticos y Computación Universidad Politécnica de Valencia vbotti,
[email protected]
http://agamenon.uniandes.edu.co/yubarta/agentes/agentes3.htm AGENTE INTELIGENTE Imaginémonos al llegar por la mañana al trabajo, sentarse al teclado del PC e ingresar a nuestra cuenta de correo electrónico, muchas personas se ven
inundadas por decenas, incluso cientos de mensajes de correo electrónico. Algunos de esos mensajes tienen algo interesante: se refieren a una pregunta que alguien había hecho anteriormente, contienen información que puede conducir a una venta, o son simplemente un mensaje de un amigo haciéndonos una invitación. Otros, solo, contienen correo basura. La cuenta de correo, solo nos proporciona información mínima sobre el contenido del mensaje: el nombre del autor, su dirección de correo, a veces una línea de Subject o tema que tiene que ver con el contenido, a veces no. Imaginemos, por el contrario: al sentarnos al teclado del PC, una ventana se abre en pantalla y nos muestra dos o tres mensajes de correo, clasificados como importantes o urgentes. También nos da la opción de leer los menos urgentes, y muestra claramente un cubo de basura al cual han sido enviados otros mensajes. Al día siguiente, los mensajes similares a los "menos urgentes" leídos anteriormente son considerados más importantes, y colocados más arriba en la lista de lectura. Además, uno de los mensajes de la lista de correo se considera importante, y se coloca en la lista de "importantes", y nos avisa de que el periódico al cual estamos suscritos en línea contiene una noticia "interesante". Aquí se puede ver la existencia de un agente inteligente. Otros ejemplos en los cuales se puede ver la aplicación de Agentes Inteligentes: estos pueden organizar agendas de visitas, citas, fechas alternativas, tareas pendientes, etc. En las universidades se han desarrollado agentes que usan el correo electrónico para resolver tareas, como: planificación de clases, citas de los alumnos, agenda, etc. El "agente" recoge en el computador la petición de entrevista de un alumno, acepta y anota la cita o, si el profesor está ocupado, propone una nueva y negocia la fecha con el estudiante. En los negocios, se han comenzado a desarrollar asistentes personales para realizar inversiones, para proporcionar información especializada sobre determinados temas (económicos, jurídicos, políticos, de ocio etc.) El comercio electrónico y la publicidad son otros campos de aplicación, así como el seguimiento de las incidencias de los clientes o la realización de posibles ofertas, en el caso de que decidan utilizar los servicios de la competencia. Un Agente Inteligente, al igual que un sistema operativo no se puede llamar un programa. Una de las características que distingue a los Agentes inteligentes de los demás programas es su autonomía, y al ser autónomos son proactivos, esto quiere decir, que no sólo actúan cuando responden a una acción del usuario, sino que también actúan siguiendo sus propios objetivos; y también son persistentes “que no se pueden "apagar"; incluso aunque el usuario no esté interaccionando con ellos”; los agentes siguen funcionando, recolectando información, aprendiendo y comunicándose con otros agentes.
El afectar lo que se perciba en el futuro implica inteligencia, al menos en el sentido que se aprenda de los fallos para no volver a cometerlos en el futuro, lo cual implica adaptatividad. El aprendizaje normalmente se realizará a través de la interacción con un usuario. Y además, la percepción y acción implican comunicación, que se puede realizar con programas no-agentes o con otros agentes, lo cual puede dar lugar a sociedades de agentes. Los agentes inteligentes han tenido tres generaciones: Primera generación: Estos agentes ya existen, y básicamente se basan en hacer comparaciones de precios cuando se desea realizar una compra. Segunda Generación: Estos agentes también se pueden ver hoy en día, a diferencia de la primera generación, estos agentes aparte de comparar el precio también comparan el producto como tal. Tercera Generación: Este tipo de agentes aun no existe, pero lo que se pretende es que hagan todo el proceso de la compra, para el usuario. Un agente tiene un conjunto de propiedades las cuales los caracterizan y diferencian de los demás programas, aunque, un agente puede poseer solo algunas de estas propiedades: PROPIEDADES DE LOS AGENTES INTELIGENTES • Continuidad Temporal: El agente debe estar ejecutándose constantemente y desarrollando sus funciones, no se detiene así el usuario no este interactuando con el. • Personalidad: Tiene una personalidad creíble, bien definida, que facilita la interacción con usuarios humanos. • Autonomía: Si el agente se encuentra en un entorno cambiante es capaz de adaptarse y tomar decisiones dependiendo de su experiencia. • Sociabilidad: El agente interactúa con otros agentes e incluso con otras entidades. • Racionalidad: el agente siempre realiza “lo correcto” a partir de los datos que percibe del entorno. • Adaptatividad: Se adapta fácilmente a las indicaciones de los usuarios y a los cambios en el entorno basándose en su experiencia. • Movilidad: capacidad de un agente de trasladarse a través de una red telemática. CLASIFICACION DE LOS AGENTES INTELIGENTES Los agentes se clasifican según el entorno en el cual se encuentren:
Agentes De Reflejo Simple: Son agentes que funcionan según un conjunto de reglas codició-acción. El agente capta el estado actual del entorno en el cual se encuentra por medio de los censores, luego busca entre las reglas cual coincide con la percepción para luego ejecutar la acción conveniente. Este agente funciona correctamente solo si se toma la decisión adecuada basándose en la percepción de ambiente en un momento dado. Agentes Informados De Lo Que Pasa: Es un agente capas de ejecutar acciones basándose en percepciones y acciones ejecutadas anteriormente analizando el entorno no solo en el momento actual, también en momentos anteriores. Agentes Basados En Metas: El agente debe saber las metas que se desean alcanzar, no es suficiente solo con saber el estado actual del entorno en el cual se encuentra. El agente deberá ser capaz de analizar la situación actual del entorno con las posibles acciones que se podrían ejecutar y de esta manera seleccionar la acción que mas le convenga para alcanzar las metas de una manera mas sencilla. Agentes De Interfaz: Se caracteriza por su capacidad de hacer comprensible las interfaces. También denominados asistentes personales, tiene como objetivo simplificar las tareas rutinarias que realiza un usuario, por ejemplo, detectar que una noticia pueda ser importante para un usuario y comunicárselo. Agentes Móviles: Esto quiere decir que el agente puede transitar entre varias maquinas para utilizar recursos de los cuales no dispone en su propia maquina o simplemente para evitar una sobre carga de comunicación. En este tipo es principal problema es la seguridad. Agentes De Información: Su objetivo es recolectar información a través de la red , indexarla y ofrecérsela al usuario cuando realiza una consulta. Estos agentes han tenido gran acogida debido ha las grandes cantidades de información que circulan hoy por hoy en la red. Agentes Consejeros: Este tipo de agente da consejos al usuario referentes a una herramienta, o un sistema de diagnostico o ayuda. Agentes De Navegación: Estos agentes son utilizados para navegar en la red, su función principal es recordar sitios y direcciones de interés para el usuario. Agentes De Monitoreo: Estos agentes proporcionan información de manera eficaz y oportuna para el usuario, en el momento que ocurre un evento. Agentes De Recomendación: Este agente posee una base de datos con información acerca de un tópico de interés para un grupo, al hacer las recomendaciones se basan en analogías con otros usuarios de perfil similar.
ESTRUCTURA DE LOS AGENTES INTELIGENTES
La estructura tradicional de los agentes consiste de un Programa de Agente que se ejecuta sobre una Arquitectura, obedeciendo a la siguiente ecuación: Agente = Programa de Agente + Arquitectura El Programa de Agente implanta una función que mapea las percepciones del agente en un conjunto de acciones. La Arquitectura utilizada por el Programa de Agente le permitirá ejecutarse. Ésta puede variar desde un computador o algún otro hardware específico para el procesamiento de percepciones, como por ejemplo una cámara de vídeo. Para diseñar y desarrollar un pro grama de agente es necesario especificar previamente los elementos constituyentes del mismo, tales como, las percepciones que capturaran los sensores del agente así como las acciones con las cuales responderá a través de los efectores. Las metas a alcanzar y las medidas de desempeño del agente. Finalmente el ambiente en el cual operará el agente. A estos elementos se les denomina el PAMA del agente, donde PAMA es igual a Percepciones, Acciones, Metas y Desempeño y Ambiente. En la Tabla se muestran algunos ejemplos de tipos de agentes y su respectivo PAMA. Tipo de Agente
Percepciones
Acciones
Síntomas, evidencias, y respuestas del paciente Pixeles y colores
Preguntas, pruebas y tratamientos
Metas Paciente saludable reducción al mínimo costo
Ambiente
Sistema de diagnostico médico
Clasificación de escena
Clasificación correcta
Imágenes enviadas desde un satélite
Lecturas de temperatura y presión
Abrir y cerrar válvulas, ajuste de temperatura
Lograr rendimiento y seguridad
Refinería
Sistema de análisis de imágenes de satélite Controlador de Refinería
Paciente, Hospital
CONTRUCCION DE AGENTES INTELIGENTES Los Agentes Inteligentes son una clase de software con características especificas. Para llevar a cabo el desarrollo y construcción de Agentes, es recomendable utilizar métodos similares a los utilizados comúnmente en desarrollo de Ingeniería de Software y Sistemas de Información. De esto se desprende que los procesos a ejecutar son los típicos Análisis, Diseño, Implantación y Prueba. Es importante antes de describir un método que permita desarrollar y construir Agentes Inteligentes, considerar el significado del vocablo método. Método viene de la palabra griega “meta” y “odos”. “Odos” significa vía, camino o curso y “meta” significa con, alrededor, después, por lo que método sería la descripción de una vía o curso de acción a seguir para alcanzar un objetivo. Los
métodos tienen cuatro componentes: una teoría, un lenguaje, una estructura y técnicas.1 • • •
•
La teoría es una conceptualización que se adopta para describir el método, representa las abstracciones de mayor nivel sobre las que éste se basa. El lenguaje es la manera de comunicación del método. La estructura es la organización de los diferentes componentes del método. Un método debe poseer una organización secuencial de procesos, donde cada proceso está constituido por una serie de actividades, las cuales se llevan a cabo por la aplicación de técnicas. Las técnicas son procedimientos (normas, guías, indicaciones) que facilitan la realización de las actividades. La aplicación de las técnicas requiere de la utilización de herramientas.
Método de desarrollo y construcción de Agentes Inteligentes. A continuación, se presenta una propuesta de Método para el desarrollo y construcción de agentes inteligentes. Hay que dejar en claro que este no es más que un conjunto de pasos estructurados, a los cuales no se asocian herramientas específicas para la ejecución de sus pasos pues se considera que la elección de una u otra herramienta para uno u otro paso del método dependerá de las condiciones específicas del problema que se pretenda resolver, así como de los recursos con los que se cuente. El Método que se propone consta de cinco Procesos básicos, que se desglosan en diversas actividades. Dichos procesos son: 1. Proceso de Definición del Problema del Agente 2. Proceso de Adquisición y Representación del conocimiento 3. Proceso de Diseño del Agente 4. Proceso de Implantación del Agente 5. Proceso de Prueba del Agente. Proceso 1. Definición del Problema del Agente El objetivo de este proceso es lograr establecer una conceptualización amplia y clara del problema que se pretende resolver con el uso de agentes inteligentes, y el mismo se divide en las siguientes actividades: Actividad 1.1. Identificación del Problema Actividad 1.2. Análisis del Problema Actividad 1.3. Construcción del modelo Conceptual de la situación
1
Ramos Esmeralda. Método de Adquisición de Conocimiento en Grupo. Trabajo de Ascenso a la categoría de Agregado. Escuela de Computación. Facultad de Ciencias. Universidad Central de Venezuela. 1.998
Proceso 2. Adquisición y Representación del Conocimiento En base al modelo conceptual obtenido en el proceso previo, este proceso persigue generar una representación de este modelo conceptual en términos de conocimiento, la cual sea transportable al medio computacional. Las actividades que conforman este proceso son: Actividad 2.1 Adquisición del conocimiento Tarea 2.1.1. Definición de las Percepciones Tarea 2.1.1. Definición de la Acciones Tarea 2.1.3. Definición de Objetivos y Metas Tarea 2.1.1. Definición del ambiente Actividad 2.2. Representación del Conocimiento Tarea 2.2.1. Análisis del conocimiento Adquirido Tarea 2.2.2. Selección del esquema de representación Tarea 2.2.3. Representación del Conocimiento Proceso 3. Diseño del Agente Este proceso corresponde con el diseño de la solución en el método clásico de diseño y construcción de sistemas de información, y en el se pretende generar un modelo del agente, que sea computacionalmente aplicable. Para lograr esto, el proceso se divide en las siguientes actividades: Actividad 3.1. Diseño de la Base de Conocimiento Actividad 3.2. Diseño del motor de Inferencia o Motor de ejecución Actividad 3.3. Diseño de la Interfaz Actividad 3.4. Diseño del Lenguaje de Comunicación Proceso 4. Implantación del Agente Este proceso está enfocado en la construcción computacional del agente inteligente diseñado, que no es más que la implantación del diseño obtenido en el proceso previo. Las actividades que permitirán lograr este objetivo son: Actividad 4.1. Análisis y Selección de Herramientas de Implantación Actividad 4.2. Implantación del Agente Tarea 4.2.1 Implantación de la Base de Conocimiento Tarea 4.2.1 Implantación del Motor de Inferencia o de ejecución Tarea 4.2.1 Implantación de la Interfaz Tarea 4.2.1 Implantación de la Comunicación Proceso 5. Prueba del Agente Se puede decir que este proceso representa una validación del agente construido, en el cual se verifica y ajusta el funcionamiento de dicho agente, en función de los requerimientos y la situación analizada en el primer proceso planteado. Para lograr esta validación, se definen las siguientes actividades: Actividad 5.1. Diseño de Pruebas Actividad 5.2. Aplicación de pruebas Actividad 5.3. Depuración del Agente
ENTORNOS DE APLICACIÓN Administración de Redes y Sistemas: Los agentes pueden ser utilizados para mejorar los software de gestión y administración de sistemas, ayudando en el filtrado de información y en la ejecución de acciones automáticas bajo un alto nivel de abstracción. Correo y Mensajería: El software de manejo de mensaje ha existido por algún tiempo y es un área donde actualmente se utilizan los agentes inteligentes. Los usuarios desean priorizar sus mensajes y quieren que con el manejo del tiempo esto cada vez se haga mas y mas automático. Recuperación y Manejo de Información: En esta área no solo se busca la información, los agentes también ayudan a categorizarla y priorizarla. Comercio Electrónico: Los agentes pueden ir de compras tomando las especificaciones del usuario y regresando con recomendaciones de compra que cumplan estas especificaciones. También pueden actuar como agentes de ventas y primores de productos. FUTURO DE LOS AGENTES INTELIGENTES. Hoy en día las investigaciones se centran mas hacia los Agentes Inteligentes ya que cada vez las aplicaciones se hacen mas avanzadas y complicadas para los usuarios. Con los agentes lo que se busca es una ayuda que le permita al usuario desenvolverse cada vez mejor con las aplicaciones. Para analizar el futuro de los agentes se deben tener enguanta aspectos como: Los Computadores: Se busca que los Agentes Inteligentes cada día se han capaces de adaptarse al entorno dinámico que genera la constante evolución de los computadores y el desarrollo de Internet. Los Usuarios: Hoy en día los Agentes solo son usados por investigadores, se espera que en un futuro no muy lejano todos los usuario de computadores utilicen agentes inteligentes ya que estos harán mas amigable y sencilla la interacción con sus PC e Internet.
REFLEXION ACTIVIDADES Inteligencia Artificial Guía de Ejercicios para el Certamen 1. 1. Capitulo 1: Introducción y Motivación. 1. Defina con sus propias palabras “Inteligencia Artificial”.
2. Nombre los cuatros enfoques de la “Inteligencia Artificial”, y explique cada uno de ellos brevemente. 3. ¿En qué consiste el Test de Turing? 4. Indique algunos hechos relevantes de la historia de la IA. 5. Nombre 3 Aplicaciones de la IA. 6. Desarrolle la hipótesis del Sistema de Símbolos Físicos que dice: “Un sistema de símbolos físicos tiene los medios suficientes y necesarios para la acción inteligente”. 7. Escriba, de manera sucinta, las biografías de los padres de la inteligencia artificial, debe incluir entre otros a: Marvin Minsky, John McCarthy, Claude Shannon , Nataniel Rochester, Allen Newell y Herbert Simon. 8. Lea el artículo original (Turing, A.M. Computing machinery and intelligence. Mind, 59: 433-460. 1950.) de Alan Turing sobre la IA. En este articulo Turing predijo que para el año 200 es probable que una computadora tenga 30% de oportunidad de aprobar una prueba de Turing con duración de cinco minutos aplicada por un evaluador inexperto. ¿Considera razonable lo anterior? 9. Son bien conocidos ciertos tipos de problemas inmanejables por los computadores, así como otros que probablemente evidencian que ningun computador puede tomar decisiones. ¿Significa esto entonces que la IA es un imposible?. 10. Algunos consideran que la percepción y las habilidades motoras son la parte más importante de la inteligencia y que las capacidades de “alto nivel” son más bien parásitas (meros agregados a las capacidades básicas). Es un hecho que la mayor parte de la evolución y del cerebro se han concentrado en la percepción y las habilidades motoras, en tanto se ha encontrado que en la IA tareas como juegos e inferencia lógica resultan más sencillas, en muchos sentidos, que percibir y actuar en el mundo real. ¿Consideraría usted que ha sido un error la concentración tradicional de la IA en las capacidades cognoscitivas de alto nivel?. Unidad Práctica 1 1 Desarrollar un mapa conceptual sobre inteligencia artificial, donde se establezcan los conceptos y sus relaciones. 2 Desarrollar los métodos de búsqueda en profundidad y en anchura en un grafo dirigido. Por ejemplo, usar un mapa de carreteras e ir de una ciudad a otra. 3 Resolver problemas de juegos clásicos de la IA, empleando un lenguaje simbólico: gato, damas chinas, el agente viajero, misioneros y caníbales, el
problema de las jarras. (Si se emplea Jess, se pueden implementar en el algún sitio servidor WEB).
2. Capítulo 2: Agentes Inteligentes. 1. Defina con sus palabras un Agente Inteligente. Dentro de qué enfoque de la IA se circunscribe los Agentes Inteligentes. ¿Por qué? 2. Nombre y explique los elementos de un Agente Inteligente y sus Interacción. 3. Mencione y explique al menos 5 características de los Agentes. De ejemplos. 4. ¿Cuál es la estructura de un Agente Inteligente? 5. ¿En qué consiste el análisis PAMA? 6. Desarrolle un análisis PAMA de un Agente de un sistema medidor de los ritmos cardiacos de un paciente Desarrolle un análisis PAMA de un Agente buscador de Internet. 8. Desarrolle un análisis PAMA de un Operador de Teléfono automático. 9. Mencione y explique 3 tipos de agentes. ¿En qué se diferencian? 10. Mencione y explique 4 propiedades de los ambientes. 11. Analice el ambiente de los puntos 6, 7 y 8.
3. Capítulo 3: Complejidad de los problemas 1. Desarrolle un análisis de complejidad detallado del peor caso (O-grande) del algoritmo de ordenamiento burbuja. 2. Señalar cuál es la complejidad de T1(n) = 3nlogn, T2(n) = 2n +n3 +25 y T3(n,k) = k +n con k · n. Ordenar de menor a mayor las complejidades resultantes. Desarrollar una tabla en el que indique el tiempo de ejecución requerido en una maquina capaz de ejecutar 109 pasos de programa por segundo (1000 MIPS) para T1, T2 y T3. 3. Explique en cuál es la diferencia entre problema abierto y cerrado. 4. Explique en qué consiste las clases P, NP y NP completo. 5. Señale y explique 3 problemas NP. ¿Por qué se consideran problemas NP?
Certamen #3. Pregunta para la Casa.
1. Forma de entrega Ud. deberá elaborar un informe en el que se explique claramente cada una de las preguntas que se presentan a continuación, en forma INDIVIDUAL. Además deberá colocar los programas más importantes por ud. Desarrollados en el informe. El informe deberá ser entregado a más tardar el día “ “ forma impresa y vıa e-mail, además deberá enviar los programas desarrollados. Los archivos deberán comprimirse con el formato nombrealumno.zip o nombrealumno.rar. Esta pregunta tendrá el 50% del valor del certamen final.
2. Formulación del Problema
La empresa PUERTO DECOM-UV lo ha contratado a ud. para analizar, diseñar e implementar una solución para el siguiente problema: La empresa PUERTO DECOM-UV tiene que administrar M muelles cada una con capacidad para Km, m = 1::M buques, es decir Ki es el numero de sitios en cada muelle. El objetivo del problema que ud. debe resolver consiste en realizar una planificación naviera de manera tal que los buques descarguen su mercaderíıa de manera que el costo sea mínimo para el empresa. Se debe tener en cuenta las siguientes consideraciones: 1. Cada buque posee una capacidad de carga Cl (en Toneladas), l = 1::N, donde N es el número total de buques. 2. Cada sitio (i; j), donde i = 1::Km es el índice del sitio ubicado en el muelle j = 1::M, puede recibir buques hasta de una capacidad m´axima de Si j . 3. Cada sitio posee un costo de desembarco de Pi j , i = 1::Km, j = 1::M por cada Tonelada de carga. 4. La planificación es diaria y la estadía es por hora. El d´ıa va desde las 8:00 hasta las 20:00 horas, es decir, 12 horas continuas. 5. Cada buque puede reservar sólo horas continuas, enteras y el máximo es siempre 12horas. 6. La información se ingresa por medio de un archivo de texto y tiene los siguientes campos: Nombre, Capacidad de carga, horas de reserva. Ejemplo: Nombre Capacidad Horas buque 1 10000 3 buque 2 20000 5 buque 3 15000 2
3. Preguntas a desarrollar 1. Desarrollar el modelo matemático identificando claramente la función de costo a minimizar. Indicar todas las restricciones del problema. Definir claramente la variable que contendrá la información de asignación. 2. Dada las siguientes condiciones: a) Número de buques: N = 50 b) Número de Muelles M = 3 c) Número de sitios por muelle Km = K = 4 Generar la Matriz Si j de tamaño 4£3 con números aleatorios entre 10000 y 90000, generar una matriz Pi j de tamaño 4£3 con números aleatorios entre 0 y 10000. Generar un archivo llamado Buques.txt generada
aleatoriamente con la información mostrada en la tabla anterior, debe respetar los rangos de cargas y hora. Mostrar las matrices y archivos desarrollados y enviarlos por correo. 3. Implementar el algoritmo de Simulated Annealing que resuelva el problema. Identificar claramente cada uno de los parámetros del algoritmo y definir la función de vecindad. Explicar las funciones más importantes desarrolladas. 4. Implementar el algoritmo Genético que resuelva el problema. Identificar claramente cada uno de los parámetros del algoritmo y definir claramente los operadores genéticos (cruzamiento y mutación) utilizados además de los criterios de selección. Explicar las funciones más importantes desarrolladas. 5. Resumir los resultados obtenidos: a) Ejecutar varias veces los algoritmos y mostrar la mejor solución obtenida en cada una de ellas y el costo mínimo alcanzado. b) Graficar Costo v/s iteración de una de las ejecuciones de cada algoritmos. En el algoritmo genético agregar además el costo de la población. 6. Explicar los resultados y concluir.
4. Criterios de Evaluación Ponderación: Aspecto Puntos Informe 40 Programas 10 Cualquier copia será castigada severamente. tarea El problema del vendedor viajero, también conocido como TSP consiste en que se tienen n ciudades y el vendedor desea visitar todas las ciudades pasando por ellas una única vez al menor costo posible. Es decir se desea hacer un circuito hamiltoniano de menor costo. Se asume que todas las ciudades están conectadas entre ellas. Responder: a) El problema del TSP es de clase P o NP. Justifique. b) Dada n ciudades ¿Cuántas rutas posibles existen sabiendo que se parte de la ciudad 1 y se llega a la misma ciudad?. c) Desarrollar un algoritmo que encuentre una posible solución (No determinista). d) Desarrollar un algoritmo determinista que evalúe la solución. e) Entregue una cota superior en inferior al problema del TSP. f ) Suponiendo que existen 5, 10, 100, 500 ciudades, y que se usa un algoritmo que deba probar todas las soluciones posibles, es decir, de búsqueda exhaustiva, para encontrar la solución de menor costo. ¿Cuanto tiempo tomaría en un computador evaluar todas las soluciones, suponiendo que el algoritmo
tarda 10−3 segundos en evaluar cada solución?. Graficar. 2. Buscar un problema NP y realizar un estudio como el de la pregunta 1. (Ejemplos: time tabling, coloration de grafos, VRP, bipartición de grafos). Explique claramente en qué consiste el problema escogido. BIBLIOGRAFÍA DE LA UNIDAD Bibliografía Borrajo, D. y otros Inteligencia artificial: Métodos y técnicas. Centro de estudios Ramón Areces, 1993. Copeland, J. Inteligencia artificial. Editorial Alianza, 1996. Crevier, D. Inteligencia artificial. Editorial Acento, 1996. Dean, T.; Allen, J. & Aloimonos, Y. Artificial Intelligence: Theory and Practice. Benjamin Cummings, 1995. Ginsberg, M. Essentials of Artificial Intelligence. Morgan Kaufmann Publishers, 1993. Haton, J.P. & Haton, M.C. La Inteligencia Artificial: una aproximación. Editorial Paidós, 1991. Luger, G.F. & Stubblefield, W.A. Artificial Intelligence: Structures and Strategies for Complex Problem Solving. 2nd edition. Benjamin Cummings, 1993. McCorduck, P. Máquinas que piensan. Editorial Tecnos, 1991. Milner, W.L. Common Lisp: A tutorial. Prentice Hall, 1988. Mira, J.; Delgado, A.E.; Boticario, J.G. & Díez, F.J. Aspectos básicos de la Inteligencia Artificial. Editorial Sanz y Torres, 1995. Rich, E. & Knight, K. Inteligencia Artificial. Segunda edición. Editorial McGraw-Hill Interamericana, 1994. Russell, S. y Norvig, P. Artificial Intelligence: A Modern Approach. Prentice-Hall International, 1995. Shirai, Y. y Tsujii, J. Inteligencia Artificial: Conceptos, técnicas y aplicaciones. Editorial Ariel, 1987. Tanimoto, S.L. The Elements of Artificial Intelligence: Using Common Lisp. Computer Science Pres, 1990. Winston, P.R. Inteligencia artificial. Tercera edición. Editorial Addison-Wesley, 1994. REFERENCIAS: 1. Articulo, Agentes Inteligentes en la red, Julio 2002 No.2. 2. Revista, Intelligent Agents, julio de 1994. 3. Agentes Autónomos Inteligentes. http://www.redcientifica.com/doc/doc199903310001.html 4. http://www.ubp.edu.ar/english/organigrama/departamentos/informatica/agentes 97/Articulos/HechosFiccion/Agentes%20Inteligentes%20en%20Internet.html. 5. Los agentes inteligentes y el etiquetado en la web http://gced.com/tematema/index.cfm?id_tematema=12
Referencias Electrónicas
Advanced Computing Research Centre (ACRC). http://www.fen.bris.ac.uk/engmaths/research/aigroup/acrc.html Asociación Argentina de Inteligencia Artificial. http://www.laguia.com.ar/aaia.htm Aircenter http://www.aircenter.net/ Aphex's Website http://www.aphex.ipfox.com/ Aplicación de las calculadoras http://decsai.ugr.es/docencia/lm/lm_ac.html Artificial Intelligence group at the University of Bristol http://www.fen.bris.ac.uk/engmaths/research/aigroup/aigroup.html Bibliografía de Inteligencia Artificial http://grial.uc3m.es/docweb/ia/bibliografia.html
Segunda Unidad Capítulos Temas LOS SISTEMAS DE BUSQUEDA Introducción a los sistemas de búsquedas El papel de la búsqueda en la Inteligencia Artificial. Componentes de un sistema de búsqueda Clasificación. Búsquedas en espacios de estados Algoritmos generales de búsqueda. Estrategias de búsqueda. Búsqueda heurística Otros tipos de búsquedas
ALGORITMOS GENETICOS FUNDAMENTOS Los algoritmos genéticos son métodos de optimización de problemas basados en los mecanismos de la reproducción natural, los cuales son operaciones sobre el material genético de los organismos vivientes. Esta información genética está contenida en el núcleo de las células sexuales de las criaturas. La información genética contiene un cierto numero de cromosomas, denominados genes, que se encargan de transportar la información genética. Así, por razones obvias, los algoritmos genéticos operan sobre estructuras que están organizadas de manera similar a los cromosomas.
Como ejemplo considere el siguiente problema de optimización: Encontrar un x0 que pertenece a X tal que f es máximo en x0, donde f : X una función arbitraria de valor real, es decir f(x0)=sup f(x).
R es
Se denomina a X el espacio de búsqueda no codificado asociado al problema; f es denominada la función objetivo del problema de optimización. Considerando S un conjunto de strings y G una gramática, la cual describe la sintaxis de los strings contenidos en S, se define la función: c: X S x c(x) y la función: c': S X s c'(s) son denominadas funciones de codificación y decodificación respectivamente, si y solo si c es inyectiva y (coc')=idS ; S es denominado el espacio de búsqueda del siguiente problema alternativo codificado de optimización: Encontrar un s0 que pertenece a S tal que f' :=f'oc' es máximo en s0, es decir f'(s0)=sup[f'(s)] Un algoritmo genético es por consiguiente un método de optimización probabilístico que trata de resolver la tarea de optimización, planteada en el párrafo precedente, mediante la aplicación de operaciones genéticas. TEORIA DE LA EVOLUCION La teoría de la evolución46, fue descrita por Charles Darwin 20 años después de su viaje por las islas Galápagos en el Beagle, en el libro Sobre el Origen de las Especies por medio de la Selección Natural. Este libro fue bastante polémico en su tiempo, y en cualquier caso es una descripción incompleta de la evolución. La hipótesis de Darwin, presentada junto con Wallace, que llegó a las mismas conclusiones independientemente, es que pequeños cambios heredables en los seres vivos y la selección son los dos hechos que provocan el cambio en la Naturaleza y la generación de nuevas especies. Pero Darwin desconocía cual es
la base de la herencia, pensaba que los rasgos de un ser vivo eran como un fluido, y que los "fluidos" de los dos padres se mezclaban en la descendencia; esta hipótesis tenía el problema de que al cabo de cierto tiempo, una población tendría los mismos rasgos intermedios. Fue Mendel quien descubrió que los caracteres se heredaban de forma discreta, y que se tomaban del padre o de la madre, dependiendo de su carácter dominante o recesivo. A estos caracte res que podían tomar diferentes valores se les llamaron genes, y a los valores que podían tomar, alelos. En realidad, las teorías de Mendel, que trabajó en total aislamiento, se olvidaron y no se volvieron a redes cubrir hasta principios del siglo XX. Además, hasta 1930 el geneticista inglés Robert Aylmer no relacionó ambas teorías, demostrando que los genes mendelianos eran los que proporcionaban el mecanismo necesario para la evolución.
Fig. 5.1. Cromosoma biológico Más o menos por la misma época, el biólogo alemán Walther Flemming describió los cromosomas biológicos, descritos en la Fig. 5.1., como ciertos filamentos en los que se agregaba la cromatina del núcleo celular durante la división; más adelante se descubrió que las células de cada especie viviente tenían un número fíjo y característico de cromosomas. Y no fue hasta los años 50, cuando Watson y Crick descubrieron que la base molecular de los genes está en el ADN, ácido
desoxiribonucleico, vista en la Fig. 5.2. Los cromosomas están compuestos de ADN, y por tanto los genes están en los cromosomas.
Fig. 5.2. Ácido Desoxiribonucleico La macromolécula de ADN está compuesta por bases púricas y pirimídicas, la adenina, citosina, guanina y timina. La combinación y la secuencia de estas bases forma el código genético , único para cada ser vivo. Grupos de 3 bases forman un codon, y cada codon codifica un aminoácido; el código genético codifica todas las proteinas que forman parte de un ser vivo. Mientras que al código genético se le llama genotipo, al cuerpo que construyen esas proteínas, modificado por la presión ambiental, la historia vital, y otros mecanismos dentro del cromosoma, se llama fenotipo. No toda la cadena de ADN codifica proteínas, es decir, no todos son genes; las zonas que codifican proteínas se llaman intrones, las zonas que no lo hacen, exones. La cantidad de ADN basura aumenta desde los seres vivos más simples, como las bacterias, donde no hay nada, hasta los seres humanos, donde gran cantidad del ADN no codifica. Un gen comienza con el sitio 3' o aceptor y termina con el sitio 5' o donante. Proyectos como el del Genoma Humano tratan de identificar cuáles son estos genes, sus posiciones, y sus posibles alteraciones, que habitualmente conducen a enfermedades. Todos estos hechos forman hoy en día la teoría del neo-darwinismo, que afirma que la historia de la mayoría de la vida está causada por una serie de procesos que actúan en y dentro de las poblaciones: reproducción, mutación, competición y selección. La evolución se puede definir. entonces como cambios en el pool o conjunto genético de una población. 5.3. COMPARACIÓN CON LO CONVENCIONAL La tabla 5.1 muestra las analogías entre la evolución natural y el paradigma de los algoritmos
genéticos. EVOLUCION NATURAL Genotipo Fenotipo Cromosoma Gen Alelo Adaptación
ALGORITMO GENETICO string codificado punto no codificado string posición en string valor en cierta posición valor de la función objetivo
La representación gráfica de un cr omosoma idealizado puede ser visto en la Fig.5.3.. Por otra parte, un algoritmo genético puede ser visto solamente como un modelo simplificado del proceso de evolución sin embargo, la diferencia más importante es que la "adaptabilidad" en el mundo real no puede expresada por un valor simple. La adaptabilidad en el mundo real es un vector formado por componentes tales como: inteligencia, crecimiento o fertilidad.
Se ha mencionado que un algoritmo genético trata de resolver un problema de optimización, codificado o transformado, en reemplazo del problema real. La segunda diferencia significativa entre los métodos convencionales y los algoritmos genéticos es que los mismos no operan sobre puntos simples, sino sobre conjuntos completos de puntos (Referido como una población o generación de strings) 5.4. ALGORITMO GENETICO SIMPLE John Holland En la historia de los algoritmos genéticos es considerado su principal representante. desde pequeño, se preguntaba cómo logra la naturaleza, crear seres cada vez más perfectosAunque, como se ha visto, esto no es totalmente cierto, o en todo caso depende de qué entienda uno por perfecto. . Lo curioso era que todo se lleva a cabo sobre la base de interacciones locales entre individuos, y entre estos y lo que les rodea. No sabía la respuesta, pero tenía una cierta idea de como hallarla: tratando de hacer pequeños modelos de la naturaleza, que tuvieran alguna de sus características, y ver cómo funcionaban, para luego extrapolar sus conclusiones a la totalidad. De hecho, ya de pequeño
hacía simulaciones de batallas célebres con todos sus elementos: copiaba mapas y los cubría luego de pequeños ejércitos que se enfrentaban entre sí. En los años 50 entró en contacto con las primeras computadoras, donde pudo desarrollar algunas de sus ideas, aunque no se encontró con un ambiente intelectual fértil para propagarlas. Fue a principios de los 60, en la Universidad de Michigan en Ann Arbor, donde, al interior del grupo Logic of Computers, sus ideas comenzaron a desarrollarse y a proporcionar frutos. Además, leyendo un libro escrito por un biólogo evolucionista, R. A. Fisher, titulado La teoría genética de la selección natural, comenzó a descubrir los medios de llevar a cabo sus propósitos de comprensión de la naturaleza. De ese libro aprendió que la evolución era una forma de adaptación más potente que el simple aprendizaje, y tomó la decisión de aplicar estas ideas para desarrollar programas bien adaptados para un fin determinado. En esa universidad, Holland impartía un curso titulado Teoría de sistemas adaptativos. Dentro de este curso, y con una participación activa por parte de sus estudiantes, fue donde se crearon las ideas que más tarde se convertirían en los algoritmos genéticos. Por tanto, cuando Holland se enfrentó a los algoritmos genéticos, los objetivos de su investigación fueron dos: a) imitar los procesos adaptativos de los sistemas naturales, y b) diseñar sistemas artificiales (normalmente programas) que retengan los mecanismos importantes de los sistemas naturales. Unos 15 años más adelante, David Goldberg, actual delfín de los algoritmos genéticos, conoció a Holland, y se convirtió en su estudiante. Golberg era un ingeniero industrial trabajando en diseño de pipelines, y fue uno de los primeros que trató de aplicar los algoritmos genéticos a problemas industriales. Aunque Holland trató de disuadirle, porque pensaba que el problema era excesivamente complicado como para aplicarle algoritmos genéticos, Goldberg consiguió lo que quería, escribiendo un algoritmo ge nético en un ordenador personal Apple II. Estas y otras aplicaciones creadas por estudiantes de Holland convirtieron a los algoritmos genéticos en un campo con base suficientemente aceptada para celebrar la primera conferencia en 1985 ICGA´85. Tal conferencia se sigue celebrando bianualmente. Anatomía Los algoritmos genéticos son métodos sistemáticos para la resolución de problemas de búsqueda y optimización que aplican a estos los mismos métodos de la evolución biológica: selección basada en la población, reproducción sexual y mutación. Los algoritmos genéticos son métodos de optimización, que tratan de resolver un conjunto de problemas que se ha contemplado anteriormente, es decir, hallar (xi,...,xn) tales que F(xi,...,xn) sea
máximo. En un algoritmo genético, tras parametrizar el problema en una serie de variables, (xi,...,xn) se codifican en un cromosoma. Todas los operadores utilizados por un algoritmo genético se aplicarán sobre estos cromosomas, o sobre poblaciones de ellos. En el algoritmo genético va implícito el método para resolver el problema; son solo parámetros de tal método los que están codificados, a diferencia de otros algoritmos evolutivos como la programación genética. Hay que tener en cuenta que un algoritmo genético es independiente del problema, lo cual lo hace un algoritmo robusto, por ser útil para cualquier problema, pero a la vez débil, pues no está especializado en ninguno. Las soluciones codificadas en un cromosoma compiten para ver cuál constituye la mejor solución50. El ambiente, constituido por las otras camaradas soluciones, ejercerá una presión selectiva sobre la población, de forma que sólo los mejor adaptados 51 sobrevivan o transmitan su legado de material genético a las siguientes generaciones, igual que en la evolución de las especies. La diversidad genética se introduce mediante mutaciones y reproducción sexual. En la Naturaleza lo único que hay que optimizar es la supervivencia, y eso significa a su vez maximizar diversos factores y minimizar otros. Un algoritmo genético, sin embargo, se usará para optimizar habitualmente sólo una función, no diversas funciones relacionadas entre sí simultáneamente. Este tipo de optimización, denominada optimización multimodal, también se suele abordar con un algoritmo genético especializado. Por lo tanto, un algoritmo genético consiste en lo siguiente: hallar los parámetros de los cuales depende el problema, codificarlos en un cromosoma, y luego aplicar los métodos de la evolución: selección y reproducción sexual con intercambio de información y alteraciones que generan diversidad. 5.3.2. Codificación de Variables Los algoritmos genéticos requieren que el conjunto se codifique en un cromosoma. Cada cromosoma tiene varios genes, que corresponden a sendos parámetros del problema. Para poder
trabajar con estos genes en una computadora, es necesario codificarlos en una cadena, es decir, una cadena de símbolos (números o letras) que generalmente están compuestas de ceros y unos. El número de bits usado para cada parámetro dependerá de la precisión que se quiera en el mismo o del número de opciones posibles (alelos) que tenga ese parámetro. Hay otras codificaciones posibles, usando alfabetos de diferente cardinalidad; sin embargo, uno de los resultados fundamentales en la teoría de algoritmos genéticos, el teorema de los esquemas, afirma que la codificación óptima, es decir, aquella sobre la que los algoritmos genéticos funcionan mejor, es aquella que tiene un alfabeto de cardinalidad 2. Aquí se está codificando cada parámetro como un número entero de n bits. En realidad, se puede utilizar cualquier otra representación interna: bcd, código Gray y codificación en forma de números reales, por ejemplo. La mayoría de las veces, una codificación correcta es la clave de una buena resolución del problema. Generalmente, la regla heurística que se utiliza es la llamada regla de los bloques de construcción, es decir, parámetros relacionados entre sí deben de estar cercanos en el cromosoma. En todo caso, se puede ser bastante creativo con la codificación del problema, teniendo siempre en cuenta la regla anterior. Esto puede llevar a usar cromosomas bidimensionales, o tridimensionales, o con relaciones entre genes que no sean puramente lineales de vecindad. En algunos casos, cuando no se conoce de antemano el número de variables del problema, caben dos opciones: codificar también el número de variables, fijando un número máximo, o bien, lo cual es mucho más natural, crear un cromosoma que pueda variar de longitud. Para ello, claro está, se necesitan operadores genéticos que alteren la longitud. Normalmente, la codificación es estática, pero en casos de optimización numérica, el número de bits dedicados a codificar un parámetro puede variar, o incluso lo que representen los bits dedicados a codificar cada parámetro. Algunos paquetes de algoritmos genéticos adaptan
automáticamente la codificación según convergen los bits menos significativos de una solución. 5.5. PROCEDIMIENTO GENERAL La forma general de un algoritmo genético está constituida por las líneas asociadas al siguiente algoritmo: Algoritmo 1 t := 0 ; Calcular B0 ; WHILE la condición de salida no se cumpla DO Begin Bt+1 := ? (Bt) ; t := t+1 End es denominado operador de transición probabilístico que se encarga de calcular la siguiente generación Bt+1 partiendo de la generación anterior Bt y tomando en cuenta la adaptabilidad de sus componentes. Normalmente es una composición de varios operadores probabilísticos. Comparado con los métodos tradicionales de optimización, tales como los métodos de Newton o del gradiente descendente se puede establecer las siguientes diferencias significativas: a) Los algoritmos genéticos manejan versiones codificadas asociadas a los parámetros pertenecientes a los problemas, en reemplazo de los parámetros originales de los mismos. b) Mientras que casi todos los métodos convencionales se encargan de realizar la búsqueda de un punto simple, los algoritmos genéticos siempre operan sobre una población completa de puntos (strings). Esto contribuye a que los mismos sean robustos, reconociéndose el hecho de que proporcionan la opción de tomar el optimo global, reduciendo el riesgo de quedar atrapado en un punto estacionario local. c) Los algoritmos genéticos normales no utilizan ninguna información auxiliar acerca del valor de la función objetivo tales como las derivadas. d) Los algoritmos genéticos utilizan operadores de transición probabilísticos, los métodos convencionales para la optimización continúan aplicando exclusivamente operadores de transición determinísticos. Desde este punto de vista, está claro que los algoritmos genéticos son métodos robustos, los cuales pueden, debido a su generalidad, ser aplicados a un rango amplio de diferentes problemas
de optimización. Por otra parte, los algoritmos genéticos pueden ser de rendimiento débil debido a que desagregan toda la información que puede ser útil. En el resto del texto, se considera la clase más simple de un algoritmo genético la cual es ampliamente utilizada en la solución de problemas de optimización continuos como también en la optimización discreta. Esto está caracterizado como un algoritmo genético simple que opera sobre strings de tamaño fijo n (no necesariamente binario). 5.6. ALGORITMO GENETICO CON OBJETOS DE TAMAÑO FIJO Un Algoritmo Genético simple, el cual opera sobre strings de tamaño fijo, incorpora los siguientes métodos en su operador de transición ( ): a) Selección: Los individuos con adaptabilidad alta son favorecidos en el proceso de reproducción. De manera concreta, los individuos con adaptabilidad alta tienen una gran probabilidad de sobrevivir y de reproducirse por cuenta propia. b) Emparejamiento52: Se denomina así al método de mezclar la información genética de dos individuos; este mecanismo ha contribuido bastante a la adaptación rápida de las especies que se reproducen sexualmente. c) Mutación: En la evolución real el material genético puede ser cambiado randomicamente por reproducción errónea u otras deformaciones de los genes (ej. radiaciones gama). En los Algoritmos Genéticos la mutación puede ser realizada como una deformación randómica de los strings con una cierta probabilidad. Algoritmo 2 Sea m el tamaño de la población t :=0 Calcular la población inicial B=(b1,0,... , bm,0) ; WHILE no se cumpla la condición de parada DO Begin FOR i=1 TO m DO Begin Seleccionar un elemento g de Bt; IF Random[0,1]<=Pc THEN Aparear g con un elemento individual de Bt ; Mutar g bi,t+1 :=g End t :=t+1 End Este algoritmo contiene los mecanismos de selección, mutación y apareamiento.
5.6.1. Selección La selección es el componente que guía el algoritmo hacia la solución de un problema. Puede ser un mecanismo que favorece a los individuos o elementos más aptos con desventajas para los menos aptos. Puede ser una operación determinista, pero, en la mayoría de las implementaciones, tiene componentes aleatorios. Una variante, la cual es muy popular, constituye el siguiente esquema, donde la probabilidad de elegir un cierto elemento es proporcional a su capacidad de adaptación. Esto puede ser considerado como un experimento randómico con: P[bj,t sea seleccionada] :=f(bj,t )/ f(bk,t ) (Ec. 4.1.1) Por supuesto esta fórmula solamente tiene sentido si todos los valores adaptables son positivos. Si este no es el caso, se puede aplicar una transformación apropiada. Este experimento aleatorio es, en algún sentido, un juego de ruleta en aquellos casos en los cuales la probabilidad para seleccionar un cierto individuo o elemento depende de su adaptabilidad. Puede ser necesario utilizar una función de adaptabilidad transformada en la selección. Luego las probabilidades pueden ser expresadas como: P[bj,t sea seleccionada] := f(bj,t )/ f(bk,t ) (Ec. 4.1.2) donde : R R+ es una función no decreciente. La función puede también ser utilizada para acelerar la acumulación de individuos o elementos con gran capacidad de adaptación. Considere por ejemplo que (x)=xp con p>1, en este caso llega a ser, dependiendo de p, menos probable la selección de strings menos adaptables. La formulación algorítmica del esquema de selección (Ec. 4.1.1) puede ser escrito como sigue (de manera análoga puede escribirse el caso asociado a la (Ec. 4.1.2)) Algoritmo 3 x := Random[0,1]; i :=1 WHILE i
En la reproducción sexual, el material genético de dos padres es mezclado durante el proceso de meiosis. Este mecanismo es una herramienta bastante poderosa para introducir nuevo material genético, el cual es llevado a cabo con la probabilidad más alta, o con la capacidad de adaptación más alta que la de sus padres o predecesores. Muchas investigaciones demostraron que el apareamiento es la razón por la cual las especies que se reproducen sexualmente se hayan adaptado más rápido y de mejor forma que las especies que se reproducen asexualmente. Básicamente, el apareamiento es el intercambio de genes entre los cromosomas de los dos padres. En la meiosis53 real esto es, de manera simple, el intercambio de partes de los cromosomas. En la investigación sobre algoritmos genéticos con objetos de tamaño fijo el apareamiento puede, en el caso más simple, ser realizado como el corte de dos strings en una posición aleatoriamente elegida y el intercambio de las partes. Este proceso es visualizado en la Fig. 5.4.
Se denomina a este proceso apareamiento en un punto, y responde al siguiente algoritmo: Algoritmo 4 pos :=Random{1,...,n-1} ; FOR i := 1 TO pos DO Begin Child1[i] := Parent1[i] ; Child2[i] := Parent2[i] ; End FOR i := pos +1 TO n DO Begin Child1[i] := Parent2[i] ; Child2[i] := Parent1[i] ; End El apareamiento en un punto es un método simple y frecuentemente utilizado para los algoritmos genéticos que operan sobre strings binarios. Para otros problemas, con diferentes códigos, pero
también para el caso de strings binarios, existen diferentes técnicas de apareamiento, tales como: a) Apareamiento de N-puntos : en lugar de solo un punto N puntos de corte son elegidos de manera aleatoria. Cada segunda sección es intercambiada. b) Apareamiento Segmentado: similar al apareamiento de N-puntos con la diferencia que el numero de puntos de corte puede variar. c) Apareamiento Uniforme: Para cada posición se decide de manera aleatoria como intercambiar las posiciones. d) Apareamiento con permutación: Primero es aplicada una permutación elegida de manera aleatoria a los dos padres, luego es aplicado el apareamiento de N-puntos a los parientes permutados, finalmente, los hijos permutados son transformados con la permutación inversa. 5.6.3. Mutación El ultimo ingrediente del algoritmo genético simple es la mutación. En el mundo real, la mutación hace referencia a la deformación randómica de la información genética de un individuo mediante una radiación radioactiva u otras influencias similares. En la reproducción real es la probabilidad de que un cierto gen mutado sea casi igual para todos los genes.
De esta manera se puede utilizar la binario S: Algoritmo 5 FOR i :=1 TO n DO IF Random[0,1]
siguiente técnica de mutación para un string
apareamiento, la elección de la técnica de del problema. A continuación se menciona probabilidad PM se niega un bit elegido de
aleatoria. b) Inversión: Con probabilidad PM el string completo es invertido bit a bit. c) Selección Aleatoria : Con probabilidad PM el string es reemplazado por otro elegido de manera aleatoria. 5.7. ALGORITMO GENETICO GENERAL En base a los operadores genéticos descritos en la anterior sección, se muestra a continuación la estructura general de un algoritmo genético en términos de su estructura básica, la modificación para su implantación como procedimiento computacional depende del análisis y diseño de la solución a un problema determinado. Algoritmo 6 t :=0 Calcular la población inicial B=(b1,0,... , bm,0) ; WHILE no se cumpla la condición de parada DO Begin FOR i=1 TO m DO Begin (* selección proporcional *) x := Random[0,1]; l :=1 WHILE l
FOR i :=1 TO n DO IF Random[0,1]
manera aleatoria se generan 20 rutas diferentes generadas al azar. A continuación se reproducen esas ristras; esto significa que a partir de cada una se generan 10 más, a la primera de ellas se la nombra como la ristra “padre” y en cada una de las otras 9 se permutan dos ciudades al azar. Por ejemplo, si una de las 20 ristras generadas de manera aleatoria contiene un orden concreto de visita de las ciudades: 20 3 4 1 15 16 18 2 5 6 7 11 12 8 9 10 19 17 14 13, entonces la primera de las 10 ristras que se llamaran “hijas” será ella misma y la segunda será la misma, excepto que se habrá permutado 2 elementos (por ejemplo la posición del 20 por la del 4), obteniendo así una ristra diferente que implica una nueva manera de recorrer las ciudades. Y las demás análogamente a esta segunda. Se tenia 20 ristras “padres”, de cada una se ha generado 10 ristras hijas diferentes, por tanto se tienen 200 ristras diferentes. Ahora es posible calcular la distancia que supondría recorrer las ciudades en cada una de estas 200 rutas ordenadas. Con este método se hará solamente 200 operaciones frente a las 2.432.902.008.176.640.000 que tendrían que hacerse si se evaluara todas las posibilidades. De estas 200 rutas se opta por las 20 mejores, esto es, con las ristras que generaban las 20 maneras más rentables (en distancia) para realizar el viaje. Con estas 20 se repetirá el proceso de generar otras 200, de ellas se calcula de nuevo sus 20 mejores y se puede repetir toda esta operación (es lo que se llama el algoritmo genético) todas las veces que se quiera. Se puede comprobar cómo en cada “reproducción” y selección de las 20 mejores ristras van apareciendo mejores resultados que en la anterior reproducción. Al terminar del programa, de esas 20 mejores ristras solamente se elige la mejor, considerándola como resultado final. Ésa es una buena aproximación a la solución. Pero, ¿cómo saber si esa aproximación es buena, si lo único que se ha realizado es evaluar un cierto número de ristras que es mucho menor al número de maneras posibles de visitar todas las ciudades? Y si se repite el algoritmo, por decir 50 veces, ¿no sería menos complicado considerar 50x200=10000 ristras y evaluar las distancias de cada una de ellas prescindiendo de los operadores genéticos de mutación y reproducción?
Las dos preguntas son ampliamente razonables. Es molestoso considerar, si se repite el algoritmo genético 50 veces y por lo tanto analizar 50x200=10000 ristras aleatorias, que la mejor solución no pueda acercarse a la manera de recorrer las ciudades por el camino más corto, ya que el número de maneras distintas es 2.432.902.008.176.640.000 y solamente se ha considerado 10.000 de ellas. Por otra parte, también se hace la pregunta acerca de la evaluación “genética” de esas 10.000 ristras y la razón por la que no se considera una evaluación secuencial, cosa que ahorraría tiempo. Continuando con las consideraciones, al igual que un padre se parece a su hijo, las ristras generadas se parecen a las ristras “padres” que se usaron para generarlas. Cuando se generaron las 20 primeras ristras, éstas contaban con una posibilidad de ser buenas o malas aleatoriamente, pero las ristras “hijas” que generan una ristra buena tienen tendencia a ser en su mayoría buenas, y así, al ir seleccionando las mejores, es posible recorrer adecuadamente el espacio de las soluciones buenas y no es lo mismo generar 10.000 ristras aleatoriamente y buscar el mejor resultado. Con este ejemplo se ilustra los algoritmos genéticos. La eficiencia de éstos depende de la elección correcta, a priori desconocida, del número de iteraciones, ristras seleccionadas inicialmente, ristras hijas que genera cada ristra padre, etc. Se puede decir que los algoritmos genéticos resuelven a diario problemas similares al del viajante. 5.9. PROGRAMACION GENETICA La segunda clase importante de algoritmos genéticos está comprendida bajo el termino de programación genética. Esto constituye un enfoque genético bastante importante para el problema de la inducción de programas en la inteligencia artificial. La inducción de programas es el método para enseñar a una computadora como resolver un problema sin que el mismo sea programado de manera explícita. Esto es, en algún sentido, un problema inverso, en lugar de decirle a una computadora como resolver de manera explícita un problema, se presenta el problema a la computadora y se le alienta para encontrar un programa que resuelva el problema.
La idea de aplicar los algoritmos genéticos al problema de la inducción de programas puede ser atribuida a J. Holland. Otra fuente importante de investigación fue realizada por J.R. Koza quien introdujo el término "programación genética". Obviamente, la aplicación de los algoritmos genéticos a programas completos requiere mas o menos modificaciones significativas a la maquinaria genética discutida previamente. La más importante es la referida a los strings de tamaño fijo. Aunque es posible restringir el tamaño de un programa a un cierto valor, no se puede preservar la universalidad de un lenguaje de programación si se restringe el tamaño de los programas a un numero determinado de instrucciones. En lo que sigue se asume que la sintaxis de un lenguaje de programación esta proporcionada en la forma Backus -Naur (BNF) la cual describe la sintaxis de los lenguajes de manera recursiva. Un programa, escrito en dicho lenguaje, puede ser considerado como un árbol55 que puede ser escrito como una lista anidada. El proceso de reescribir un programa como un árbol o una lista anidada puede ser realizado para cualquier lenguaje de programación utilizado de manera común tal como: C, FORTRAN, PASCAL o LISP. Es fácil ver que la implementación es menos dificultosa para lenguajes restringidos, los cuales solo permiten recursiones, tales como el LISP. 5.9.1. Elección del Lenguaje de Programación Es posible reescribir cada programa como una lista o un árbol, pero esta puede ser una tarea crucial para muchos de los lenguajes de programación procedimentales comunes. En muchas aplicaciones y tratamientos teóricos es utilizado el lenguaje LISP. Los programas LISP son listas anidadas fáciles en su manejo, debido a que no es necesaria su reescritura. Otro aspecto importante a considerar es cual subconjunto del lenguaje se podría utilizar. Esta claro que no es útil en cada aplicación utilizar el conjunto completo de instrucciones que el lenguaje ofrece. Considere por ejemplo un problema en el que se tiene que aprender operaciones lógicas. Para tal caso se puede restringir solamente a las operaciones lógicas AND, OR y NOT o a un subconjunto de las mismas. Bajo la suposición de que el problema puede ser resuelto dentro del subconjunto, una elección inteligente de dicho subconjunto puede incrementar el rendimiento
de manera marcada. La razón simple es que, el espacio de búsqueda es bastante pequeño, consecuentemente esto incrementa la elección de una solución considerablemente buena. 5.9.2. Iniciación En secciones anteriores no se prestó demasiada atención en la creación de la población inicial. Se asumía implícitamente que los individuos de la primera generación podían ser generados de manera aleatoria con respecto a una cierta distribución de probabilidad. La generación aleatoria de árboles o listas anidadas es una tarea más compleja. Considere por ejemplo la BNF del siguiente lenguaje que puede ser utilizado para representar funciones lógicas ternarias: Programa :=
; := "("")" | "("")"| "("")" ; := "x"|"y"|"z" ; := "NOT" ; := "AND"|"OR" ; Obviamente, lo s elementos sintácticos de este lenguaje parecido al LISP son los paréntesis, las variables x,y y z y los operadores NOT, AND y OR. Está claro que un procedimiento, el cual crea strings con entradas randómicas a partir de este conjunto de elementos sintácticos, no es una variante buena de un procedimiento de inicialización, a causa de que la probabilidad de creación de strings sintácticamente correctos es demasiado baja. Una mejor alternativa podría constituir un procedimiento el cual está basado en el BNF del lenguaje mismo. Tal algoritmo puede ser establecido como sigue : Algoritmo BNFL Empezar con la raíz de la sintaxis (en nuestro caso el Programa). Seleccionar una alternativa de la expresión sintáctica actual de manera randómica. Llenar la alternativa y aplicar el procedimiento de manera recursiva para todas las subexpresiones atómicas de la alternativa. Fin BNFL Es comprensible, de manera intuitiva, que se deben incluir mecanismos que eviten el final de la recursión en este método. Una oportunidad común consiste en fijar una profundidad máxima y evitar alternativas no atómicas si esta profundidad es alcanzada o excedida. El siguiente ejemplo ilustra este método de manera mas clara para el caso del lenguaje definido. Ejemplo:
El punto de inicio es, por supuesto, la expresión raíz56. segunda alternativa ( ) es una expresión atómica con solo una alternativa (NOT ) tercera alternativa (NOT ( ) primera alternativa (NOT (AND ( ) primera alternativa (NOT (AND ( ) segunda alternativa (NOT (AND (y) ) ) ... y así sucesivamente 5.9.3. Programas de Apareamiento La segunda cuestión, que difiere del caso asociado a los strings de manera notable, es el apareamiento sobre la operación. Por supuesto, las listas anidadas pueden ser consideradas como strings para los cuales un apareamiento estándar puede ser aplicado sobre la operación. El problema es nuevamente que la probabilidad de generar strings sintácticamente correctos mediante esta forma es muy pequeña. Por consiguiente, es necesario encontrar una alternativa la cual preserve la correctitud sintáctica. Para este propósito, se utiliza la interpretación de los programas como árboles. Por supuesto, existen muchas interpretaciones posibles de esta clase, el enfoque que se discute es el propuesto por A. Geyer-Schulz. Un programa correcto puede derivarse de una gramática resaltada en al menos una forma (no necesariamente única). Esta derivación de árboles por si misma es utilizada luego como una representación. No es trivial proporcionar una formulación exacta del procedimiento para determinar la derivación de árboles para una expresión dada. A continuación se presenta un ejemplo simple el cual aclara los conceptos mencionados. Ejemplo: En la Fig. 5.6. se muestra la derivación de árboles de la expresión: ((x ? ? y) ? ? z), que puede ser escrito como: (OR(AND(x)(NOT(y)))(NOT(z))), en el lenguaje establecido en el anterior párrafo. Puede considerarse fácilmente que cada subarbol corresponde a una subexpresión. Las raíces de estos subarboles son denominadas etiquetas. El método más común para aparear dos expresiones,
las que pueden ser expresadas como árboles de derivación, consiste en intercambiar subarboles que empiezan con nodos iguales, es decir los cuales cuentan con etiquetas iguales. Esto garantiza que la descendencia a partir de los nodos intercambiados es correcta sintácticamente. Ejemplo 2: La figura adjunta muestra un ejemplo simple para aparear dos árboles de derivación. El resultado en forma de lista anidada es el siguiente: (AND (x) (NOT(z))) (AND(x)(OR(y)(x))) (NOT(OR(y)(x))) (NOT(NOT(z)) 5.9.4. Mutación de Programas Después de todo este trabajo preparatorio resulta comparativamente fácil proporcionar una técnica de mutación, de la manera usual, para los programas. El método más común es seleccionar aleatoriamente un subarbol del árbol de derivación y reemplazarlo por otro subarbol que fue generado aleatoriamente aplicando el mismo método discutido en conexión con el procedimiento de inicialización. Por supuesto, se debe prestar atención especial a la profundidad de este subarbol. Luego se garantiza que la correctitud sintáctica del programa no es dañada por la operación de mutación. Fig. 5.6. Árbol de derivación para (OR(AND(x)(NOT(y)))(NOT(z)))
Fig. 5.6. Árbol de derivación para (OR(AND(x)(NOT(y)))(NOT(z)))
En la Fig. 5.6. se muestra la derivación de árboles de la expresión: ((x ? ? y) ? ? z), que puede ser
escrito como: (OR(AND(x)(NOT(y)))(NOT(z))), en el lenguaje establecido en el anterior párrafo. Puede considerarse fácilmente que cada subarbol corresponde a una subexpresión. Las raíces de estos subarboles son denominadas etiquetas. El método más común para aparear dos expresiones, las que pueden ser expresadas como árboles de derivación, consiste en intercambiar subarboles que empiezan con nodos iguales, es decir los cuales cuentan con etiquetas iguales. Esto garantiza que la descendencia a partir de los nodos intercambiados es correcta sintácticamente. Ejemplo 2: La figura adjunta muestra un ejemplo simple para aparear dos árboles de derivación. El resultado en forma de lista anidada es el siguiente: (AND (x) (NOT(z))) (NOT(OR(y)(x)))
(AND(x)(OR(y)(x))) (NOT(NOT(z))
5.9.4. Mutación de Programas Después de todo este trabajo preparatorio resulta comparativamente fácil proporcionar una técnica de mutación, de la manera usual, para los programas. El método más común es seleccionar aleatoriamente un subarbol del árbol de derivación y reemplazarlo por otro subarbol que fue generado aleatoriamente aplicando el mismo método discutido en conexión con el procedimiento de inicialización. Por supuesto, se debe prestar atención especial a la profundidad de este subarbol. Luego se garantiza que la correctitud sintáctica del programa no es dañada por la operación de mutación. 5.9.5. Función de Adaptación Otra tarea no trivial en conexión con la programación genética es la definición de una función de adaptación apropiada la cual se encargue de medir cuan bien, un determinado programa, resuelve un problema. La solución de este problema depende fuertemente del problema mismo, una receta universal para definir la medida de adaptación apropiada no puede ser proporcionada de manera eficiente. Una técnica utilizada comúnmente consiste en aplicar un programa a un numero finito de pruebas de entrada para las cuales la salida deseada es conocida. Por supuesto, esos casos deben ser seleccionados de manera clara de tal forma que sean realmente representativos. Luego, el número
de casos para los cuales la salida correcta es obtenida puede ser tomada como una medida para la correctitud del programa. El siguiente ejemplo muestra un caso donde este método no es útil. Ejemplo: Función := ; := "("")" | "("")"| "("")" ; := "x"; := "/" ; := "0" | ... | "9" | ; := "+" | "-" | "*" ; Esta gramática describe un lenguaje de programación para representar polinomios con coeficientes racionales. La tarea a emprender es encontrar un polinomio de algún grado tal que corresponda a un conjunto de puntos representativos de prueba {(x1, y1),...( xn , yn)} tan buenos como sea posible. Puesto que la probabilidad de que un polinomio elegido aleatoriamente corresponda al menos a un punto de manera exacta es aproximadamente 0, el número de emparejamientos exactos son usados como medida de adaptación. Una alternativa puede ser: f(P) := ||(y1 - P (x1), ... , yn - P (xn))|| la cual puede ser minimizada, donde f es la función de adaptación del polinomio P, y || . || es una norma arbitraria sobre Rn (por ejemplo la norma euclideana). 5.10. APLICACIONES En toda ejecución de un algoritmo genético hay que decidir con qué frecuencia se va a aplicar cada uno de los algoritmos genéticos; en algunos casos, como en la mutación o el apareamiento uniforme, se debe de añadir algún parámetro adicional, que indique con qué frecuencia se va a aplicar dentro de cada gen del cromosoma. La frecuencia de aplicación de cada operador estará en función del problema; teniendo en cuenta los efectos de cada operador, tendrá que aplicarse con cierta frecuencia o no. Generalmente, la mutación y otros operadores que generen diversidad se suele aplicar con poca frecuencia; la recombinación se suele aplicar con frecuencia alta. En general, la frecuencia de los operadores no varía durante la ejecución del algoritmo, pero hay que tener en cuenta que cada operador es más efectivo en un momento de la ejecución. Por
ejemplo, al principio, en la fase denominada de exploración , los más eficaces son la mutación y el apareamiento; posteriormente, cuando la población ha convergido en parte, el apareamiento no es útil, pues se está trabajando con individuos bastante similares, y es poca la información que se intercambia. Sin embargo, si se produce un estancamiento, la mutación tampoco es útil, pues está reduciendo el algoritmo genético a una búsqueda aleatoria; y hay que aplicar otros operadores. En todo caso, se pueden usar operadores especializados. Una de las primeras aplicaciones de las técnicas evolutivas fue la reportada por Friedman, quien propuso la evolución de circuitos de control, similares a las actuales redes neuronales. Lawrence Davis propone varios ejemplos de algoritmos evolutivos con representaciones y operadores especiales para resolver problemas del mundo real. Este cambio es útil en la mayoría de los casos, pero no es fácil generalizarlo para problemas similares. a) Llaves aleatorias . Propuestas por James C. Bean, consisten de una representación llamada “Random Key Enconding” la cual se utiliza para eliminar la necesidad de operadores especiales de apareamiento y mutación codificando las soluciones con números aleatorios los cuales serán las llaves para decodificar sus valores. La propuesta es interesante, pero los resultados obtenidos con ella no han sido muy exitosos. b) GENOCOP. GEnetic algorithm for Numerical Optimization for COnstrained Problems, propuesto por Michalewicz asume puntos iniciales para comenzar la búsqueda y sólo admite restricciones lineales. Los resultados obtenidos con este algoritmo genético han sido exitosos. c) Algoritmo Genético Consistente en Restricciones. Propuesto por Kowalczyk para acotar el espacio de búsqueda previniendo la instanciación de variables que no satisfacen a las restricciones. Por lo tanto, sólo se producen soluciones factibles. d) Localización de Límites de Región Factible. Su motivación radica en que en optimización no lineal se suelen tener restricciones activas en el óptimo global, razón sugerente para explorar el límite entre la zona factible y la no-factible del espacio de búsqueda. e) Decodificadores. Consiste en que un cromosoma proporcione la manera de construir una solución factible. Cada decodificador impone una relación entre una solución factible y una solución decodificada. Propuesta por Koziel y Michalewicz. Ejercicios # 5 1. Encontrar un x0 que pertenece a X tal que f es mínimo en x0, donde f: X R es una función arbitraria de valor real, es decir f(x0)= Infimo f(x).
2. Escribir los pasos que representen un algoritmo genético general. 3. Construir un algoritmo genético para resolver el juego del tic tac toe (tres en raya). 4. Modificar el algoritmo genético de las ciudades imponiendo bloqueos entre algunas de ellas (por ejemplo que no se pueda ir directamente de la ciudad 8 a la 5 ni de la 2 a la 12 porque sus carreteras suelen estar muy frecuentadas y se tarda más). Crear un algoritmo genético que reparta los asientos de los invitados de una boda según sus preferencias, es decir cada invitado dará una lista de personas al lado de las que querría estar sentado y otra lista con las personas que no quiere que se sienten a su lado. Hay que conseguir que se cumplan en su mayoría sus preferencias 6. Construir un algoritmo genético que se utilice para el juego de las damas en un tablero de 8x8 entradas. 7. Se tiene una lista de profesores, cada uno puede impartir una o varias asignaturas, y una lista de clases con el numero de horas que debe recibir cada asignatura y se pide diseñar un algoritmo genético que reparta el horario de las asignaturas y asigne a ellas profesores de manera que no se solapen clases del mismo profesor. El problema se puede complicar si se impone restricciones como que un profesor no puede dar clase a una cierta hora, etc. 8. Explicar las razones por las cuales se utiliza la programación genética, en lugar de la programación tradicional, y en que casos es útil contar con este paradigma. 9. Construir un árbol de derivación para la siguiente expresión (a ? ? b) ? ? c. 10. Desarrollar el árbol de derivación para la expresión ((? x? y)? ? z) y luego aparearlo con el árbol (x ? ? y) . Bibliografía Daniels, R.L. & Carrillo, J.E. Beta-Robust scheduling for single-machine systems with uncertain processing times, IEEE Transactions, Volume 29, pages 977-985, 1997. Davis, L. Job Shop Scheduling with Genetic Algorithms, Proceedings of the First International Conference on Genetic Algorithms, 1986. Gideon, W. A Tutorial in Stochastic Scheduling. Editors: Chretienne, P. and Coffman, E.G. Jr. and Lenstra, J.K. and Liu, Z., Scheduling: Theory and its applications, chapter 3, pages 33-64, John Wiley & Sons, 1995. Goldberg, D.E. Genetic Algorithms in Search, Optimization, and Machine Learning, Addison Wesley, MA, 1989.
Goldberg, D.E. Genetic and Evolutionary Algorithms come of Age. Communications of the ACM, Volume 37, No. 3, pages 113-119, 1994. Holland, J.H. Adaptation in Natural and Artificial Systems. MIT Press, Cambridge MA, 1975. James C. Bean. Genetics and random keys for sequencing and optimization.ORSA Journal on Computing, 6(2):154-160, 1994. Jia, C. & Tu, F. Stochastic Single Machine Scheduling Problem with V-Shaped or Lambdashaped Optimal Sequences. Proceedings of the 35th Conference on Decision and Control, 1996. Jones, A. & Rabelo, L.C. Survey of Job Shop Scheduling Techniques, NISTIR, National Institute of Standards and Technology, Gaithersburg, MD, 1998 (on-line publication). Kowalczyk, R. Constraint Consistent Genetic Algorithms. In Proceedings of the 1997 IEEE Conference on Evolutionary Computation, pages 343-348, Indianapolis, USA, April 1997. IEEE. Koziel S. and Z. Michalewicz. A Decoder-based Evolutionary Algorithm for Constrained Parameter Optimization Problems. In T. B.ack, A. E. Eiben, M. Schoenauer, and H.-P. Schwefel, editors, Proceedings of the 5th Parallel Problem Solving from Nature (PPSN V), pages 231-240, Amsterdam, September 1998. Springer-Verlag. Lawrence D. editor. Handbook of Genetic Algorithms. Van Nostrand Reinhold, New York, 1991. Lin, Shyh-Chang, Goodman, E.D. and Punch, W.F.III. A Genetic Algorithm Approach to Dynamic Job Shop Scheduling Problem. Proceedings of the Seventh International Conference on Genetic Algorithms,1997. Matfeld, D. Evolutionary Search and the Job Shop. Heidelberg, Physica Verlag, 1995. Michalewicz, Z. Genetic Algorithms + Data Structures = Evolution Programs. SpringerVerlag, third edition, 1996. Montana, D., Brinn, M., Moore, S. & Bidwell, G. Genetic Algorithms for Complex, RealTime Scheduling, IEEE International Conference on Systems, Man and Cybernetics, Volume 3, pages 2213-2218, 1998. Morton, T.E. & Pentico, D.W. Heuristic Scheduling Systems with Applications to Production Systems and Project Management. Wiley series in engineering and technology management, Wiley-Interscience, 1993. Pinedo, M. Scheduling: Theory, Algorithms and Systems. Englewood Cliffs,Prentice Hall,N.J.,
1995. Referencias Electrónicas The Hitch-Hicker's Guide to Evolutionary Computation ftp://ftp.cerias.purdue.edu/pub/doc/EC/Welcome.html Guía resumen de computación evolutiva http://alife.santafe.edu/~joke/encore/www/ Programación por expresión genética http://www.gene-expression-programming.com/ Gramáticas evolutivas http://www.grammatical-evolution.org/ Algoritmos genéticos aplicados a clustering de KDD http://www.cs.uwa.edu.au/robvis/theses.html#CO Algoritmos genéticos http://www-cs.us.es/~delia/sia/html98-99/pag-alumnos/web12/indice.html Algoritmos genéticos y Programación evolutiva http://gal4.ge.UIUC.edu/techreps.php3 Computación evolutiva ftp://ftp.krl.caltech.edu/pub/EC/Welcome.html Algoritmos Genéticos en C++ http://kal-el.ugr.es/gags.html Biblioteca de algoritmos genéticos http://lancet.mit.edu/ga/ Código de programación genética ftp://ftp.mad-scientist.com/pub/genetic-programming/code Programación genética exhaustiva ftp://ftp.cs.bham.ac.uk/pub/authors/W.B.Langdon/biblio Página: 88
Programación genética http://www.genetic-programming.org/
Búsqueda en sistemas de juegos Tercera Unidad Capítulos Temas REPRESENTACIÓN DEL CONOCIMIENTO Y RAZONAMIENTO El papel del conocimiento en la Inteligencia Artificial. Paradigmas simbólico y conexionista . Modelos de representación Puntos de vista declarativos y normativos Aplicaciones en la ciencia e Ingeniería Representaciones basadas en lógicas El lenguaje de la lógica de predicados Extensiones de la lógica clásica Programación lógica Gestión de reglas de producción Inferencia Reglas de producción sin y con variables Introducción al aprendizaje automático de reglas. REPRESENTACION DE CONOCIMIENTO INTRODUCCION La representación constituye el núcleo de la ciencia de las computadoras. Cada pieza de código escrita es significativa para la representación de algún objeto. En la actualidad la representación del conocimiento es potencialmente investigada, de tal forma que cualquier libro que trate sobre inteligencia artificial o sistemas expertos considera a la representación del conocimiento como un resultado central. Los ingredientes básicos para la representación del conocimiento son tres: el primero está referido a un lenguaje de representación, el segundo a la capacidad de inferencia de la representación y el tercero al conocimiento del dominio. En general una representación debe de tener dos capacidades: por un lado una expresividad adecuada y por otro una eficiencia de razonamiento. La expresividad y el razonamiento le confieren al formalismo la capacidad adecuada para ser considerado como una alternativa util para la representación. Se establece, a priori la definición de los formalismos, que los criterios para juzgar una representación adecuada son tres: lo primero que hay que observar es la capacidad lógica, referida a que el formalismo sea capaz de expresar el conocimiento que se desea expresar; lo
segundo es el poderío heurístico, que se refiere a la capacidad para resolver problemas utilizando inferencias; finalmente el tercer criterio es la conveniencia de la notación, que significa la simplicidad para acceder al conocimiento y la facilidad de su entendimiento. 2.2. DEFINICIÓN La definición del concepto de representación de conocimiento se realiza desde dos puntos de vista, atómico y holístico. 2.2.1. Vista Atómica En su etimología la palabra representación viene del latín “Repraesentare” que significa: hacer aparecer como presente. Por otro lado la palabra Conocimiento deriva de la palabra latina “Gnosco” que significa: aquello que ha sido sujeto al acto de reconocimiento. Si se combinan ambos significados se tiene que: “la representación de conocimiento es hacer que aparezca como presente lo que ha sido sujeto al acto de reconocimiento”. Otra definición sostiene que la representación de conocimiento puede ser algo como la correspondencia de reglas conocidas y el estado del mundo en alguna estructura apropiada. 2.2.2. Vista Holística Esta vista corresponde al holismo que dice, él todo es mas que la suma de sus partes72. Así la representación de conocimiento es mas que solo la conjunción de los conceptos de conocimiento y representación. a) Modelo Realístico Simple Este mode lo conceptual corresponde al proceso de cognición. El dominio de interés es alguna parte (P) del mundo (W) y el resultado será una teoría acerca de dicha parte P. Un modelo realístico-simple es una abstracción extractada de lo concreto. El proceso de abstracción o construcción tiene tres fases: a) Se realiza la selección de un conjunto de datos acerca del mundo. La selección es en principio sin ninguna teoría de respaldo. b) Los datos se combinan en una estructura. c) Se refina la estructura hasta que la misma refleja al mundo concreto, lo suficientemente bien. 2
Según Aristóteles 384-322 a. C.
Ejemplo: Considere a una persona X preguntarse ¿por qué un yate anclado en un puerto no se encauza por efecto del viento?. X primero observa el yate y toma notas acerca de su forma (fase a); luego X construye un modelo a escala en una pieza de madera (fase b); en tercer lugar examina el modelo en un cubo lleno de agua y lo refina hasta que el mismo se comporte como el yate del puerto (fase c). Finalmente X entiende que una quilla grande es crucial para los movimientos del yate. b) Modelo Lógico Matemático Este modelo conceptual corresponde a la asignación de significado a la representación. El modelo lógico matemático de una teoría o realización, es una estructura para la cual todos los axiomas de la teoría son validos.
Ejemplo: Considere la teoría de cómo el yate se comporta en el agua. Un teorema de esta teoría puede ser expresado de manera muy informal como: “un yate estable tiene una quilla grande”. Una realización de la teoría son yates de madera con grandes quillas de hierro. 2.2.3. Notas Finales Sobre la base de lo observado en los dos modelos holísticos para la representación de conocimiento se puede decir que: a) El conocimiento es algo que tiene los seres humanos. Se relaciona con algún mundo W, entendido o conocido por una persona. b) La representación es un proceso, pero no necesariamente un proceso de representar conocimiento. c) El conocimiento representado es expresado en algún lenguaje 8 3L. Para hablar de conocimiento representado también se requiere que el mismo pueda ser interpretado por alguna persona. d) La representación de conocimiento es el acto de representar conocimiento. Con lo mencionado en los anteriores cuatro puntos se tiene que la representación de conocimiento involucra a: a) Un dominio del discurso, es decir algún mundo físico abstracto W. b) Un lenguaje L, en el que se representa conocimiento acerca del mundo W. c) Conexiones entre el mundo y el conocimiento representado y viceversa. d) La representación94 de conocimiento de algún mundo W, en algún lenguaje L. e) La interpretación105 del conocimiento representado. 2.3. EVOLUCION DE LOS SISTEMAS BASADOS EN CONOCIMIENTO 2.3.1. Dato El concepto de dato es, por supuesto, el concepto central en la ciencia de las computadoras. Dicha afirmación es evidente en la siguiente definición proporcionada por Eriksen, Helms y Romer en 1975: “Los datos constituyen una representación formalizada de hechos o ideas en forma tal que puedan ser comunicados o transformados mediante un proceso”. 3 4 5
En este contexto el lenguaje debe ser entendido en el sentido más amplio que sea posible. Se considera como una codificación del conocimiento. Se considera como una decodificación del conocimiento.
2.3.2. Sistema de Programación Convencional Un sistema de programación convencional consta de un conjunto de archivos, los que normalmente pueden ser utilizados por programas, además de un programa que trabaja sobre esos archivos. El programa y el conjunto de archivos están relacionados de manera cerrada.
2.3.3. Sistema de Base de Datos De manera esencial un Sistema de Base de Datos es un sistema computarizado para la acumulación de registros. Consta de una Base de Datos (BD), descrip tores de la Base de Datos y un Sistema de Administración de la Base de Datos 116, el cual es utilizado por un programa.
Una BD es una colección de archivos de datos computarizados. Los descriptores de la BD describen por ejemplo los campos que están en los archivos y la longitud de los mismos. El DBMS proporciona facilidades al usuario 127 relativos a la operación sobre los archivos. Alguna de 6
Corresponde al Data Base Management System (DBMS).
las operaciones son: adicionar y remover archivos, insertar, recuperar, actualizar y eliminar datos de los archivos existentes.
7
En este caso incluso puede ser un programa.
Mas aún el DBMS forma el control y cuidado del mantenimiento de la integridad de la BD. El sistema de BD es una entidad general que puede ser utilizado por muchos usuarios programas en diferentes conexiones. Ejemplo: Programa conve ncional para la emisión de una planilla de pagos.
2.3.4. Sistema Basado en Conocimiento Un Sistema Basado en Conocimiento (SBC) puede ser visto como la evolución de un sistema de BD. En muchos casos incluye un sistema de BD, e involucra una maquina de inferencias que opera sobre la base de conocimiento interactuando con el sistema de BD.
2.4. FORMALISMOS DE REPRESENTACION DEL CONOCIMIENTO Es útil considerar la representación de conocimiento como una combinación de estructuras de datos y procesamientos interpretativos capaces de hacer que un programa exhiba un comportamiento experto. Un sistema de inteligencia artificial necesita distintos tipos de conocimiento para comportarse inteligentemente o de modo experto. Algunos tipos son: a) Conocimiento de Objetos: donde se guardan los hechos relacionados con objetos (saber que...). b) Conocimiento de acciones y sucesos: donde se guardan los hechos sobre los sucesos ocurridos (saber que...). c) Conocimiento sobre prestaciones: donde se guardan habilidades como montar una bicicleta, nadar, jugar fútbol, etc. (saber como...).
d) Meta conocimiento: saber sobre lo que se sabe, como ejemplo conocer las limitaciones de nuestro conocimiento. 2.4.1. Redes Semánticas La red semántica fue introducida por Quillian en 1966, básicamente es un modelo de memoria humana que se encarga de capturar la semántica de las palabras y lograr uso del significado de manera parecida a los seres humanos. Se llama red semántica porque se utilizó originalmente para representar el sentido en las expresiones escritas en lenguaje natural. Desde la perspectiva de la teoría de grafos se dice que una red semántica es un grafo compuesto por nodos y arcos. Los nodos representan conceptos de palabras y los arcos se encargan de enlazar los conceptos para establecer las definiciones. Cada palabra o nodo conceptual se considera la cabeza de un plano que contiene su definición. Los enlaces en el plano representan su definición. En una red semántica existen apuntadores a supe rclases138, modificaciones, disyunciones, conjunciones y las relaciones sujeto-objeto. Los apuntadores fuera del plano hacen referencia a otros objetos en los cuales se definen. Una red semántica distingue dos enlaces principales: a) subclase es-un: las clases de “arriba”' están definidas en términos de conceptos generales que se asume se cumplen en todas sus subclases. b) modificadores: propiedades particulares de conceptos específicos. Ejemplo 1: Relación semántica simple que representa “Piolín es un ave”.
Ejemplo 2: Relación semántica para representar la relación entre una silla y su propietario.
8
El enlace más notable entre clases es el enlace: es-un (IS-A). A través de este enlace se establecen también relaciones jerárquicas y herencia.
Las redes semánticas también son denominadas redes asociativas, debido principalmente al carácter asociativo de los enlaces149. 2.4.2. Armazones1510 En pocas palabras se puede decir que un armazón es una estructura de datos que se encarga de representar situaciones prototípicas. Una de las ideas intuitivas detrás de los armazones, es que la memoria se basa mucho en estereotipos1611. Los sistemas de armazones razonan acerca de clases de objetos utilizando representaciones prototípicas, estas pueden modificarse para capturar las complejidades del mundo real. Los armazones son grandes trozos de información que hacen énfasis en el razonamiento por omisión (default). Constan básicamente de una estructura de datos, con la característica principal de que esta estructura puede incluir información declarativa y procedimental. Un armazón consta de un conjunto de ranuras que describen el aspecto de los objetos. Estas ranuras se llenan mediante otros armazones que describen otros objetos. Asociado con cada ranura puede existir un conjunto de condiciones que deben cumplir las entidades que vayan a llenarla. Cada ranura puede también llenarse con un va lor por defecto, de forma que, en ausencia de información 9
Conocidas también como relaciones o asociaciones.
10
En el lenguaje ingles corresponde a la palabra "frame", en algunos textos está traducido como marco, la traducción correcta nombrada por Frost corresponde a "Armadura" o "Armazón".
11
En este caso hace referencia a las propiedades típicas de los objetos.
especifica, pueda suponerse que las cosas sean lo que usualmente son. Puede también asociarse información procedimental con cada ranura. Los armazones están puestos en una jerarquía en donde los armazones de “abajo” pueden heredar los valores de las ranuras de los armazones de “arriba”. Normalmente la herencia se hace por medio de los arcos es-un (is-a). Ejemplo 1: Especificar el armazón para representar a un camión. (Camión: Armazón: (nombre camión) (es-un objeto) (color rojo) (llantas 10) ...) Ejemplo 2: Especificar el armazón para describir la silla de Eddy Armazón: SILLA Especialización de MUEBLE Numero de patas un entero (por omisión 4) Tipo de forro tela, cuero, etc. Numero de brazos 0, 1 o 2 Armazón: SILLA DE EDDY Especialización de SILLA Numero de patas 4 Tipo de forro cuero Numero de brazos 0 Armazón: Persona Nombre hilera de caracteres Dirección hilera de caracteres Edad rango entre 0 y 100 (en años) Profesión hilera de caracteres Nota: En el armazón persona se puede adicionar una ranura denominada fecha de nacimiento y un procedimiento que permita calcular la edad actual de la persona. Aquí se puede notar una diferencia sustancial de los armazones, la posibilidad de manejar conocimiento procedimental. 2.4.3. Reglas de Producción La inteligencia se asocia muchas veces con las “regularidades”' y el comportamiento inteligente parece que se ejecuta a través de reglas. Newell y Simon en los años sete nta proponen los sistemas de producción como un modelo psicológico del comportamiento humano. En este
modelo parte del conocimiento humano se representa en forma de producciones o reglas de producción. Las reglas de producción se asemejan al proceso de memoria humano: memoria a corto plazo (deducciones intermedias) y memoria a largo plazo (producciones). Normalmente las reglas de producción se ven como un formalismo en el cual se representa el conocimiento de manera simple y es el formalismo más utilizado en los sistemas expertos. El formalismo de reglas de producción debe su origen a los trabajos de Post, enriquecidos en la lingüística con los trabajos de Noam Chomsky. Una regla de producción consta de un par ordenado de símbolos, miembros izquierdo y miembro derecho, los que forman una pareja de situación–acción. Existe una amplia variedad de este tipo de sistemas de producción, desde los más simples, con un antecedente y un consecuente, hasta las más complejas de múltiples antecedentes y múltiples cons ecuentes. A cada regla de producción puede añadirse un factor de certeza probabilístico tanto al antecedente como al consecuente. En una regla de producción se pueden observar los siguientes elementos: a) Un conjunto N de nombres de objetos en el dominio b) Un conjunto P de propiedades que representan atributos de los objetos c) Un conjunto V de valores que los atributos pueden tener De manera general para representar una regla de producción se utiliza una tripleta: (objeto atributo valor). De modo formal las reglas se colocan como: P1 , P2, ..., Pm Q1 , ..., Qn, que significa: si las condiciones P1 y P2 y ... y Pm se cumplen entonces se realiza las acciones Q1 y ... y Qn. La estructura general de una regla de producción es: SI miembro izquierdo (suposición) ENTONCES miembro derecho (conclusión) Las propiedades de las reglas de producción son las siguientes: a) Modularidad. Cada regla define un pequeño y relativamente independiente pedazo de conocimiento. b) Incrementalidad. Nuevas reglas pueden ser añadidas a la base de conocimiento de manera relativamente independiente de las demás. c) Modificabilidad. Como consecuencia de la modularidad, las reglas viejas pueden ser modificadas.
d) Transparencia. Hacer referencia a la habilidad de explicar sus decisiones y soluciones Finalmente se puede decir que un sistema de producción tiene: a) un conjunto de reglas (base de conocimiento) b) un interprete de reglas o máquina de inferencia (que decide que regla aplicar, controla la actividad del sistema) c) una memoria de trabajo (que guarda los datos, metas, y resultados intermedios) Ejemplo No 1: IF: ($AND (SAME CNTXT INFECT PRIMARY_BACTEREMIA) (MEMBF CNTXT SITE STERILESITES) (SAME CNTXT PORTAL GI)) THEN: (CONCLUDE CNTXT INDENT BACTEROIDES TALLY.7) Que puede ser interpretado como: SI: la infección es una bacteremia primaria, y el lugar de cultivo es un sitio estéril y el conducto sospechoso para su entrada al organismo es vía canal gastrointestinal. ENTONCES: Existe una evidencia sugestiva de 0.7 de que la identidad del organismo sea un bacteroide. Ejemplo 2: SI Animal es-un carnívoro Y Animal color café Y Animal tiene rayas ENTONCES Animal es tigre Ejemplo No 3: SI un empleado divulga proyectos secretos. ENTONCES él viola la política de la compañía Ejemplo No 4: SI un estudiante no lee mucho (.80) ENTONCES corre el peligro de quedar desactualizado (.95) En este ejemplo puede observarse los factores de certeza probabilísticos en la suposición y en la conclusión. 2.4.4. Redes de Herencia Estructurales Como principio de la explicación se indica que Ronald J. Brachmann identifica cuatro niveles diferentes en los que se utilizan las redes semánticas: a) El nivel de implementación, en el cual las redes son vistas como estructuras de datos, con punteros y listas como primitivas. b) El nivel lógico, en el cual los operadores lógicos y predicados son primitivas, llevando a la red semántica como una variante notacional de alguna lógica. c) El nivel conceptual que enfoca sobre relaciones conceptuales y semánticas, las primitivas
en este nivel son, por ejemplo, las relaciones de casos y acciones primitivas y objetos 1712. d) El nivel lingüístico, en el cual las palabras arbitrarias y las expresiones son utilizadas como primitivas, las cuales son por tanto grandemente dependientes del lenguaje. Además Brachman argumenta que un nivel importante no es considerado en los anteriores cuatro niveles es el nivel epistemológico1813. El nivel epistemológico es una capa intermedia entre el nivel lógico y conceptual. En este nivel son formadas e interrelacionadas descripciones intencionales. El formalismo denominado red de herencia estructural se encarga de capturar el nivel epistemológico utilizando un conjunto pequeño de primitivas epistemológicas. Los principales bloques de construcción de este formalismo son los conceptos. Los conceptos son descritos por superconceptos, por roles, que son posibles relaciones a otros conceptos, y por descripciones estructurales, que se encargan de contar las relaciones entre roles. Los conceptos son en su división: a) Conceptos genéricos: destinados para denotar clases de individuos. b) Conceptos individuales: destinados para denotar individuos. La clase formadora de los conceptos puede ser dividida a su vez en: a) Conceptos definidos: completamente determinados por su descripción. b) Conceptos primitivos: parcialmente determinados por su descripción. Clase natural: que no puede ser descrita de forma exhaustiva, por ejemplo las especies de animales. Ejemplo: Taxonomía simple de conceptos
12 13
En este nivel conocidos como grafos de dependencia conceptual. Hace referencia a lo estructural o descripcional.
2.4.5. Representación Terminológica La primera implementación de las redes de herencia estructural fue KLONE1914, que evolucionó con el paso de los años y ha provocado esfuerzos de investigación substanciales en la forma de aplicaciones, trabajo teórico y el desarrollo de sistemas similares, documentados en muchos eventos y reuniones. KL-ONE ha logrado un estatus afrontado a los pocos esfuerzos en la breve historia de la IA, en un periodo significativo de tiempo (al menos seis años) y sobre un numero de proyectos, ha servido como el fundamento central para mucha de la investigación básica sobre la representación del conocimiento, y al mismo tiempo ha proporcionado soporte para la representación en un numero grande de sistemas implementados de IA. En esencia KL-ONE representa: a) las relaciones entre un concepto y sus roles, b) las relaciones entre un concepto y sus descripciones estructurales, c) la estructura interna de un rol, d) la estructura interna de una descripción estructural, e) relaciones entre partes de las descripciones estructurales y los roles.
14
Esta denominación original sufrió una variación para denominarse KL-ONE.
KL-ONE distingue entre conocimiento terminológico y conocimiento asercional. El nivel terminológico tiene que ver con un conjunto de descripciones intencionales normadas por un pequeño conjunto de operadores formadores de conceptos y sus relaciones taxonómicas, las cuales están determinadas por sus propiedades estructurales. Esas relaciones taxonómicas no tienen importancia asercional pero pueden utilizarse las descripciones para hacer aserciones acerca del mundo, y por virtud de su estructura pueden realizar inferencias adicionales. En esencia KL-ONE ha resultado sobre el interés en la funcionalidad, en la que en lugar de preguntar. ”¿Que estructuras debería mantener el sistema para el usuario?” se pregunta “¿Que es lo que exactamente debería hacer el sistema para el usuario?”. Visto desde este ángulo KL-ONE puede ser dividido en dos componentes: a) TBOX es un componente terminológico utilizado para hacer definiciones y para razonar acerca de las relaciones entre esas definiciones. b) ABOX es un componente utilizado para hacer aserciones. Mientras que el TBOX está muy bien definido, el tratamiento del ABOX en el KLONE ha sido superficial y fortuito. 2.4.6. Guiones2015 Un guión es una forma de representar una situación prototípica2116, pero en lugar de tener una descripción de un objeto, el guión describe una secuencia de eventos. A diferencia del armazón, se presenta en un contexto particular. Para describir una secuencia de eventos, el guión utiliza un conjunto de ranuras que contienen información acerca de gente, objetos y acciones involucradas en los eventos. Un guión es una estructura utilizada para guardar prototipos de secuencias de sucesos. Se pueden emplear muchos componentes diferentes para construir un guión. Algunos de los más comunes son:
15 16
Traducción de la palabra inglesa Script. En algún sentido parecido a los armazones.
a) Condiciones de Entrada: Condiciones que deben existir para que el libreto se pueda aplicar. b) Resultados: Condiciones que serán verdaderas después de que hayan ocurrido los eventos en el guión. c) Utilería: Ranuras que representan objetos involucrados en el guión. d) Papeles: Ranuras que representan agentes que realizan acciones en el guión. e) Escenas: Secuencias especificas de eventos que hacen al guión. Ejemplo: Guión que representa el viaje a un estadio de fútbol. Guión : Viaje al estadio Utilería: Automóvil Llaves Puerta automóvil Espacio de parqueo Papeles: (Roles) Dueño (propietario) Acomodador Vehículos (Valet) Condiciones de ingreso: Dueño y automóvil en punto de partida
Escena 1. ARRANQUE Dueño busca llaves Dueño abre puerta automóvil Dueño arranca automóvil Dueño pone automóvil en marcha Escena 2. CONDUCCION Dueño encuentra transito libre Dueño ingresa al trafico Dueño se dirige al estadio Escena 3. CONTACTO CON ACOMODADOR Dueño buscar primer espacio libre Dueño parquea automóvil Dueño sale del automóvil Dueño encarga al acomodador
RESULTADO: Propietario en el estadio y automóvil parqueado Ejercicios #2 1. Establecer un modelo conjunto que utilice los dos modelos holísticos observados en este capítulo.. 2. Desarrolle un método para representar conocimiento con redes semánticas a partir de los armazones. 3. Complemente su visión de las redes semánticas investigando lo referente a los sistemas de redes semánticas ARCH y SCHOLAR. 4. Construir una red semántica que represente la información relativa a una competencia ciclista. 5. Representar conocimiento con guiones para viajar de una capital departamental de Bolivia a otra, empleando el transporte adecuado (emplear costo-beneficio).
6. Empleando el modelo conjunto realístico-simple y lógico-matemático, desarrolle el marco de explicación de la geometría euclidiana. 7. Establecer las reglas necesarias para realizar el diagnóstico de evaluación de los alumnos en una determinada materia de un plan de estudios. 8. Definir una red de herencia estructural para representar el conocimiento de la burocracia (emplear la Dirección de una determinada Carrera universitaria y los diferentes procesos que realiza). Establecer roles y restricciones. 9. Elegir el formalismo adecuado para representar el conocimiento asociado a la compra de una computadora, la computadora debe ser utilizada como cliente de un sistema distribuido. 10. Construir un guión pa ra representar la ingesta de alimentos por parte de un comensal con dinero en un restaurante. Bibliografía Lucas, P. y Van der Gaag, L. Principles of Expert Systems. Addison Wesley, 1991. Brachman, R y Levesque, H. Readings in Knowledge Representation. Morgan Kaufmann, 1985. Russel, S., Norvig, P., Artificial Intelligence: A Modern Approach , Prentice-Hall, 1995. Jackson, P. Introduction to Expert Systems. Addison-Wesley, 1990 (2a. edición). Winston, P., Artificial Intelligence. Addison-Wesley (Tercera Edición) 1992. Shapiro, S.C. Encyclopedia of Artificial Intelligence. Wiley, New York (segunda edición), 1992. Is the Brain Mind a Computer Program? John R. Searle. Scientific American, Jan. 1990, pp. 2631. Could a Machine Think? Paul M. Churchland, Patricia Smith Churchland. Scientific American, Jan. 1990, pp. 32-37. On Computational Wings: Rethinking the Goals of Artificial Intelligence. Kenneth M. Ford, Patrick J. Hayes. Scientific American, Vol. 9 (4): pp. 78-83. Christopher John Hogger, Essential of Logic Programming, Oxford University Press, 1990. Referencias Electrónicas ARPA Knowledge Sharing Effort Información y programas relacionados con el ARPA Knowledge Sharing Effort, en Stanford. http://www-ksl.stanford.edu/knowledge-sharing/README.html CODE4 Entornos por descripción orientada a conceptos, en la Universidad de Ottawa. http://www.csi.uottawa.ca/~tcl/CODE4.html Description Logics Teorías y sistemas para expresar conocimiento estructurado.
http://dl.kr.org/dl/ KADS Esprit Project Metodología para el desarrollo basado en el conocimiento. http://www.swi.psy.uva.nl/projects/ CommonKADS/home.html Knowledge-Base Projects Proyectos KB alrededor del mundo; lista completada por Peter Clark. http://www.cs.utexas.edu/users/mfkb/related.html Knowledge Sharing and the Logic Group at Stanford Información sobre el KIF (Formato de intercambio de conocimiento) en Stanford. http://hpdce.stanford.edu/logic.html KQML Investigaciones sobre el conocimiento y la manipulación del lenguaje, en la Universidad de Maryland, Baltimore Country. http://www.cs.umbc.edu/kqml/ Multifunctional Knowledge Base Group Universidad de Texas en Austin. http://www.cs.utexas.edu/users/mfkb/index.html SNePS Research Group SNePS es un sistema KRR integrado totalmente y desarrollado en SUNY Buffalo. http://www.cs.buffalo.edu/pub/sneps/WWW/index.html
AUTOEVALUACION FORMATO EVALUACION ACTIVIDAD INDIVIDUAL Cada tarea individual será revisada y evaluada según esta pauta de carácter formativo, se considerarán los siguientes aspectos: Actividad Nº _____ Nota : Formativa Nombre: ________________________________________________________ Fecha: Aspectos considerados en la revisión Fecha recepción Envío archivo Presentación de los contenidos Respuesta a lo solicitado Nivel de profundidad y/o análisis Observaciones
Fecha :
PAUTA EVALUACION PRESENTACIÓN FINAL PROYECTO Nombre de los integrantes en orden de presentación:
1._____________________________________________________________________ 2._____________________________________________________________________ 3._____________________________________________________________________ 4._____________________________________________________________________ 5. ASPECTOS A EVALUAR Dominio del contenido de persona que expone en representación del grupo Exposición complementada con el uso del recurso tecnológico (presentación en PPT) Defensa del proyecto con calidad y precisión de las respuestas del expositor y/o grupo Habilidad para motivar y mantener la atención de la audiencia por parte del expositor. Coordinación grupal para antes, durante y después de la presentación. Exposición dentro del tiempo estipulado (15 minutos por grupo). Puntaje máximo 14 puntos Nota 10%
Puntaje por aspecto para cada integrante (1 a 3 puntos y 1 a 2 puntos)
1 1/ 2 / 3
2 1/ 2 / 3
3 1/ 2 / 3
4 1/ 2 / 3
5 1/ 2 / 3
1/2/3
1/2/3
1/2/3
1/2/3
1/2/3
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
Nombre del Tutor: ________________________________________________________
AUTOEVALUACION Evaluación individual de cada integrante del grupo Nombre: _______________________________________
Fecha: _____________
A continuación se presenta una serie de aspectos relacionadas con su participación en el desarrollo del curso académico Para autoevaluar su participación individual y grupal, asigne para cada aspecto un puntaje de 1 a 5. Aquellos aspectos o afirmaciones aseveraciones que no puede calificar, asigne 0 (cero) y justifique por escrito. Puntaje y su descripción: 1 2 Insuficiente Menos que regular
3 Regular
4 Bueno
5 Muy Bueno
Aspectos o afirmaciones Estuve en permanente contacto con mi grupo colaborativo. Me comuniqué con mi tutor frente a alguna emergencia, duda, etc. Acusé recibo de las comunicaciones realizadas por e-mail. Realicé las tareas que me comprometí en forma oportuna Colaboré oportunamente en la fases del desarrollo de las guías didácticas Tomé en cuenta las observaciones y sugerencias hechas por el tutor en la planificación de las actividades. Busqué otras fuentes de información (textos, URL, etc.) para el desarrollo del sitio web. Participé activamente en el desarrollo de los contenidos de la guía didáctica Participé activamente en las reuniones grupales para la realización de las actividades. Los aportes realizados a mi grupo de trabajo fueron oportunos. Mantuve una interacción respetuosa con mis compañeros de grupo y tutor. Asistí puntualmente a todas las reuniones fijadas por el grupo ¿Qué aspectos ha mejorado en sus procesos de aprendizaje
Justificación para afirmaciones o aspectos no calificadas con puntaje de 1 a 5:
Puntaje
COEVALUACION Evaluación del coordinador a su grupo o de cada integrante del grupo a un compañero
Nombre del Evaluador:___________________________ Fecha: ____________ El trabajo grupal colaborativo relaciona con la participación y aporte de cada integrante en las actividades grupales solicitadas en la guía, en aspectos como son la discusión, análisis y generación conjunta de los contenidos requeridos en los mismos, al igual que la participación activa y colaborativa en el proceso de aprendizaje. Como Integrante de su grupo de trabajo, le solicitamos evaluar el grado de participación de cada uno de los participantes, asignando un puntaje de 1 a 5 para cada una de los siguientes aspectos. Aunque esta evaluación implica apreciación personal, le solicitamos que asigne el puntaje de manera objetiva. Puntaje y su descripción: 1
2
3
4
5
Insuficiente
Menos que regular
Regular
Bueno
Muy Bueno
NOMBRE DEL PARTICIPANTE AFIRMACIONES – aspectos Asistió a las reuniones de trabajo de grupo. Mantuvo permanente comunicación con el resto de los participantes del grupo. Ayudó a aclarar dudas o confusiones en torno a los temas tratados en las actividades. Intercambió información, datos, ideas, etc. con sus compañeros de grupo durante el desarrollo de las actividades. Hizo algún aporte en el desarrollo de las actividades. Participó en la solución de problemas durante el trabajo grupal. Ayudó a organizar el trabajo grupal. Fue responsable con las acciones asumidas dentro del grupo de trabajo. Fue puntual en las reuniones convocadas para el trabajo grupal. Mantuvo una interacción respetuosa con todos los integrantes del grupo. Consideró las ideas y aportes del resto del grupo de trabajo. Colaboró en la búsqueda de información y recursos para la fase del desarrollo de las unidades didácticas. En su rol de Coordinador del grupo de trabajo o de integrante le solicitamos nos señale cómo se sintió respecto al trabajo en equipo, además de las debilidades y fortalezas percibidas en su grupo de trabajo. _______________________________________________________________________________ _______________________________________________________________________________