Inteligencia Artificial

179

Click here to load reader

description

 

Transcript of Inteligencia Artificial

Page 1: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Page 2: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

PRIMERA UNIDAD: GENERALIDADES EN INTELIGENCIA ARTIFICIAL. 1.1 Concepto de Inteligencia Artificial. 1.2 Alcance de la Inteligencia Artificial.

a) Percepción b) Sistemas expertos. c) Hardware (Memoria, rapidez y arquitectura) d) Robótica (Automatización). e) Cibernética (Interdisciplina para control de automatización)

1.3 Algunos programas de la Inteligencia Artificial.

a) Eliza. b) Mycin c) Dendral

1.4 El proyecto Japonés de la Quinta Generación. 1.1. INTRODUCCIÓN.

En primer lugar, revisemos algunas definiciones generales de inteligencia, antes de intentar definir inteligencia artificial. Inteligencia es la aptitud de crear relaciones. Esta creación puede darse de manera puramente sensorial, como en la inteligencia animal; también puede darse de manera intelectual, como en el ser humano, que pone en juego el lenguaje y los conceptos. También se la puede conceptuar como la habilidad para adquirir, comprender y aplicar conocimiento; o como la aptitud para recordar, pensar y razonar.

La IA es una nueva generación de tecnología informática, caracterizada no sólo por su arquitectura (hardware), sino también por sus capacidades. El énfasis de generaciones previas fue en las computaciones numéricas para aplicaciones científicas o de negocios. La nueva generación de tecnología informática incluye además la manipulación simbólica, con el objetivo de emular el comportamiento inteligente; y, la computación en paralelo, para tratar de conseguir resultados prácticamente en tiempo real. La capacidad predominante de la nueva generación, también conocida como la Quinta Generación, es la habilidad de emular (y tal vez en algunos casos superar) ciertas funciones inteligentes del ser humano. Por ejemplo:

Aprendizaje: Captación automática de conocimientos.

Razonamiento:

• Sistemas basados en conocimientos. • Bases de datos inteligentes. • Prueba de teoremas y juegos.

Page 3: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Percepción:

• Comprensión de lenguaje natural. • Interpretación de escenas visuales (Visión por computadora).

Locomoción y Manipulación: Realizar procesos mecánicos y tareas manuales (Robótica).

Creación: Generación, verificación, depuración y optimización automática de programas.

Algunas de las tareas que estos sistemas realizan en el campo de la IA son:

Tareas generales

• Percepción: Visión, Fonemas. • Lenguaje Natural: Comprensión, generación y traducción. • Razonamiento de sentido común. • Control de robots.

Tareas formales

• Juegos: Ajedrez, Backgammon, Damas. • Matemáticas: Geometría, Lógica, Cálculo Integral.

Tareas expertas

• Ingeniería: Diseño, Localización de fallas, Planeamiento. • Análisis Científico. • Diagnóstico Médico. • Análisis Financiero.

La inteligencia artificial, en su sentido más amplio, indica la capacidad de un artefacto de realizar los mismos tipos de funciones que caracterizan al pensamiento humano. La posibilidad de desarrollar un artefacto así ha despertado la curiosidad del ser humano desde la antigüedad; sin embargo, no fue hasta la segunda mitad del siglo XX, cuando esa posibilidad se materializó en herramientas tangibles. La Inteligencia Artificial comenzó como el resultado de la investigación en psicología cognitiva y lógica matemática. Se ha enfocado sobre la explicación del trabajo mental y construcción de algoritmos de solución a problemas de propósito general. Punto de vista que favorece la abstracción y la generalidad. El término inteligencia artificial (IA) fue acuñado en 1956 por John McCarthy, del Instituto de Tecnología de Massachussets. En ese año se celebró la conferencia de Dartmouth, en Hanover (Estados Unidos), y en ella, McCarthy, Marvin Minsky, Nathaniel Rochester y Claude E. Shannon establecieron las bases de la inteligencia artificial como un campo independiente dentro de la informática. Previamente, en 1950, Alan M. Turing había publicado un artículo en la revista Mind, titulado “Computing Machinery and Intelligence” (“Ordenador e inteligencia”), en el que reflexionaba sobre el concepto de inteligencia

Page 4: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

artificial y establecía lo que luego se conocería como el test de Turing, una prueba que permite determinar si un ordenador o computadora se comporta conforme a lo que se entiende como artificialmente inteligente o no. Con el avance de la ciencia moderna la búsqueda de la IA ha tomado dos caminos fundamentales: la investigación psicológica y fisiológica de la naturaleza del pensamiento humano, y el desarrollo tecnológico de sistemas informáticos cada vez más complejos. La Inteligencia Artificial es una combinación de la ciencia del computador, fisiología y filosofía, tan general y amplio como eso, es que reúne varios campos (robótica, sistemas expertos, por ejemplo), todos los cuales tienen en común la creación de máquinas que pueden "pensar". La idea de construir una máquina que pueda ejecutar tareas percibidas como requerimientos de inteligencia humana es un atractivo. Las tareas que han sido estudiadas desde este punto de vista incluyen juegos, traducción de idiomas, comprensión de idiomas, diagnóstico de fallas, robótica, suministro de asesoría experta en diversos temas. Es así como los sistemas de administración de base de datos cada vez más sofisticados, la estructura de datos y el desarrollo de algoritmos de inserción, borrado y locación de datos, así como el intento de crear máquinas capaces de realizar tareas que son pensadas como típicas del ámbito de la inteligencia humana, acuñaron el término Inteligencia Artificial en 1956. Trabajos teóricos fundamentales fueron el desarrollo de algoritmos matemáticos por Warren McCullock y Walter Pitts, en 1943, necesarios para posibilitar el trabajo de clasificación, o funcionamiento en sentido general, de una red neuronal. En 1949 Donald Hebb desarrolló un algoritmo de aprendizaje para dichas redes neuronales creando, en conjunto con los trabajos de McCullock y Pitts, la escuela creacionista. Esta escuela se considera hoy como el origen de la Inteligencia Artificial, sin embargo se trató poco por muchos años, dando paso al razonamiento simbólico basado en reglas de producción, lo que se conoce como sistemas expertos. En este sentido, el término IA se ha aplicado a sistemas y programas informáticos capaces de realizar tareas complejas, simulando el funcionamiento del pensamiento humano, aunque todavía muy lejos de éste. En esta esfera los campos de investigación más importantes son el procesamiento de la información, el reconocimiento de modelos, los juegos y las áreas aplicadas, como el diagnóstico médico. Un ejemplo de los logros alcanzados fue la partida de ajedrez que el superordenador de IBM denominado Deep Blue ganó, en mayo de 1997, al campeón del mundo Gari Kaspárov. Algunas áreas de la investigación actual del procesamiento de la información están centradas en programas que permiten a un ordenador o computadora comprender la información escrita o hablada, y generar resúmenes, responder a preguntas específicas o redistribuir datos a los usuarios interesados en determinados sectores de esta información. En esos programas es esencial la capacidad del sistema de generar frases gramaticalmente

Page 5: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

correctas y de establecer vínculos entre palabras e ideas. La investigación ha demostrado que mientras que la lógica de la estructura del lenguaje, su sintaxis, está relacionada con la programación, el problema del significado, o semántica, es mucho más profundo, y va en la dirección de una auténtica inteligencia artificial. Actualmente existen dos tendencias en cuanto al desarrollo de sistemas de IA: los sistemas expertos y las redes neuronales. Los sistemas expertos intentan reproducir el razonamiento humano de forma simbólica. Las redes neuronales lo hacen desde una perspectiva más biológica (recrean la estructura de un cerebro humano mediante algoritmos genéticos). A pesar de la complejidad de ambos sistemas los resultados distan mucho de un auténtico pensamiento inteligente. Muchos científicos se muestran escépticos acerca de la posibilidad de que alguna vez se pueda desarrollar una verdadera IA. El funcionamiento de la mente humana todavía no ha llegado a conocerse en profundidad y, en consecuencia, el diseño informático seguirá siendo esencialmente incapaz de reproducir esos procesos desconocidos y complejos. La metáfora entre mente y computadora se ha ampliado y madurado. Existe mecanismos o procesos básicos; sean comunes a actividades y comportamientos tan variados como:

Resolver un problema en general matemático, financiero,... Descubrir una estructura de pensamiento. Ir de casa a la oficina. Jugar al ajedrez. Otras actividades del pensamiento que habitualmente se reconoce que requieren

inteligencia. La existencia de otros mecanismos

Confirmación del funcionamiento de la inteligencia. Detección de la inteligencia. Entendimiento de la inteligencia.

La confluencia de IA con la sicología cognitiva.

El conocimiento que se tenga de la inteligencia y el aprendizaje, será alguna vez suficiente para que sirva de ayuda en la construcción de modelos mentales (Ej.: el conocimiento de la aeronáutica ayuda a construir aviones.)

Estudiase el acto de aprender --> en las personas el aprendizaje parece estar

íntimamente ligado al crecimiento de la estructura física del cerebro.

Page 6: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

1.2. CRONOLOGÍA DE LA IA.

La inteligencia artificial es el estudio de la inteligencia como computación (Hayes.)

Es la ciencia de hacer máquinas que hacen cosas que, realizadas por el hombre, requieran el uso de inteligencia (Minski.)

El estudio de las ideas que permiten a los ordenadores ser inteligentes (Winston.)

Conjunto de técnicas encaminadas al diseño y la construcción de sistemas

informáticos que exhiban algún aspecto de inteligencia (Luis Arranz.)

El nacimiento de la inteligencia artificial se refiere a la conferencia de Darwouth de 1956. Se reunieron ciertos investigadores de informática para intercambiar sus ideas.

En 1957 aparece un programa que es el General Power Solver (GPS) desarrollado

por Newell, Shan y Simon que era un intento de hacer un programa que resolviera problemas. Todo quedó en un fracaso.

En 1958 aparece un lenguaje llamado LISP de McCarthy.

En 1961 aparece un programa para jugar a las damas (Samel) que además era capaz

de aprender cuantas más partidas ganaba.

En 1965 se comienza a desarrollar DENTRAL, que es un sistema experto relacionado con la química y es el primer S.E. (Sistema Experto.)

En 1966 aparece un programa de ajedrez creado por Greunblat.

En 1968 aparece un robot denominado SHAKEY con movimientos muy torpes.

En el 69 aparecen otros sistemas expertos: PROSPECTOR (yacimientos minerales),

MYCIN (enfermedades infecciosas.)

En 1975 aparece PROLOG (Colmenawer.)

1981: Conferencia de Tokyo MITI Robot

Superordenadores Quinta generación

MCC (Microelectronics and Computer technology Corporation) SCS (Strategic Computing and Survivability) MCNC (Microelectronics Center of Nort Carolina) Proyecto “Guerra de las galaxias”

Page 7: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

1.3. CONCEPTO DE INTELIGENCIA ARTIFICIAL. No existe una definición para la IA que tenga una aceptación general, lo cual no es de extrañar ya que tampoco ha existido nunca una definición universalmente aceptada de la inteligencia humana. De las muchas definiciones de IA existentes tenemos:

1. “La interesante tarea de lograr que las computadoras piensen... maquinas con

mentes, en su amplio sentido.” (Haugeland, 1985.) 2. Disciplina científico-técnica que trata de crear sistemas artificiales capaces de

comportamientos que, de ser realizados por seres humanos, se diría que requieren inteligencia.

3. “La automatización de actividades que vinculamos con procesos de pensamiento

humano, actividades tales como toma de decisiones, resolución de problemas, aprendizaje...” (Bellman, 1978.)

4. “El estudio de las facultades mentales mediante el uso de modelos

computacionales”. (Charniak y McDermott, 1985.)

5. “El estudio de los cálculos que permiten percibir, razonar y actuar”. (Winston, 1992.)

6. Estudio de los mecanismos de la inteligencia y las tecnologías que lo sustentan.

(Newell)

7. “El arte con crear máquinas con capacidad de realizar funciones que al realizadas por personas requieren de inteligencia”. (Kurzweil, 1990.)

8. “El estudio de cómo lograr que las computadoras realicen tareas que, por el

momento, los humanos hacen”. (Rich y Knight, 1991.)

9. “Un campo de estudio que se enfoca a la explicación y emulación de la conducta inteligente en función de procesos computacionales”. (Schalkoff, 1990.)

10. “La rama de la ciencia de la computación que se ocupa de la automatización de la

conducta inteligente”. (Luger y Stubblefield, 1993). Las primeras cinco definiciones se refieren a procesos mentales y al razonamiento, mientras que las ultimas cinco a la conducta. La 1, 3, 5 y 7 miden la condición deseable en función

Inteligencia Artificial

Page 8: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

de eficiencia humana, y las 3, 4, 8, y 9 lo hacen en conformidad con un concepto de inteligencia ideal (racionalidad.) Desde sus comienzos hasta la actualidad, la Inteligencia Artificial ha tenido que hacer frente a una serie de problemas:

• Los computadores no pueden manejar (no contienen) verdaderos significados. • Los computadores no tienen autoconciencia (emociones, sociabilidad, etc.). • Un computador sólo puede hacer aquello para lo que está programado. • Las máquinas no pueden pensar realmente.

Los esfuerzos de la Inteligencia Artificial (IA) están encaminados tanto a la construcción de entidades inteligentes como a su comprensión. En 1843, Lady Ada Augusta Byron, patrocinadora de Charles Babbage planteó el asunto de si la máquina de Babbage podía "pensar". Los primeros problemas que se trató de resolver fueron puzzles, juegos de ajedrez, traducción de textos a otro idioma. Durante la II Guerra Mundial Norbert Wiener y John Von Neumann establecieron los principios de la cibernética en relación con la realización de decisiones complejas y control de funciones en máquinas. La teoría de la retroalimentación en mecanismos, como por ejemplo un termostato que regula la temperatura en una casa, tuvo mucha influencia. Esto aún no era propiamente Inteligencia Artificial. Se hizo mucho en traducciones (Andrew Booth y Warren Weaver), lo que sembró la semilla hacia el entendimiento del lenguaje natural. En el año 1955 Herbert Simon, el físico Allen Newell y J.C. Shaw, programador de la RAND Corp. y compañero de Newell, desarrolla el primer lenguaje de programación orientado a la resolución de problemas de la Inteligencia Artificial, el IPL-11. Un año más tarde estos tres científicos desarrollan el primer programa de Inteligencia Artificial al que llamaron Logic Theorist, el cual era capaz de demostrar teoremas matemáticos, representando cada problema como un modelo de árbol, en el que se seguían ramas en busca de la solución correcta, que resultó crucial. Este programa demostró 38 de los 52 teoremas del segundo capítulo de Principia Mathematica de Russel y Whitehead. En 1956, con la ahora famosa conferencia de Dartmouth, organizada por John McCarthy y en la cual se utilizó el nombre de inteligencia artificial para este nuevo campo, se separó la Inteligencia Artificial de la ciencia del computador, como tal. Se estableció como conclusión fundamental la posibilidad de simular inteligencia humana en una máquina. En 1957 Newell y Simon continúan su trabajo con el desarrollo del General Problems Solver (GPS). GPS era un sistema orientado a la resolución de problemas; a diferencia del Logic Theorist, el cual se orientó a la demostración de teoremas matemáticos, GPS no

Page 9: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

estaba programado para resolver problemas de un determinado tipo, razón a la cual debe su nombre. Resuelve una gran cantidad de problemas de sentido común, como una extensión del principio de retroalimentación de Wiener. Diversos centros de investigación se establecieron, entre los más relevantes están, la Universidad Carnegie Mellon, el Massachusetts Institute of Technologie (MIT), encabezado por Marvin Minsky, la Universidad de Standford e IBM. Los temas fundamentales eran el desarrollo de heurísticas y el aprendizaje de máquinas. En 1957 McCarthy desarrolló el lenguaje LISP. La IBM contrató un equipo para la investigación en esa área y el gobierno de USA aportó dinero al MIT también para investigación en 1963. A finales de los años 50 y comienzos de la década del 60 se desarrolla un programa orientado a la lectura de oraciones en inglés y la extracción de conclusiones a partir de su interpretación, al cual su autor, Robert K. Lindsay, denomina "Sad Sam". Este podía leer oraciones del tipo "Jim es hermano de John" y "La madre de Jim es Mary", a partir de ella el sistema concluía que Mary debía ser también la madre de John. Este sistema representó un enorme paso de avance en la simulación de inteligencia humana por una máquina, pues era capaz de tomar una pieza de información, interpretarla, relacionarla con información anteriormente almacenada, analizarla y sacar conclusiones lógicas. En el mismo período de tiempo hay trabajos importantes de Herbert Gelernter, de IBM, quien desarrolla un "Demostrador Automático de Teoremas de la Geometría", Alex Bernstein desarrolla un programa para el juego de ajedrez que se considera el antecedente para "Deep Blue". En 1961 se desarrolla SAINT (Simbolic Automatic INTegrator) por James Slagle el cual se orienta a la demostración simbólica en el área del álgebra. En 1964 Bertrand Raphael construye el sistema SIR (Semantic Information Retrieval) el cual era capaz de comprender oraciones en inglés. Formalmente la IA inicia como disciplina en 1956. En la década del 60 se comienza en el MIT el estudio de la visión artificial, lo cual implica no solo captar imágenes a través de una cámara, sino también la comprensión, de lo que estas imágenes representan. Un resultado importante en este trabajo lo constituye el "mundo de micro-bloques", en el cual un robot era capaz de percibir un conjunto de bloques sobre una mesa, moverlos y apilarlos; el éxito se debió a los investigadores Larry Roberts, Gerald Sussman, Adolfo Guzman, Max Clowes, David Huffman, David Waltz, Patrick Winston, y Berthold Horn.

Page 10: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Posteriormente se obtuvieron resultados importantes entre ellos el de mayor resonancia fue el sistema SCHRDLU de Terry Winograd, pues permitía interrogar y dar órdenes a un robot que se movía dentro de un mundo de bloques. En los primeros años de la década del 60 Frank Rosemblatt desarrolla, en la Universidad de Cornell, un modelo de la mente humana a través de una red neuronal y produce un primer resultado al cual llama perceptrón. Este sistema era una extensión del modelo matemático concebido por McCullock y Pitts para las neuronas, y funcionaba basándose en el principio de "disparar" o activar neuronas a partir de un valor de entrada el cual modifica un peso asociado a la neurona, si el peso resultante sobrepasa un cierto umbral la neurona se dispara y pasa la señal a aquellas con las que está conectada. Al final, en la última capa de neuronas, aquellas que se activen definirán un patrón el cual sirve para clasificar la entrada inicial. Este trabajo constituye la base de las redes neuronales de hoy en día, sin embargo a raíz de su desarrollo sufrió fuertes críticas por parte de Marvin Minsky y Seymour Papert lo cual provocó que la mayoría de los investigadores interesados en el tema lo abandonarán, y este no se retomara hasta los años 80. En 1965-70, comenzaron a aparecer los programas expertos, que predicen la probabilidad de una solución bajo un set de condiciones, entre esos proyectos estuvo: DENDRAL, que asistía a químicos en estructuras químicas complejas euclidianas; MACSYMA, producto que asistía a ingenieros y científicos en la solución de ecuaciones matemáticas complejas, etc. En la década 1970-80, creció el uso de sistemas expertos, muchas veces diseñados para aplicaciones médicas y para problemas realmente muy complejos como MYCIN, que asistió a médicos en el diagnóstico y tratamiento de infecciones en la sangre. Otros son: R1/XCON, PIP, ABEL, CASNET, PUFF, INTERNIST/CADUCEUS, etc. Algunos permanecen hasta hoy. De 1975 en adelante, comienza la era de los lenguajes expertos (shells) como EMYCIN, EXPERT, OPSS, etc. para luego tratar de que éstos sean más amigables y funcionales. Las definiciones de Inteligencia Artificial son muchas, pero podría decirse que son programas que realizan tareas que si fueran hechas por humanos se considerarían inteligentes. Estos programas obviamente corren en un computador y se usan, como por ejemplo, en control robótico, comprensión de lenguajes naturales, procesamiento de imágenes basado en conocimientos previos, estrategias de juegos, etc. reproduciendo la experiencia que un humano adquiriría y de la forma en que un humano lo haría. Para clasificar las máquinas como "pensantes", es necesario definir qué es inteligencia y qué grado de inteligencia implica resolver problemas matemáticos complejos, hacer generalizaciones o relaciones, percibir y comprender. Los estudios en las áreas del

Page 11: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

aprendizaje, del lenguaje y de la percepción sensorial han ayudado a los científicos a definir a una máquina inteligente. Importantes desafíos han sido tratar de imitar el comportamiento del cerebro humano, con millones de neuronas y extrema complejidad.

DIFERENCIA ENTRE LA INTELIGENCIA NATURAL Y LA ARTIFICIAL Atributos Inteligencia

Natural Inteligencia Artificial

Capacidad de usar detectores Alta Baja

Capacidad de ser creativo Alta Baja

Capacidad de aprender de la experiencia Alta Baja

Capacidad de adaptación Alta Baja

Capacidad de permitirse el costo de adquirir experiencia

Alta Baja

Capacidad de usar diversas fuentes de información Alta Alta

Capacidad de adquirir una gran cantidad de información externa

Alta Alta

Capacidad de realizar cálculos complejos Baja Alta

Capacidad de transferir información Baja Alta

Capacidad de hacer una serie de cálculos con rapidez y exactitud

Baja Alta

La IA tiene cuatro objetivos que alcanzar:

• Sistemas que piensan como humanos. • Sistemas que actúan como humanos. • Sistemas que piensan racionalmente. • Sistemas que actúan racionalmente.

Desde el punto de vista de los objetivos, la IA puede considerarse en parte como ingeniería y en parte como ciencia:

• Como ingeniería, el objetivo de la IA es resolver problemas reales, actuando como un conjunto de ideas acerca de cómo representar y utilizar el conocimiento, y de cómo desarrollar sistemas informáticos.

• Como ciencia, el objetivo de la IA es buscar la explicación de diversas clases de

inteligencia, a través de la representación del conocimiento y de la aplicación que se da a éste en los sistemas informáticos desarrollados.

Page 12: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Preguntas fundamentales de la IA. 1. ¿Cuales son las suposiciones subyacentes acerca de la inteligencia? 2. ¿Cuáles son las técnicas útiles para la resolución de problemas en IA? 3. ¿A qué nivel de detalle se trata de modelar la inteligencia humana? 4. ¿Cómo se puede saber que se ha tenido éxito en el desarrollo de un sistema inteligente? La hipótesis del sistema físico de símbolos Un sistema físico de símbolos está formado por un conjunto de entidades básicas (llamadas símbolos), las cuales son patrones físicos que pueden ocurrir como componentes de otro tipo de entidad llamada expresión o estructura de símbolos. Una estructura de símbolos está compuesta de un número de instancias de símbolos, relacionados en alguna forma física. Además de estas estructuras, el sistema también contiene una colección de procesos que operan sobre las expresiones, para producir otras: procesos de creación, modificación, reproducción y destrucción. Un sistema físico de símbolos es una máquina que produce, a través del tiempo, una colección evolutiva de estructuras de símbolos. Hipótesis: Un sistema físico de símbolos tiene los medios necesarios y suficientes para actuar en general de forma inteligente. Importancia de la hipótesis Representa una importante teoría acerca de la naturaleza de la inteligencia humana. Constituye la base sobre la que se fundamenta la creencia de que es posible construir programas que pueden realizar tareas inteligentes como las que hacen las personas. Agentes Inteligentes. Agente, del latín agere, es "el que hace". En el ámbito de los negocios, un agente es "aquel que tiene por oficio gestionar negocios ajenos". ¿Qué es un Agente Inteligente? Es todo aquello que puede considerarse que percibe su ambiente mediante sensores y que responde o actúa en tal ambiente por medio de efectores. Es decir: "un tipo de programa informático que, por encargo de un usuario u otro programa, realiza de forma autónoma tareas que requieren cierto grado de inteligencia y aprendizaje".

Page 13: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

El agente puede ser:

• Autónomo: Un agente autónomo es un sistema anidado y parte integrante de un ambiente (environment) y que detecta o percibe (percepts) datos ambientales, momento a momento, y actúa sobre él con la intención de usar (actions) esos datos para su propia tarea (task) o agenda, afectando así lo que va a detectar en el futuro, sin intervención de terceras partes (basado en Franklin y Greasser, 1996).

• Racional, que hace lo correcto, siendo "ideal" si hipoteticamente lo consigue del

todo.- inteligente, siendo aceptable cualquiera de las numerosas definiciones de inteligencia, por ejemplo, capaz de aprender/adaptivo.

• Activo, o sea que tiene en cuenta la gama de acciones abiertas a la elección y sus

recompensas o penalidades.

• Pro-activo donde más allá de actuar en respuesta a su mundo, lo hace tomando la iniciativa.

• Meta-intensivo (orientado a metas), que elige las acciones que lo conducen a la

meta, que intenta lograr prioritariamente.

• Modelo-intensivo, que tiene internalizado un cierto modelo del mundo y lo respeta en sus acciones.

• Utilidad-intensivo, que se esfuerza por obtener un máximo de "felicidad".

• Social-intensivo o de comunicación, capaz de comunicarse en algun lenguaje de

comunicación para agentes comprensible para otros.

• De planificación, parecido al agente problema-intensivo (orientado a resolver problemas y tomar decisiones)

• Softbot o sea robot basado en un software (como los robots bidimensionales de Beer

que mimetizan a un invertebrado).

• Reactivo cuando percibe perturbaciones en su mundo y responde a esa percepción de una manera actualizada (adaptada).

• Reflejo o tropista, que responde de inmediato y en forma bien definida a un

tropismo, a una percepción alarmante o beneficiosa (así un agente para el heliotropismo se orienta al Sol.)

La mayoría de los agentes poseen las siguientes tres características: comunicación, inteligencia y autonomía.

Page 14: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• Comunicación. El agente puede comunicarse con el usuario, con otros agentes y con otros programas. Con el usuario se comunica con un interfaz amigable, mediante el que personaliza sus preferencias. Algunos agentes permiten comunicarse en lenguaje natural, algo típico de los chatbots.

• El grado de inteligencia varía mucho de unos agentes a otros, que suelen incorporar

módulos con tecnologías procedentes de la Inteligencia Artificial. Los más sencillos se limitan a recoger las preferencias del usuario, quien debe personalizarlos. Un ejemplo son los agentes inteligentes basados en tecnología de redes neuronales especializados en identificar mensajes de correo electrónico sospechosos de contener spam -mensajes no deseados-. En una primera fase el usuario debe marcarlos como spam, el agente va aprendiendo a identificar los rasgos que caracterizan a estos mensajes y posteriormente los filtra.

• Autonomía. Un agente no sólo debe ser capaz de hacer sugerencias al usuario sino

de actuar. En el ejemplo anterior, el agente que filtra el spam no puede estar continuamente alertando al usuario en cada mensaje de correo que llega sobre la posibilidad de que sea un mensaje no deseado y su verdadera utilidad surge cuando elimina de forma autónoma dichos mensajes.

Ejemplos de agentes.

• Representante virtual. • Asistentes personales (Agentes, Asistentes Financieros, Auditores.) • Negociadores de mercados electrónicos (subastas.) • Agentes de búsquedas de información o rastreadores de información solicitada

(Maimai, Googlealert, Copernic, Spypress, Tracerlook, Trademarkboots, Google News.)

• Agente secreto espía, para monitorear páginas web previamente identificadas por el usuario e informa sobre cambios en dicha página (Changedetection, Spyweb.)

En general no se trabaja con agentes aislados sino con sistemas multi-agente, como lo ilustra la figura.

Page 15: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

De manera intrínseca, los sistemas multiagentes tienen las ventajas tradicionales en la solución de problemas concurrente y distribuido, además de incorporar patrones de interacción sofisticados:

• Cooperación: Trabajan juntos hacia un propósito común. • Coordinación: Organizan las actividades para solución de problemas, de tal forma

que las interacciones dañinas (en conflicto muto) sean evitadas; y las interacciones benéficas sean explotadas.

• Negociación: Llegan a acuerdos aceptables por todas las partes involucradas Practique con el agente inteligente de inversiones diligentdingo. (http://www.diligentdingo.com/DDingoLatest.exe) Existen cuatro programas de agentes:

1. Agente de reflejo simple. 2. Agente bien informado de todo lo que pasa. 3. Agentes basados en metas. 4. Agentes basados en utilidad.

Los ambientes poseen las siguientes propiedades:

1. Accesibles y no accesibles: Si el aparato sensorial de un agente le permite tener acceso al estado total de un ambiente, se dice que este es accesible a tal agente.

Page 16: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

2. Determinísticos y no determinísticos: Si el estado siguiente de un ambiente se determina completamente mediante el estado actual y las acciones escogidas por los agentes, se dice que el ambiente es determinista.

3. Episódicos y no episódicos: La experiencia del agente se divide en episodios.

Cada episodio consta de una gente que percibe y actúa, la calidad de su actuación dependerá del episodio mismo (Para los ambientes episódicos).

4. Estáticos y dinámicos: Si existe la posibilidad de que el ambiente sufra

modificaciones mientras el agente se encuentra deliberando se dice que el ambiente se comporta en forma dinámica en relación con el agente.

5. Discretos y continuos: Si existe una cantidad limitada de percepciones y acciones

distintas y claramente discernibles, se dice que el ambiente es discreto.

Page 17: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

1.4. ALCANCE DE LA INTELIGENCIA ARTIFICIAL.

Como se menciono anteriormente, no existe una definición universalmente aceptada de IA, pero existen los procesos que generalmente pueden ser llamados IA si son programados en una computadora. La lista no es exhaustiva, pero se abordan las áreas principales a) Percepción:

Las maquinas serán capaces de reaccionar a su entorno e influenciarlo mediante sensores y dispositivos de interacción con el exterior. Podemos señalar las percepciones de la vista, la audición y el tacto. La visión ya se ha llevado a cabo en una escala limitada mediante aparatos de televisión y dispositivos para la percepción de imágenes sintetizadores que permiten al ordenador comunicarse mediante audición del lenguaje hablado en la salida y no escrito como se ha hecho hasta ahora, con el uso de pantallas o impresoras. Algunos de los progresos conseguidos con el desarrollo de circuitos integrados permitirán al computados aceptar órdenes y datos especializados, también mediante la utilización del lenguaje hablado.

b) Sistemas expertos.

Para algunas personas los términos IA y sistemas expertos son sinónimos. Muchos de los sistemas expertos existentes actualmente consisten en grandes bases de conocimientos, creadas para almacenar la información de que se dispone expertos humanos en varios campos y a las que se aplica una serie de reglas de manipulación expresadas en lenguajes específicos. La diagnosis medica, la ingeniería química, la exploración geológica y el

Sistema experto, tipo de programa de aplicación informática que adopta decisiones o resuelve problemas de un determinado campo, como las finanzas o la medicina, utilizando los conocimientos y las reglas analíticas definidas por los expertos en dicho campo.

Page 18: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

diseño de computadoras han proporcionado material para el diseño de sistemas expertos de gran éxito. Con el nacimiento de la Revolución Industrial, muchas fábricas tuvieron gran aceptación por la automatización de procesos repetitivos en la línea de ensamblaje. La automatización

consiste, principalmente, en diseñar sistemas capaces de ejecutar tareas repetitivas hechas por los hombres, y capaces de controlar operaciones sin la ayuda de un operador humano. El término automatización también se utiliza para describir a los sistemas programables que pueden operar independientemente del control humano. La mayoría de las industrias has sido automatizadas o utilizan tecnología para automatizar algunas labores; en la industria de la telefonía, marcación, transmisión y facturación esta completamente automatizados. Pero no todas las industrias requieren el mismo grado de automatización. La agricultura es una industria difícil de automatizar, y con esto se ha vuelto más mecanizada, esencialmente en el procesamiento y empaque de comida. De manera similar, los doctores pueden dar consulta asistiéndose en una computadora, pero finalmente el doctor, y no la computadora, termina por dar el diagnóstico final al paciente.

Los robots comenzaron a aparecer en este proceso de automatización industrial hasta la aparición de las computadoras en los 40’s. Estos robots computarizados, están equipados con pequeños microprocesadores capaces de procesar la información que le proveen los sensores externos y así es como el robot puede tomar cambiar o mantener una operación en ejecución, a esto se le llama retroalimentación, y forma parte de la Cibernética. La retroalimentación es esencial en cualquier mecanismo de control automático, ya que ayuda a controlar los factores externos que le afecten en la correcta ejecución de sus operaciones normales.

c) Hardware para la IA.

El diseño tradicional de hardware no ha conseguido alcanzar, en gran medida el fin propuesto por la IA. Las técnicas de IA requieren acceso rápido a bancos de memoria, enormes según los estándares tradicionales y, por tanto, las velocidades de proceso son demasiado lentas para las aplicaciones más exigentes. La antigua idea de solucionar un problema paso a paso mediante la ejecución de una secuencia de instrucciones esta cediendo al paso a la idea del procesamiento en paralelo, en el cual un conjunto de procesadores trabajan simultáneamente en la diferentes partes del problema.

Los sistemas expertos, tienen dos elementos básicos y separados, aunque relacionados: una base de conocimientos y una máquina de deducción, o de inferencia. La base de conocimientos proporciona hechos objetivos y reglas sobre el tema, mientras que la máquina de deducción proporciona la capacidad de razonamiento que permite al sistema experto extraer conclusiones.

Page 19: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Según otros rumbos tomados se propone la inclusión de compiladores en hardware más que en software, y la obtención de un microcódigo para procesadores en un lenguaje lógico como el Prolog.

d) Robótica

La ciencia de la robótica implica diferentes técnicas de IA. La idea de un robot "listo" con la capacidad de aprender por experiencia es el tema central de teorías e investigaciones en IA. El robot debe ser

capaz de comunicarse en lenguaje natural y debe poder realizar tareas que requieran que el equivalente a la iniciativa y la originalidad, esto implica que el robot debe llegar a realizar, tras un periodo de aprendizaje cosas para las cuales no estaba inicialmente programado, a diferencia de los robots que se utilizan actualmente en la aplicación industrial, los cuales no son más que meros autómatas.

La idea global en la inteligencia artificial estuvo desacreditada durante varios años debido parcialmente, al excesivo optimismo por parte de la primera teoría pero, mayormente causado por la exageración y el sensacionalismo de algunos de sus divulgadores. Los primeros robots creados en toda la historia de la humanidad, no tenían más que un solo fin: entretener a sus dueños. Estos inventores se interesaban solamente en conceder los deseos de entretener a quien le pedía construir el robot. Sin embargo, estos inventores se comenzaron a dar cuenta de que los robots podían imitar movimientos humanos o de alguna criatura viva. Estos movimientos pudieron ser mecanizados, y de esta manera, se podía automatizar y mecanizar algunas de las labores más sencillas de aquellos tiempos.

El origen del desarrollo de la robótica, se basa en el empeño por automatizar la mayoría de las operaciones en una fábrica; esto se remonta al siglo XVII en la industria textil, donde se diseñaron telares que se controlaban con tarjetas perforadas.

Isaac Asimov formuló sus geniales "Tres Leyes de la Robótica":

1. "Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser humano sufra daño."

2. "Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto cuando etas órdenes están en oposición con la primera Ley."

3. "Un robot debe proteger su propia existencia, hasta donde esta protección no esté en conflicto con la primera o la segunda Leyes."

Page 20: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Cronología de la Robótica.

FECHA DESARROLLO SigloXVIII. A mediados del J. de Vaucanson construyó varias muñecas mecánicas de tamaño

humano que ejecutaban piezas de música 1801 J. Jaquard invento su telar, que era una máquina programable para la urdimbre 1805 H. Maillardet construyó una muñeca mecánica capaz de hacer dibujos. 1946 El inventor americano G.C Devol desarrolló un dispositivo controlador que podía

registrar señales eléctricas por medio magnéticos y reproducirlas para accionar un máquina mecánica. La patente estadounidense se emitió en 1952.

1951 Trabajo de desarrollo con teleoperadores (manipuladores de control remoto) para manejar materiales radiactivos. Patente de Estados Unidos emitidas para Goertz (1954) y Bergsland (1958).

1952 Una máquina prototipo de control numérico fue objetivo de demostración en el Instituto Tecnológico de Massachusetts después de varios años de desarrollo. Un lenguaje de programación de piezas denominado APT (Automatically Programmed Tooling) se desarrolló posteriormente y se publicó en 1961.

1954 El inventor británico C. W. Kenward solicitó su patente para diseño de robot. Patente británica emitida en 1957.

1954 G.C. Devol desarrolla diseños para Transferencia de artículos programada. Patente emitida en Estados Unidos para el diseño en 1961.

1959 Se introdujo el primer robot comercial por Planet Corporation. estaba controlado por interruptores de fin de carrera.

1960 Se introdujo el primer robot ‘Unimate’’, basada en la transferencia de articulaciones programada de Devol. Utilizan los principios de control numérico para el control de manipulador y era un robot de transmisión hidráulica.

1961 Un robot Unimate se instaló en la Ford Motors Company para atender una máquina de fundición de troquel.

1966 Trallfa, una firma noruega, construyó e instaló un robot de pintura por pulverización. 1968 Un robot móvil llamado ‘Shakey’’ se desarrollo en SRI (standford Research Institute),

estaba provisto de una diversidad de sensores así como una cámara de visión y sensores táctiles y podía desplazarse por el suelo.

1971 El ‘Standford Arm’’, un pequeño brazo de robot de accionamiento eléctrico, se desarrolló en la Standford University.

1973 Se desarrolló en SRI el primer lenguaje de programación de robots del tipo de computadora para la investigación con la denominación WAVE. Fue seguido por el lenguaje AL en 1974. Los dos lenguajes se desarrollaron posteriormente en el lenguaje VAL comercial para Unimation por Víctor Scheinman y Bruce Simano.

1974 ASEA introdujo el robot Irb6 de accionamiento completamente eléctrico. 1974 Kawasaki, bajo licencia de Unimation, instaló un robot para soldadura por arco para

estructuras de motocicletas.

Page 21: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

1974 Cincinnati Milacron introdujo el robot T3 con control por computadora. 1975 El robot ‘Sigma’’ de Olivetti se utilizó en operaciones de montaje, una de las

primitivas aplicaciones de la robótica al montaje. 1976 Un dispositivo de Remopte Center Compliance (RCC) para la inserción de piezas en

la línea de montaje se desarrolló en los laboratorios Charles Stark Draper Labs en estados Unidos.

1978 El robot T3 de Cincinnati Milacron se adaptó y programó para realizar operaciones de taladro y circulación de materiales en componentes de aviones, bajo el patrocinio de Air Force ICAM (Integrated Computer- Aided Manufacturing).

1978 Se introdujo el robot PUMA (Programmable Universal Machine for Assambly) para tareas de montaje por Unimation, basándose en diseños obtenidos en un estudio de la General Motors.

1979 Desarrollo del robot tipo SCARA (Selective Compliance Arm for Robotic Assambly) en la Universidad de Yamanashi en Japón para montaje. Varios robots SCARA comerciales se introdujeron hacia 1981.

1980 Un sistema robótico de captación de recipientes fue objeto de demostración en la Universidad de Rhode Island. Con el empleo de visión de máquina el sistema era capaz de captar piezas en orientaciones aleatorias y posiciones fuera de un recipiente.

1981 Se desarrolló en la Universidad de Carnegie- Mellon un robot de impulsión directa. Utilizaba motores eléctricos situados en las articulaciones del manipula dor sin las transmisiones mecánicas habituales empleadas en la mayoría de los robots.

1982 IBM introdujo el robot RS-1 para montaje, basado en varios años de desarrollo interno. Se trata de un robot de estructura de caja que utiliza un brazo constituido por tres dispositivos de deslizamiento ortogonales. El lenguaje del robot AML, desarrollado por IBM, se introdujo también para programar el robot SR-1.

1983 Informe emitido por la investigación en Westinghouse Corp. bajo el patrocinio de National Science Foundation sobre un sistema de montaje programable adaptable (APAS), un proyecto piloto para una línea de montaje automatizada flexible con el empleo de robots.

1984 Robots 8. La operación típica de estos sistemas permitía que se desarrollaran programas de robots utilizando gráficos interactivos en una computadora personal y luego se cargaban en el robot.

e) Cibernética.

La cibernética es una ciencia interdisciplinaria, tratando con sistemas de comunicación y control sobre organismos vivos, máquinas u organizaciones. El término es una derivación del vocablo griego kybernetes que significa gobernador o piloto, y fue aplicado por primera vez en 1948 a la teoría del control de mecanismos por el matemático americano Norbet Wiener.

Page 22: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

En el cuerpo humano, el cerebro y el sistema nervioso funcionan para coordinar la información, la cual es utilizada para determinar el futuro curso de una acción; controlar los mecanismos para la auto corrección en máquinas que sirven con un propósito similar. Este principio es conocido como retroalimentación, el cual es fundamental en el concepto de automatización. La cibernética también se aplica al estudio de la psicología, servomecanismo, economía, neuropsicología, ingeniería en sistemas y al estudio de sistemas sociales, el término cibernética no es muy utilizado para describir por separado a un campo de estudio, y muchas de las investigaciones en el campo ahora se centran en el estudio y diseño de redes neuronales artificiales.

1.3 ALGUNOS PROGRAMAS DE IA. a) El programa ELIZA

Casi cada publicación famosa en la IA menciona el programa ELIZA que fue escrito a finales de los sesenta por el profesor Joseph Weizenbaum de Massachusetts Institute of Technology (MIT). El programa fue diseñado como una ayuda al análisis del lenguaje y el profesor J. W. Lo llamo así en honor a la muchacha que aparece en la obra de G. B. Shaw, que comenzó como una vendedora callejera de flores y su vida se transformo cuando el profesor de dicción le enseño a hablar un correcto ingles, quien asumió esta tarea como parte de una apuesta. Un elemento muy importante del mensaje de Shaw era que aunque Eliza continuaba siendo la misma persona, con las misma virtudes y defectos antes y después de su transformación, la gente la veía de un manera deferente, como una señorita bien vestida y con un acento culto, en contraste con la desastrada vendedora de flores que hablaba de una forma vulgar. Podemos obtener la moraleja de esta historia y observar que aunque un programa sea muy complejo la computadora sigue siendo una acumulación inanimada de dispositivos electrónicos y que, aunque algunos de los resultados puedan ser sorprendentes la maquina es capaz de ejecutar únicamente las tareas para las cuales fue exactamente programada y nada más.

b) El programa MYCIN

La especialización de cualquier actividad requiere un gran conocimiento asociado. El proceso para poder practicar una cierta actividad depende de la asimilación de este conocimiento.

Un conjunto de hechos constituyen una gran parte del conocimiento básico sobre un tema, pero son igualmente importantes la destreza que se puede adquirir con la experiencia, las ideas generales en algunos casos acerca de lo que es una buena practica y el arte de tomar

Page 23: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

un decisión acertada basándose en información incompleta. Esto resulta tan importante para el aprendizaje de cualquier materia o para que el estudiante de cualquier ciencia adquiera los aspectos sutiles del tema, como aprender las premisas básicas. En la creación de un sistema experto hay una parte bastante inmediata de codificación de los hechos conocidos sobre un tema; la parte más difícil, conocida como modelación de la maestría, consiste en la formulación y aplicación de reglas extraídas de la experiencia que se posee en el tema. En cualquiera de los casos el sistema esta constituido por una base de conocimientos que proporcionan los hechos y un motor de inferencia para desarrollar las deducciones lógicas y tomar decisiones (algunas veces acompañadas de un porcentaje de probabilidad acerca de la corrección de las deducciones), basadas en los hechos y reglas conocidas. El programa MYCIN publicado por E. Schortcliffe en 1976 es un sistema que diagnostica enfermedades infecciosas, en particular infecciones sanguíneas. MYCIN lo usan médicos en prácticas para obtener ayuda en sus diagnósticos, a su vez el sistema se actualiza con los hechos y reglas de inferencia que proporcionan los especialistas.

c) El programa DENDRAL

DENDRAL es un programa experto de análisis químico y

se ha aplicado con mucho éxito en muchos lugares del mundo. DENDRAL soluciona un problema de ingeniería química en tres fases. En primer lugar, el programa infiere cualquier posible restricción sobre la solución basándose en el conocimiento que posee en su base de datos. A continuación permite a los usuarios añadir cualquier otro tipo de restricción y finalmente genera y comprueba una lista de posibles soluciones, que imprime en orden de preferencia. DENDRAL se escribió originalmente en LIPS, pero ha sido reprogramado para ser usado en varias maquinas diferentes de entre las que se destaca la implementación realizada sobre un PDP-10 en Edimburgo. Este programa basado en la estrategia de "planificar, generar y comprobar" se usa en las universidades y en las industrias de Estados Unidos y en Europa y representa una de las aplicaciones prácticas de la IA que mas éxito ha conseguido de entre las desarrolladas hasta la fecha.

1.5. EL PROYECTO JAPONÉS DE LA QUINTA GENERACIÓN.

La investigación y el desarrollo japonés de nueva tecnología están dirigidos por la unión de la industria y el gobierno en el instituto para la nueva generación de Tecnología de computadoras (ICOT). La investigación se desarrolla principalmente en tres campos: hardware, software y aplicaciones. Los investigadores en el campo del hardware están concentrados en una arquitectura de computadoras que se caracteriza por la inferencia secuencial, inferencia en paralelo y el desarrollo de maquinas para bases de datos afines.

Page 24: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

El grupo de software esta investigando sobre un lenguaje que sea el núcleo del proyecto, esté incluye sistema operativo, lenguaje natural y representación del conocimiento. El tercer grupo combina los resultados de los dos primeros grupos en la labor sobre sistemas de gestión de bases de datos afines y sistemas expertos y para conseguir validar la teoría propuestas por el resto del grupo. En contraste en las aproximaciones que se han realizado en otras partes del mundo, los japoneses están tratando de formular una nueva teoría unificada para todo el campo de representación y procesamiento de la información. Ya hemos visto que existen numerosas aproximaciones diferentes que pueden asimilarse a las diferentes ramas de la IA, pero solo si se aceptan estas aproximaciones incluyéndolas en una estrategia global, el número de opciones se reducirá y los japoneses creen que de este modo aumentarán las oportunidades para lograr una estrategia global coherente. El mayor logro desarrollado en los primeros cuatro años del proyecto ha sido una maquina basada en el conocimiento y que ha sido llamada Delta que comprende un sistema de inferencia, un sistema de conocimiento, un sistema de software y un sistema para el desarrollo de prototipos de software.

Las maquinas para bases de datos afines tienen acceso a algo así como unos 20 gigabytes de almacenamiento y en las etapas iniciales se encontraron algunos problemas debido al uso de las maquinas convencionales que se basan en un procesamiento secuencial y que se incluyeron como compromiso con la reconocida necesidad de efectuar un procesamiento en paralelo a gran escala. Se estima que las maquinas de inferencia que se necesitan al final del proyecto deberán ser capaces de ejecutar 10 LIPS y esta potencia de procesamiento sólo será proporcionada por el equivalente de 1000 procesadores trabajando en paralelo.

Page 25: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

SEGUNDA UNIDAD:

REPRESENTACIÓN DEL CONOCIMIENTO 2.1. Formalismos para la representación del conocimiento: listas y árboles, redes

semánticas, frames, scripts. 2.2. Fundamentos lógicos en inteligencia artificial: Lógica proposicional y de predicados.

Sistemas conjuntivos, Forma de Skolen

2.3.Inferencia

a) Reglas de producción. b) Cláusulas de Horn.

Introducción.

Desde el punto de vista de ingeniería, la mayor parte del trabajo requerido para construir sistemas de IA, está basado en el desarrollo de adecuadas representaciones de conocimiento y sus correspondientes estrategias de manipulación. No se puede manipular conocimiento a menos que esté adecuadamente representado. En consecuencia, las siguientes tres preguntas claves pueden guiarnos en el estudio de la IA.

• ¿Qué es el conocimiento? • ¿Cómo se puede representar el conocimiento? • ¿Cómo se podría manipular el conocimiento?

A continuación, se dan respuestas parciales a estas preguntas planteadas. En los capítulos posteriores se presenta un estudio más formal y detallado acerca del conocimiento, su representación y manipulación.

Conocimiento

Puede ser definido como el conjunto de hechos y principios acumulados por la humanidad, o el acto, hecho o estado de conocer. Es la familiaridad con el lenguaje, conceptos, procedimientos, reglas, ideas, abstracciones, lugares, costumbres y asociaciones, unida a la habilidad de utilizar estas nociones en forma efectiva para modelar diferentes aspectos del universo que nos rodea.

Los conceptos de conocimiento e inteligencia están íntimamente ligados. La inteligencia requiere de la posesión y acceso al conocimiento. Conocimiento no debe ser confundido con datos o información. El conocimiento incluye y requiere del uso de datos e información. Además, combina relaciones, dependencias, y la noción del saber con datos e información.

A veces es también útil o más aun necesario distinguir entre conocimiento y otros términos como creencia e hipótesis.

Page 26: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Esencialmente, se define como creencia a toda expresión que tiene significado, que es coherente y puede ser representada. En consecuencia una creencia puede ser verdadera o falsa. Hipótesis se define como una creencia justificada que no se conoce sea verdadera. Una hipótesis es una creencia que está respaldada por cierta evidencia, pero todavía puede resultar falsa. Finalmente, se puede también decir que conocimiento es una creencia justificada como verdadera.

Otros términos relacionados con el conocimiento y que son ocasionalmente empleados son epistemología y metaconocimiento. Epistemología es el estudio de la naturaleza del conocimiento, mientras que metaconocimiento es conocimiento acerca del conocimiento, esto es, conocimiento acerca de lo que se conoce.

El conocimiento puede ser de tipo procedimental, declarativo o heurístico. Conocimiento procedimental es aquel conocimiento compilado que se refiere a la forma de realizar una cierta tarea (el saber como hacerlo). Por ejemplo, los pasos necesarios para resolver una ecuación algebraica son expresados como conocimiento procedimental.

Por otro lado, el conocimiento declarativo es conocimiento pasivo, expresado como sentencias acerca de los hechos del mundo que nos rodea (el saber que hacer). La información personal en una base de datos es un típico ejemplo de conocimiento declarativo. Tales tipos de datos son piezas explícitas de conocimiento independiente.

El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos para resolver problemas complejos. El adjetivo heurístico significa medio para descubrir. Está relacionado con la palabra griega heuriskein que significa descubrir, encontrar. Se entiende por heurístico a un criterio, estrategia, método o truco utilizado para simplificar la solución de problemas. El conocimiento heurístico usualmente se lo adquiere a través de mucha experiencia.

El proceso de organizar y coleccionar el conocimiento es llamado ingeniería del conocimiento. Es tal vez la parte más difícil y la que consume más tiempo en cualquier proceso que desarrolla software de IA. Dado que el conocimiento es importante y primordial para el comportamiento inteligente, su representación constituye una de las máximas prioridades de la investigación en IA. El conocimiento puede ser representado como imágenes mentales en nuestros pensamientos, como palabras habladas o escritas en algún lenguaje, en forma gráfica o en imágenes, como cadenas de caracteres o colecciones de señales eléctricas o magnéticas dentro de un computador. En nuestro estudio de IA, consideraremos las representaciones escritas y sus correspondientes estructuras de datos utilizadas para su almacenamiento en un computador. La forma de representación que se escoja dependerá del tipo de problema a ser resuelto y de los métodos de inferencia disponibles. Existen diferentes esquemas de representar el conocimiento, abordaremos algunas formas de representarlo y aplicarlo de una manera adecuada para su manipulación en computadoras. Los esquemas de representación del conocimiento han sido categorizados como declarativos o procedimentales. Los métodos de representación declarativos se usan para representar factores y aserciones; y un esquema de representación procedimental trata con acciones descritas paso a paso para llegar a un resultado final. Los métodos de representación del conocimiento declarativos incluyen lógica, listas, árboles, redes semánticas, marcos y libretos.

Page 27: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

En términos generales, se debe tratar que el conocimiento esté representado de tal forma que:

• Capture generalizaciones. • Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo. • Pueda ser fácilmente modificado. • Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o

completo. • Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería

considerarse para buscar soluciones.

El conocimiento declarativo puede ser representado con modelos relacionales y esquemas basados en lógica. Los modelos relacionales pueden representar el conocimiento en forma de árboles, grafos o redes semánticas. Los esquemas de representación lógica incluyen el uso de lógica proposicional y lógica de predicados.

Los modelos procedimentales y sus esquemas de representación almacenan conocimiento en la forma de cómo hacer las cosas. Pueden estar caracterizados por gramáticas formales, usualmente implantadas por sistemas o lenguajes procedimentales y sistemas basados en reglas (sistemas de producción).

Las representaciones declarativas son usualmente más expansivas y costosas, en el sentido que la enumeración puede ser redundante e ineficiente. Sin embargo, la modificación de las representaciones declarativas es usualmente muy fácil; simplemente se agrega o se elimina conocimiento. Las representaciones procedimentales, en cambio, pueden ser más compactas, sacrificando flexibilidad. Representaciones prácticas pueden incluir elementos tanto declarativos (listado de hechos conocidos), como procedimentales (un conjunto de reglas para manipular los hechos).

Page 28: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Manipulación del conocimiento

Existen tres paradigmas que los investigadores han utilizado tradicionalmente para la resolución de problemas de IA:

• Programación Heurística.- Está basado en el modelo de comportamiento humano y su estilo para resolver problemas complejos. Existen diversos tipos de programas que incluyen algoritmos heurísticos. Varios de ellos son capaces de aprender de su experiencia.

• Redes Neuronales Artificiales.- Es una representación abstraída del modelo neuronal del cerebro humano. Las redes están formadas por un gran número de elementos simples y por sus interconexiones. Una red neuronal artificial puede ser simulada o ser real. Al elemento procesador de la red, se lo denomina neurona artificial.

• Evolución Artificial.- Su modelo está basado en el proceso genético de evolución natural, propuesto por Charles Darwin. Se utilizan sistemas simulados en computador que evolucionan mediante operaciones de reproducción, mutación y cruce (Algoritmos Genéticos).

Cada paradigma comprende una colección de métodos, configuraciones y técnicas desarrolladas para manipular el conocimiento. En general, una técnica de IA está caracterizada por incluir los siguientes componentes:

• Procesos de Búsqueda.- Proporciona una forma de resolver problemas para los cuales no hay un método más directo, así como también se constituye en un marco de trabajo dentro del cual cualquier técnica directa puede ser incorporada.

• Uso del Conocimiento.- Proporciona una forma de resolver problemas

FUNDAMENTOS LÓGICOS EN INTELIGENCIA ARTIFICIAL Tal vez la forma más antigua de representar el conocimiento es la lógica. Esta trata el estudio científico de los procesos de razonamientos, de sistemas de reglas y procedimientos que ayudan al pensamiento adecuado. La lógica es considerada una subdivisión de la filosofía, su desarrollo y el refinamiento de sus procesos son generalmente acreditados a los griegos. La forma general de cualquier proceso lógico consiste de información dada, juicios hechos o de observaciones que son notadas; esto constituye las entradas al proceso lógico y son llamadas premisas. Las premisas son empleadas por el procesamiento lógico para crear las salidas que constituyen las conclusiones llamadas inferencias. Esto constituye hechos que son conocidos como verdaderos y pueden ser usados para derivar nuevos hechos que también deben ser verdaderos.

Page 29: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

FORMALISMOS PARA REPRESENTAR DEL CONOCIMIENTO LISTAS Y ÁRBOLES Son las estructuras más sencillas que se usan para representar un conocimiento jerárquico. Listas: Una lista es una serie de elementos del mismo tipo. Ejemplo:

a) [Juan, Roberto, Ana, Inés ]: Lista de personas. b) [caramelos, galletas, bombones]: Cosas que se compran en una miscelánea. c) [clavos, bloques, cemento]: Productos de construcción.

Representación gráfica y jerárquica de una lista. Árbol: Es una forma sencilla de ilustrar las listas y otros tipos de conocimiento jerárquicos. Ejemplo:

Los nodos están representados por los círculos y las líneas que los unen son los arcos.

REDES SEMÁNTICAS Es la representación esquemática del conocimiento mediante descripciones graficas que muestra una jerarquía relacional entre objetos. Se le denomina nodo a la representación de elementos del dominio y se muestran como rectángulos o círculos y son rotulados con los nombres de los elementos representados; y se denominan arcos a los enlaces desde un nodo a otro, se representan como un vector y se rotula con el nombre de las relaciones representadas.

Libros Filosofía Matemáticas Historia

Lista 1 Cuadernos Libros Escritorio Escritorio

Madera Metal

Madera Caoba Pino

Page 30: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Nodo = objeto Donde un Objeto puede ser representado por:

1. Personas 2. Animales 3. Eventos 5. Acciones 6. Conceptos 7. Atributos o características que identifican a un objeto.

Existen ciertos tipos de Arcos típicos entre los cuales están. 1. ISA (Es-un): El cual usa para identificar que un cierto pertenece a una clase mayor de objeto.

Es un Es un

2. HAVE-a (tiene-un), este tipo de arcos se utiliza para identificar que un cierto nodo tiene o pase una cierta características o atributo o propiedad. También se puede utilizar para representar situaciones, acciones y eventos.

Propiedades de las Redes Semánticas Las redes Semánticas posen la propiedad de la Herencia; en la que unos nodos heredaron las propiedades o atributos de Nodos de una clase mayor. Así por ejemplo en las siguientes Red Semántica:

Ser _humano Hombre Manuel

Page 31: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Nota: A través de la característica de la herencia, las Redes Semánticas tienen la capacidad de inferir conocimiento. Ejemplo de Red Semántica. Considera la anterior Red Semántica acerca de SAM y su familia. 1. Necesita Sam Alimento Si, por la herencia que recibe de los seres humanos. 2. Trabaja SAM para AJAX Si por característica o por propiedades de herencia ya que CME pertenece AJAX. Nota: En Redes Semánticas las inferencias de información o respuestas o preguntas se hacen con base en las propiedades de herencia que existen entre los Nodos.

Page 32: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo de Red Semántica: Roedor.

Es_

unE

s_un

Ejemplo de Red Semántica: Lassie.

Tipo de

Tiene un

Tiene un

tiene

Page 33: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo de Red Semántica: Animal.

Tipo de

puede

Tipo de

Tiene patas volar

tiene

come

Tipo de

Page 34: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo de Red Semántica: Animal2.

ANIMAL

Aire Masa Miembros Alimentos

respiratiene

Esta formado por

come

PAJARO PERSONA

Es del tipo Es del tipo

Plumas

Alas

Alas

puede

Está formado por

CANARIO

Es del tipo

Amarillo Piolín

Un representante

color

Piernas Brazos

Está formado por

ARTURO

NASA

Un Representante

de

Trabaja en

Un animal come alimento, respira aire, tiene masa y está formado por miembros. Una persona es del tipo animal, la cual hereda todas las características antes descritas del animal. Así también tenemos la posibilidad de detallar más sus cualidades como que tiene piernas y brazos.

Page 35: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejercicios: Dado el siguiente conocimiento construya la correspondiente Red Semántica. - Los Jorobados son personas pequeñas. - Bilbo es un jorobado. - Los jorobados tienen dedos gordos. - Bilbo posee un anillo mágico. - El anillo fue encontrado en una cueva. - Los jorobados son personas míticas y las personas míticas son estudiadas por los estudiantes de literatura.

1. ¿Qué posee Bilbo? Un anillo mágico.

Page 36: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

FRAMES (MARCOS) Un Frames es una estructura de datos que contiene todo el conocimiento acerca de un objeto. Los Frames son organizados en forma jerárquica y esta característica es utilizada como medio para responder a Preguntas. Los Frames surgieron de la pregunta orientada a objetos. Cada frames describe un objeto en particular. Por lo tanto cada frames me representa una estructura de conocimiento en la cual se esta describiendo a un objeto, un evento o una situación ó cualesquier otro elemento. En los frames se describe el conocimiento acerca de un objeto utilizado SLOTS (Ranuras). Representación del conocimiento en una jerarquía de frames que heredan propiedades de frames del nivel superior. Modo de transporte

Generalidades

del carro

Especificaciones del Automóvil

Tipos de SLOTS en los Frames

1. Hay Slot para describir Conocimiento Declarativo como lo es:

- Peso de un Objeto. - La Altura - La forma - El color - Hobbies (leer, nadar, trotar)

2. Hay slots para describir conocimiento procedural (el cual se refiere a pequeños procesos que me identifica a ciertas funciones).Ejemplo: Velocidad, aceleración, trabajo, cálculo de energía, etc.

Carro Ranura

Auto Ranura

Motor Ranura

Page 37: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

3. Que identifican a las Reglas. Ejemplo:

If máquina caliente THEN prender ventilador.

4. Un Slot puede indicar la conexión con otro FRAME

5. Un Slot puede indicar la conexión con otros frame de representación de conocimiento como lo son con las Redes Semánticas.

FRAME de un Auto.

-Clase; transportación -Nombre del fabricante; Audi -Origen del fabricante

Nota: Una de las características de los frames es que un frame puede identificar a toda una familia de objetos. SCRIPT (LIBRETO) Este tipo de Representación de conocimiento es utilizado para representar secuencias de EVENTOS de tipo:

- Historias Visitas al: - Dramas - Doctor. - Visitas - Restaurante - Viajes - Museo, etc. - Estética

En los SCRIPTS o libretos intervienen elementos básicos como lo son: 1. Requerimientos de Entrada. 2. Roles o papeles de las personas o cosas que intervienen en el libreto. 3. Herramientas utilizadas por los diferentes participantes o actores. 4. Escenas. 5. Resultados.

Page 38: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo 1. SCRIPT correspondiente a una visita al Restaurante de Auto-Servicio. Requerimiento de Entrada: - Hay un cliente que tiene hambre. - El cliente tiene dinero. Herramientas que intervienen: - carro - mostrador - dinero - palillos - bandeja - sal - bote de basura - cuchillo - alimentos - tenedor - catsup - cuchara - servilletas - mesa Roles o Papeles: - Hay un cliente (C) - Recepcionista (R) Escena 1: Entrada al Restaurante. - El cliente para el carro. - El (C) entra al Restaurante. - El (C) hace fila en el mostrador. - El (C) mira los distintos alimentos en la pared y decide cuales seleccionar. Escena 2: Ordenar. - El cliente lea la orden al (R). - El (R) comienza a poner los alimentos a la bandeja. - El (C) paga la orden. Escena 3: Comer. - El cliente toma servilletas, cuchillo, tenedor, cuchara, sal, palillos y salsa de tomate. - El (C) busca mesa. - El cliente consume los alimentos. Escena 4: Salida. - Recoge la basura de la mesa. - Vacía el contenido de la vasija en el bote de la basura. - Sale del restaurante. - Toma su carro. - Se va. Resultados: - Cliente ya no tiene hambre. - El (C) tiene menos dinero. - El (C) esta satisfecho. - El (C) no esta satisfecho. - El (C) trae dolor de estomago.

Page 39: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo 2. SCRIPT correspondiente a una visita al cine. • PAPELES: cinéfilo, taquillero, portero, acomodador • CONDICIONES DE ENTRADA: cinéfilo desea ver película • PROPIEDADES O HERRAMIENTAS: película, butaca, dinero, entrada • ESCENAS: -Sacar entrada

Cinéfilo: Deme butaca” a taquillero Cinéfilo: Dinero a taquillero Taquillero: Entrada a cinéfilo

-Entrar en sala Cinéfilo: Entrada a portero Portero: Entrada a cinéfilo Cinéfilo: Cinéfilo a sala

-Acomodarse ................... -Ver película .................. -Salir de sala .................. • RESULTADOS: -Cinéfilo ha visto la película -Taquillero tiene más dinero -Cinéfilo tiene menos dinero.

Page 40: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Lógica proposicional La lógica proposicional trata con unidades básicas denominadas proposiciones. Una proporción es una expresión que tiene un valor de verdad (falso o verdadero, pero no ambos a la vez). Ejemplo:

Mozart fue un compositor. (Verdadero) Todo compositor escribe música. (Verdadero) Un perro es un animal. (Verdadero) Un gato es un perro. (Falso)

Estas proposiciones se pueden representar mediante p, q, r, s, ... y se les llama proposiciones simples o atómicas. Las proposiciones simples o atómicas son vinculadas o modificadas por los llamados conectores: ^ : = AND

v : = OR ~ ¬ : = NOT => : = Implicación

:= Doble implicación Y son llamadas proposiciones compuestas o moleculares. Ejemplo: p: Mozart fue un compositor. ~ p : Mozart no fue un compositor. q: Mozart escribió música. p ^ q: Mozart fue un compositor y escribió música. p v q: Mozart fue un compositor o escribió música. p => q: Si Mozart fue un compositor entonces escribió música. p q: Mozart fue un compositor si y solo si escribió música. En el caso de las proposiciones simples asignarles su valor de verdad es obvio, se requiere tener un conocimiento claro de los hechos relacionados a la proposición. En cambio para las proposiciones compuestas se deben seguir ciertas reglas que señalaremos en la tabla siguiente:

p q ~ p p ^ q p v q p => q p q V V F V V V V V F F F V F F F V V F F V F F F V F F V V 1 2 3 4 5 6 7

Page 41: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Negación: ~ p Toma el valor de verdad opuesto al de la proposición p, o sea, si la proposición p es verdadera la negación ~ p es falsa y viceversa. Como se observa en la columna 3. Conjunción: p ^ q Toma el valor de verdadero solo cuando ambas miembros son verdaderos. En cualquier otro caso es falsa. Como se observa en la columna 4. Disyunción: p v q Toma el valor falso cuando ambos miembros son falsos. En cualquier otro caso es verdadera. Como se observa en la columna 5. Condicional: p => q Si el antecedente es verdadero y el consecuente es falso, la condicional es falsa. En cualquier otro caso es verdadera. Como se observa en la columna 6. Bicondicional: p q Cuando ambos miembros tienen el mismo valor de verdad, la bicondicional es verdadera. En cualquier otro caso es falsa. Como se observa en la columna 7.

Las variables, también pueden ser cuantificadas. Los cuantificadores que típicamente se utilizan en lógica de predicados son:

• El cuantificador universal; ∀ indica que la fórmula bien formada, dentro de su alcance, es verdadera para todos los valores posibles de la variable que es cuantificada. Por ejemplo:

∀ X . . . .

Establece que "para todo X, es verdad que . . . " • El cuantificador existencial;∃ , indica que la fórmula bien formada, dentro de su alcance, es

verdadera para algún valor o valores dentro del dominio. Por ejemplo:

∃ X . . . .

Establece que "existe un X, tal que . . . " A continuación se dan algunos ejemplos de predicados cuantificados:

∀ X, [niño (X) => le_gusta (X, helados)]. (∀X)(persona(X)) =>mortal(X)

∀ Y, [mamífero (Y) => nace (Y, vivo)]. (∀X)(perro(X)) =>mortal(X)

∃ Z, [cartero(Z) ^ mordió (boby, Z)].

Page 42: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Desde el punto vista de representación, los cuantificadores son difíciles de usar. Por lo que es deseable reemplazarlos con alguna representación equivalente, más fácil de manipular. El caso del cuantificador universal es más simple ya que se asume a todas las variables como universalmente cuantificadas.

El cuantificador existencial es más difícil de reemplazar. El cuantificador existencial garantiza la existencia de uno o más valores particulares (instancias) de la variable cuantificada, que hace a la cláusula verdadera. Si se asume que existe una función capaz de determinar los valores de la variable que hace la cláusula verdadera, entonces simplemente se remueve el cuantificador existencial y se reemplaza las variables por la función que retorna dichos valores. Para la resolución de problemas reales, esta función, llamada función de Skolem, debe ser conocida y definida.

Forma proposicional o función: p(x) Es aquella expresión que tiene un elemento desconocido, x , que al ser instanciado hace que la expresión se convierta en una proposición. Ejemplo: p (x): x es un mamífero. Si x se instancia con “clavo”, o sea, x = clavo. La forma proposicional se convierte en la proposición: p (clavo): clavo es un mamífero. (Falso) Si x se instancia con “gato”, o sea, x = gato. La forma proposicional se convierte en la proposición: p (gato): gato es un mamífero. (Verdadero) Los valores de x estan presente en un conjunto llamado dominio. Si todos los elementos del dominio hacen verdadera la proposición se utiliza el cuantificador universal “∀”. Si solo algunos elementos del dominio hacen verdadera la proposición se utiliza el cuantificador existencial “∃”. Ejemplo: 1. Sea la forma proposicional “p ( x ): x es una letra ”

Dominio: x = { (x, p ( x )) | p ( x ): x es una letra } = { a, b, c, d, e} Instanciando tenemos: x = a, p(a): a es una letra. (Verdadero) x = e, p(e): e es una letra. (Verdadero) Todos los elementos del dominio cumplen la forma proposicional, esto se indica de la manera siguiente: ∀x, p( x ): para todo x, x es una letra.

Page 43: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

2. Sea la forma proposicional “p (x ): x es un número par ” Dominio: x = { (x, p ( x )) | p ( x ): x es un número par } = {1, 2, 5 } Instanciando tenemos: x = 1, p(1): 1 es un número par. (Falso) x = 2, p(2): 2 es un número par. (Verdadero) x = 5, p(5): 5 es un número par. (Falso) Existen algunos elementos del dominio que cumplen la forma proposicional, esto se indica de la manera siguiente:

∃x, p( x ): existe algún x, x es un numero par. Lógica de predicados. La lógica de predicados se refiere o sirve para identificar una relación existente entre elementos llamados argumentos, entre paréntesis o bien identifica a la propiedad o característica de los argumentos en el paréntesis, o bien identifica el nombre de la clase a la que pertenecen los argumentos. Se expresa de la manera siguiente: Nota: Los argumentos siempre (usualmente) son SUSTANTIVOS. Ejemplo: 1 El limón y el chile serrano son verdes: Son_verde (limón, chile serrano) 2 La pitaya es roja y la manzana es roja: roja (pitaya, manzana) 3 El limón es verde: Verde (limón) 4 El perro ladra: ladra (perro) 5 Todos los mamíferos son de sangre caliente:

∀x [ mamíferos (x) => sangre _ caliente(x)] 6 Todo satélite terrestre tiene un punto sobre la Tierra:

∀x {satélite_terrestre(x) =>∃y [tiene (x, punto) ^ sobre(y, Tierra)]} La lógica de predicados esta formado por un conjunto de predicados concatenados a través de las operaciones lógicas:

PREDICADO (ARG1,ARG2,...,ARGN) NOMBRE NOMBRE DEL DEL PREDICADO ARGUMENTO

Page 44: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Operaciones lógicas:

^ : = AND v : = OR ~ ¬ : = NOT => : = Implicación

:= Doble implicación ∀ : = Para todo ∃ : = Existe

Jerarquía de las operaciones lógicas (orden de mayor a menor)

1. Se ejecutan primero las agrupaciones: ( ) 2. ~ : not 3. ^ : and 4. v : OR 5. => : Implicación (Si ... Entonces ... ) 6. := Doble implicación (... si y solo si ...)

Sintaxis en la lógica de Predicados. Aquí se maneja la siguiente simbología.

- variables x, y, z - funciones f, g, h - constantes a, b, c -Símbolo de predicado P, Q, R, S, T -Símbolos de apuntación "(", ")", ","

Aunado a estos símbolos se utilizan los siguientes conceptos.

UNIVERSO: El cual identifica a la totalidad de los valores que puede tomar una variable. TERMINO: Una variable es un termino, x, y, z. Así como f(t) donde f es una función y “t” es una secuencia de uno o mas términos. Ejemplo: f(x), h(y), g( x, y, h(x)), f( h(x, y), y(z, f(z) ) FORMULA ATOMATICA: Una formula automática es un predicado p(x), donde P es el nombre del predicado y “x” es un termino. Ejemplo: Es-verde (limón), mamífero (Pedro), mamífero (ballena, delfín, cabra)

Page 45: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

LITERAL: Los literales son predicados o negaciones de predicados. Ejemplo: mamífero (Pedro)

~ mamífero (vidrio)

FORMULAS BIEN FORMADAS (FBF): Una FBF es una secuencias de formulas Atómicas (o predicados) concatenados por medio de operadores lógicos. Ejemplo: P(x) v Q(y) ^ ~R (S) P(x) ^ Q(z) ==> ~R(s)

mamífero(perro) => tiene_sangre_caliente(perro) SENTENCE: Las expresiones son FBF donde el alcance de las variables esta perfectamente bien definido mediante cuantificadores o bien UNIVERSALES ó bien EXISTENCIALES. Símbolos: ∀ Para todo(cuantificador Universal)

∃ Existe(Cuantificadores Existencial) ~∃ ≡ ∀ ~∀ ≡ ∃

Ejemplo: Todos los hijos tienen un padre y una Madre

∀x [mamífero(x) => tiene_sangre_caliente(x) ] ∀x [hijo(x) => ∃y ( madre(y)^ padre(z)) ]

CLAUSULA: Es una disyunción de literales (una cláusula es una disyunción de predicados y/o predicados negados. Ejemplos. Conjunción: And (^) Disyunción: OR (V) P(x) v Q(y) v~ R(s) R(y) v ~ Q(z) Lógica de predicado de primer orden. La lógica de predicados de primer orden esta formado por un conjunto de predicados concatenados por operadores lógicos. Ejemplo: Hermano (x, y ): x es hermano de y.

Hijo (x, y ): x es hijo de y. Lógica de Predicado de Orden Superior: Es cuando una variable y una función toman sus valores de un mismo dominio. Ejemplo: Hermano (x, hijo(a, y)): x es tío de a. [Predicado de Segundo Orden] Colega (b, hermano (x, hijo(a, y))): “b” es colega del tío de “a”. [Tercer Orden]

Page 46: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Sistema: Un sistema en la lógica de predicados de primer orden esta formado por un conjunto EXPRESIONES cada uno de los cuales tiene un valor de verdad (verdadero o falso). Operaciones relacionadas con la lógica de predicados.

La Asociatividad A v (B V C) = (A v B) v C A ^ (B ^ C) = (A ^ B) ^ C La Distributividad A ^ (B v C) = (A^ B) v (A ^ C) A v (B ^ C) = (A v B ) ^ (A v C) Leyes de Morgan. ~ (A v B) = ~ A ^ ~ B ~ (A ^ B) = ~ A v ~B Conmutativa A v B = B v A A^ B = B ^ A Ley de idempotencia A ^ A = A A v A = A Ley de la no contradicción ~ (A ^ ~ A) = 1 Ley del tercio excluso A v ~ A) = 1 Ley de la identidad A => A = 1 A A = 1

Definición de la equivalencia mediante la conjunción y la implicación: A B = A=> B ^ B => A A v 1 = 1

A ^ 1 = A A v 0 = A

A ^ 0 = 0 A ^ ~ A = 0

Ley de la eliminación de la doble negación ~ ~ A = A Ejemplos: Convertir las siguientes proposiciones a lógica de predicados (FBF). (Sistema que describe parte del mundo Romano). 1. Marco fue un hombre: hombre (Marco) 2. Marco fue pompeyano: pompeyano (Marco) 3. Todos los pompeyanos fueron Romanos: ∀x [Pompeyanos(x) => Romano(x)] 4. Cesar fue un rey: Rey (Cesar) 5. Todos los Romanos eran leales a Cesar o lo odiaban: ∀x [ Romanos(x) =>leal(x,Cesar) v odiaba(x, Cesar) ] 6. Todos son leales a alguien: ∀x [∃y leal(x, y)]; ∀x[ (∃(alguien), leal (x, alguien)) ] 7. La gente que trata a los reyes son los no leales: ∀x ∀y [gente (x) ^ Rey (y) ^ trata_de_asesinar (x, y) => ~ leal(x, y) ] 8. Marco trata de Asesinar a Cesar: Trata_de_ Asesinar(Marco, Cesar)

Page 47: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Formas de Skolem 1. Eliminar todas las implicaciones. Ejemplo: A=> B se convierten en ~A v B 2. Correr las negaciones hasta los predicados correspondientes (Distribuir las negaciones entre los predicados) Ejemplo: ~ ( P(x) ^ Q(y) ) eq ~ P(x) v ~Q(y) 3. Distribuir cuantificadores entre los predicados correspondientes. (Corregir cuantificadores o deslizarlos hasta los correspondientes predicados, considerando el mismo orden) Ejemplo: ∀x ∀y P(x) ^ Q(y) es equivalente a ∀x P(x) ^ ∀y Q(y) 4. Eliminar los Cuantificadores Existenciales

4.1 Convirtiéndolos a constantes cuando aparecen sin un cuantificador universal. Ejemplo: ∃x p(x) equivale a p(pato)

∃x Ave(x) equivale a Ave(pato) 4.1 Convirtiéndolos a funciones cuando aparezcan acompañados de un cuantificador

universal. Ejemplo: ∀x ∃y P(x, y) equivale a P(x, f(x) ) f:= {(x, y) / y = f(x) }

5. Eliminar todos los Cuantificadores Universales. Ejemplo: ∀x ∀y P(x) ^ Q(y) equivale a P(x) ^ Q(y) 6. Convertir las conjunciones (AND'S) en disyunciones (OR'S).Obteniendo una cláusula por cada elemento de la conjunción. Ejemplo: 1. P(x) ^ Q(y)

1.1 P(x) 1.2 Q(y)

2. P(x) ^ ( Q(y) v R(z) ) 2.1 P(x) 2.2 Q(y) v R(z)

3. P(x) ^ ( Q(y) ^ R(z) ) 3.1 P(x) 3.2 Q(y) 3.3 R(z)

No concebimos la libertad sin cultura; ni la cultura sin pan; ni el pan sin trabajo honrado; ni el trabajo honrado sin respeto a la dignidad del hombre; ni el respeto a la dignidad del hombre sin amor a Dios.

Page 48: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Page 49: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

2.3. Inferencia La inferencia en la lógica formal es el proceso de generar nuevas formulas bien formadas (FBF) a partir de FBF existentes, mediante la aplicación de las reglas de inferencias Reglas para la extracción de conocimiento de sistemas en lógica de predicados. 1. Modus Ponens la cual dice que si: A => B es verdadero y A es verdadero => B es verdadero 2. Modus Tolen. La cual dice que si: A => B es verdadero y ~ B es verdadero => ~ A es verdadero. 3. La Regla de Resolución dice que si: a1 v a2 es verdadero y ~ a2 v a3 es verdadero => a1 v a3 es verdadero Nota: A => B es equivalente ~A V B

a) Reglas de Producción

Un sistema de producción proporciona una estructura que facilita la descripción y la ejecución de un proceso de búsqueda. Un sistema de producción consiste de:

• Un conjunto de facilidades para la definición de reglas. • Mecanismos para acceder a una o más bases de conocimientos y datos. • Una estrategia de control que especifica el orden en el que las reglas son procesadas, y la

forma de resolver los conflictos que pueden aparecer cuando varias reglas coinciden simultáneamente.

• Un mecanismo que se encarga de ir aplicando las reglas.

Dentro de esta definición general de sistema de producción, se incluyen:

• Lenguajes básicos para sistemas de producción (LISP, CLIPS, PROLOG). También se los conoce como lenguajes de Inteligencia Artificial.

• Sistemas híbridos y sistemas vacíos (shells) para producción de sistemas basados en conocimientos (VP-Expert, Expert Teach, Personal Consultant, Intelligence Compiler, EXSYS).

• Arquitecturas generales para resolución de problemas (máquinas LISP, máquinas PROLOG).

Page 50: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Características de los Sistemas de Producción

Un sistema de producción, al igual que los problemas, puede ser descrito por un conjunto de características que permiten visualizar la mejor forma en que puede ser implementado.

Un sistema de producción se dice que es monotónico si la aplicación de un regla nunca evita que más tarde se pueda aplicar otra regla que también pudo ser aplicada al momento en que la primera fue seleccionada.

Un sistema de producción es parcialmente conmutativo si existe un conjunto de reglas que al aplicarse en una secuencia particular transforma un estado A en otro B, y si con la aplicación de cualquier permutación posible de dichas reglas se puede lograr el mismo resultado.

Un sistema de producción es conmutativo, si es monotónico y parcialmente conmutativo. SISTEMA DE PRODUCCIÓN MONOTÓNICO NO-MONOTÓNICO PARCIALMENTE CONMUTATIVO Demostración de Teoremas Navegación Robótica PARCIALMENTE NO CONMUTATIVO Síntesis Química Juego de Ajedrez

La parte condicional de una regla de producción llamado Lado Izquierdo (LI), consiste en una serie de elementos que describen las condiciones que deben ser verdaderas para que la regla sea aplicable. La parte de la acción de la regla llamada Lado Derecha (LD), describe las acciones que se van a llevar a cabo cuando se dispara la regla (ejecución).

Ejemplo: Desarrolle una regla de producción que represente: 1) “Al aplicar el freno el automóvil de Juan se detiene”. (p accionar _ freno (Automóvil de Juan ^ freno aplicado) (modificar ^ movimiento interrumpido))

Esta producción llamada accionar _ freno, indica que si el valor del atributo “freno” para el elemento de memoria automóvil de Juan viene a ser igual al valor aplicado, entonces el valor del atributo”movimiento” debe modificarse al valor de “interrumpido”. Utilizando Reglas Una regla es una representación del tipo If condición 1 : condición n THEN conclusion 1 : conclusión n Ejemplo. If esta lloviendo then saco mi paraguas. If tengo hambre then como alimentos. If tengo examen then debo estudiar OR Sentarme al lado de alguien.

Page 51: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Regla = Producción Sistemas Basados en Reglas eq Sistemas de Producción. Ejemplo: Sistemas Deductivo basados en Reglas:

• Para identificar animales de un zoológico:

R1: If x tiene pelo THEN x es mamífero. R2: If x da leche THEN x es mamífero. R3: If x tiene plumas THEN x es ave. R4: If x vuela AND x pone huevos THEN x es ave. R5: If x es mamífero AND x come carne THEN x es carnívoro R6: If x es mamífero AND x tiene dientes agudos AND x tiene garras AND x tiene ojos que miran hacia adelante THEN x es carnívoro. R7: If x es mamífero AND x tiene cascos (pesuñas) THEN x es un ungulado. R8: If x es mamífero AND x mastica (rumia) hierba THEN x es un ungulado AND tiene dedos.

• Reglas para identificar animales carnívoros: R9: If x es carnívoro AND x tiene color aleonado AND x tiene manchas obscuras THEN x es chita (cheetan). R10: If x es carnívoro AND x tiene color aleonado AND x tiene rayas negras THEN x es un tigre.

• Reglas para identificar ungulados:

R11: If x es ungulado AND x tiene patas largas AND x tiene cuello largo AND x tiene color aleonado AND x tiene manchas obscuras THEN x es una jirafa. Ahora supongamos que el encargado del zoológico conoce que: 1. Un animal tiene color aleonado y manchas obscuras. De acuerdo a estos datos las Reglas 9 y 11 son candidatas a dispararse, haciéndole hasta cumplir la totalidad de condiciones. 2. El animal puede amamantar y rumia hierbas, con la cual la Regla 2 se dispara produciéndose ahora que x es un mamífero, lo cual a su vez ocasiona que se dispare la regla 8 produciendo (o conociéndose ahora) que x es un ungulado y tiene dedos. 3. X tiene patas largas y cuello largo. Lo cual hace que se dispare la regla 11, con la cual

el sistema de producción concluye que x es una jirafa.

Page 52: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Problema: Usted esta iniciando una noche tranquila cuando un viejo amigo le llama y le dice que viene a cenar. Peor lo cual usted inmediatamente comienza a hacer los preparativos correspondientes y usted posee un Sistema Experto para seleccionar las bebidas. Las Reglas que identifican a su Experto en bebidas son las siguientes: B1: If un vino caro es el indicado AND es Año Nuevo THEN el vino es lo indicado. B2: If un vino caro es el indicado AND el plato principal es Carne Roja(Steak) THEN seleccionar Chateau Earl of Bartoville Red. B3: If un vino barato es el indicado AND plato principal es Pollo AND el invitado no es bien visto THEN seleccione Honest Henry's Apple Wine. B4: If un vino barato es el indicado AND plato principal desconocido THEN seleccionar Toe Lokes Roses. B5: If cerveza es lo indicado AND el plato principal es Mexicano THEN seleccionar xx. B6: If cerveza es lo indicado THEN seleccionar Tecate. B7: If el invitado es escrupuloso con los alimentos THEN seleccionar Glop. B8: If el invitado es escrupuloso AND no se sirven zanahorias THEN seleccionar Jugo de Zanahoria. B9: If vino es lo indicado AND la visita debe ser impresionada THEN un vino caro es lo indicado. B10: If un vino es lo indicado THEN un vino barato es lo indicado. B11: If el invitado es sofisticado THEN vino es lo indicado. B12: If el plato principal es mexicano THEN cerveza es lo indicado. B13: If el invitado es indeseable AND el plato principal es comprado a la Abastecedora el Buen Morir THEN cerveza es lo indicado. B14: If el Plato principal no importa es cualquier cosa THEN seleccione agua. Asumiendo que se dan los siguientes hechos como sabidos: 1. El plato principal es comprado a la Abastecedora el Buen Morir. 2. El plato principal es Mejicano. 3. El invitado es indeseable (no bien visto) 4. Es Año Nuevo. 6. El plato principal es Pollo. Mostrar la secuencia en que las Reglas son usadas y diga cuando son disparadas.

Page 53: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Respuesta: Con el dato 4 se dispara regla 1. 7. El vino es lo indicado. Con el dato 7 se dispara regla 10. 8. Un vino barato es lo indicado. Con el dato 3,6,8 se dispara regla 3. 9. Seleccionar Honest Henry's Con el dato 2 se dispara regla 12. 10. Cerveza es lo indicado. Con el dato 10, 2 se dispara regla 5. 11. Seleccionar xx Con el dato 10 se dispara regla 6. 12. Seleccionar Tecate Con el dato 1, 3 se dispara regla 13. 13.Cerveza es lo indicado Cláusulas de Horn Las cláusulas de Horn trabaja con el Modus Ponens, tomando como verdadero el consecuente cuando se tiene como verdadero el antecedente. A =>B, Si A es verdadero, entonces B es verdadero. Forma Canónica: La Forma Canónica de Modus Ponens determina que cada oración de la base de conocimientos sea una oración atómica o una implicación con una conjunción de oraciones atómicas en el lado izquierdo y un solo átomo a la derecha. Al tipo de oraciones que cumplen con la forma Canónica del Modus Ponens se les denomina oraciones de Horn; a la base de conocimientos formadas exclusivamente por oraciones de Horn se dice que está en “Forma normal de Horn”. Ejemplo: 1) Proyectil (x) Posee (y, x ) Proyectil (x ) ^ Posee (y, x ) => Vende (z, y, x ) Aplicando Modus Ponens se concluye: Vende (z, y, x) 2) Mamífero (x) Tiene_pelo (x) Es _ cuadrúpedo (x) Tiene _ rayas (x) Tigre (x) Mamífero (x) ^ Tiene_pelo (x) ^ Es _ cuadrúpedo (x) ^ Tiene _ rayas (x) => Tigre (x) Aplicando Modus Ponens se concluye: Tigre (x)

Page 54: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejercicios: Las expresiones ¿Cómo llegaste? ¿Qué estudias? ¿Habla usted inglés? No son proposiciones, pues de su significado no se puede decir si es falso o verdadero. Las órdenes que se dan a otra persona tampoco son proposiciones. ¿Cuáles de las expresiones siguientes son proposiciones? De las que no son diga por qué.

1. Todas las naranjas son amarillas 2. Un rectángulo es una figura verde 3. Medellín es la ciudad de la eterna primavera 4. Hay triángulos que son rectángulos 5. Algunas manzanas son rojas 6. El frío es una ciencia 7. La filosofía es cuadrada 8. El universo es suave 9. El sol saldrá mañana 10. El banano es una fruta que ríe 11. Todos los triángulos son isósceles 12. Tómese la medicina 13. ¿Cuáles son proposiciones? 14. El reconocimiento del pasado es separable del reconocimiento del futuro. 15. El reconocimiento del futuro es separable del reconocimiento del pasado 16. El conocimiento del pasado es posible 17. El conocimiento del futuro es posible 18. Nada triunfa como el éxito 19. Nada fracasa al final como el éxito.

Escribir en lógica proposicional:

• El gato es azul y come queso verde • Permaneceré en casa si llueve • Mañana es Martes o es Miércoles • El ser número par implica ser entero • Si es un número par, entonces también es entero • Es número par sólo si es entero • Es número entero, si es par • Es entero siempre que sea par • El ser número par es condición suficiente para ser entero • Ser número entero es condición necesaria para ser par • Si el cuadrilátero ABCD es un cuadrado entonces sus lados son iguales. • La aceleración de un cuerpo es proporcional al producto de su masa por la fuerza

ejercida sobre él. • Juan es alto. • Juan es tío de María. • Todos los majadistanenses son de Majadistán. Rudistein es Majadistanense. En

consecuencia, Rudistein es de Majadistan.

Page 55: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• Los cantantes no duermen. • Comer mucho, engorda • Las montañas cantan bonito • Los mosquitos viven menos de un año • El hombre desciende del elefante. • El coronel no tienen quien le escriba. • La jubilación del Coronel Buendía es insuficiente para su familia. • El tejo es un deporte. • El Sol es una estrella. • El amor es un sentimiento sublime. • La lógica es ciencia o disciplina. • Todo está en movimiento. • Toda x que es estática implica que no está en movimiento. • Todos los deportes son saludables. • Todo trabajo debe ser pagado. • Si las elecciones son limpias entonces no son fraudulentas. • Todos los animales tienen un cerebro. • Si dos terminales están conectadas, entonces tienen la misma señal.

o ∀x ∀y CONECTADO(x,y) ⇒ ( SEÑAL(x) = SEÑAL(y) ) • La expresión CONECTADO es conmutativa.

o ∀x∀y CONECTADO(x,y) ⇒ CONECTADO(y,x). • Es delincuente aquella persona quien vende armas a naciones enemigas

o ∀x∀y∀ z PERSONA (x) ∧ARMA(y) ∧ NACION(z) ∧ ENEMIGO(z) ∧ VENDE(X,Y,Z) ⇒ DELINCUENTE(x)

• Todas las personas aman a alguien. o ∀x, ∃y AMAR(x, y)

• Si algo vale la pena entonces no puede obtenerse fácilmente. ∀x ValerLaPena(x) ⇒ ¬PoderObtenerseFacilmente(x)

• Todos los caballos de carreras son de pura raza ∀x CaballoCarreras(x) ⇒ PuraRaza(x)

• Para ser admitidos tienen que ser socios. o ∀x Admitido(x) ⇒ Socio(x)

• A algunas mujeres no les gusta el fútbol. o ∃x Mujer(x) ∧ ¬Gustar(x, futbol) //futbol es una constante

• Todos quieren ver el mundial de fútbol. o ∀x QuererVer(x, MundialFutbol)

• Algunos temas musicales están pasados de moda o suenan mal o ∃x TemaMusical(x) ∧ ( PasadosDeModa(x)∨ SuenaMal(x) )

• Cualquier mono es un animal peludo. • Todo elefante que no sea miedoso o es un mono o es un ratón. • Todos los seres vivos son mortales, Todos los humanos son seres vivos; luego

Todos los humanos son mortales. • Todas las personas educadas son atentas. Algunos funcionarios no son atentos,

luego Algunos funcionarios no son personas educadas.

Page 56: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• Todos los ácidos son corrosivos. Todos los ácidos tienen hidrógeno; luego Algo que tenga hidrógeno es corrosivo.

• Ningún gas tiene volumen constante. Todos los gases son cuerpos; luego Algunos cuerpos no tienen volumen constante.

• Todos los atletas cuidan su salud. Nadie que cuida su salud es vicioso; luego Nadie que sea vicioso es atleta.

• Algunas plantas tienen flores. • Un hijo de Príamo mató a un hijo de Peleo. • Un aqueo mató a todos los hijos de Príamo • Algunos sobrevivientes de la guerra amaron a Elena • Todos los hijos de Héctor murieron a manos de algún aqueo. • Ningún personaje de la Iliada mató a Eneas. • Elena amó a uno de los hijos de Príamo. • Si alguien vive es por que no lo ha matado algo. • Cualquiera que conoce algo acerca de la lógica le gusta la lógica. • Ningún dragón que vive en un zoológico sería feliz. • Cualquier animal que conoce a gente agradable es feliz. • Las personas que visitan zoológicos son agradables. • Los animales que viven en zoológicos conocen a gente que visita zoológicos. • Colombia pertenece a América. • Bolívar libertó a Colombia. • El agua es un mineral. • La palabra “esdrújula” es esdrújula. • La Tierra es redonda. • Venus es uno de los planetas del sistema solar. • Entrarás sólo si has llegado a tiempo. • A no ser que consigas un aprobado en alguna asignatura, te echarán de la facultad. • Sólo lograrás que lo declaren culpable si aparece un testigo que refrende tu versión

de los hechos. • Cuando apruebas todas las asignaturas te dan el título. • Cuando empieza a amanecer el gallo canta. • Juan vendrá única y exclusivamente si María se lo pide. • Vienes o te quedas • Antonio viaja en avión o en carro. • María será doctora en filosofía si y solo si defiende con éxito su tesis doctoral. • Ni contigo ni sin ti tienen mis males remedio • No es cierto que quiera y no pueda

Formalice en lógica de predicados y analice si la conclusión corresponde a la hipótesis. • Si tengo tiempo, estudiaré y trabajaré. Tengo tiempo o tengo ánimo para emprender

nuevas actividades. No tengo tiempo. Entonces trabajaré. • Si las lluvias aumentan, el caudal de los ríos crece. Si el caudal de los ríos crece, hay que

construir represas que controlen el flujo del agua. No es verdad que no se construyan

Page 57: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

tales represas o que haya escasez de pozos. Por lo tanto, las lluvias aumentan o hay escasez de pozos.

• Si me gusta el arte, voy a la exposición de pintura o a ver danza moderna. Si estoy enfermo o no me gusta el arte, entonces me queda en casa. No me quedo en casa. En consecuencia, si no voy a la exposición de pintura, voy a ver danza moderna.

• Si Alberto estudia medicina, Fernando le dará ayuda económica. Si la situación económica permanece estable, Alberto estudia medicina y Ricardo estudia computación. Si Fernando da ayuda económica a Alberto, Martha se disgustará con Fernando. Entonces, si Ricardo no estudia computación, Martha se disgustará con Fernando.

• Mis amigos son sinceros o algunos disimulan. Pero si son honestos no deben disimular lo que sienten. Así, si mis amigos son sinceros, deben ser honestos.

• Si armando tiró un árbol, lo vio la policía. Armando deberá pagar una multa si lo vio la policía. Como él está en la delegación, no deberá pagar una multa. Entonces tiró un árbol y está detenido en la delegación.

• Si voy a la fiesta, no termino de estudiar. Si es viernes, no voy al cine. Si es viernes y no termino de estudiar, entonces voy a la fiesta. En consecuencia, voy al cine.

• Los fenómenos atmosféricos se originan si los electrones chocan entre sí. Al pasar esto último, las cargas eléctricas se polarizan o se producen grandes tensiones electromagnéticas. Si se producen grandes tensiones electromagnéticas, se producen campos magnéticos que entran en choque. Los campos magnéticos entran en choque y se producen rayos. Por tanto, si los electrones chocan entre sí, entonces se producen rayos.

• Isabel opinaba que el Dr. Juárez era demasiado viejo para casarse. Si la conducta de Isabel fuera siempre coherente con sus opiniones y si opinaba que el Dr. Juárez era demasiado viejo para casarse, entonces no se casaría con él. Pero Isabel se casó con el Dr. Juárez. Así, la conducta de Isabel no es siempre coherente con sus opiniones.

• Pedro y Jaime son de la misma edad o Pedro es mayor que Jaime. Si Pedro y Jaime son de la misma edad, entonces Elena y Pedro no tienen la misma edad. Si Pedro es mayor que Jaime, entonces Pedro es mayor que Marcela. Así que o Elena y Pedro no son de la misma edad o Pedro es mayor que Marcela.

• La inmortalidad existe si y sólo si el espíritu existe. Si lo que vemos es real, la sabiduría no es tan difícil de obtener El espíritu existe o la sabiduría no es tan difícil de obtener. Por tanto, si lo que vemos es real, la inmortalidad existe.

Rescriba los siguientes fragmentos de “Cien años de Soledad” del escritor Gabriel García Márquez, como expresiones de lógica de predicados:

• “Muchos años después, frente al pelotón de fusilamiento, el Coronel Aureliano Buendía había de recordar aquella tarde remota en que su padre lo llevó a conocer el hielo. ...” .

MUCHOSAÑOSDESPUES( FUSILAR(PELOTONFUSILAMIENTO, CAB)∧ RECORDAR(CAB, TARDEREMOTA) ∧ LLEVAR(padre(CAB), CAB, CONOCER(CAB, HIELO)) )

Page 58: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• “...Cuando el pelotón lo apuntó, la rabia se había materializado en una sustancia viscosa y amarga que le adormeció la lengua y lo obligó a cerrar los ojos. Entonces desapareció el resplandor de aluminio del amanecer, y volvió a verse a si mismo, muy niño, con pantalones cortos y un lazo en el cuello, y vio a su padre en una tarde espléndida conduciéndolo al interior de la carpa, y vio el hielo. Cuando oyó el grito, creyó que era la orden final al pelotón...”.

Apuntar(Pelotón, CAB) ⇒ ( (Materializar(CAB, Rabia, SustanciaViscosaAmarga) ⇒ (Adormecer(CAB, Lengua) ∧ Cerrar(CAB, Ojos) ) ∧ Desaparecer(Resplandor(aluminio), Amanecer) ∧ Ver(CAB, Niño(PantalónCorto, LazoCuello) ∧ Ver (CAB, Padre(CAB) ) ∧ TardeEspléndida ∧ Conducir(Padre(CAB, InteriorCarpa) ∧ Ver(CAB, Hielo) ) ) ∧ Oir(CAB, Grito) ∧ Creer(CAB, OrdenFinal(Pelotón) )

• “...Entonces fue al castaño, pensando en el circo, y mientras orinaba trató de seguir pensando en el

circo, pero ya no encontró el recuerdo. Metió la cabeza entre los hombros, como un pollito, y se quedó inmóvil con la frente apoyada en el tronco del castaño. La familia no se enteró hasta el día siguiente, a las once de la mañana, cuando Santa Sofía de la Piedad fue a tirar la basura en el traspatio y le llamó la atención que estuvieran bajando los gallinazos.”.

Ir(CAB, Castaño) ∧ Pensar(CAB, Circo) ∧ Orinar(CAB) ∧TratarPensar(CAB, Circo) ∧ Pensar(CAB, Circo) ∧ ¬Encontrar(Recuerdo) ∧ Meter(CAB, Cabeza, hombros) ∧ Parecer(CAB, Pollit o) ∧ Inmovil(CAB) ∧ Apoya(CAB, Frente, Tronco(Castaño) ) ) ∧ Εnterar(Familia, DiazSiguiente, 11AM) ∧ Tirar(SantaSofía, Basura, Traspatio) ∧ LLamarAtenciónl(SantaSofía, Gallinazos)

Con las siguientes diez expresiones, del dominio de la obra de “Don Quijote de la Mancha”, en lógica de predicados. Escriba una expresión en Español.:

1. ∃x ∃y (Escudero(x, y) ∧ ¬∃z Amigo(z, x) ) 2. ¬∀x (∃y Escudero(x, y) ⇒ Joven(x) ) 3. ∃x ¬( Caballero(x) ⇒ Joven(x) ) 4. ¬∃x ( Caballero(x) ∧ Joven(x) ) 5. ∃x ¬( Caballero(x) ⇒ ¬Joven(x) ) 6. ∃x ∃y (Escudero(x, y) ∧ ∀z ¬Amigo(z, x) ) 7. ∃x ∃y ¬(Escudero(x, y) ⇒ Joven(x) ) 8. ¬∀x ( Caballero(x) ⇒ Joven(x) ) 9. ∀x ¬( Caballero(x) ∧ Joven(x) ) 10. ¬∀x ( Caballero(x) ⇒ ¬Joven(x) )

Represente en Lógica de Predicado:

• La tubería A alimenta el depósito B. Cuando una tubería alimenta un depósito, la derivada del nivel de éste es proporcional al caudal de aquella. Luego, la derivada del nivel de B es proporcional al caudal de A.

Page 59: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Conteste la pregunta efectuada a. Eduardo pudo haber visto al asesino. b. Antonio fue el primer testigo de la defensa c. Eduardo estaba en clase o Antonio dio testimonio falso. d. ¿Nadie en clase pudo haber visto al asesino?

Conteste las dos preguntas efectuadas

Todos los que ayudan a Juan viven en casa de Manuel Antonio ayuda a todos los que trabajan con èl Juan trabaja con todos los amigos de carlos Antonio es amigo de Carlos ¿Antonio vive en casa de Manuel ¿Juan trabaja con Antonio?

• Si x es la madre de y, y si z es la hermana de x, entonces z es la tía de y.

Supongamos ahora que la madre de Braulio es Juana, y que Lola es hermana de Juana. Demostrar que Lola es tía de Braulio.

Realizar la comprobación lógica de los siguientes razonamientos. • Si los Piratas son terceros, entonces si los Apaches son segundos los Bravos serán

quintos. O los Gigantes no serán primeros o los Piratas serán terceros. En efecto, los apaches serán segundos. Por lo tanto, si los Gigantes son primeros, entonces los Bravos serán quintos.

• la Lógica es difícil o no le gusta a muchos estudiantes. Si la matemática es fácil, entonces la lógica no es difícil. Por tanto, si a muchos estudiantes les gusta la lógica, la matemática es fácil.

• Si Antonio no es primero, entonces Pedro es primero. Pero Pedro no es primero. O Antonio es primero o pablo es tercero. Si Jaime es segundo, entonces Pablo no es tercero. Por tanto, jaime no es segndo.

• Fue X o Y quien cometió el crimen. X estaba fuera del pueblo cuando el crimen fue cometido. Si X estaba fuera del pueblo, no pudo haber estado en la escena del crimen. Si X no estaba en la escena del crimen, no lo pudo haber cometido.

Represente en Lógica de Predicado 1 Susie es una compañera de escuela de Calvin y lo considera un niño raro. El la molesta

mucho y en invierno le lanza bolas de nieve. A Susie le gusta jugar a las casitas con Calvin, Hobbes y Mr Burn, su coneja de trapo. A Calvin no le gustan las niñas pero juega con Susie, entonces Calvin siente atracción por Susie o la odia.

• niña(SUSIE) ∧ compañera(SUSIE, CALVIN) ∧ pensar(SUSIE, CALVIN, raro) • molestar(CALVIN, SUSIE) ∧ lanzar(CALVIN, BN, SUSIE) ∧ NIEVE(BN) ∧

haber(NIEVE, INVIERNO) • Conejo(Mr Burn) ∧ jugar(SUSIE, CASITAS) ∧ jugar(SUSIE, CALVIN) ∧

jugar(SUSIE, HOBBES) ∧ jugar(SUSIE, Mr Burn)

Page 60: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• ∀x[niñas(x) ∧ ¬gustar(CALVIN,x) ∧ jugar(CALVIN,SUSIE)] ⇒ atraer(SUSIE, CALVIN)

• ∀x[niñas(x) ∧ ¬gustar(CALVIN,x) ∧ jugar(CALVIN,SUSIE)] ⇒ odiar(SUSIE, CALVIN)

• ¬niñas(A) ∨ gustar(CALVIN,A) ∨ ¬ jugar(CALVIN,SUSIE) ∨ atraer(SUSIE, CALVIN)

• ¬niñas(A) ∨ gustar(CALVIN,A) ∨ ¬ jugar(CALVIN,SUSIE) ∨ odiar(SUSIE, CALVIN)

• atraer(SUSIE, CALVIN) : ⎯ niñas(A), ¬gustar(CALVIN,A), jugar(CALVIN,SUSIE), atraer(SUSIE, CALVIN)

• odiar(SUSIE, CALVIN) : ⎯ niñas(A), ¬gustar(CALVIN,A), jugar(CALVIN,SUSIE), atraer(SUSIE, CALVIN)

1 Cuando los niños causan problemas en la escuela son enviados por su profesora donde

el rector • ∀x ∀y niño(x) ∧ profesora(y,x) ∧ causar(x,problemas,escuela) ⇒

enviar(y,x,director) • ¬niño(x) ∨ ¬profesora(y,x) ∨ ¬causar(x,problemas,escuela) ∨ enviar(y,x,director) • [niño(x) ∧ profesora(y,x) ∧ causar(x,problemas,escuela)] ⇒ enviar(y,x,director) • enviar(Y,X,director) : ⎯ niño(X), profesora(Y,X), causar(X,problemas,escuela).

2 Todo niño que tiene un amigo que no está vivo significa que ese amigo es imaginario • ∀x ∀y niño(x) ∧ ¬vivo(y) ∧ amigo(x,y) ⇒ imaginario(y)

3 Calvin es un niño que juega con un tigre llamado Hobbes; para él su tigre es un

compañero insustituible;

• Niño(CALVIN) ∧ tigre(HOBBES) ∧ pertenecer(HOBBES,CALVIN) ∧ jugar(CALVIN,HOBBES) ∧ compañero(HOBBES,CALVIN)

4 Existen niños que son mas grandes que otros y se aprovechan de los mas pequeños

• ∃x ∃y niño(x) ∧ niño(y) ∧ msg(y,x) ⇒ aprovechar(y,x)

5 Todos los niños que creen en monstruos y se los imaginan, les tienen miedo.

• ∀x ∀y niño(x) ∧ monstruo(y) ∧ creer(x,y) ∧ imaginar (x,y) ⇒ tenermiedo(x,y)

6 Todo niño que es travieso es castigado por sus padres

• ∀x ∀y ∀z niño(x) ∧ travieso(x) ∧ padres(y,x) ⇒ castigar(y,x)

7 Si un niño es travieso y su madre es estricta, lo castiga.

• ∀x ∀y niño(x) ∧ travieso(x) ∧ mama(y) ∧ estricto(y) ⇒ castigar(y,x)

8 Los niños que no les gusta la escuela y no hacen las tareas son desaplicados

• ∀x niño(x) ∧ ¬hacer(x,tareas) ∧ ¬gustar(x,escuela) ⇒ desaplicado(x)

Page 61: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Responda la pregunta Anoche, una banda de ladrones robó una joyería y el botín se lo llevaron en un coche. Arresté a tres sospechosos: Makinavaja, Popeye y el Pirata y después del interrogatorio supe que:

Nadie aparte de estos tres estuvo involucrado en el robo, Popeye confesó que nunca trabaja sin la ayuda de Maki Y el Pirata me dijo que no sabía conducir.

No tengo claro quien es el culpable.

Déjalos correr por que “más vale que se

escapen mil ladrones a correr detrás de uno.”

Premisas conocidas: • Nadie aparte de Maki, Popeye y el Pirata estuvo

involucrado en el robo. • Popeye nunca trabaja sin la ayuda de Maki. • El Pirata no sabe conducir.

RESPUESTA = Fue Maki

Page 62: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

TERCERA UNIDAD

RESOLUCION DE PROBLEMAS 3.1 Bases de conocimiento. 3.2 Elementos en la solución de problemas. 3.3 Métodos de búsqueda (Ciegas – Heurística ) INTRODUCCIÓN. Para construir un sistema básico de inteligencia artificial capaz de resolver un problema específico, es necesario realizar las siguientes acciones:

• Definir de una forma precisa el problema, incluyendo especificaciones de las condiciones iniciales y de las situaciones finales que pueden considerarse como soluciones aceptables al problema.

• Analizar el problema. Puede darse el caso de que unos muy pocos rasgos

importantes puedan tener un gran impacto en la identificación de la técnica más apropiada para resolver el problema.

• Identificar y representar el conocimiento que es necesario para resolver el problema.

• Escoger la mejor técnica y aplicarla para la resolución del problema.

Las bases datos (DB: Data Base / Database) son anteriores en el tiempo a las bases de conocimiento. Nacieron en la temprana época de los ordenadores digitales, a mediados de la década de los 50 y fueron una de las principales herramientas que éstos ofrecían. Surgieron como extensiones de programas Fortran que permitían acceso compartido a los datos. A finales de esta década se desarrollaron métodos de acceso soportados por el sistema operativo (acceso directo y secuencial) y maduraron con los sistemas operativos de segunda y tercera generación (principios de los 60). En esta época se desarrollaron las bases de datos estructuradas jerárquicamente y algo después las bases de datos de red. En esta temprana época no había distinción entre bases de datos e IA. A finales de los 60, Ted Codd, investigador de IBM, desarrolló un lenguaje de programación de propósito general que denominó "programación relacional", basado en la teoría de conjuntos y la lógica y que contenía el germen de lo que había de ser el más extendido de los sistemas de bases de datos hasta la fecha, las bases de datos relacionales. El objetivo primero de una base de datos es, como su nombre indica, almacenar grandes cantidades de datos organizados siguiendo un determinado esquema o "modelo de datos" que facilite su almacenamiento, recuperación y modificación.

Page 63: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Por su parte, las bases de conocimiento (KB: Knowledge Base) pertenecen a una etapa muy posterior. Surgieron a partir de la investigación en Inteligencia Artificial como respuesta a las necesidades que las aplicaciones de esta disciplina planteaban. Más adelante haremos un muestreo de las aportaciones que la IA ha hecho al estudio del lenguaje natural. Las bases de conocimiento son la evolución lógica de los sistemas de bases de datos tradicionales, en un intento de plasmar no ya cantidades ingentes de datos, sino elementos de conocimiento (normalmente en forma de hechos y reglas) así como la manera en que éste ha de ser utilizado. También se les trata de dotar de conocimiento sobre sí mismas, es decir, una KB ha de "saber lo que sabe". Por ejemplo, ante una pregunta del tipo "¿Tienen todos los empleados de Microsoft un CI de más de 100?", una base de datos tras consultar la información relacionada con la altura de los empleados de esta empresa, daría una respuesta afirmativa o negativa, independientemente de que tenga o no la información correspondiente a estos trabajadores; en cambio, una KB respondería "sí", "no" o "no lo sé", en el caso de que le faltase información relativa a la altura sobre alguno de los empleados o de que no tuviese información sobre "todos" los empleados. Ambos sistemas de información cuentan con sus correspondientes gestores para simplificar al administrador las tareas comunes de mantenimiento: el sistema gestor de bases de datos (DBMS: Database Management System) y el sistema gestor de bases de conocimiento (KBMS: Knowledge Base Management System). También encontramos diferencias sustanciales en este aspecto. Básicamente los DBMSs actuales se encuentran perfectamente estandarizados, ofreciendo un número de características y metodologías comunes que posibilitan la comunicación entre diversos tipos y productos comerciales. La comercialización de los KBMSs es prácticamente anecdótica, y por supuesto no existe ningún estándar. La característica común a todos los sistemas basados en el conocimiento hasta hace muy poco tiempo es que han sido sistemas autónomos, es decir, que no permiten la utilización de la información contenida en ellos por parte de aplicaciones externas. Por el contrario, las bases de datos, sí cuentan con los mecanismos de conexión necesarios para poder ofrecer su información a muy distintos tipos de lenguajes de programación. En general, adelantamos que nuestra elección son los sistemas de bases de datos para el almacenamiento de información exclusivamente léxica, porque garantizan a priori la reutilización de la información almacenada. Por ejemplo, si decidimos guardar nuestra información léxica en un sistema de conocimiento, estaremos "atados" a este sistema, y si más adelante observamos que nuestras necesidades van más allá de lo que en principio habíamos previsto, puede darse el caso de que el sistema de KB no sea lo suficientemente potente para dar respuesta a estas necesidades, y puede ocurrir que tengamos que volver a introducir toda la información de nuevo. Por lo general, esta situación es evitable en el entorno de las bases de datos.

Page 64: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

3.1 BASES DE CONOCIMIENTO

1. Concepto

Una base de conocimiento (KB: Knowledge Base) es la representación de conocimiento relacionado a un tema especifico, dicho conocimiento se plasma en forma de hechos y reglas. En las bases de conocimiento encontramos: una colección de hechos y reglas mediante los cuales el sistema es capaz de extraer conocimiento que no está almacenado de forma explícita. Por tanto, para la IA, una estructura de datos que no contenga más que "hechos" no es considerada como conocimiento, sino tan sólo como una fuente potencial de información.

Un Sistema de Representación de Conocimiento para un universo U consiste en:

1. Una colección E de etiquetas que pueden representar individuos en U; estas etiquetas se dividen en constantes y variables.

2. Una colección F de funciones. 3. Una colección R de relaciones. 4. Un lenguaje L consistente en reglas para combinar las funciones, relaciones y etiquetas en

expresiones bien formadas de L. 5. Una semántica S que provee de significado a las etiquetas, funciones y relaciones.

Teniendo en cuenta la definición anterior, podemos deducir los problemas más importantes que la representación de conocimiento presenta:

• La necesidad de un conocimiento profundo de nuestro propio conocimiento. Es evidente que no poseemos una comprensión lo suficientemente detallada de muchas materias. Entre ellas está la que a nosotros nos concierne, el lenguaje natural. Cuanto más amplio sea nuestro conocimiento de éste, más fácil nos será recrear sus mecanismos artificialmente. En especial deberíamos conocer con exactitud tres puntos cruciales:

o ¿Cuáles son los individuos que constituyen el universo? o ¿Que propiedades poseen? o ¿Qué relaciones existen entre ellos?

• El desarrollo de una notación precisa. Aun suponiendo que poseamos un conocimiento lo suficientemente detallado de la materia que pretendemos representar, resulta crucial el disponer de una notación lo suficientemente precisa como para poder plasmar ese conocimiento de forma que pueda ser usado de forma inteligente por un cerebro electrónico.

Page 65: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Podríamos estipular que, en general, el conocimiento identifica información sobre conceptos generales, mientras que los datos conforman información sobre entidades específicas. Así, la aserción "Arturo Rodríguez mide 1,73m" es un dato mientras que "la media de altura de los españoles es 1,70m" es conocimiento. El conocimiento desde el punto de vista de las bases de datos: la posición generalmente compartida por el entorno de las bases de datos es que un elemento de conocimiento tiene que ver con un Universo de Discurso (UoD: Universe of Discourse), que puede ser real, mental, social, o de cualquier otro tipo. Los datos, pues, son considerados como aseveraciones sobre un determinado estado de cosas en un determinado UoD. A estas aseveraciones se las denomina hechos. "Juan ama a María" es un hecho perceptible u observable dentro de un determinado UoD y puede ser representado por una estructura de datos. Para alcanzar el dominio del conocimiento es necesario subir a un nivel de abstracción superior, en el que podemos hablar de las propiedades de los hechos y de las relaciones entre hechos individuales y entre hechos y el UoD, así como de las alteraciones de los hechos y las repercusiones de estas alteraciones sobre el UoD. Por ejemplo, aseveraciones como "todos los hombres casados tienen una esposa y sólo una", o "para cada humano x, y, z, se cumple que, si x es el padre de y, y y es el padre de z, entonces x es el abuelo de z". Este tipo de conocimiento, llamado por algunos investigadores metadatos, pues de hecho son datos que "hablan" sobre datos, no es, típicamente, el dominio de las bases de datos. Esta visión se puede resumir de la siguiente manera: (...) databases represent sets of definite atomic statements (facts) and knowledge bases may, in addition, represent sets of general statements and conditional statements (rules). En las bases de conocimiento: una colección de hechos y reglas mediante los cuales el sistema es capaz de extraer conocimiento que no está almacenado de forma explícita. Por tanto, para la IA, una estructura de datos que no contenga más que "hechos" no es considerada como conocimiento, sino tan sólo como una fuente potencial de información. La IA, por tanto, pone el énfasis en el comportamiento computacional, es decir el uso de los datos por parte de los procedimientos. Podríamos estipular que, en general, el conocimiento identifica información sobre conceptos generales, mientras que los datos conforman información sobre entidades específicas. En este sentido, los datos reflejan el estado de cosas de un determinado UoD en un momento determinado, y por tanto son altamente susceptibles de modificaciones. En cambio, el conocimiento sobre cómo interpretar y usar esos datos no cambiará tan a menudo. Además, aunque el conocimiento sea complejo, su dominio es el de las generalizaciones sobre tipos, y no el de las instancias específicas, que es el dominio de los datos.

Page 66: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Podemos resumir lo expuesto diciendo que una base de conocimiento contendrá conocimiento sobre algo, y será capaz de referir ese conocimiento al mundo real. Este conocimiento es abstracto y generalizador. Los datos son concretos y describen de forma detallada entidades del mundo real. Como es de suponer los sistemas para soportar el almacenamiento de conocimiento necesitan una notación muy avanzada y precisa, pero por lo general no son capaces de hacer frente a cantidades ingentes de información, aspecto en el que las bases de datos sobresalen. Información es lo que se obtiene cuando los datos son analizados, ya sea por un agente humano o por una aplicación externa. Por tanto, de una base de datos se extrae información, mientras que ésta se encuentra explícitamente e implícitamente almacenada en una base de conocimiento. Una interpretación en términos cognitivos de este extremo es que una KB contiene información representada de una forma más parecida a cómo los humanos la almacenamos. El término "conocimiento", hace referencia específica a las reglas en las que la información ha de ser usada, así como a diversos procesos cognitivos en relación con la actualización de la información contenida en un sistema. Si un sistema contiene información representada a modo de generalizaciones sobre datos y es capaz de usar esta información de forma inteligente, actualizarla según necesidades y proveer información acerca de la información que contiene (ser "consciente" de sus limitaciones), entonces es un sistema de conocimiento. Si, por el contrario, un sistema contiene una gran cantidad de datos específicos sobre un determinado universo y provee los mecanismos necesarios para recuperar y modificar esa información, ya sea por un programa o por un usuario humano2, entonces es un sistema de base de datos. El primer paso para desarrollar tanto una base de datos como una base de conocimiento ha de ser la elección de un determinado modelo de datos en el caso del primero o de un esquema de representación en el caso del segundo (Mylopoulos 1986). Esta elección repercutirá directamente en las características y posibilidades del sistema de información. En este apartado nos limitaremos a exponer una taxonomía de esquemas de representación para los sistemas basados en el conocimiento clásicos y otra clasificación tradicional de modelos de datos. A esta actividad, es decir, el estudio de los sistemas desde un punto de vista más o menos abstracto se le denomina modelado conceptual. Por tanto, se entiende por modelado conceptual la descripción de un sistema de información (KBMS, DBMS, aplicaciones construidas con algún lenguaje de programación) en un nivel de abstracción por encima del nivel de arquitectura e implementación. En IA, el problema de diseñar un sistema experto se centra en construir una base de conocimiento que represente el conocimiento de una empresa determinada. También las metodologías de bases de datos han venido ofreciendo desde su etapa de madurez modelos semánticos de datos. Los modelos de datos clásicos ofrecen niveles de abstracción muy bajos, es decir la correspondencia entre el nivel conceptual y el nivel físico suele ser muy directa. Los modelos semánticos de datos intentan escalar en el nivel de abstracción para poder dar cuenta de estados y procesos complejos de una forma relativamente simple. Como veremos, estos modelos están altamente influenciados por los sistemas de KB, que desde el principio fueron dotados de grandes capacidades de abstracción.

Page 67: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo: Se representa la base de conocimiento de los lenguajes de programación. Hechos:

1. El lenguaje posee funciones predefinidas. 2. El lenguaje trabaja sobre cualquier plataforma 3. El lenguaje trabaja con programación procedimental. 4. El lenguaje es declarativo. 5. El lenguaje es orientado a objeto. 6. El lenguaje trabaja únicamente sobre ambiente Windows. 7. El lenguaje trabaja sobre ambiente MS-DOS. 8. El lenguaje trabaja orientado a eventos. 9. El lenguaje permite la herencia 10. El lenguaje permite polimorfismo.

Reglas: R1: 1 ^ 2 => 6 R2: 9 ^ 10 => 5 R3: - 7 v 5 => 10 R4: 10 ^ 8 => 9

2. Características • Las KB son la evolución lógica de los sistemas de bases de datos tradicionales, en

un intento de plasmar no ya cantidades ingentes de datos, sino elementos de conocimiento así como la manera en que éste ha de ser utilizado. También se les trata de dotar de conocimiento sobre sí mismas, es decir, una KB ha de "saber lo que sabe".

• El sistema gestor de bases de conocimiento (KBMS: Knowledge Base Management System) posee una comercialización prácticamente anecdótica, y por supuesto no existe ningún estándar.

• Una de las principales características de los sistemas basados en el conocimiento es que no permiten la utilización de la información contenida en ellos por parte de aplicaciones externas.

• La mayor parte de las aserciones de una KB contienen variables dependientes en el

sentido lógico, son de muchos tipos diferentes, y existen muy pocas aserciones de cada tipo (generalmente sólo una).

• Una KB es un sistema activo de forma inherente. Las acciones que una KB lleva a

cabo van desde la invocación de procedimientos cuando se accede a un determinado slot o casilla (en el caso de un esquema de representación basado en marcos), pasando por procesos deductivos o propagación de restricciones (en el caso de esquemas de redes semánticas genéricas). A esto se le denomina activación de

Page 68: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

procesos, disparo o triggering. Este mecanismo puede incluso acceder y modificar los hechos y reglas contenidos en su propio repositorio de datos.

• La KB contiene conocimiento sobre algo, y será capaz de referir ese conocimiento

al mundo real. Este conocimiento es abstracto y generalizador. • Los sistemas para soportar el almacenamiento de conocimiento necesitan una

notación muy avanzada y precisa, pero por lo general no son capaces de hacer frente a cantidades ingentes de información.

• En una KB se encuentra explícitamente e implícitamente almacenada la información.

• Un KBMS debe ofrecer dos posibilidades fundamentales: 1) Mecanismos de razonamiento; y 2) Mecanismos de explicación .

• Las KB se han desarrollado en diversos ámbitos con propósitos específicos. • Las KB son utilizadas en las siguientes aplicaciones de IA: Sistemas expertos,

sistemas de procesamiento de lenguaje natural y sistemas de visión robótica. En general se supone que un KBMS, a diferencia de un DBMS, debe ofrecer estas dos posibilidades fundamentales (Mylopoulos 1986):

• Mecanismos de razonamiento: el KBMS debe ser capaz de extraer conclusiones lógicas a partir de la información y reglas que contiene.

• Mecanismos de explicación que permitan al usuario del KBMS averiguar el estado del mecanismo de razonamiento, obtener consejo, y justificación de una determinada conclusión obtenida por el mecanismo de razonamiento

A partir de estos requerimientos deberíamos establecer alguna tipología de KBMSs atendiendo no a su arquitectura (no existen arquitecturas genéricas estándar), sino a su funcionalidad. Lo que caracteriza a los sistemas de representación de conocimiento es que se han desarrollado en diversos ámbitos con propósitos específicos. Mientras que un mismo sistema de bases de datos se puede utilizar para múltiple propósitos, los KBMS no son por lo general de propósito general. (Jarke et al. 1989) presentan la siguiente tipología de aplicaciones de IA en las que las bases de conocimiento son utilizadas:

• Sistemas expertos • Sistemas de procesamiento de lenguaje natural • Sistemas de visión robótica • Entornos de desarrollo

Son los segundos los que nos interesan, aunque en realidad la mayoría de los sistemas de IA toman la forma de sistemas expertos. Las relaciones entre el procesamiento del lenguaje natural y los KBMS han estado siempre motivadas por los intereses de los investigadores en IA, no por los de lingüistas o lexicógrafos. La aplicación de sistemas basados en el conocimiento a la TA es muy novedosa, y, según pensamos, los clásicos sistemas de KBMS no se adaptan a las necesidades de este tipo de aplicaciones, al no conceder la importancia necesaria a la información detallada en general ni a los aspectos procedimentales.

El interés de los investigadores de IA por el lenguaje natural está centrado casi exclusivamente en la comunicación hombre-máquina, por tanto su objetivo es la construcción de interfaces en lenguaje natural que faciliten esta interacción. Éstos son los denominados interfaces de lenguaje natural (NLI: Natural Language Interfaces).

Page 69: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

De hecho, el interés por los sistemas de NLP basados en el conocimiento surgió a raíz de la necesidad de construir interfaces en lenguaje natural para sistemas expertos. Estos sistemas son alimentados con toda la información disponible sobre un determinado tema muy específico, por ejemplo diagnósticos médicos, sistemas de ingeniería. Después, mediante un interfaz apropiado que acepta un conjunto de estructuras sintácticas y elementos léxicos específico, son capaces de responder adecuadamente a consultas complejas relacionando la información que poseen.

Las tareas para las que estos sistemas se desarrollan son, casi por definición, complejas. Por tanto, un sistema experto es un sistema computacional capaz de representar y razonar sobre un dominio determinado que precisa de gran cantidad de conocimiento, tal como la aeronáutica o la medicina. Se puede distinguir de otros tipos de aplicaciones de IA en que:

• Trabaja con temas complejos que normalmente requieren una considerable cantidad de experiencia humana;

• Debe ser una herramienta práctica y útil; para ello debe ofrecer un alto rendimiento en cuanto a velocidad de ejecución y fiabilidad;

• Debe ser capaz de explicar y justificar sus soluciones y consejos para convencer al usuario de lo correcto de su razonamiento.

Los sistemas expertos son el tipo de aplicación de IA que mejores resultados ha conseguido. Estos sistemas son usados hoy en día en un amplio abanico de dominios y han probado ser altamente fiables. Por ello sería deseable la disponibilidad de interfaces en lenguaje natural que facilitasen la comunicación con el sistema por parte de usuarios no expertos en computación (médicos, biólogos, ingenieros). Existen tres modos de ver la relación entre un NLI y el KBMS. La primera es la construcción de un NLI para manejar un KBMS. La segunda construir un KBMS para implementar un NLI. La tercera construir un NLI (soportado por el KBMS) para sistemas basados en el conocimiento.

Page 70: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Para que un programa pueda ser calificado de NLI debe cumplir las dos condiciones siguientes:

1. Un subconjunto del input o el output del sistema se realiza en lenguaje natural 2. El procesamiento del input (generación del output) se basa en conocimiento de tipo

sintáctico, semántico y/o pragmático.

Los tres modos anteriormente citados de usar el lenguaje natural en IA reflejan a nuestro parecer tres estadios de investigación, superando una primera fase en que se pretendía un análisis extremadamente simplista del lenguaje. Tras observar la enorme complejidad que éste conlleva, se hizo obvia la necesidad de tratar el lenguaje humano como un objeto de estudio en sí mismo, para poder siquiera pensar en usarlo como medio de interacción hombre-máquina. En esta etapa se empezaron a plantear cuestiones que los lingüistas han estado estudiando desde mucho tiempo atrás. Un KBMS para NLI habrá de integrar los siguientes tipos de conocimiento (Jarke et al. 1989):

• Conocimiento lingüístico. • Conocimiento conceptual. • Conocimiento inferencial. • Conocimiento del usuario.

La Figura resume las fuentes de conocimiento lingüístico necesario para el desarrollo de NLIs según la IA. Este cuadro revela cómo los investigadores de IA contemplan el estudio del lenguaje natural:

Finalmente, en IA se señalan algunas características necesarias en una KB para el procesamiento de lenguaje natural:

• Representación de conocimiento: el sistema de representación10 debería ser un esquema híbrido que contuviese subesquemas basados en marcos (frames), hechos de base de datos y reglas de deducción. Las distintas unidades de conocimiento codificadas en uno de estos esquemas tendrán que ser agregadas a los esquemas híbridos de una fuente de conocimiento (lingüístico, conceptual, etc.), que a su vez tendrá que ser agregada a la base de conocimiento global.

• Organización del conocimiento: el KBMS deberá organizar al menos dos bases de conocimiento en el caso de un sistema basado en NLI: la KB del lenguaje natural (NL KB) y la KB a la que el NLI proporciona acceso mediante lenguaje natural. A su vez, la NLKB habrá de estar organizada distinguiendo: conocimiento de entorno, conocimiento específico de trabajo y conocimiento específico de diálogo.

Page 71: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• Entorno de integración: el KBMS deberá proporcionar un entorno que permita la entrada de datos para las distintas KBs. Este aspecto de adquisición de conocimiento se puede realizar mediante el NLI una vez se haya construido parcialmente. Lo ideal para crear la base de conocimiento de lenguaje natural es el trabajo conjunto de expertos en los dos campos: la lingüística y la IA.

Como observamos, las diferencias de descripción detallada de bases de datos y bases de conocimiento son abismales. Las bases de datos son sistemas muy bien establecidos en donde todo lo que puede o no puede llevar a cabo el sistema y cómo llevarlo a cabo está perfectamente establecido. El trabajo en bases de conocimiento se encuentra aún en una fase germinal, y por lo general se trata de sistemas específicos para necesidades específicas. La literatura en torno a las bases de conocimiento es aún altamente programática, intentando sentar las bases de lo que se supone que estos sistemas serán capaces de hacer. No es extraño encontrar aserciones contradictorias en distintos autores con distintos fines. Incluso así, en el siguiente apartado intentaremos mostrar cuáles son las definiciones formales y arquitecturas que se han propuesto hasta ahora. Ni que decir tiene que el entorno de bases de datos se encuentra totalmente establecido. ELEMENTOS EN LA SOLUCIÓN DE PROBLEMAS El proceso general en la solución de problemas tiene:

1. Estado del problema: Situación y condición de existencia. 2. Meta: Lograr respuesta final o solución. 3. Operadores: Procedimiento empleado para cambiar los estados y lograr las metas

(Algoritmos y subrutinas).

Esquema de representación de los elementos en la solución de problemas

Para construir un sistema que resuelva un problema específico, es necesario realizar las siguientes acciones:

Estado Inicial

Procedimiento Metas

Estrategias de control

Representación de los elementos en la solución de problemas

Page 72: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Definir el problema con precisión: La definición debe incluir especificaciones precisas tanto sobre la o las situaciones iniciales como sobre las situaciones finales que se aceptarían como soluciones al problema. Analizar el problema: Algunas características de gran importancia pueden tener un gran efecto sobre la conveniencia o no de utilizar las diversas técnicas que resuelven el problema. Aislar y representar el conocimiento necesario para resolver el problema. Elegir la mejor técnica(s) que resuelve el problema y aplicarla(s) al problema particular. TÉCNICAS DE SOLUCIÓN.

Las técnicas de solución de problemas en IA, en general, incorporan un proceso de búsqueda. Todo proceso de búsqueda puede ser visualizado como el recorrido por un árbol en el que cada nodo representa un estado y cada rama representa las relaciones entre los estados cuyos nodos conecta.

En general, las reglas contienen en forma implícita el árbol, y se genera en forma explícita sólo aquellas partes que se decide explorar. Las principales diferencias que pueden aparecer en las diferentes técnicas de búsqueda, son:

• La dirección en la cual se conduce la búsqueda (hacia adelante o hacia atrás). • La estrategia de control, o forma de seleccionar las reglas que pueden ser aplicables. Los

principales requerimientos de una buena estrategia de control son: que cause desplazamiento en el espacio de estado; y, que sea sistemático.

• La forma de representar cada nodo del proceso de búsqueda (representación del conocimiento).

Muchas veces, tratar el proceso como búsqueda en un grafo en lugar de una búsqueda en un árbol, puede reducir el esfuerzo que se gasta en explorar senderos, esencialmente iguales, varias veces. Sin embargo, los requisitos asociados, son:

• Cada vez que se genere un nodo se debe chequear para ver si ha sido generado antes. • Se deben introducir procedimientos especiales para que la búsqueda no quede atrapada

en algún lazo.

Page 73: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Métodos de búsqueda: 1. Búsqueda en profundidad. 2. Búsqueda en amplitud. 3. Búsqueda de coste uniforme. 4. Búsqueda en profundidad limitada. 5. Búsqueda en profundidad iterativa. 6. Búsqueda bidireccional.

Problema de los dos recipientes de agua

Se tienen dos jarras, una de cuatro litros de capacidad y otra de tres. Ninguna de ellas tiene marcas de medición. Se tiene una bomba que permite llenas las jarras de agua. ¿Cómo se puede lograr tener exactamente dos litros de agua en la jarra de cuatro litros de capacidad? Los operadores que puede utilizar son:: llenar la jarra de 4 litros; llenar la jarra de 3 litros; vaciar un poco la jarra de 4 litros; vaciar un poco la jarra de 3 litros; vaciar la jarra de 4 litros en el suelo; vaciar la jarra de 3 litros en el suelo; verter agua desde la jarra de 3 litros a la jarra de 4 litros hasta que la jarra de 4 litros esté llena; verter agua desde la jarra de 4 litros a la jarra de 3 litros hasta que la jarra de 3 litros esté llena; verter todo el agua de la jarra de 3 litros en la jarra de 4 litros; verter todo el agua de la jarra de 4 litros en la jarra de 3 litros; verter 2 litros de la jarra de 3 litros en la jarra de 4 litros). Implementa el problema realizando búsqueda en anchura y en profundidad

Reglas de Producción

x = 0,1,2,3,4 y = 0,1,2,3

1. Llenar el recipiente de 4 galones: SI x < 4 => (4, y)

2. Llenar el recipiente de 3 galones: SI y < 3 => (x, 3)

3. Vaciar el recipiente de 4 galones: SI x > 0 => (0, y)

4. Vaciar el recipiente de 3 galones: SI y > 0=> (x, 0)

5. Pasar agua del recipiente de 3 galones al de 4, hasta que se llene: SI (x + y) >= 4 ^ y > 0 => (4, y - (4 - x))

6. Pasar agua del recipiente de 4 galones al de 3, hasta que se llene: SI (x + y) >= 3 ^ x > 0 => (x - (3 - y), 3)

7. Pasar toda el agua del recipiente de 3 galones al de 4: SI (x + y) <= 4 ^ y > 0 => (x + y, 0)

8. Pasar toda el agua del recipiente de 4 galones al de 3: SI (x + y) <= 3 ^ x > 0 => (0, x + y)

Page 74: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Búsqueda en espacios de estados. begin

estado := est_inic while not estado = est_fin do begin

regla := selecc(R, estado) estado := aplicación(regla, estado)

end end ------------------------------------------------------------- regla := selecc (R, estado) Control, según sea, la búsqueda será más o menos “inteligente”. Estrategias de control: características fundamentales.

• Debe causar que el problema avance. Ejemplo: en el problema de los “cubos de agua” no es válido seleccionar siempre la primera regla aplicable.

• Debe ser sistemático. Es decir, siempre debe producir la misma solución ante el mismo problema. Ejemplo: no es válido como estrategia de control elegir una operación al azar.

Page 75: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

MÉTODOS DE BÚSQUEDA (CIEGAS – HEURÍSTICA )

Métodos Ciegos Exploración del árbol de búsqueda sistemáticamente pero sin información

Estos métodos se caracterizan por no poseer experiencia, información o conocimiento correspondiente al ambiente en donde se realizará la búsqueda, solo se posee conocimiento de estado inicial y la meta que se pretende alcanzar. Ejemplo: Suponga que desea encontrar una trayectoria de una ciudad “S” (punto inicial)a otra “G”(meta). Para encontrar una trayectoria apropiada necesitará considerar dos costos: el costo de cálculo para encontrar la trayectoria y el costo del viaje cuando se sigue a trayectoria. Árbol de búsqueda: Es un tipo especial de árbol semántica en el que cada nodo representa una trayectoria, las ramas conectan trayectorias a extensiones de trayectorias en un solo paso. El árbol de búsqueda contiene escritores que conectan una trayectoria a una descripción de trayectoria. Además contiene lectores que producen una descripción de una trayectoria. Las trayectorias que no alcanzan la meta se conocen como trayectorias parciales; las trayectorias que alcanzan la meta se llaman trayectorias completas. El nodo raíz es el que no tiene nodo antecesor. Cada hijo representa una trayectoria que es una extensión de un nodo de la trayectoria representada por su padre. Se conoce como profundidad del árbol a la cantidad de nodos existentes desde la raíz hasta la ultima hoja del árbol. La expansión de un nodo es cuando se determina los hijos den este. Se dice que los nodos están abiertos cuando no se expande, en caso contrario se vuelven cerrados. Ejemplo: El árbol de búsqueda formado para el ejemplo anterior es:

S

CBA

D E F

G

Page 76: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Búsqueda Heurística

Para resolver muchos problemas difíciles (explosión combinatoria), es necesario muchas veces llegar a un compromiso de los requerimientos de movilidad y sistematicidad y construir una estructura de control que no necesariamente garantiza el encontrar la mejor respuesta, sino que casi siempre encuentra una buena respuesta. Una técnica heurística mejora la eficiencia del proceso de búsqueda sacrificando, usualmente, exhaustividad. Las consideraciones que sirven de soporte a un proceso de búsqueda heurística, son:

• Rara vez se requiere, en realidad, una solución óptima. Una buena aproximación, normalmente, sirve muy bien.

• A pesar que una aproximación heurística no puede resultar muy buena en el peor de los casos, raras veces aparecen los peores casos en la práctica.

El tratar de comprender por qué un heurístico funciona o por qué no funciona, a menudo conduce a una mejor comprensión del problema. Búsqueda en amplitud Se basa en desarrollar completamente cada nivel del árbol antes de pasar a desarrollar el siguiente.

Algoritmo general 1. lista := estado_inicial 2. MIENTRAS (lista ≠ 0) y no solucion

2.1. Eliminar primer elemento de lista y asignarlo a E 2.2. Para cada regla aplicable a E

2.2.1. Aplicar la regla 2.2.2. Si el estado resultante el objetivo, salir devolviéndolo 2.2.3. Si no, añadir el nuevo estado a lista

Page 77: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

La búsqueda en amplitud se extiende uniformemente en el árbol de búsqueda: La búsqueda en amplitud revisa todas las trayectorias de una longitud dada antes de avanzar a una trayectoria más larga. Primero se expande el nodo raíz, y luego todos los nodos generados por este; luego, sus sucesores, y así sucesivamente. En general, todos los nodos que estan en la profundidad d del árbol de búsqueda se expanden antes de los nodos que estan en la profundidad d + 1. Este método de búsqueda permite encontrar primero la meta más próxima. Para efectuar una búsqueda en amplitud:

1. Forme una cola de un solo elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz.

2. Hasta que la primera trayectoria de la cola concluya en el nodo meta o se vacíe la

cola: 2.1.Elimine la primera trayectoria de la cola cree nuevas trayectorias extendiendo el

primer paso a todos los vecinos del nodo terminal. 2.2.Rechace las trayectorias nuevas con ciclos. 2.3.Agregue las nuevas trayectorias, si las hay al final de la cola.

3. Si se halla el nodo meta, mencione que hubo éxito, si no, notifique el fracaso. Ejemplo:

Para efectuar la búsqueda en amplitud se debe construir el árbol siguiente.

Al considerar el factor de ramificación b (la raíz del árbol de búsqueda genera b nodos en el primer nivel, cada uno de los cuales genera b nodos más, obteniendo b2 nodos en el segundo nivel, y así sucesivamente). Supóngase que la en la solución hay una ruta de

E

D

C E

B

B F

D

ED

B

A

A C

B

G

F

E

DA

S

F

Page 78: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

longitud d, por lo que la cantidad máxima de nodos expandidos antes de poder encontrar una solución es bd. Al tener un árbol b = 2 como factor de ramificación, y una profundidad de d = 14, se expandirían 214 = 262,144 nodos antes de encontrar una solución, lo que provocaría una explosión combinatoria, causando el incremento considerable de los costos y tiempos empleados en la búsqueda de solución. Búsqueda en profundidad (“depth-first”) Se basa en elegir un camino en el árbol y seguirlo hasta el final. Si no se encuentra la solución se retrocede (“backtraking”) y se prueba por otro camino.

Algoritmo general: 1- SI estado_inicial = estado_objetivo ENTONCES salir con éxito 2- MIENTRAS no éxito y no fracaso

a- Generar los sucesores del estado inicial. SI no hay más sucesores ENTONCES fracaso

b- Llamar al algoritmo para cada uno de los nodos generados como estado inicial

c- Si se devuelve éxito, devolver éxito, si no continuar el bucle Ventajas de la búsqueda en profundidad

• Requiere mucha menos memoria (sólo hay que guardar el camino actual.) • Puede encontrar una solución sin examinar mucho el árbol, sobre todo si

hay varios caminos a la solución.

Page 79: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Búsqueda de coste uniforme Se basa en desarrollar el nodo con menor coste.

Algoritmo general. 1- lista := estado_inicial 2- MIENTRAS (lista ≠ 0) y no solucion

a- Eliminar primer elemento de lista y asignarlo a E b- Para cada regla aplicable a E

i- Aplicar la regla ii- Si el estado resultante el objetivo, salir devolviéndolo iii- Si no, añadir el nuevo estado a lista

Búsqueda en profundidad limitada Búsqueda en profundidad con un límite de profundidad l. Implementación: los nodos a profundidad l no tienen sucesores.

Page 80: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Búsqueda en profundidad iterativa Se basa en elegir utilizar búsqueda en profundidad limitada, aumentando l si no se encuentra la solución.

Algoritmo Generación y Prueba (GENERATE-AND-TEST)

1. Generar una posible solución. (estado o camino)

2. Comprobar para ver si es una solución, mediante comparación con los elementos del conjunto de objetivos aceptables.

3. Si la solución ha sido encontrada salir, de otra manera, retornar al paso 1.

Algoritmo Primero en Profundidad (DEPTH-FIRST)

1. Si el estado inicial es el objetivo, salir y retornar éxito. 2. Sino, haga lo siguiente hasta que se obtenga señal de éxito o fracaso:

a. Genere un sucesor E del estado inicial. Si no hay más sucesores, retorne con señal de fracaso.

b. Llame recursivamente al algoritmo, esta vez con E como el estado inicial. c. Si la señal es éxito, retorne, de otra manera, continúe en este lazo

Page 81: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

La búsqueda en profundidad incursiona en el árbol de búsqueda: Siempre se expande una de los nodos que se encuentre en lo más profundo del árbol, solo si la búsqueda conduce a un callejón sin salida (un nodo sin meta que no tiene expansión), se revierte la búsqueda y se expanden los nodos de niveles menos profundos. Para llevar a cabo una búsqueda en profundidad debe: 1. Primero conforme una cola de un elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz; 2. Hasta que la primera trayectoria de la fila termine en el nodo meta o se vacíe la cola,

2.1 Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el primer paso a todos los vecinos del nodo terminal; 2.2. Rechace todas las trayectorias nuevas con ciclos; 2.3. Agregue las nuevas trayectorias, si las hay, al frente de la cola.

1. Si el nodo meta se alcanza, mencione que hubo éxito; de otro modo, notifique el fracaso.

1. Inicializar todos los nodos al estado de preparado (ESTADO=1) 2. Meter el nodo inicial A en la pila y cambiar su estado a estado de espera (ESTADO=2). 3. Repetir los pasos 4 y 5 hasta que la pila este vacia. 4. Sacar el nodo N en la cima de la pila. Procesar el nodo N y cambiar su

estado al de procesado (ESTADO=3). 5. Meter en la pila todos los vecinos de N que estén en estado de

preparados (ESTADO=1) y cambiar su estado a estado de espera (ESTADO=2).

[ fin de bucle del paso 3 ] 6. Salir.

(Algoritmo recursivo) 1- SI estado_inicial = estado_objetivo ENTONCES salir con éxito 2- MIENTRAS no éxito y no fracaso

a- Generar los sucesores del estado inicial. SI no hay más sucesores ENTONCES fracaso

b- Llamar al algoritmo para cada uno de los nodos generados como estado inicial c- Si se devuelve éxito, devolver éxito, si no continuar el bucle

Page 82: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo: Para el árbol de búsqueda anterior se tendría: Se decide encontrar la trayectoria a través de la cola: S – A – B – C, pero esta trayectoria no encuentra la meta “G”. Por lo que se decide al nodo antecesor mas cercano que tenga una alternativa sin explorar, que para el árbol en análisis es B, es este caso se sigue: S – A – B – E – D; igual que la cola anterior, no se encuentra la meta “G”. Nuevamente se ubica en el nodo antecesor mas cercano que tiene una alternativa sin explorar, en este caso es E, se encuentra la trayectoria: S – A – B – E – F – G. A través de esta trayectoria se logra encontrar la meta “G”, por lo que se notifica el éxito. Si un árbol de búsqueda tiene un factor de ramificación b y profundidad máxima m, la cantidad de nodos a revisar será “bm”. La desventaja de la búsqueda en profundidad es la posibilidad de que se quede estancada al avanzar por una ruta equivocada. En muchas ocasiones los árboles de búsqueda son muy profundos, o hasta infinitos, por lo que una búsqueda en profundidad no es recomendable en estos casos. Ventajas de la búsqueda en profundidad

• Requiere mucha menos memoria (sólo hay que guardar el camino actual.) • Puede encontrar una solución sin examinar mucho el árbol, sobre todo si hay varios

caminos a la solución.

S

A

FD

EC

B

G

D

Page 83: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Algoritmo Primero a lo Ancho (BREATH-FIRST)

1. Crear una variable NODE_LIST y ponerla al estado inicial. 2. Hasta que se encuentre el objetivo o hasta que NODE_LIST esté vacía haga lo siguiente:

a. Remover el primer elemento de NODE_LIST, y llamarlo E. Si NODE_LIST estuvo vacía, salir.

b. Para cada forma en que cada regla puede ajustarse al estado descrito en E, haga lo siguiente:

i. Aplicar la regla para generar un nuevo estado. ii. Si el nuevo estado es un estado objetivo, salir y retornar este estado.

iii. Sino, añada el nuevo estado al final de NODE_LIST.

Búsqueda en Anchura: A diferencia con la búsqueda en profundidad ahora se visitan todos los vecinos de un vértice antes de pasar al siguiente. Por tanto no hay necesidad de retroceder. Una vez etiquetados todos los vecinos de un vértice X, se continúa con el primer vértice alcanzado después de X en la búsqueda. Esta técnica se utiliza para resolver problemas en los que se pide hallar una solución óptima entre varias. En general la búsqueda en anchura comenzando de un nodo de partida A es la siguiente: Primero examinamos el nodo de partida A. Luego examinamos todos los vecinos de A. Luego examinamos todos los vecinos de los vecinos de A y así sucesivamente. Con el uso de una cola, garantizamos que ningún nodo sea procesado más de una vez y usando un campo ESTADO que nos indica el estado actual de los nodos. Algoritmo para la Búsqueda en Anchura: Este algoritmo realiza la búsqueda en anchura en un grafo G comenzando en un nodo de partida A: 1. Inicializar todos los nodos al estado de preparados (ESTADO=1). 2. Poner el nodo de partida A en la COLA y cambiar su estado a espera (ESTADO=2). 3. Repetir pasos 4 y 5 hasta que COLA esté vacía. 4. Quitar el nodo del principio de la cola, N. Procesar N y cambiar su

estado a procesado (ESTADO=3). 5. Añadir a COLA todos los vecinos de N que estén en estado de

preparados (ESTADO=1) y cambiar su estado al de espera (ESTADO=2).

[ fin del bucle del paso 3 ] 6. Salir.

Page 84: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Búsqueda Bidireccional o Atrás y Adelante: Es una búsqueda simultanea que avanza a partir del estado inicial o nodo raíz y que retrocede a partir de la meta, deteniéndose cuando ambas búsquedas se encuentran en un punto intermedio. Si el factor de ramificación es b y la profundidad es d, entonces la solución estará a 2bd/2 pasos. Esta búsqueda es útil cuando el factor de ramificación es b en ambas direcciones. La búsqueda no determinista se mueve al azar en el árbol de búsqueda: Cuando se hace una búsqueda no determinista se expande un nodo abierto que se escoge al azar. De este modo se evita la posibilidad de atascarse revisando un número excesivo de ramas o niveles. Para efectuar una búsqueda no determinista:

1. Forme una cola de un elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz.

2. Hasta que la primera trayectoria de la cola concluya en el nodo meta o se vacíe la cola: a. Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo

el primer paso a todos los vecinos del nodo terminal. b. Rechace las trayectorias nuevas con ciclos. c. Agregue las nuevas trayectorias al azar en la cola.

3. Si se halla el nodo meta, mencione que hubo éxito, si no, notifique el fracaso.

Métodos de búsqueda Heurística Información sobre el problema (información del dominio) que permite reducir la búsqueda.

Todos los algoritmos de fuerza bruta son poco eficientes debido a que son búsquedas a ciegas, es decir, no usan conocimiento sobre el dominio para guiarse en busca del siguiente nodo mejor situado. La búsqueda heurística se basa en que la mayor parte de los "espacios problemas" proporcionan información adicional con un pequeño coste computacional. Esta información adicional nos ayuda a elegir los nodos que estén más cerca de la meta. Esta información se llama Heurística. Cuando se posee experiencia, información o algún conocimiento del medio en el cual se realizará la búsqueda se dice que esta es una búsqueda heurística. Se llama Función de Evaluación a una función f que relaciona cada nodo con un número real y que sirve para estimar el costo relativo de continuar la búsqueda desde ese nodo. Por lo general, f(N) se considera que es la distancia estimada que queda entre N y el Nodo Meta. Otras veces se dice que f(N) es la longitud estimada desde el Nodo Raíz hasta el Nodo Meta, pasando por el nodo N, etc... Esta función de evaluación se utilizará para decidir el orden en que se explorarán los nodos durante la búsqueda. Hay varios algoritmos de búsqueda que usan una de estas funciones de evaluación heurística.

Page 85: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Entre ellos están:

Mejor primero (Primero el mejor.) Se basa en utilizar una función de evaluación para cada nodo (estimación de la idoneidad de expandir ese nodo). Se aplica: Al expandir siempre el nodo no expandido más idóneo. Mecanismos: • Búsqueda de Greedy.

• Búsqueda A*.

A*. Se basa en evitar expandir caminos que ya acumulan un coste elevado (tener en cuenta lo que ha costado llegar al nodo actual. Su función de evaluación: f(n) = g(n) + h(n), (se denomina potencia heurística):

g(n): coste para llegar al nodo n. h(n): coste estimado para llegar a un nodo solución, desde el nodo n. f(n): coste total estimado del camino para llegar al objetivo a través del nodo n.

Escalar colinas.

Primero el mejor. Búsqueda primero el mejor: Se asemeja al ascenso de colina, diferenciándose en que el ascenso de colina exige un movimiento más desde el nodo abierto de más reciente creación cuando el movimiento hacia delante se ve impedido. En la búsqueda primero el mejor, el movimiento adicional se realiza a partir del mejor nodo abierto que se tiene hasta ese punto, sin importar donde esté ese nodo en el árbol parcialmente desarrollado.

Este algoritmo, combina las ventajas de los algoritmos primero en profundidad y primero en amplitud. Sigue un sendero a la vez, pero puede cambiarse a otro sendero que parece más prometedor que el que está siguiendo.

En este sentido, puede considerarse que es un algoritmo que realiza su proceso de búsqueda en todos sus ramales por que representan una alternativa de solución. Para su operación, el algoritmo necesita dos listas de nodos y una función heurística que estime los méritos de cada nodo que se genere:

1. ABIERTOS - Es una variable que contiene los nodos que han sido generados. La función heurística ha sido aplicada a ellos, pero todavía no han sido examinados, es decir no se han generado sus sucesores. ABIERTOS puede considerarse como una COLA DE PRIORIDADES en la que los elementos con mayor prioridad son los que tienen los valores más prometedores, dados por la función heurística.

2. CERRADOS - Es una variable que contiene los nodos que han sido examinados. Es necesario tener esta información, para que la búsqueda sea en un grafo y no en un árbol.

Page 86: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

3. FUNCIÓN HEURÍSTICA - Permite que el algoritmo busque primero por senderos que son o parecen más prometedores.

Para muchas aplicaciones, es conveniente definir esta función f', como la suma de dos, que se las llamará g y h'. La función g es una medida del costo de llegar desde el nodo inicial al nodo actual. La función h' es una estimación del costo adicional para llegar desde el nodo actual al estado objetivo. Aquí es donde se explota el conocimiento que se dispone sobre el dominio del problema.

Es decir, la función combinada f' representa una estimación del costo de llegar desde el estado inicial hasta el estado objetivo, siguiendo el sendero que ha generado el nodo actual. Si el nodo actual ha generado más de un sendero, el algoritmo deberá dejar registrado sólo el mejor.

El algoritmo, en la forma que fue formulado, se aplica a grafos. Puede ser simplificado para aplicarse a árboles, si no se preocupa de comprobar si un nuevo nodo esta en ABIERTOS o en CERRADOS. Esto aceleraría la generación de nodos y la búsqueda, para casos en que es poco probable que se repitan nodos.

Usualmente, el costo de ir de un nodo a su sucesor, g, se fija en una constante igual 1, cuando se desea encontrar un sendero a la solución, que involucre el menor número de pasos. Si por el contrario nos interesa encontrar el camino menos costoso y algunos operadores cuestan más que otros, se asume un valor de g, que refleje esos costos. Un valor de g igual a cero significaría que simplemente nos interesa llegar a alguna solución, de cualquier manera.

Si h' es un estimador perfecto de h, hará que A* converja inmediatamente al objetivo, sin búsqueda. Mientras mejor sea h', más cerca se estará de alcanzar esta aproximación directa. Si h' vale cero, la búsqueda será controlada por g. Si el valor de g es también cero, hará que la búsqueda sea aleatoria. Si el valor de g es siempre 1, hará que la búsqueda sea primero en anchura. Para los casos en que h' no sea perfecto ni cero, y nunca llega a sobrestimar el valor de h, el algoritmo A* está garantizado que encontrará un sendero óptimo a un objetivo, en caso de que exista solución. Cuando un algoritmo garantiza el encontrar una solución óptima, si esta existe, se dice que es admisible.

En la búsqueda "el mejor primero" el movimiento hacia adelante se hace desde el nodo mejor situado con respecto a la meta, sin tener en cuenta su situación en el árbol. Los caminos que se encuentren utilizando este método de búsqueda serán más cortos que los que se encuentren buscando con otros métodos, ya que con esta estrategia se parte del nodo mejor situado. Igual que con el método de escalar colinas este método requiere clasificar los nodos de acuerdo con su situación. En este caso, sin embargo, se clasifica toda la estructura de datos. Por lo tanto, en cada paso del proceso de búsqueda se selecciona el nodo más prometedor de todos los que se han generado hasta el momento. Esto se consigue aplicando una función heurística apropiada a cada nodo generado expandiendo, a continuación, aquel que ha dado el mejor resultado al evaluar dicha función heurística. Si uno de los sucesores (hijo) del nodo expandido es la meta, la búsqueda termina. En caso contrario, estos sucesores se suman al conjunto de nodos generados hasta el momento y se repite el proceso de selección del nodo más prometedor.

Page 87: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

El algoritmo que se presenta a continuación realiza la búsqueda a través de un grafo dirigido en el cual cada nodo representa un punto, o estado, en el espacio del problema. Cada nodo es, entonces, una estructura que contiene, además de una descripción del estado del problema que representa, una indicación de lo prometedor que es respecto a los demás nodos, un enlace-padre que apunta al mejor nodo de los nodos-padre que cuelga, y por último, una lista de sus nodos sucesores (aquellos que se generan a partir de él). El enlace-padre permite recobrar el camino hasta la meta una vez se ha llegado a ella. La lista de sucesores permite, cuando se encuentra un camino mejor hasta un nodo ya generado, propagar esta mejora hacia sus sucesores. Para implementar este procedimiento se necesitan dos listas de nodos

OPEN: Contiene los nodos que se han generado y a los cuales se ha aplicado la función heurística pero todavía no han sido examinados (no se han generado sus sucesores). OPEN es, en realidad, una cola de prioridad en la que los elementos con mayor prioridad son aquellos con valor más prometedor para la función heurística.

CLOSED: Contiene los nodos que ya han sido examinados. Es necesario mantener estos nodos en memoria ya que cuando se genera un nuevo nodo hay que comprobar su ya ha sido generado antes.

DESCRIPCION GENERAL DEL ALGORITMO "EL MEJOR PRIMERO"

Se comienza insertando el nodo S (nodo de comienzo) en la lista OPEN. A continuación se van procesando sucesivamente los nodos en OPEN: se comprueba si son nodos meta, y en caso de que no lo sean, se meten en la lista CLOSED, se introducen sus sucesores en OPEN y se actualiza la función heurística f(N) para cada nodo N procesado. Los nodos en OPEN son tratados según un orden que da la mayor prioridad al nodo con menor f(N).

Page 88: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

ALGORITMO

1. Insertar el nodo de comienzo S en OPEN, evaluar f(S) y asociar este valor con S. Poner el enlace-padre a NULL.

2. Si OPEN está vacío, devolver FALLO y parar.

3. Elegir un nodo N de OPEN tal que f(N) < f(M) para cada M en OPEN, tal que N es un nodo meta algún nodo meta tiene ese valor mínimo para f.

4. Poner N en CLOSED y quitar N de 0PEN. 5. Si N es un nodo meta devolver el camino desde S hasta N. Este camino se obtiene recorriendo f hacia atrás los enlaces-padre desde N hasta S. Luego parar. 6. Para cada sucesor J de N que no está aún en OPEN o en CLOSED:

a.- Evaluar f(J) y asociarlo con J. b.- Poner J en OPEN. c.- Poner el enlace-padre de- J apuntando hacia N.

7.- Para cada sucesor J que ya está en OPEN, reevaluar f(J) y comparar este valor con el anterior. Si el nuevo valor es menor, asociarlo con J y volver a colocar J en OPEN.

8.- Ir al paso 2

La eficiencia de este método de búsqueda depende de la función heurística f que se utilice.

EJEMPLO: Resolver utilizando el método de mejor-primero:

Page 89: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

SOLUCION

1. OPEN A

f(A) =8 P(A) = Null Luego al final de esta primera etapa tenemos: OPEN = A CLOSE = NULL 2.- A ≠ Meta y además es el único nodo en OPEN, luego CLOSE A Generamos los sucesores de A B, F, H ∉ OPEN v CLOSED f(B) = 6, P(B) = A f(F) = √37, P(F) = A f(H) =√37, P(H) = A quedando entonces: OPEN = B, F, H CLOSED = A 3. f(B) < f(F). por lo tanto metemos B en CLOSED CLOSED B generamos los sucesores de B C ∉ OPEN v CLOSED OPEN C f(C) = 4, P(C) = B quedando entonces: OPEN = F, H, C CLOSED = A, B 4.-f(C) < f (F). por lo tanto metemos C en CLOSED CLOSED C generamos los sucesores de C D ∉ OPEN v CLOSED f(D) = 2, P (D) = C quedando entonces: OPEN = F, H, D CLOSED = A, B, C 5.- f(D) < f(F). por lo tanto metemos D en CLOSED CLOSED D generamos los sucesores de D E, G ∉ OPEN v CLOSED f(E) = 0, P(E) = D f(G) = 6, P(G) = D Quedamos entonces: OPEN = F, H, E, G CLOSE = A, B, C, D 6. E es la meta, luego devolverá el camino desde el origen hasta la meta.

Page 90: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

METODO DE BUSQUEDA A* Este método de búsqueda examina los nodos en un orden que da la mayor prioridad a los nodos que parecen pertenecer al camino más corto desde el nodo inicial hasta la meta. Es por tanto, similar al método "El Mejor Primero" pero siendo la diferencia fundamental la función heurística f, ya que ésta no es, simplemente, la estimación de la distancia que queda desde el nodo, en cuestión, hasta la meta, sino que se suma un factor g, que representa el coste del mejor camino encontrado hasta el momento, desde el nodo inicial hasta el nodo actual. Así, la función heurística f utilizada en la búsqueda A* queda de la siguiente forma: f = g + h donde las funciones g y h reflejan respectivamente:

g = el coste del mejor camino desde el nodo inicial hasta el actual. h =estimación del coste involucrado en llegar desde el nodo actual a la meta. En

esta función h es donde se explota, realmente, el conocimiento que se tiene sobre el dominio del problema.

La función combinada f, para un nodo N, representa, por tanto, una estimación del coste involucrado en llegar desde el nodo inicial hasta un nodo meta a través del camino que genera el presente nodo N. Si más de un camino generan el nodo N, el algoritmo A* registra el mejor. Asumiendo que la estimación dada por h nunca excede la distancia real entre el nodo actual y la meta, el método A* siempre encuentra el camino más corto entre el nodo inicial y la meta. Esto se conoce como la admisibilidad del método A*. Para implementar este método, cada nodo contendrá la misma información que para el método "El Mejor Primero" y se utilizaran las mismas listas OPEN y CLOSED. ALGORITMO DE BÚSQUEDA A*

1.-Meter en OPEN el nodo inicial. Inicializar el valor g de este nodo a 0, el valor h a lo que corresponda, y el valor f a (0 + h). Inicializar CLOSED con la lista vacía.

2.-Hasta que se encuentre un nodo meta, repetir el siguiente procedimiento: Si no hay ningún nodo en OPEN, devolver fallo. En caso contrario coger el nodo de OPEN que tenga el menor valor para f. Llamar a este nodo MEJOR-NODO. Eliminarlo de OPEN. Ponerlo en CLOSED. Ver si MEJOR-NODO es un nodo meta. Si lo es devolver la solución (bien MEJOR-NODO o el camino creado entre el estado inicial y MEJOR-NODO, según lo que se quiera). En caso

Page 91: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

contrario, generar los sucesores de MEJOR-NODO. Para cada SUCESOR hacer lo siguiente:

a. Poner el enlace-padre de SUCESOR apuntando a MEJOR-NODO.

b. Evaluar g(SUCESOR)=g(MEJOR-NODO) + coste de ir desde MEJOR-NODO a SUCESOR.

c. Ver si SUCESOR está ya en OPEN (es decir, ya ha sido generado pero no procesado):

i.- Si SUCESOR está ya en OPEN: llamar VIEJO a ese nodo. Hay que decidir si el enlace-padre de VIEJO debe cambiarse para apuntar a MEJOR-NODO. Este debe ser el caso cuando el camino que acabamos de encontrar hasta SUCESOR es más "barato" que el camino ya existente hasta VIEJO (SUCESOR y VIEJO son el mismo nodo en el grafo). Para ello se comparan los valores g de SUCESOR y VIEJO. Si VIEJO es más barato (o igual), no hacer nada. Si, por el contrario, SUCESOR es más barato, cambiar el enlace-padre de VIEJO para apuntar a MEJOR-NODO, registrar el nuevo camino más barato en g(viejo) y actualizar f(VIEJO). Añadir VIEJO a la lista de sucesores de MEJOR-NODO.

ii.- Si SUCESOR no está ya en OPEN, ver si está en CLOSED. Si es así, llamar VIEJO a este nodo. Ver cual de los dos caminos, el nuevo o el viejo, es más barato (como en el paso anterior), y ajustar el enlace-padre, y los valores de g y f para VIEJO, según se indica en el apartado c.i.. Si se ha encontrado un camino mejor a VIEJO, esta mejora se debe propagar a los sucesores de VIEJO. Para conseguir esto, hay que tener en cuenta que VIEJO contiene la lista de sus sucesores. A su vez, cada uno de ellos tiene, respectivamente, la lista de sus sucesores, y así sucesivamente, hasta que cada rama termina con un nodo que, o bien está en OPEN, o no tiene sucesores. Por tanto, para propagar el nuevo coste hacia abajo, hay que hacer una búsqueda en profundidad del subarbol que comienza en VIEJO; cambiando el valor g de cada nodo (y luego el de f), y terminando cada rama cuando se llega, bien a un nodo sin sucesores o a un nodo que ya tenía un camino equivalente o mejor (esto garantiza que el algoritmo termina aún cuando se encuentren bucles en el grafo). Para comprobar esta última condición,

hay que recordar

que el enlace-padre de cada nodo apunta hacia el mejor padre de

generados hasta el momento. Añadir VIEJO a la lista de sucesores de MEJOR-MODO.

Page 92: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

d.- Si SUCESOR no está ya en OPEN o en CLOSED: Poner SUCESOR EN OPEN y sumarlo a la lista de sucesores de MEJOR- NODO. Evaluar: f(SUCESOR) =g(SUCESOR) + h(SUCESOR).

EJEMPLO.

¿Es posible aplicar el método de búsqueda A* en este "mapa de carreteras"? Si tenemos la función f(N) = g(N) + h(N) donde:

g(N) = menor distancia real desde el inició hasta N. h(N) = menor distancia estimada desde N hasta la meta.

Mediante las coordenadas X, Y de cada nodo se puede calcular la distancia entre cada par de nodos, luego sí podemos hallar la g(N). Igualmente podemos estimar la "distancia en línea recta" desde N hasta la meta, por lo tanto, también se puede hallar h(N). Por consiguiente, podemos aplicar el método de A*. 1.- Hay un único nodo de OPEN, el origen A. OPEN A P(A) = NULL

g(A) = 0 h(A) = √173

f(A) = √173

quedando al final de esta primera etapa:

OPEN = A

CLOSED =NIL

2.- A ≠ Meta y además es el único nodo en OPEN luego, CLOSED A

Page 93: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Generamos los sucesores de A B, C ∉ OPEN v CLOSED

P(B) = A P(C) = A g(B) = g(A) + dist (A - B) g(C) = g(A) + dist (A - C)

= 0+√10 =√10 = 0+√20 h(B) = √109 h(C) = √81

f(B) = √10 + √109 = 13.6 f (C) = √20 + √81 = 13.47 OPEN B OPEN C

quedando al final-de esta etapa:

OPEN B, C

CLOSED A

3.- f(C) < f(B) luego metemos C a CLOSED

CLOSED C

Generamos los sucesores de C, que en este caso es únicamente D

D ∉ OPEN v CLOSED

P(D) = C g(D) = g(C) + dist(C - D) = √20+√8=7.3 h(D)= √53 f(D)=7.3+√53=14.58 OPEN D

Quedando al final de esta etapa:

OPEN B, D CLOSED A, C

4.- f(B) < f(D) CLOSED B

Generamos los sucesores de B que en este caso serían D y C el sucesor D Є OPEN el sucesor C Є CLOSED

P'(D) = B P'(C) = B g'(D) = g(B) + dist (13 - D) g'(C) = g(B) + dist (B - C) =√10 +√10 = 6.32 =√10+√10 = 6.32

g'(D) = 6.32 < g (D) = 7. 3 g’'(C) > g(C)

Luego hay que modificar luego no cambia nada

P(D) = B P(C) = A g(D) = 6.32 g(C) = 4.47

Page 94: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

f (D) = g'(D) + h (D) f(C) = 13.47 = 6.32 + √53 = 13.6

Quedando al final de esta etapa:

OPEN D CLOSED A, B

5.- Solo hay un nodo en OPEN, luego no hay que compararlo CLOSED D Generamos los sucesores de D, y en este caso son E y F

E ∉ OPEN v CLOSED F ∉ OPEN v CLOSED

P(E) = D P(F) = D

g(E) = g(D) + dist (D - E) g(F) = g(D) + dist (D - F) = 6.32 + √37 = 12.4 =6.32 + √8=9.15 h(E) = √10 h(F) = √25 = 5 f(E) =12.4 + √10 = 15.56 f(F) = 9.15+5

OPEN E OPEN F

Quedando al final de esta etapa:

OPEN E, F CLOSED A, B, D

6.- f(F) < f(E), por lo tanto, metemos F en CLOSED

CLOSED F

Generamos los sucesores de F, siendo en este caso solo G

G ∉ OPEN v CLOSED P(G) = F g(G) = g(F) + dist (F - G) = 9.15 + 5 = 14.15

h(G) = 0 f(G)=14.15+0=14.15 OPEN � G

Quedando al final de esta etapa:

OPEN E, G CLOSED A, B, D, F

7.- f(G) < f(E) y además G es la meta luego metemos G a CLOSED

CLOSED G

Page 95: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Quedando al final de esta etapa: OPEN E CLOSED A, B, D, F, G Para, por fin, obtener el camino solución: G P(G) = F P(F) = D P(D) = B P(B) = A Ascenso de Colina Búsqueda mediante el ascenso de colina: Se procede como en el caso de la búsqueda en profundidad, excepto que se ordenan las selecciones de acuerdo con alguna medición heurística de la distancia que queda por recorrer a la meta. Cuanto mejor sea la medición heurística, mejor será el ascenso de colina con relación a la búsqueda en profundidad normal. El método de escalar colinas es el más simple de los métodos heurísticos. El nombre viene de la analogía existente entre el espacio del problema y un plano bidimensional donde la función heurística define la elevación de cada punto y la meta es alcanzar el punto más alto del terreno. Escalar colinas funciona efectuando movimientos en la dirección que tenga la subida más pronunciada localmente. Lo único que se memoriza es el estado en curso y el que originalmente era el nodo raíz. En cada ciclo se expande el nodo en curso y se aplica la función heurística a cada uno de sus sucesores y el que tenga el mejor valor se convierte en el nuevo estado en curso. Es semejante a la búsqueda en profundidad, excepto que el método de escalar colinas ordena los posibles estados a elegir en cada paso de la búsqueda de acuerdo con alguna medida 1 función heurística de la distancia que queda desde cada uno de ellos hasta la meta. Cuanto mejor sea la medida heurística mejores resultados dará el método de escalar colinas con respecto al de profundidad. Para llevar a cabo una búsqueda en ascenso de colina debe: 1. Forme una cola de un elemento consistente en una trayectoria de longitud cero que contenga solo al nodo raíz; 2. Hasta que la primera trayectoria de la cola termine en el nodo meta o se vacíe la cola,

2.1 Elimine la primera trayectoria de la cola; cree nuevas trayectorias extendiendo el primer paso a todos los vecinos del nodo terminal; 2.2. Rechace todas las trayectorias nuevas con ciclos;

Page 96: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

2.3. Ordena las trayectoria nuevas, si las hay, según las distancias estimadas entre sus nodos terminales y la meta. 2.3. Agregue las nuevas trayectorias, si las hay, al frente de la fila.

3. Si el nodo meta se alcanza, mencione que hubo éxito; de otro modo, notifique el fracaso. Siempre que se enfrente a un problema de búsqueda note que: un mayor conocimiento suele reducir el tiempo de búsqueda. Ejemplo: En la siguiente figura se muestran las distancias existentes desde cada ciudad a la meta. Si desea alcanzar la meta, en general resulta mejor estar en la ciudad que se encuentre mas cerca, aunque no necesariamente; la ciudad C se encuentra más cerca que las demás , con excepción de la ciudad F, pero la ciudad C no es un lugar muy adecuado para estar. La meta encontrada empleando la búsqueda de ascenso de colina es: S – D – E – F - G.

G

EF

D

S

AB C

4.06.710.4

11.0

8.96.9 3.0

A

B

DA

E

F

S

G

A

3.0 6.7

6.910.4

8.910.4

Page 97: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

ORDENAR UNA PILA DE BLOQUES.

OPERADORES PARA LOS BLOQUES:

1. Libre(x) → Sobre(x, Mesa)

2. Libre(x) Y Libre(y) → Sobre(x, y)

FUNCIÓN HEURÍSTICA:

Local: Añadir un punto por cada bloque sobre el lugar correcto. Restar un punto por cada bloque sobre el lugar incorrecto.

Global: Para cada bloque que esté sobre la estructura de apoyo correcta (es decir, la estructura que tiene debajo es exactamente la que tiene que ser), añadir un punto por cada bloque en la pila. Para cada bloque que está sobre una estructura incorrecta, restar un punto por cada bloque en la pila.

BÚSQUEDA EN HAZ: La búsqueda en haz es parecida a la búsqueda en amplitud en cuanto a que avanza nivel por nivel. Sin embargo, se diferencia de esta, la búsqueda en haz se mueve hacia abajo solo a través de los mejores nodos de cada nivel; los otros nodos se ignoran.

Page 98: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

CUARTA UNIDAD:

PROLOG (PROGRAMACIÓN LÓGICA) 4.1. Introducción 4.2. Hechos 4.3. Variables 4.4. Reglas 4.5. El ámbito de las variables 4.6. Operadores 4.7. La resolución de objetivos 4.8. El mecanismo de control de PROLOG 4.9. Entrada / Salida 4.10. Historia y desarrollo de Prolog 4.11. Tipos de datos en Prolog 4.12. Estructura de un programa PROLOG 4.13. Funciones y Pasos de Parámetros. 4.14. Estructuras de Datos en Prolog Introducción. La Quinta Generación prevé máquinas diseñadas para el tratamiento lógico, de capacidades análogas a las capacidades de anteriores generaciones de ordenadores para tratar operaciones aritméticas. Se trata de ordenadores que tienen el PROLOG como lenguaje nativo (lenguaje máquina), con capacidad para procesar millones de inferencias lógicas por segundo (LIPS.) La programación lógica es un paradigma de los lenguajes de programación en el cual los programas se consideran como una serie de aserciones lógicas. De esta forma, el conocimiento se representa mediante reglas, tratándose de sistemas declarativos. Una representación declarativa es aquélla en la que el conocimiento está especificado, pero no viene dada la manera en que dicho conocimiento debe ser usado. El más popular de los sistemas de programación lógica es el PROLOG. Prolog es un lenguaje de programación hecho para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Más exactamente, el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones. Un conjunto de reglas que describa estas propiedades y estas relaciones es un programa Prolog. Prolog es un lenguaje de programación que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos. Un programa escrito en PROLOG puro, es un conjunto de claúsulas de Horn. Sin embargo, PROLOG, como lenguaje de programación moderno, incorpora más cosas, como instrucciones de Entrada/Salida, etc.

Page 99: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Una claúsula de Horn puede ser ó bien una conjunción de hechos positivos ó una implicación con un único consecuente (un único termino a la derecha). La negación no tiene representación en PROLOG, y se asocia con la falta de una afirmación (negación por fallo), según el modelo de suposición de un mundo cerrado (CWA); solo es cierto lo que aparece en la base de conocimiento ó bien se deriva de esta. HISTORIA Y DESARROLLO DE PROLOG. Una de las preocupaciones más tempranas de la computación de los años cincuenta fue la posibilidad de hacer programas que llevaran a cabo demostraciones automáticas de teoremas. Así empezaron los primeros trabajos de inteligencia artificial que más de veinte años después dieron lugar al primer lenguaje de programación que contempla, como parte del intérprete, los mecanismos de inferencia necesarios para la demostración automática. Este primer lenguaje está basado en el formalismo matemático de la Lógica de Primer Orden y ha dado inicio a un nuevo y activo campo de investigación entre las matemáticas y la computación que se ha denominado la Programación Lógica. Estos mecanismos de prueba fueron trabajados con mucho entusiasmo durante una época, pero, por su ineficiencia, fueron relegados hasta el nacimiento de PROLOG, ocurrido en 1970 en la Universidad de Marsella, Francia, en el seno de un grupo de investigación en el campo de la Inteligencia Artificial. La Programación Lógica tiene sus orígenes más cercanos en los trabajos de prueba automática de teoremas de los años sesenta. J. A. Robinson propone en 1965 una regla de inferencia a la que llama resolución, mediante la cual la demostración de un teorema puede ser llevada a cabo de manera automática. La resolución es una regla que se aplica sobre cierto tipo de fórmulas del Cálculo de Predicados de Primer Orden, llamadas cláusulas y la demostración de teoremas bajo esta regla de inferencia se lleva a cabo por reducción al absurdo. Actualmente, la programación lógica ha despertado un creciente interés que va mucho más allá del campo de la Inteligencia Artificial ( IA ) y sus aplicaciones. Los japoneses, con su proyecto de máquinas de la quinta generación, dieron un gran impulso a este paradigma de programación. Sin embargo, antes que ellos existían ya en Estados Unidos y en Europa grupos de investigación en este campo, en países como Inglaterra, Holanda, Suecia y, desde luego, Francia. A principios de los años ochentas los japoneses comienzan a invertir recursos en un proyecto que denominan la Quinta Generación, para lucrar con la buena fama de los 4GL. Con este ambicioso proyecto Japón busca obtener el liderazgo en computación, usando como base la Programación Lógica y la Inteligencia Artificial. La programación lógica tiene sus raíces en el cálculo de predicados, que es una teoría matemática que permite, entre otras cosas, lograr que un computador pueda realizar inferencias, capacidad que es requisito para que un computador sea una "máquina inteligente". La realización del paradigma de la programación lógica es el lenguaje Prolog.

Page 100: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

El Prolog estuvo un tiempo diseñado para ejecutarse en minicomputadoras o estaciones de trabajo, actualmente hay versiones en Prolog que pueden instalarse en computadores personales como IBM-PC y PC-Compatibles. PROgramación LOGica Las diferencias sintácticas entre las representaciones lógicas y las representaciones PROLOG son las siguientes:

• En PROLOG todas las variables están implícitamente cuantificadas universalmente. • En PROLOG existe un símbolo explicito para la conjunción "y" (","), pero no existe

uno para la disyunción "o", que se expresa como una lista de sentencias alternativas. • En PROLOG, las implicaciones p --> q se escriben alrevés q :- p, ya que el

interprete siempre trabaja hacia atrás sobre un objetivo, como se vera más adelante. Elementos fundamentales del lenguaje PROLOG.

HECHOS VARIABLES REGLAS OPERADORES

ESTRUCTURA DE UN PROGRAMA PROLOG Un programa Prolog está formado por una secuencia de enunciados: hechos, reglas y comentarios. Una relación puede estar especificada por hechos, simplemente estableciendo objetos que satisfacen la relación o por reglas establecidas acerca de la relación. Cada regla está formada por un primer miembro (o la cabeza de la regla), un segundo miembro (o cola de la regla) ligados por " :- " y termina con el carácter " . ". %código del programa %%Hechos **

mujer(maria). hombre(pedro). hombre(manuel). hombre(arturo).

%%Relaciones ** padre(pedro,manuel). padre(pedro,arturo). padre(pedro,maria).

%%Reglas ** nino(X,Y):- padre(Y,X) hijo(X,Y):-nino(X,Y),hombre(X). hija(X,Y):-nino(X,Y),mujer(X). hermano_o_hermana(X,Y):-padre(Z,X),padre(Z,Y).

Page 101: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

hermano(X,Y):-hermano_o_hermana(X,Y),hombre(X). hermana(X,Y):-hermano_o_hermana(X,Y),mujer(X).

Hechos. Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relación llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche,ruedas).

• Los nombres de objetos y relaciones deben comenzar con una letra minúscula. • Primero se escribe la relación, y luego los objetos separados por comas y encerrados

entre paréntesis. • Al final de un hecho debe ir un punto (".").

El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo largo de la base de hechos. Ejemplo: Suponga que queremos escribir la información genealógica de un grupo de personas. Para esto podemos utilizar los predicados madre y padre del siguiente modo: padre(juan, amanda). madre(ximena, amanda). madre(laura, juan). padre(andres, juan). padre(patricio, bonifacio). padre(juan, patricio). padre(juan, ana). madre(ximena, ana). El prompt | ?— indica que el intérprete está listo para escuchar los requerimientos del usuario. A partir de esto uno puede hacer consultas: | ?- madre(ximena,ana). yes | ?- padre(juan, ana). yes | ?- padre(juan, ximena). no Nótese que PROLOG responde yes, sólo cuando el hecho asociado aparece en la base de datos que tiene almacenada, o cuando se deriva de la información almacenada.

Page 102: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Una pregunta más interesante involucra el uso de variables. Por ejemplo, si queremos saber si existe alguien que sea el padre de Juan, podemos preguntar: | ?- padre(X,juan). X = andres ?; no | ?- Al decir padre (X , juan) estamos preguntándole a PROLOG si existe alguna interpretación para la variable X que haga que padre (X, juan) sea verdadera. PROLOG responde que X = andres es un valor que haria que la consulta sea verdadera. Mediante el signo ?. PROLOG pregunta si se desea buscar otra solución para el mismo problema. Al decir “;” se le indica a PROLOG que efectivamente uno quiere buscar otra solución. Al no haber otra solución. PROLOG responde no. Otro ejemplo puede ser: | ?- madre(X,Y). X = ximena, Y=amanda?; X = laura, Y = juan ?; X = ximena, Y = ana ? no | ?- En este último ejemplo. PROLOG busca todos los pares (X, Y) tales que madre (X, Y) es verdadero. También es posible realizar preguntas más complejas. Por ejemplo, supongamos que queremos saber ¿quién es el abuelo paterno de ana?: | ?- padre(X,ana), padre(Y,X). X = Juan, Y = andres ?; No | ?- En este ejemplo, la consulta padre (X,ana), padre(Y,X). se procesa en orden. Primero se resuelve la subconsulta padre (X, ana) y los valores resultantes de X se usan para responder la segunda subconsulta. La “;” se interpreta como conjunción.

Page 103: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

TIPOS DE DATOS EN PROLOG Symbol: Hay dos tipos de símbolos. Un grupo de caracteres consecutivos (letras, números y signos de subrayado) que comienzan con un carácter en minúscula. Ejemplo:

alto, alto_edificio, el_alto_ edificio_en_la_ciudad

Un grupo de caracteres consecutivos(letras y números) que comienzan y terminan con dobles comillas("). Este tipo es útil cuando se quiere comenzar el símbolo con un carácter en mayúscula o si se quieres agregar espacios entre los caracteres del símbolo. Ejemplo:

"alto","alto edificio" String: Cualquier grupo de caracteres consecutivos (letras y números) que comience y termine con dobles comillas("). Es igual a símbolo pero Prolog los trata de forma distinta. Ejemplo:

"alto","alto edificio" Integer: Cualquier número comprendido entre (-32.768 y 32.768). El límite esta determinado porque los enteros se almacenan como valores de 16 bits, este límite puede variar según la versión de Prolog. Ejemplo:

4,-300,3004

Real: Cualquier numero real en el rango +/- 1E-307 a +/-1E+308. El formato incluye estas opciones: signo, numero, punto decimal, fracción, E(exponente), signo para el exponente, exponente. Ejemplo:

3,3.1415

Char: Cualquier carácter de la lista ASCII estándar, posicionado entre dos comillas sencillas(‘). Ejemplos:

‘t’,‘X’,‘f’ Variables. Representan objetos que el mismo PROLOG determina. Una variable puede estar instanciada ó no instanciada. Esta instanciada cuando existe un objeto determinado representado por la variable. De este modo, cuando preguntamos "¿Un coche tiene X?", PROLOG busca en los hechos cosas que tiene un coche y respondería: X = ruedas. Instanciando la variable X con el objeto ruedas.

• Los nombres de variables comienzan siempre por una letra mayúscula. Un caso particular es la variable anónima, representada por el carácter subrayado ("_"). Es una especie de comodín que utilizaremos en aquellos lugares que debería aparecer una

Page 104: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

variable, pero no nos interesa darle un nombre concreto ya que no vamos a utilizarla posteriormente. En Prolog una variables se indica iniciando con mayúsculas (X, Y, Persona, ...). Las variables representan cualquier objeto y se usan dentro de los predicados (NO como nombres de predicados). Por ejemplo, si a Juan le pertenece “algo”:

pertenece(juan,X). Reglas. Las reglas se utilizan en PROLOG para significar que un hecho depende de uno ó mas hechos. Son la representación de las implicaciones lógicas del tipo p ---> q (p implica q).

• Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". • La cabeza está formada por un único hecho. • El cuerpo puede ser uno ó mas hechos (conjunción de hechos), separados por una

coma (","), que actúa como el "y" lógico. • Las reglas finalizan con un punto (".").

La cabeza en una regla PROLOG corresponde al consecuente de una implicación lógica, y el cuerpo al antecedente. Este hecho puede conducir a errores de representación. Supongamos el siguiente razonamiento lógico:

tiempo(lluvioso) ----> suelo(mojado) suelo(mojado)

Que el suelo está mojado, es una condición suficiente de que el tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir mediante la implicación, que está‚ lloviendo (pueden haber regado las calles). La representación correcta en PROLOG, sería:

suelo(mojado) :- tiempo(lluvioso). suelo(mojado).

Adviértase que la regla está "al revés". Esto es así por el mecanismo de deducción hacia atrás que emplea PROLOG. Si cometiéramos el error de representarla como:

tiempo(lluvioso) :- suelo(mojado). suelo(mojado).

PROLOG, partiendo del hecho de que el suelo está mojado, deduciría incorrectamente que el tiempo es lluvioso.

Page 105: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Para generalizar una relación entre objetos mediante una regla, utilizaremos variables. Por ejemplo:

Representación lógica Representación PROLOG es_un_coche(X) ----> tiene(X,ruedas) tiene(X,ruedas) :- es_un_coche(X).

Con esta regla generalizamos el hecho de que cualquier objeto que sea un coche, tendrá ruedas. Al igual que antes, el hecho de que un objeto tenga ruedas, no es una condición suficiente de que sea un coche. Por lo tanto la representación inversa sería incorrecta. Ejemplo Al programa que teníamos anteriormente, podemos agregarle las siguientes reglas: abuelo(X,Y):- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(XZ), padre(Z,Y). Con estas reglas podernos consultar quién es abuelo de quién: | ?- abuelo(X,Y). X = andres, Y=ainanda ?; X = andres, Y = patricio ? ; X = andres, Y = ana ?; X = juan, Y = bonifacio ?; no | ?- Las reglas para abuelo se pueden escribir como la regla:

abuelo(X,Y):— padre(X,Z), (madre(Z,Y);padre(Z,Y)). En esta notación el símbolo “;” se utiliza corno disyunción. La regla anterior es equivalente a las dos reglas originales. El uso de “;” debe restringirse intentando mantener la claridad de las reglas que se escriban. No es recomendable utilizar “;” cuando el resultado sea difícil de leer. Como ejercicio, defina la relación herm (X , Y) entre dos individuos. Esta relación será verdadera cuando los dos sujetos tengan al padre o a la madre en común. Suponga que se desea definir la relación antecesor (X , Y). En primer término, definiremos:

antecesorDirecto(X,Y) :— (padre(X,Y) ;madre(X,Y)).

Page 106: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Con el significado obvio Así, podremos escribir que: antecesor(X,Y) antecesorDirecto(X,Y). antecesor(X,Y) antecesorDirecto(X,Z), antecesor(Z,Y).

De modo que obtenemos: | ?— entecesor(X,Y). X = juan, Y = amanda ? ; X = andres, Y = juan ? ; X = patricio, Y = bonifacio ?; X = juan, Y = patricio ?; % y así sucesivamente El ámbito de las variables. Cuando en una regla aparece una variable, el ámbito de esa variable es únicamente esa regla. Supongamos las siguientes reglas:

(1) hermana_de(X,Y) :- hembra(X), padres(X,M,P), padres(Y,M,P). (2) puede_robar(X,P) :- ladron(X), le_gusta_a(X,P), valioso(P).

Aunque en ambas aparece la variable X (y la variable P), no tiene nada que ver la X de la regla (1) con la de la regla (2), y por lo tanto, la instanciación de la X en (1) no implica la instanciacion en (2). Sin embargo todas las X de una misma regla sí que se instanciarán con el mismo valor. Operadores. Son predicados predefinidos en PROLOG para las operaciones matemáticas básicas. Su sintaxis depende de la posición que ocupen, pudiendo ser infijos ó prefijos. Por ejemplo el operador suma ("+"), podemos encontrarlo en forma prefija '+(2,5)' ó bien infija, '2 + 5'. También disponemos de predicados de igualdad y desigualdad. Al igual que en otros lenguajes de programación es necesario tener en cuenta la precedencia y la asociatividad de los operadores antes de trabajar con ellos. En cuanto a precedencia, es la típica. Por ejemplo, 3+2*6 se evalúa como 3+(2*6). En lo referente a la asociatividad,

X = Y igual X \= Y distinto X < Y menor X > Y mayor X =< Y menor ó igual X >= Y mayor ó igual

X=:=Y Verdadero si X e Y son iguales

X=\= Verdadero si X e Y son diferentes

Page 107: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

PROLOG es asociativo por la izquierda. Así, 8/4/4 se interpreta como (8/4)/4. De igual forma, 5+8/2/2 significa 5+((8/2)/2). Aritmética:

comparaciones: =, $<$, $>$, $=<$, $>=$, $/=$ (resultado binario) operaciones: +, -, *, / (división float), // (división integer), mod (números enteros)

X is A $<$op$>$ B (“X” debe ser una variable no instanciada) El operador 'is'. Es un operador infijo, que en su parte derecha lleva un término que se interpreta como una expresión aritmética, contrastándose con el término de su izquierda. Por ejemplo, la expresión '6 is 4+3.' es falsa. Por otra parte, si la expresión es 'X is 4+3.', el resultado será la instanciación de X:

X = 7 Una regla PROLOG puede ser esta:

densidad(X,Y) :- poblacion(X,P), area(X,A), Y is P/A.

Algunos comandos básicos

• consult: El predicado consult esta pensado para leer y compilar un programa PROLOG o bien para las situaciones en las que se precise añadir las cláusulas existentes en un determinado fichero a las que ya están almacenadas y compiladas en la base de datos. Su sintaxis puede ser una de las siguientes:

consult ( fichero ). consult( 'fichero.ext' ). consult( 'c:\ia\prolog\fichero' ).

• recon: El predicado recon es muy parecido a consult, con la salvedad de que las cláusulas existentes en el fichero consultado, reemplazan a las existentes en la base de hechos. Puede ser útil para sustituir una única cláusula sin consultar todas las demás, situando esa cláusula en un fichero. Su sintaxis es la misma que la de consult.

• forget: Tiene como fin eliminar de la base de datos actual aquellos hechos consultados de

un fichero determinado. Su sintaxis es: forget( fichero ).

• exitsys: Este predicado nos devuelve al sistema operativo.

Page 108: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Programación básica en PROLOG. Con los datos que conocemos, ya podemos construir un programa en PROLOG. Necesitaremos un editor de textos para escribir los hechos y reglas que lo componen. Un ejemplo sencillo de programa PROLOG es el siguiente:

quiere_a(maria,enrique). quiere_a(juan,jorge). quiere_a(maria,susana). quiere_a(maria,ana). quiere_a(susana,pablo). quiere_a(ana,jorge). varon(juan). varon(pablo). varon(jorge). varon(enrique). hembra(maria). hembra(susana). hembra(ana). teme_a(susana,pablo). teme_a(jorge,enrique). teme_a(maria,pablo). /* Esta linea es un comentario */ quiere_pero_teme_a(X,Y) :- quiere_a(X,Y), teme_a(X,Y). querido_por(X,Y) :- quiere_a(Y,X). puede_casarse_con(X,Y) :- quiere_a(X,Y), varon(X), hembra(Y). puede_casarse_con(X,Y) :- quiere_a(X,Y), hembra(X), varon(Y).

Una vez creado, lo salvaremos para su posterior consulta desde el interprete PROLOG. Un programa PROLOG tiene como extensión por defecto '.PRO'. Le daremos el nombre 'relacion.pro'. Un programa de “relaciones familiares” definiendo la relación “abuelo”. Sería:

% familia: % hechos: m(luis). m(rico). m(fuhed). m(edgar). f(aida). f(bety). f(shafy). papa(fuhed,luis). mama(aida,luis).

Page 109: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

papa(fuhed,rico). papa(luis,edgar). papa(fuhed,bety). papa(fuhed,shafy). papa(jesus,fuhed). % reglas: abuelo(X, Z) :- papa(X,Y), papa(Y, Z). abuelo(X,Z) :- papa(X, Y), mama(Y, Z).

Otro ejemplo. A modo de ilustración considere el siguiente programa: grande (oso). grande(elefante). pequeno (gato). cafe(oso). negro (gato). gris(elefante). oscuro(Z) :- negro(Z). oscuro(Z) :— cafe(Z). Junto con la consulta: ? - oscuro(X), grande(X). La ejecución del programa PROLOG es equivalente a realizar una búsqueda en profundidad en un espacio definido por el programa y por el objetivo inicial. La resolución de objetivos. Hemos creado un programa PROLOG [relacion.pro]. A partir de este momento podemos interrogar la base de hechos, mediante consultas. Una consulta tiene la misma forma que un hecho. Consideremos la pregunta:

?-quiere_a(susana,pablo). PROLOG buscar por toda la base de conocimiento hechos que coincidan con el anterior. Dos hechos coinciden si sus predicados son iguales, y cada uno de sus correspondientes argumentos lo son entre sí. Si PROLOG encuentra un hecho que coincida con la pregunta, responderá yes. En caso contrario responderá no.

Page 110: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Además, una pregunta puede contener variables. En este caso PROLOG buscara por toda la base de hechos aquellos objetos que pueden ser representado por la variable. Por ejemplo: ?-quiere_a(maria, Alguien). [NOTA: Alguien es un nombre perfectamente válido de variable, puesto que empieza por una letra mayuscula.] El resultado de la consulta es:

Alguien = enrique El hecho 'quiere_a(maria,enrique).' coincide con la pregunta al instanciar la variable Alguien con el objeto 'enrique'. Por lo tanto es una respuesta valida, pero no la única. Por eso se nos pregunta si queremos obtener más respuestas. En caso afirmativo, obtendríamos: Alguien = susana Alguien = ana La “,” (coma) representa una conjunción (Y). Es decir que hay que probar ambas submetas para probar la meta representada por la regla. Negación - en Prolog se implementa por lo que se conoce como negación por fallo, es decir que si algo no se puede probar se considera falso. La disjunción (O) se puede implementar mediante dos reglas con la misma meta. También se pueden tener reglas recursivas, en las que una submeta es la misma meta (debe haber una condición de terminación). Esto se ilustra en el resto del ejemplo de la familia:

hermano(X, Z) :- papa(Y,X), papa(Y, Z), not(X=Z). tio(X, Z) :- m(X), papa(Y, Z), hermano(X,Y). tia(X,Z):-f(X),papa(Y,Z),hermano(X,Y). proj(X, Y) :- papa(X, Y). proj(X, Y) :- mama(X, Y). ancestro(X, Z) :- proj(X, Z). ancestro(X, Z) :- proj(X, Y), ancestro(Y, Z).

El operador "not". Se define de tal forma que el objetivo not(X) se satisface solo si fracasa la evaluación de X. En muchos casos, puede sustituir al operador corte, facilitando la lectura de los programas. Por ejemplo:

a :- b, c. a :- not(b), d. Equivale a: a :- b, !, c. a :- d.

Sin embargo, en términos de coste, el operador corte es más eficiente, ya que en el primer caso PROLOG intentará satisfacer b dos veces, y en el segundo, solo una.

Page 111: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Estructuras de datos: Las Listas Una lista es una arreglo ordenado se elementos cuya longitud (numero de elementos) es variable. La lista es una estructura de datos muy común en la programación no numérica. Es una secuencia ordenada de elementos que puede tener cualquier longitud. Ordenada significa que el orden de cada elemento es significativo. Un elemento puede ser cualquier término e incluso otra lista. Se representa como una serie de elementos separados por comas y encerrados entre corchetes. Por ejemplo: [Dom, Lun, Mar, Mier, Jue, Vier, Sab] En Prolog se representa con una serie de elementos separados por “,” entre paréntesis cuadrados. Ejemplos:

[a,b,c] [ ] - lista vacía [a,[b,c],d] - un elemento puede ser a su vez una lista

Para procesar una lista, la dividimos en dos partes: la cabeza y la cola. Por ejemplo: Para dividir una lista, utilizamos el símbolo "|". Una expresión con la forma [X | Y] instanciar X a la cabeza de una lista e Y a la cola. Es decir, las listas se manipulan especificando su “cabeza” (Head - primer elemento), y “cola” (Tail - lista del resto de los elementos.) Por ejemplo:

p([1,2,3]). p([el,gato,estaba,[en,la,alfombra]]).

?-p([X|Y]). X = 1, Y = [2,3] More (Y/N):y X = el, Y = [gato,estaba,[en,la,alfombra]]

------------------------------------------

[a,b,c] - H = a, T = [b,c] [a] - H = a, T = [ ] [[b,c],d] - H = [b,c], T = [d] [ ] - H = fail, T = [ ]

El valor de las listas en un programa Prolog disminuye si no es posible identificar los elementos individuales que habrán de integrarlas. Debido a ello, es necesario tener en cuenta el concepto de su

Lista Cabeza Cola [a,b,c,d] a [b,c,d] [a] a [] (lista vacía)[] no tiene no tiene [[a,b],c] [a,b] [c] [a,[b,c]] a [[b,c]] [a,b,[c,d]] a [b,[c,d]]

Page 112: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

división en dos partes: cabeza y cola. La cabeza de la lista es el primer elemento de la misma. La cola es el resto de la lista, sin importar lo que pueda contener. Para hacer uso practico de la capacidad de dividir listas en cabeza y cola, Prolog proporciona una notación especial con la que se definen las listas en los programas. Existen dos símbolos especiales que se utilizan: El corchete abierto /cerrado. Se usa para denotar el inicio y el final de una lista. El separador, su símbolo es | y se usa para permitir que una lista se represente como una cabeza y una cola. Para procesar una lista, la dividimos en dos partes: la cabeza y la cola. Ejemplo:

Lista Cabeza Cola ----- ------ ---- [a, b, c, d] a [b, c, d] [a] a [ ] (lista vacía) [ ] no tiene no tiene elementos [[a, b],c] [a, b] [c] [a,[b, c]] a [[b, c]] [a, b,[c, d]] a [b,[c, d]]

Para dividir una lista, utilizamos el símbolo "|". Una expresión con la forma [ X | Y ] instanciar “X” a la cabeza de una lista e “Y” a la cola. Ejemplo:

p([1,2,3]). ?-p([X | Y]). X = 1, Y = [2,3] p([el, gato, estaba,[ en, la, alfombra ]]). ?-p([X | Y]). X = el, Y = [gato, estaba, [en, la, alfombra]]

Se pueden hacer estructuras tan complejas como se quiera en Prolog. Se pueden poner listas dentro de listas. Ejemplo: animales([[mono, búfalo, rata], [serpiente, iguana, cocodrilo], [paloma, pingüino]]) A continuación veremos algunas operaciones importantes con listas.

% inserta un elemento al inicio de una lista: inserta(E,Li,Lf):-Lf=[E$|$Li]. % inserta mejorado: inserta2(E,Li,[E$|$Li]). % match. match([],[]).

Page 113: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

match([H1$|$T1],[H2$|$T2]):-H1=H2, match(T1,T2). % concatena 2 listas (para búsqueda): agrega([ ],L,L). agrega([H$|$L1],L2,[H$|$L3]):- agrega(L1,L2,L3).

Operador corte Utilizando el operador de corte, observaremos el siguiente comportamiento: | ?— rnernber(X,[a,b)), !. X = a ?; no | ?- Cuando se encuentra con el objetivo !, PROLOG se compromete con todas las unificaciones que se han realizado antes del ! y desde el momento que se introduce el ! a la lista de objetivos pendientes. Como estilo de programación se recomienda escribir programas sin corte La recursividad. La recursividad es un mecanismo que da bastante potencia a cualquier lenguaje de programación. Veamos un ejemplo de programación recursiva que nos permitirá determinar si un átomo es miembro de una lista dada:

(1) miembro(X,[X|_]). (2) miembro(X,[_|Y]) :- miembro(X,Y).

La regla (1) es el caso base de la recursión. Se evaluará como cierta siempre que coincida la variable X con la cabeza de la lista que se pasa como argumento. En la regla (2) está la definición recursiva. X es miembro de una lista si lo es de la cola de esa lista (la cabeza se comprueba en la regla (1)). La regla (1) es una simplificación de la regla:

miembro(X,[Y|_]) :- X = Y. La traza para el caso de 'miembro(b,[a,b,c]).' es la siguiente: (1) miembro(b,[a,b,c]) :- b = a. ---> no. (2) miembro(b,[a,b,c]) :- miembro(b,[b,c]). (1) miembro(b,[b,c]) :- b = b. ---> yes.

Si necesitamos conocer la longitud de una lista, emplearemos una función recursiva como la siguiente:

longitud([],0).

Page 114: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

longitud([_|Y],L1) :- longitud(Y,L2), L1 is L2 + 1. Otro ejemplo muy típico de función recursiva es el del factorial de un número: factorial(0,1) :- !. factorial(X,Y) :- X1 is X-1, factorial(X1,Y1), Y is X*Y1.

ENTRADA / SALIDA

PROLOG, al igual que la mayoría de lenguajes de programación modernos incorpora predicados predefinidos para la entrada y salida de datos. Estos son tratados como reglas que siempre se satisfacen.

• write: Su sintaxis es: write('Hola mundo').

Las comillas simples encierran constantes, mientras que todo

lo que se encuentra entre comillas dobles es tratado como una lista. También podemos mostrar el valor de una variable, siempre que este instanciada: write(X).

• nl: El predicado nl fuerza un retorno de carro en la salida. Ejemplo:

• write('línea 1'), nl, write('línea 2'). tiene como resultado:

línea 1 línea 2

• read: Lee un valor del teclado. La lectura del comando read no finaliza hasta que se introduce un punto ".". Su sintaxis es: read(X). Instancia la variable X con el valor leído del teclado.

read(ejemplo).

Se evalúa como cierta siempre que lo tecleado coincida con la constante entre paréntesis (en este caso 'ejemplo'). Por ejemplo con, write(X), si “X” esta instanciada se despliega su valor, si no se despliega un identificador. Por ejemplo con, read(X), si “X” no esta instanciada se instancia al valor leído, si no se compara el valor que tiene con el leído y falla si son diferentes.

Page 115: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

EL MECANISMO DE CONTROL DE PROLOG El mecanismo empleado por PROLOG para satisfacer las cuestiones que se le plantean, es el de razonamiento hacia atrás (backward) complementado con la búsqueda en profundidad (depth first) y la vuelta atrás o reevaluación (backtracking). Razonamiento hacia atrás: Partiendo de un objetivo a probar, busca las aserciones que pueden probar el objetivo. Si en un punto caben varios caminos, se recorren en el orden que aparecen en el programa, esto es, de arriba a abajo y de izquierda a derecha. Reevaluación: Si en un momento dado una variable se instancia con determinado valor con el fin de alcanzar una solución, y se llega a un camino no satisfactorio, el mecanismo de control retrocede al punto en el cual se instanció la variable, la desinstancia y si es posible, busca otra instanciación que supondrá un nuevo camino de búsqueda. Ejemplo:

Se puede ilustrar esta estrategia sobre el ejemplo anterior. Supongamos la pregunta: ?-puede_casarse_con(maria, X).

PROLOG recorre la base de datos en busca de un hecho que coincida con la cuestión planteada. Lo que halla es la regla: puede_casarse_con(X, Y) :- quiere_a(X, Y), varon(X), hembra(Y). Produciéndose una coincidencia con la cabeza de la misma, y una instanciación de la variable “X” de la regla con el objeto 'maria'. Tendremos por lo tanto:

(1) puede_casarse_con(maria,Y) :- quiere_a(maria,Y), varon(maria), hembra(Y).

A continuación, se busca una instanciación de la variable “Y” que haga cierta la regla, es decir, que verifique los hechos del cuerpo de la misma. La nueva meta será : (2) quiere_a(maria, Y). De nuevo PROLOG recorre la base de datos. En este caso encuentra un hecho que coincide con el objetivo:

quiere_a(maria, enrique).

instanciando la variable “Y” con el objeto 'enrique'. Siguiendo el orden dado por la regla (1), quedan por probar dos hechos una vez instanciada la variable “Y”:

varon(maria), hembra(enrique).

Se recorre de nuevo la base de datos, no hallando en este caso ninguna coincidencia con el hecho “varón(maria)”. Por lo tanto, PROLOG recurre a la vuelta atrás, desistanciando valor de la variable “Y”, y retrocediendo con el fin de encontrar una nueva instanciación de la misma que verifique el hecho (2). Un nuevo recorrido de la base de hechos da como resultado la coincidencia con:

quiere_a(maria, susana).

Page 116: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Se repite el proceso anterior. La variable Y se instancia con el objeto 'susana' y se intentan probar los hechos restantes:

varón(maria), hembra(susana).

De nuevo se produce un fallo que provoca la desinstanciación de la variable “Y”, así como una vuelta atrás en busca de nuevos hechos que coincidan con (2). Una nueva reevaluación da como resultado la instanciación de “Y” con el objeto 'ana' (la ultima posible), y un nuevo fallo en el hecho “varón(maria).” Una vez comprobadas sin éxito todas las posibles instanciaciones del hecho (2), PROLOG da por imposible la regla (1), se produce de nuevo la vuelta atrás y una nueva búsqueda en la base de datos que tiene como resultado la coincidencia con la regla:

(3) puede_casarse_con(maria,Y) :- quiere_a(maria,Y), hembra(maria), varon(Y).

Se repite todo el proceso anterior, buscando nuevas instanciaciones de la variable “Y” que verifiquen el cuerpo de la regla. La primera coincidencia corresponde al hecho:

quiere_a(maria,enrique).

que provoca la instanciación de la variable “Y” con el objeto 'enrique'. PROLOG tratar de probar ahora el resto del cuerpo de la regla con las instanciaciones actuales:

hembra(maria), varon(enrique). Un recorrido de la base de datos, da un resultado positivo en ambos hechos, quedando probado en su totalidad el cuerpo de la regla (3) y por lo tanto su cabeza, que no es mas que una de las soluciones al objetivo inicial.

X = enrique

PROLOG utiliza un mecanismo de búsqueda independiente de la base de datos. Aunque pueda parecer algo ilógico, es una buena estrategia puesto que garantiza el proceso de todas las posibilidades. Es útil para el programador conocer dicho mecanismo a la hora de depurar y optimizar los programas. Control Prolog realiza, en forma general, una búsqueda por profundidad con retroceso (“backtracking”). Al intentar probar una meta (regla), busca primero probar la primera condición, después la segunda, etc. Si alguna es falsa, entonces falla dicha regla, e intenta la siguiente regla (si existe) para la misma meta. Hay ciertas formas de alterar la estrategia básica de búsqueda: CUT (!) - evita el ``backtracking''

Page 117: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplos: X:- a,b,c,!,d,e. Predicados mutuamente exclusivos - escalón:

esc(X,-1):- X $<$ 0, !. esc(X, 0):- X $=$ 0, !. esc(X, 1):- X $>$ 0, !.

FAIL - siempre es falso (TRUE - siempre es verdadero) Ejemplos:

impuesto(Persona, X) :- desempleado(Persona), !, fail. impuesto(Persona, X) :- ... Excepciones:

diferente(X,X):-!,fail. diferente(X,Y).

NOT - verdadero si no se puede probar la meta. Predicado predefinido que se podría definir como: not(P):-P,!,fail. \\ not(P) Ordenamiento de Listas Una solución es insertar el elemento en el lugar que le corresponde:

sort([H|T],LO) :- sort(T,TO), insertao(H,TO,LO). sort([],[]). insertao(H,[],[H]).

insertao(H,[F|T],[F|R]) :- H > F, insertao(H,T,R). insertao(H,[F|R],[H,F|R]) :- H =< F.

Método Quicksort (Ej. Dividir en menores y mayores a un cierto elemento, ordenarlos y juntarlos todos.)

qsort([H|T],LO) :- divide(H,T,Men,May), qsort(Men,MenO), qsort(May,MayO), agrega(MenO,[H|MayO],LO). qsort([],[]). divide(El,[H|T],[H|Men],May) :-

El > H, divide(El,T,Men,May). divide(El,[H|T],Men,[H|May]) :- El < H, divide(El,T,Men,May). divide(_,[],[],[]).

Page 118: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Manipulación de la Base de Conocimientos Un programa en Prolog se puede ver como una ``base de datos'', de forma que 'esta puede ser modificada dinámicamente -- agregando y borrando cláusulas. Para ello existen varios predicados predefinidos: assert: agregar una cláusula a la base de datos asserta: agregar una cláusula al inicio de la base de datos assertz: agregar una cláusula al final la base de datos retract: borra una cláusula de la base de datos Ejemplos: assert(padre(juan,rita)). retract(padre(juan,rita)). Estas facilidades son muy poderosas y útiles en algunas aplicaciones, pero hay que usarlas con cuidado ya que en realidad se esta modificando el programa resultando en que en diferentes momentos puede dar diferentes resultados. Sistemas Expertos en Prolog Es casi inmediato el implementar un sistema de reglas de producción en Prolog, ya que sus cláusulas se pueden ver como reglas y su interprete como una maquina de inferencias la cual realiza encadenamiento hacia atrás y búsqueda en profundidad. Un sistema experto para créditos bancarios podría codificarse como el siguiente programa en Prolog:

prest(X,C):- solv(X,C),hist(X,C),ref(X,C). hist(X,C):- tarjeta(X,T1),tarjeta(X,T2). hist(X,C):- prestamo(X,casa). hist(X,C):- prestamo(X,carro). solv(X,C):- ing(X,I), P is C / 10, T is 3 * P, I > T. ref(X,C):- refer(X,Y), refer(X,Z), refer(X,W), not(Y=Z), not(Z=W). % Un caso: prestamo(juan,carro). ing(juan,100). refer(juan,pedro). refer(juan,maria). refer(juan,sol).

Page 119: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

FUNCIONES Y PASOS DE PARÁMETROS. La recursividad es un mecanismo que da bastante potencia a cualquier lenguaje de programación. Ejemplo: La siguiente programación recursiva nos permitirá determinar si un tomo es miembro de una lista dada:

(1) miembro(X,[X|_]). (2) miembro(X,[_|Y]) :- miembro(X,Y).

La regla (1) es el caso base de la recursión. Se evalúa como cierta siempre que coincida la variable “X” con la cabeza de la lista que se pasa como argumento. En la regla (2) es la definición recursiva. “X” es miembro de una lista si lo es de la cola de esa lista (la cabeza se comprueba en la regla (1)). La regla (1) es una simplificación de la regla:

miembro(X,[Y|_]) :- X = Y.

La traza para el caso de 'miembro(b,[a,b,c]).' es la siguiente:

(1) miembro(b,[a,b,c]) :- b = a. no. (2) miembro(b,[a,b,c]) :- miembro(b,[b,c]). (1) miembro(b,[b,c]) :- b = b. yes.

Si necesitamos conocer la longitud de una lista, emplearemos una función recursiva como la siguiente:

longitud([ ],0). longitud([_|Y],L1) :- longitud(Y,L2), L1 is L2 + 1.

Otro ejemplo muy típico de función recursiva es el del factorial de un número:

factorial(0,1) :- !. factorial(X, Y) :- X1 is X-1, factorial(X1,Y1), Y is X * Y1.

La definición de una función esta en los hechos que adoptemos para inferir sobre la base de conocimiento de Prolog, el paso de parámetros debe definirse en las reglas a través de los predicados que los invoquen, ya sea por el mismo o por otro predicado. Para que los predicados definidos como función, no retornen un valor errado, el tipo de dato de la variable del predicado llamador debe ser igual al del predicado llamado. Esto es debido a que los predicados aritméticos propios de Prolog no identifican entre un número real o entero.

Page 120: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

QUINTA UNIDAD: SISTEMAS EXPERTOS 5.1 Sistemas expertos.

a) Problemas solubles con sistemas expertos. b) Estructuras y cualidades de un sistema experto. c) Herramientas para la construcción de un sistema experto. d) Manejo de incertidumbre y probabilidad.

5.2. Algunos Shell de sistemas expertos. INTRODUCCIÓN. Ingeniería de conocimiento La inteligencia artificial es la base de la ingeniería del conocimiento. Esta Inteligencia Artificial (IA) se puede ver como ciencia o como ingeniería Como ciencia:

Por que trata de entender la naturaleza de la inteligencia Como ingeniería procura elaborar software capaz de actuar como humano elaborar artefactos que presenten una conducta inteligente

Objetivos de la IA

La inteligencia es una noción transparente aun más cuando se trata de simular en una máquina.

La IA ha emprendido la tarea de proporcionar una base teórica al concepto de la Inteligencia.

Utiliza la computadora como un laboratorio donde desarrollar nuevas formas de pensar acerca del pensar.

La IA se ha visto considerablemente enriquecida al intentar de describir los rasgos análogos a la IA

LA IA COMO INGENIERIA

Tiene como meta construir sistemas reales que funcionan Se percibe como un intento de crear una nueva tecnología informática Se ocupa de los conceptos, la teoría y las prácticas de cómo construir

máquinas inteligentes, es decir, máquinas que resuelvan problemas. El ejemplo más paradigmático de máquinas inteligentes por el éxito que están alcanzado comercialmente sean los sistemas basados en conocimientos (SSBBCC) y los sistemas expertos en concreto (SSEE)

Page 121: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

A la actividad de construir estos sistemas se le denomina: Ingeniería del Conocimiento (INCO) La INCO busca el adquirir, conceptuar, formalizar y usar grandes cantidades de conocimientos de la mas alta calidad Arquitectura típica de un sistema experto

INTELIGENCIA ARTIFICIAL

SISTEMAS BASADOSEN CONOCIMIENTOS

SISTEMAS EXPERTOS

Sus programas exhiben

comportamientos inteligentes por

Hacen explícitos los

conocimientos de un dominio y

Aplican los conocimientos

expertos a problemas difíciles del

Motor de Inferencias.

Base de Conocimientos

Interfaz

Usuario

Page 122: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Sistema humano de procesamiento de la información

SUSBSISTEMA COGNITIVO

MEMORIA A LARGO PLAZO

MEMORIA DE TRABAJO

PROCESADOR COGNITIVO

SUSBSISTEMA PRECEPTIVO

SENSORES MEMORIA

SUSBSISTEMA MOTOR

MEMORIA MÚSCULOS

EST Í MULO

RESPUESTA

Page 123: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

SOLUCIÓN INFORMÁTICA DE UN PROBLEMA

DEFINIRLO EN TERMINOS DE ESTADO Y OPERADORES (ALT)

GENERAR Y ANALIZAR ESPACIO DE BUSQUEDA

IDENTIFICAR CONOCIMIENTO

APLICABLE A REDUCIR ESPACIO BUSQUEDA

DESARROLLAR MARCO CONCEPTUAL EN TERMINOS DE REPRESENTACION E

INFERENCIA

INSTRUMENTAR SISTEMA ADECUADO . PROBAR Y ACTUALIZAR

SOLUCION ALGORITMICA TRADICIONAL

PROGRAMACION CONVENCIONAL

SISTEMA BASADO EN EL CONOCIMIENTO

PROBLEMA

Page 124: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Psicologia Cognitiva

Herramientas construccion SE

Computacion de la V-generacion

Desarrollo de la microelectrínica

Desarrollo de computadores

Computación interactiva

Entornos de programacion incremental

Sistemas de computacion

simbolica Lógica Formal

Lenguajes de procesamiento de listas

Sistemas hibridos muy grandes

Sistemas hibridos grandes

Sistemas de tutoría inteligentes

INTELIGENCIA ARTIFICIAL APLICADA

VISION COMPUTACIONAL

ROBOTICA

LENGUAJE NATURAL

SISTEMAS EXPERTOS

Sistemas restringidos

grandes

Workstations inteligentes

Sistemas de pequeña escala

Instrumentos inteligentes

Nuevos conceptos en análisis de trabajos y diseño organizaciones

Page 125: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

5.1 SISTEMAS EXPERTOS.

Desde que naciera la Inteligencia Artificial como tal ciencia, a principios de los 60, hasta la actualidad, se han venido realizando numerosos trabajos, especialmente en los Estados Unidos, para el desarrollo de los diversos campos que componen la Inteligencia Artificial. De todos esos campos, quizá el que puede tener mayor número de aplicaciones prácticas sea el de los Sistemas Expertos, siendo dichas aplicaciones de utilidad en temas tan variados que pueden ir desde la medicina hasta la enseñanza pasando por el CAD.

Un sistema experto es una aplicación informática que simula el comportamiento de un experto humano en el sentido de que es capaz de decidir cuestiones complejas, si bien en un campo restringido. Siendo la principal característica del experto humano el conocimiento o habilidades profundas en ese campo concreto, por consiguiente, un sistema experto debe ser capaz de representar ese conocimiento profundo con el objetivo de utilizarlo para resolver problemas, justificar su comportamiento e incorporar nuevos conocimientos. Se podría incluir también el hecho de poder comunicarse en lenguaje natural con las personas, si bien esta capacidad no es tan determinante como las anteriores de lo que se puede definir como Sistema Experto. a) Problemas solubles con sistemas expertos. Las tareas para las que estos sistemas se desarrollan son, casi por definición, complejas. Por tanto, un sistema experto es un sistema computacional capaz de representar y razonar sobre un dominio determinado que precisa de gran cantidad de conocimiento, tal como la aeronáutica o la medicina. Se puede distinguir de otros tipos de aplicaciones de IA en que: trabaja con temas complejos que normalmente requieren una considerable cantidad de experiencia humana; debe ser una herramienta práctica y útil; para ello debe ofrecer un alto rendimiento en cuanto a

Los mecanismos de explicación, la parte más fascinante de los sistemas expertos, permiten a los sistemas explicar o justificar sus conclusiones, y también posibilitan a los programadores verificar el funcionamiento de los propios sistemas.

Page 126: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

velocidad de ejecución y fiabilidad; debe ser capaz de explicar y justificar sus soluciones y consejos para convencer al usuario de lo correcto de su razonamiento. Los sistemas expertos son el tipo de aplicación de IA que mejores resultados ha conseguido. Estos sistemas son usados hoy en día en un amplio abanico de dominios y han probado ser altamente fiables. Por ello sería deseable la disponibilidad de interfaces en lenguaje natural que facilitasen la comunicación con el sistema por parte de usuarios no expertos en computación (médicos, biólogos, ingenieros).

b) Estructuras y cualidades de un sistema experto. Un diagrama general de bloques de un Sistema Experto se representa en la figura siguiente:

Interfase del usuario

Máquina de inferencia 1. Reglas de inferencias 2. Estrategias de control

Base de conocimiento 1. Reglas 2. Marcos 3. Redes semánticas etc.

Base de datos (Memoria de trabajo) Estado del sistema Estados iniciales Estado actual Factores

Usuario

Page 127: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

La base del conocimiento representa el universo donde esta el sistema, es decir la información que rodea al problema. A través del motor de inferencia sabemos como el experto decide cual regla aplicar a cuales datos, como resolver conflictos entre reglas y entre datos; y como va ha inferir los nuevos hechos o nuevos datos; y para eso debemos saber como piensa el experto y debemos saber como utiliza la base del conocimiento (base de reglas y la base de datos.) La interfaz del usuario debe servir para ingresar los datos, las reglas, cambiarlas, cambiar el motor de inferencia; debe tener capacidad de circulación y capacidad de operación cuando se usa en el sistema experto. El Shell es un módulo formado por el motor de inferencia y la interface del usuario y son los generadores del sistema experto. De acuerdo a todos los estudios (desde 1987) usar un Shell es una manera racional para desarrollar un sistema experto. La base de datos y las reglas deben cumplir ciertos formalismos para que el Shell lo entienda. Los resultados de utilizar sistemas expertos hasta el momento son apenas aceptables. en algunos casos buenos o bastante buenos y en algunos casos realmente malos. Estos errores son debidos a que no se sabe elegir el Shell del sistema experto. No es lo mismo usar un Shell que desarrolla una persona para un problema de Agricultura que usar el mismo programa para resolver problemas de producción o de verificación de producción por poner un ejemplo. La razón es que el dominio de la aplicación es diferente por lo tanto el sistema no va ha funcionar. Muchas empresas nos dicen el origen del Shell. Algunos son muy atractivos pero cuando se les hace una prueba de escritorio funcionan mal. Por lo tanto un Ingeniero o futuro Ingeniero debe desarrollar métodos para evaluar estos Shell. Motor de Inferencia Es la forma como el experto soluciona un problema haciendo funcionar las reglas, encadenando las reglas para llegar a la solución. Antes se tiene que definir estas reglas. El ciclo de Cálculo: El motor sigue un orden. Selecciona cual es la regla que debe aplicar primero basado en hechos, cuál es la hipótesis y cuáles son las metas; luego se aplican y se definen nuevas reglas con nuevos datos o se demuestra que la elección es valida. Función del Motor de Inferencia

♦ Determinar cuales son las acciones que deben de realizarse ♦ Determinar el orden de las acciones ♦ Determinar como se realizan las acciones entre las distintas partes del sistema experto,

como se comunican con la base de conocimiento, la interface del usuario, etc. ♦ Como y cuando se procesan las reglas

Page 128: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

♦ Establecer los criterios de control de dialogo con la persona ♦ Establecer los criterios para resolver problemas; siempre existen criterios que utilizan

mecanismos diferentes. La Interfaz del Usuario Debe permitir correr el programa y tener todas las facilidades para consultar, preguntar porqué el programa eligió esa regla y obtuvo ese hecho o dato, porqué se usó ese algoritmo diferente. La interfaz del usuario debe permitir desarrollo, es decir debe poder editarse reglas, crear nuevas reglas, crear bases de datos, agregar datos, etc. Tiene que haber una comunicación en forma amistosa y suave hacia el usuario, y mostrar todo el proceso que se esta desarrollando, ya que a nosotros nos interesa saber lo que esta sucediendo y porque se esta aplicando este teorema, esta regla, etc. La mayoría de estos Shell tienen esta facilidad. Un usuario paso a paso aprende a pensar como el experto, esto es algo nuevo pues el programa experto nos permite no solamente resolver un problema con éxito, sino que también prepararnos. Función de la Interfaz del Usuario

♦ Permite un aprendizaje rápido. ♦ Filtra los datos para eliminar errores. ♦ Presenta los resultados en forma clara y precisa. ♦ Permite dar explicaciones (hacer preguntas.)

Estrategias para Aplicar Control Experto Una manera es meterse y buscar llegar hasta la respuesta final por una sola rama, llamada búsqueda en profundidad. Otra manera es desarrollar todo lo que esta a lo ancho del problema hasta llegar a la solución. Otras maneras pueden ser:

♦ Elegir la regla que más influye en la hipótesis. ♦ Elegir la regla donde la recopilación de hechos sea menos costosa. ♦ Elegir la regla cuyos hechos determinen menos riesgos. ♦ Elegir la regla que reduzca el espacio de búsqueda.

Page 129: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Diagrama general de bloques de un Sistema Experto Los componentes claves son la base de conocimiento, el sistema de inferencias, la base de datos y el interfase con el usuario. El corazón de los Sistemas Expertos es la base de conocimientos, que tiene diferentes formas de representarse, como Reglas de producción, cálculo de predicado, Marcos, Listas, Redes semánticas, Libretos, etc. La base de datos es llamada algunas veces base de datos global porque contiene un amplio rango de información acerca del estado actual del problema que está siendo resuelto. En la practica, la base de datos es realmente una porción de memoria de trabajo donde el estado actual del proceso del problema que se está resolviendo se guarda. La máquina de inferencia es el software que implementa una búsqueda y opera los modelos encontrados. Siendo su función principal probar la hipótesis o desaprobarla. La interfase con el usuario hace fácil el manejo del Sistema experto, ocultando todas las complejidades de sus procesos. Un Sistema de Representación de Conocimiento para un universo U consiste en:

a) Una colección E de etiquetas que pueden representar individuos en U; estas etiquetas se dividen en constantes y variables.

b) Una colección F de funciones. c) Una colección R de relaciones. d) Un lenguaje L consistente en reglas para combinar las funciones, relaciones y etiquetas en

expresiones bien formadas de L. e) Una semántica S que provee de significado a las etiquetas, funciones y relaciones.

Aún suponiendo que poseamos un conocimiento lo suficientemente detallado de la materia que pretendemos representar, resulta crucial el disponer de una notación lo suficientemente precisa como para poder plasmar ese conocimiento de forma que pueda ser usado de forma inteligente por un cerebro electrónico. A esta notación se le da el nombre de esquema de representación. En IA, el problema de diseñar un sistema experto se centra en construir una base de conocimiento que represente el conocimiento de una empresa determinada. Según la clase de problemas hacia los que estén orientados, podemos clasificar los Sistemas Expertos en diversos tipos entre los que cabe destacar diagnosis, pronóstico, planificación, reparación e instrucción; vamos a ver algunas de las aplicaciones existentes (o en periodo de desarrollo) para cada uno de los campos citados.

Page 130: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Los sistemas de diagnosis siguen un proceso de búsqueda de las razones del funcionamiento incorrecto de un sistema a partir de la información disponible. Aquí se podrían tener en cuenta tanto aplicaciones de diagnóstico médico como de averías. En lo referente al diagnóstico médico, existe una serie de aplicaciones extensa en número (FLUIDEX, EACH, TROPICAID, SPHINX,...), pero quizá la más conocida, a la vez que la más antigua, podría ser MYCIN. MYCIN es el primer Sistema Experto que llegó a funcionar con la misma calidad que un experto humano, dando a su vez explicaciones a los usuarios sobre su razonamiento. Antes del desarrollo de MYCIN (mediados de los 70), se criticaba a la Inteligencia Artificial por resolver únicamente problemas "de juguete", sin embargo, el éxito de MYCIN demostró que la tecnología de los Sistemas Expertos estaba suficientemente madura como para salir de los laboratorios y entrar en el mundo comercial. MYCIN es, en definitiva, un sistema de diagnóstico y prescripción en medicina, altamente especializado, diseñado para ayudar a los médicos a tratar con infecciones de meningitis (infección que produce inflamación de las membranas que envuelven al cerebro y la médula espinal) y bacteriemia (infección que implica la presencia de bacterias en la sangre). Dichas infecciones pueden ser fatales y a menudo aparecen durante la hospitalización. El problema se complica por la necesidad de actuar con rapidez. Existen además en este campo Sistemas Expertos como TROPICAID, que permiten obtener información adicional sobre los medicamentos más usados. TROPICAID selecciona un conjunto de posibles diagnósticos a partir del análisis del cuadro médico, y propone un tratamiento óptimo para el caso concreto. Por otra parte, el campo de la diagnosis abarca otras aplicaciones además de las médicas (si bien pueden ser estas últimas las más conocidas). En este caso se trata de fallos, averías o anomalías que se producen generalmente en una máquina. Dentro de este apartado existen también numerosas aplicaciones, pudiendo encontrar incluso empresas en la propia CAPV que han desarrollado trabajos dentro del campo de la diagnosis de equipos industriales complejos. Tal es el caso de ADICORP (con su sistema TESP para la diagnosis de robots Puma) que trabaja además en proyectos de Visión Artificial. Los sistemas de pronóstico deducen consecuencias posibles a partir de una situación. Su objetivo es determinar el curso del futuro en función de información sobre pasado y presente. Esto abarca diversos problemas, tales como predicciones meteorológicas, predicciones demográficas, o incluso previsiones de la evolución bursátil entre otros. Quizá la aplicación más conocida sea PROSPECTOR, esto es un sistema para la evaluación de emplazamientos geológicos (con el que se encontró un yacimiento de mineral importante). Existen también sistemas de planificación, pudiéndose encontrar aplicaciones en este área, que establecen una secuencia de acciones a realizar encaminadas a la consecución de una serie de objetivos. Hay una tendencia creciente a desarrollarlos y utilizarlos, sin embargo, los programas son caros y tienen que ser analizados con cuidado para determinar su contribución potencial al resultado final. Una de tales aplicaciones es el Palladian Operations Advisor (de Palladian Software, Inc.,

Page 131: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

en Estados Unidos), diseñado específicamente para la dirección de la producción. Las entradas a este programa comprenden las designaciones de procesos y máquinas de fabricación de una planta, las especificaciones de productos y el flujo de producción, a partir de lo cual puede representar gráficamente la planta industrial y el flujo de cada tipo de productos. Con estas representaciones pueden organizarse y reorganizarse las operaciones de fabricación. El programa ayuda a la planificación y programación, asesorando en lo que se refiere a los programas que reducen el trabajo no deseable en niveles de proceso, ajustan el volumen de producción a la demanda de clientes y evalúan los cambios en las operaciones desde los puntos de vista económicos y de producción. Puede crear una influencia recíproca con los planificadores y directores de planta a medida que las condiciones cambian a diario o a cada hora, como consecuencia de averías mecánicas, modificaciones en los pedidos de los clientes o crisis en el exterior. El Palladian Operations Advisor puede analizar el estado de la combinación de productos para mantener la mayor eficacia y rentabilidad posible de las operaciones. Como caso concreto dentro de la CAPV, la empresa DATALDE ha desarrollado un Sistema Experto para la planificación de la producción. Dicho trabajo se centra en un taller de propósitos generales de unas características determinadas, consistiendo la planificación en ordenar en el tiempo las cargas originadas por los diferentes pedidos, de forma que se asuman los objetivos de cumplimiento de plazos, distribución eficaz del trabajo y gestión de colas y prioridades. Por su parte, la empresa ROBOTIKER ha desarrollado un sistema de planificación y control de producción integral, dentro del que se identifican algunas tareas susceptibles de resolución mediante sistemas inteligentes (es un sistema basado en MRP-II). El diseño es también un tema de planificación. En este caso, a partir de una serie de requerimientos y restricciones, se obtiene el objeto que las satisface. En este campo, LABEIN (Laboratorio de Ensayos e Investigaciones Industriales, Centro de Investigación tutelado por el Gobierno Vasco), desarrolló un sistema inteligente para el diseño de motores eléctricos mediante la aplicación de las tecnologías clásicas de Sistemas Expertos a los sistemas de CAD / CAE de diseño y análisis. El problema que motivó este proyecto era que ciertos motores, de entre los eléctricos, son de uso frecuente en la industria exigiendo a la vez un diseño a medida de cada caso, por ello se creyó conveniente desarrollar una herramienta que asesorase o, incluso, dirigiera al operador. Otro tipo de Sistemas Expertos son los orientados a la reparación, sin embargo, no se puede decir que sea un tipo realmente nuevo, ya que este enfoque abarca diagnosis y planificación. Dentro de este grupo se incluyen sistemas como DELTA, que ayuda a los mecánicos en el diagnóstico y reparación de locomotoras diesel-eléctricas. DELTA no solo da consejos expertos, sino que también presenta informaciones por medio de un reproductor de vídeo. De hecho se podría encasillar a DELTA más en el área de la instrucción que en reparación, dado que además proporciona ayudas al trabajo que permiten al estudiante determinar si existe o no un determinado problema, proporcionando también formación específica sobre el modo de realizar ciertas reparaciones.

Page 132: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Un sistema de instrucción (Sistema Experto para formación) realiza un seguimiento del proceso de aprendizaje de un estudiante. El sistema detecta errores de los estudiantes e identifica el remedio adecuado, es decir, desarrolla un plan de enseñanza para facilitar el proceso de aprendizaje y la corrección de errores. Además de DELTA, existen numerosos sistemas de este tipo; STEAMER, por ejemplo, se creó para enseñar a los oficiales de la armada los problemas de funcionamiento de una planta de propulsión a vapor, como las que impulsan a ciertos barcos. Este era el problema de formación más importante que existía, dada la complejidad de los sistemas. El objetivo es dar al estudiante una concepción global de lo que pasa en la planta en cualquier momento, con la ventaja de que además el modelo de presentación es gráfico (utilizando Interlisp). Con un objetivo similar al de STEAMER, Construcciones Aeronáuticas S. A. (CASA) desarrolló el Proyecto Eolo CN-235. En este caso, el problema está en el hecho de que pilotar un avión que cuesta cientos de millones de pesetas es un asunto muy serio a la vez que peligroso, lo que exige mucho tiempo de entrenamiento, tanto para pilotos como mecánicos, suponiendo para las compañías aéreas un gran problema, dado el elevado coste de los cursos y la escasez de instructores. El proyecto surgió de la voluntad de Construcciones Aeronáuticas S. A. de ofrecer un curso específico para pilotos y técnicos de mantenimiento, a todos los compradores del avión CN- 235. Eolo CN-235 es un sistema de enseñanza interactivo que integra gráficos, texto y vídeo. Otro sistema de este tipo, aunque en este caso orientado a medicina, es GUIDON, pensado para que lo utilicen las Facultades de Medicina para formar a los médicos en la realización de consultas. GUIDON viene a ser una reorganización de MYCIN con intenciones educativas, por esto, tiene la ventaja adicional de disponer de toda la base de conocimientos de MYCIN además de la experiencia acumulada, por consiguiente, puede recuperar como ejemplo cualquier caso que MYCIN haya tratado. Además de las áreas de aplicación ya citadas, existen otras como las relativas a los sistemas de interpretación, que realizan tareas de inferencia a partir de una serie de datos observables (Ej. análisis de imágenes, o bien interpretación de señal). Diferencias entre programas convencionales, inteligencia artificial y Sistemas expertos Convencionales o algorítmicos:

Deterministas sin redundancia (si están incorrectamente diseñados puede introducirse un dato mas de una vez), suelen reflejar condiciones necesarias y suficientes para obtener los resultados (con mayor o menor eficiencia) mecanismo simple y camino computacional simple para producir la salida en función de la entrada. Los humanos tienen colecciones de técnicas para un problema y, si se olvida una, se puede encontrar soluciones de otra manera.

Distinción entre código (receta para manipular estructuras, algoritmos y datos (las propias

estructuras)

Page 133: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Según Wiston: Programa = Algoritmo + Estructura de datos.

Carecen de "autosabiduría", solo las técnicas que encierran y no pueden razonar o explicar

sus propios mecanismos

Los programas complejos son opacos y difíciles de modificar. Los algoritmos incluyen detalles de representación del conocimiento (incipientes)

Inútiles para codificar la experiencia o para comunicarla. Así seria difícil aprender a jugar

al ajedrez examinando un programa convencional que supiera jugar. Inteligencia Artificial

Representación e inferencia simbólica Búsqueda heurística Campo base de la epistemología pragmática

Sistemas Expertos. (basados en el conocimiento), además de la I.A. incluyen

Ejecutan tareas difíciles con la competencia de un experto humano Énfasis en las estrategias de solución de problemas de dominios concretos más que en

métodos generales. Autoconocimiento para razonar acerca de sus propios procesos de inferencia y dan

justificación de las conclusiones obtenidas. Dan una enorme importancia al conocimiento poseído, con relación al formalismo o

esquema de inferencia utilizados. Feignbaum: la potencia del S.E. deriva de su base de conocimiento

De ahí que aparezca con entidad propia la base de conocimiento, separada de sus mecanismos de control.

Programa = Estructura de datos + Base de conocimiento lógico + Control En tres niveles: hechos, conocimientos, decisiones.

Emplean conjuntamente de manera coordinada muchas técnicas de IA. Resuelven problemas de:

- interpretación - predicción - diagnóstico - depuración - diseño - planificación - vigilancia - reparación - instrucción - control - asesoramiento - evaluación de situaciones - toma de decisiones - evaluación de sucesos

Page 134: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Metodología para construir un sistema experto:

♦ Identificación del Problema. ♦ Conceptualización del Problema . ♦ Formalizarlo a través de una lógica o algún lenguaje formal ♦ Implementación eligiendo un Shell ♦ Pruebas

Identificación del Problema

♦ El Experto e Ingeniero identifican el área del problema y definen alcances. ♦ Determinación de recursos necesarios, tiempo y facilidades computacionales. ♦ Decisión sobre metas y objetivos de la construcción del sistema experto.

Conceptualización del Problema

♦ El Ingeniero y Experto explican conceptos claves relaciones y características del flujo de Información, necesarias para describir la solución del problema.

♦ Especificaciones de sub-tareas, estrategias y necesidades relacionadas con la actividad de resolver el problema.

Formalización

♦ Graficar los conceptos claves y relaciones en una representación formal sugerida por un lenguaje o una herramienta.

♦ Selección del lenguaje o Shell. ♦ Representación de conceptos y relaciones dentro de la estructura del lenguaje.

Implementación

♦ El ingeniero organiza la base del conocimiento en una base de datos. ♦ Se elige la base de datos. ♦ Se define un conjunto de reglas y estructuras de control del programa. ♦ Se realiza el programa.

Pruebas

♦ Evaluación del rendimiento del programa. ♦ Revisión y ajuste a nivel de excelencia. ♦ El experto realiza una evaluación. incluso se diseñan problemas en el que el experto lo

resuelve y el programa lo resuelve aparte.

Page 135: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Control Experto

♦ Es la combinación de técnicas de Control de Procesos Industriales, del Conocimiento Heurístico y de Sistemas Expertos.

♦ El objetivo es controlar un proceso.

Se busca Conocer: El proceso y estructuras de control, por pruebas en distintos puntos de operación.

La información relevante para un sistema de control. Para esto debemos saber como representar y usar el conocimiento; y además la existencia de ciertas condiciones para ciertos procesos.

Page 136: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

TOMA DE DECISIONES La potencia de un Sistema Experto se basa más en una gran cantidad de conocimientos que en un formalismo deductivo muy eficaz. La idea que se persigue cuando se construye un Sistema Experto es la de automatizar la labor del experto, partiendo en ocasiones de información insuficiente o incompleta.

En las empresas, la Inteligencia Artificial, que se encontraba confinada en la "sala de ordenadores", se va abriendo paso hacia la junta directiva. La razón de esto es simple: a medida que el mundo empresarial se complica y se llega a la competencia internacional, el conocimiento se convierte en el factor profesional más importante para un ejecutivo. A la persona que esté planeando la estrategia a seguir por su empresa o que tome decisiones en producción, marketing, distribución o asignación de recursos, los Sistemas Expertos le pueden demostrar que se pueden tomar decisiones con más conocimiento, llevando a un aumento de ganancias así como a la obtención de beneficios importantes para la empresa, como el aumento de su capacidad.

En las empresas, los Sistemas Expertos empiezan a tener cada vez mayor auge, hasta el punto de ir suponiendo un punto de referencia importante en la toma de decisiones para la junta directiva. En realidad, incluso se podría decir que el límite de las aplicaciones objeto de los Sistemas Expertos está en la imaginación humana, siendo siempre de utilidad allí donde se necesite un experto. La medida de la efectividad de las operaciones de planificación y control de una organización y su sensibilidad a los cambios, son elementos importantes en la buena dirección de la producción. Los planes y las decisiones en la producción se desarrollan y llevan a cabo en un mundo de representaciones simbólicas de hechos y conjeturas, muchas de las cuales no están informatizadas y representan la experiencia y el conocimiento de expertos. En cada estadio de los procesos de planificación, decisión y control para las operaciones de producción, sea ésta automatizada o no, las personas expertas son las que asesoran, localizan los fallos y dirigen. Ellas son las que ayudan

Page 137: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

a interpretar la multitud de datos procedentes de los departamentos de diseño, de la planta de producción y de los representantes de los clientes, observan modelos procesables en dichos datos, prueban mentalmente, y con ordenadores, posibles líneas de acción, recomiendan las medidas que la gerencia debe tomar y ayudan luego a poner en marcha sistemas pensados para conseguir planificaciones mejores, operaciones más fluidas y una competencia más efectiva. Los Sistemas Expertos ofrecen procedimientos informatizados para perfeccionar la toma de decisiones de la gerencia por medio de la combinación del conocimiento que poseen los expertos acerca del tipo de acciones que tiene que efectuar y la forma y el tiempo en que debe llevarlas a cabo con la permanencia, lógica, memoria y velocidad de cálculo del ordenador. En tanto que muchos sistemas expertos se ocupan del razonamiento técnico más que del gerencial, la gerencia puede obtener ordenadores de mucha potencia, con grandes memorias, rápidos y programados para tratar problemas clave de forma efectiva en un área empresarial determinada. El éxito del directivo experto en la aplicación de sistemas como en las plantas de fabricación, grandes o pequeñas, se mide por resultados tales como rendimientos mayores en la calidad de los productos, entregas a los clientes dentro de plazo, reducción de los retrasos en planta, reducción de costes procedentes de errores, mejor utilización de los materiales, mejor utilización del personal y mejora en las compras y reducción en los costes de material. Como cualquier otra forma de software tradicional, los sistemas Expertos ofrecen algunas ventajas:

a) Permitir que los no expertos trabajen como expertos. b) Mejorar la productividad aumentando los trabajos realizados con mayor eficiencia. c) Ahorrar tiempo al alcanzar objetivos específicos. d) Simplificando algunas operaciones. e) Automatizar procesos repetitivos, tediosos y llenos de complejidad. f) Permiten que nuevos tipos de problemas sean resueltos haciendo a las computadoras más

útiles. g) Capturan y guardan valiosos conocimientos evitando perdidas debidas a retiros o muertes

de expertos. h) Hacen que el conocimiento esté disponible a una mayor audiencia, incrementando la

habilidad de resolver problemas a un número mayor de personas.

Entre las desventajas tenemos:

a) Desarrollar un sistema experto es más difícil que la creación de un software convencional. Los buenos expertos son difíciles de encontrar y la extracción del conocimiento es un trabajo tedioso y tardado.

b) Los sistemas expertos son caros. Cuesta mucho su desarrollo, prueba y la entrega a los usuarios finales.

c) El tamaño de la memoria y la rapidez de una computadora personal limitan su utilidad.

Page 138: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

d) Los Sistemas Expertos no son totalmente confiables. Debido a esto se recomienda que sus resultados deben ser ponderados, probados y escrutinizados. El ser humano debe realizar la decisión final.

Algunas de estas desventajas gradualmente desaparecerán o disminuirán con las apariciones mejoradas de la tecnología en hardware y software. c) Herramientas para la construcción de un sistema experto Una de las principales razones para el rápido crecimiento de desarrollo de sistemas expertos, es el soporte de un conjunto de herramientas poderosas. Entre las herramientas para sistemas expertos tenemos: En un inicio los sistemas expertos se creaban como un conjunto de representaciones declarativa (reglas en su mayor parte) combinadas con un interprete para esas declaraciones, fue posible separar el interprete y el conocimiento específico del dominio, y así se pudo crear un sistema capaz de construir nuevos sistemas expertos con la añadidura de nuevos conocimientos correspondientes al dominio del nuevo problema. A los intérpretes resultantes se les llamó Armazones (Shell). El valor de un Shell para SE está directamente relacionado con el grado en que las características del dominio se parecen con las características esperadas por el modelo interno del Shell. En este momento existen comercialmente varios armazones que sirven de base para muchos de los sistemas expertos que actualmente se construyen. Los últimos armazones presentan mucha mayor flexibilidad en la presentación del conocimiento, del razonamiento y de las explicaciones que los primeros. Con el tiempo la experiencia ganada indica que para facilitar las cosas los sistemas expertos se deben integrar con otros tipos de programas. Los sistemas expertos no pueden actuar aislados, necesitan acceder a bases de datos colectivas, y por tanto ser controlados igual que otros sistemas. A menudo son incrustados en otros programas de aplicación más grandes que usan técnicas de programación convencionales. La herramienta más elemental para el desarrollo de sistemas expertos es un lenguaje de propósito general. Lisp ha sido y continua siendo el lenguaje más ampliamente empleado para el desarrollo de sistemas expertos, el lenguaje de programación Prolog, aunque su empleo como un lenguaje para el desarrollo de sistemas expertos ha sido un poco menos que el de Lisp. Generalmente las herramientas más poderosas para SE son las grandes herramientas híbridas que combinan ambientes de desarrollo sofisticado con representaciones múltiples de conocimiento y paradigmas múltiples de inferencia. Esta integración, de varias facilidades básicas es muy útil porque posibilita que cualquier herramienta dada sea empleada con muchos diferentes problemas, o problemas que involucren varias clases diferentes de representaciones del conocimiento y de paradigmas de inferencia.

Page 139: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

En resumen, indicamos que una de las características más importantes que debe tener una armazón es una interfaz fácil de emplear entre un sistema experto escrito con la armazón y un gran entorno de programación, que probablemente será más convencional. Desarrollo de los Sistemas Expertos Para desarrollar el software primero conocemos el equipo de gente necesario, después los métodos que utiliza ese equipo de gente y por último como prueban y construyen prototipos de software para terminar en el sistema final.

1. Equipo de desarrollo 2. Métodos auxiliares en el desarrollo 3. Construcción de prototipos

El Equipo de desarrollo Las personas que componen un grupo o un equipo, como en todos los ámbitos deben cumplir unas características y cada uno de ellos dentro del equipo desarrolla un papel distinto. A continuación cada componente del equipo dentro del desarrollo y la función de cada uno:

1. El experto La función del experto es poner sus conocimientos especializados a disposición del Sistema Experto.

2. El ingeniero del conocimiento El ingeniero plantea las preguntas al experto, estructura

sus conocimientos y los implementa en la base de conocimientos.

3. El usuario aporta sus deseos y sus ideas, determinando especialmente el escenario en el que debe aplicarse el Sistema Experto.

ESQUEMA DE REPRESENTACIÓN EN EL QUE FIGURA EL EQUIPO DE DESARROLLO.

En el desarrollo del Sistema Experto, el ingeniero del conocimiento y el experto trabajan muy unidos. El primer paso consiste en elaborar los problemas que deben ser resueltos por el sistema. Precisamente en la primera fase de un proyecto es de vital importancia determinar correctamente el ámbito estrechamente delimitado de trabajo. Aquí se incluye ya el usuario posterior, o un

Page 140: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

representante del grupo de usuarios. Para la aceptación, y en consecuencia para el éxito, es de vital y suma importancia tener en cuenta los deseos y las ideas del usuario. Una vez delimitado el dominio, se amplía el sistema con los conocimientos del experto. El experto debe comprobar constantemente si su conocimiento ha sido transmitido de la forma más conveniente. El ingeniero del conocimiento es responsable de una implementación correcta, pero no de la exactitud del conocimiento. La responsabilidad de esta exactitud recae en el experto. De ser posible, el experto deberá tener comprensión para los problemas que depara el procesamiento de datos. Ello facilitará mucho el trabajo. Además, no debe ignorarse nunca al usuario durante el desarrollo, para que al final se disponga de un sistema que le sea de máxima utilidad. La estricta separación entre usuario, experto e ingeniero del conocimiento no deberá estar siempre presente. Pueden surgir situaciones en las que el experto puede ser también el usuario. Este es el caso, cuando exista un tema muy complejo cuyas relaciones e interacciones deben ser determinadas una y otra vez con un gran consumo de tiempo. De esta forma el experto puede ahorrarse trabajos repetitivos. La separación entre experto e ingeniero del conocimiento permanece, por regla general inalterada. Métodos auxiliares en el desarrollo La eficiencia en la creación de Sistemas Expertos puede aumentarse en gran medida con la aplicación de Shells. Un Shell (de forma resumida) es un Sistema Experto que contiene una base de conocimientos vacía. Existen el mecanismo de inferencia, el componente explicativo y a veces también la interface de usuario. Ya el mecanismo de inferencia depende del problema o grupos de problemas. No existe ningún Shell para todas las aplicaciones, sino que hay que buscar un Shell para cada aplicación. También es posible que haya que desarrollar adicionalmente partes del mecanismo de inferencia. Según el tamaño de esta parte tendrá que pensar si la aplicación de un Shell determinado sigue siendo apropiada. Si el ingeniero del conocimiento conoce bien este Shell, es decir si, por ejemplo, conoce exactamente cómo son procesadas las reglas, entonces sólo tendrá que concentrarse en la creación de la base de conocimientos. A menudo, el Shell contiene Frames. Estos son marcos previamente preparados, en los que, por ejemplo, sólo se introduce el nombre del objeto, sus cualidades y los correspondientes valores. Las relaciones entre los objetos se indican mediante señalización de los dos objetos y del tipo de relación que exista entre ellos. El trabajo de implementación debe reducirse al máximo. Los

Page 141: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Frames son componentes explicativos y/o el mecanismo de inferencia que están dimensionados de forma distinta en los diferentes Shells. Construcción de prototipos En el desarrollo de Sistemas Expertos se nos plantean riesgos como:

♦ Falta de implementaciones similares que puedan servir de orientación al encargado del desarrollo en la casi totalidad de los casos.

♦ Requisitos necesarios están esbozados con muy poca precisión. El diseño y la especificación requieren una temprana determinación de la interfaz del software y de la funcionalidad de los componentes. En el desarrollo de Sistemas Expertos deben alterarse a menudo durante y también después de su implementación, ya que los requisitos se han ido configurando y han obtenido mayor precisión, o porque se ha descubierto que deben iniciarse otras vías de solución. Durante el desarrollo, resulta más apropiado empezar con implementaciones tipo test para encontrar el camino hacia una solución definitiva y para hacerlas coincidir con las necesidades del usuario. Un método efectivo es la implementación de un prototipo de Sistema Experto que permita llevar a cabo las funciones más importantes de éste, aunque con un esfuerzo de desarrollo considerablemente inferior al de una implementación convencional. Este proceder se define bajo el nombre de "Rapid Prototyping". Las máquinas de Inteligencia Artificial especialmente desarrolladas, los lenguajes de programación de Inteligencia Artificial y en determinados casos los Shells, ofrecen una considerable ayuda para el "Rapid Prototyping". Para Sistemas Expertos, el "Rapid Prototyping es el procedimiento más adecuado, pues posibilita una rápida reacción a los deseos en constante cambio tanto por parte de los expertos como parte del usuario.

Page 142: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Aplicación de sistemas basados en el conocimiento

Ejemplo: Cajero Automático - Problema Determinista. Un usuario (por ejemplo, un cliente) desea sacar dinero de su cuenta corriente mediante un cajero automático (CA). En cuanto el usuario introduce la tarjeta en el CA, la máquina la lee y la verifica. Si la tarjeta no es verificada con éxito (por ejemplo, porque no es legible), el CA devuelve la tarjeta al usuario con el mensaje de error correspondiente. En otro caso, el CA pide al usuario su número de identificación personal (NIP). Si el número fuese incorrecto, se dan tres oportunidades de corregirlo. Si el NIP es correcto, el CA pregunta al usuario cuánto dinero desea sacar. Para que el pago se autorice, la cantidad solicitada no debe exceder de una cierta cantidad limite diaria, además de haber suficiente dinero en su cuenta. En este caso se tienen siete objetos, y cada objeto puede tomar uno y solo un valor de entre sus posibles valores. La tabla muestra estos objetos y sus posibles valores.

Page 143: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

En la Regla 1, por ejemplo, la premisa consiste en seis afirmaciones objeto-valor conectadas mediante el operador lógico y, lo que indica que la premisa objeto Pago (en la conclusión) con los demás objetos. Según la Regla 1, la acción que debe iniciar el CA es dar el dinero al usuario si la tarjeta se ha verificado correctamente, la fecha no ha expirado, el NIP es correcto, el número de intentos para dar el NIP correcto no se ha excedido y la cantidad solicitada no excede ni la cantidad disponible ni el límite máximo diario. Las expresiones lógicas en cada una de las restantes reglas de la figura constan de una sola afirmación. Nótese que la Regla 1 indica cuándo debe permitirse el pago, y las restantes cuándo debe rechazarse. El motor de inferencia aplica Modus Ponen y Modus Tollen. Aplicando dichas reglas:

Page 144: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

d) Manejo de incertidumbre y probabilidad. Los sistemas basados en reglas descritos en este capítulo pueden aplicarse sólo a situaciones deterministas. En algunas resoluciones de problemas puede resultar adecuado describir las creencias sobre las que no se tiene certeza, pero en las que existen algunas evidencias que las apoyan. Por ejemplo, las relaciones entre las enfermedades y los síntomas no son deterministas, puesto que un mismo conjunto de síntomas puede estar asociado a diferentes enfermedades. De hecho, no es extraño encontrar dos pacientes con los mismos síntomas pero diferentes enfermedades. En muchos sistemas de resolución de problemas un objetivo importante consiste en reunir evidencias sobre la resolución del sistema y modificar su comportamiento sobre la base de las mismas. Para modelar este comportamiento se necesita una teoría estadística de la evidencia. Las estadísticas bayesianas constituyen esta teoría. El concepto fundamental de las estadísticas bayesianas es el de la probabilidad condicionada. El teorema de Bayes se enuncia así:

( ) ( ) ( )( ) ( )∑ =

=K

nnn

iii

HPHEP

HPHEPEHP

1*|

*||

donde:

• P(Hi | E): La probabilidad de que la hipótesis Hi sea verdad dada la evidencia E. • P(E | Hi): La probabilidad de que se observe la evidencia E dada la hipótesis i como

verdadera. • P(Hi): La probabilidad a priori de que la hipótesis i sea cierta, independientemente de

cualquier evidencia especifica. Estas probabilidades se denominan probabilidades previas o a priori.

• k: El número total de hipótesis posibles. En algunas ocasiones se tendrá un cuerpo de evidencia previo y alguna nueva observación E, por lo que será necesario hacer el siguiente calculo:

P(H | E, e) = P(H | E) * P(e | E, H) / P (e | E) El tamaño del conjunto de probabilidad combinadas que se necesitan para calcular esta función, crece con una función de la forma 2n, donde n es el número de proposiciones diferentes que es necesario considerar, lo que hace inaplicable al teorema de Bayes. A pesar de esto las estadísticas bayesianas proporcionan una base atractiva para los sistemas que razonan bajo incertidumbre, por lo que se han desarrollado varios mecanismos que hacen uso de su potencialidad, como son:

• Incorporación de los factores de certeza. • Redes bayesianas.

Page 145: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Factores de certeza Un factor de certeza se define en términos de dos componentes:

• Manager of believe: MB [h, e]. Una medida entre cero y uno de la creencia de que la hipótesis h proporciona la evidencia e. MB da una medida sobre hasta que punto la evidencia soporta la hipótesis. Es cero si la evidencia no soporta la hipótesis.

• Manager of disapoint: MD [h, e]. Una medida entre cero y uno sobre la incredulidad de

que la hipótesis h proporciona la evidencia e. MD da una medida de hasta que punto la evidencia soporta la negación de la hipótesis. Es cero si la evidencia soporta la hipótesis.

A partir de estas dos medidas se puede definir el factor de certeza, CF [h, e], como sigue:

CF [h, e]= MB [h, e] - MD [h, e] Los factores de certeza los proporcionan los expertos, y estos reflejan las valoraciones del experto sobre la fortaleza con que la evidencia soporta la hipótesis. Sin embargo en el proceso de razonamiento los factores de certeza tienen que combinarse para reflejar el uso de las múltiples partes de la evidencia y las múltiples reglas que se aplican para resolver el problema.

• Se obtiene el factor de certeza de una hipótesis dada una combinación de evidencias.

Las medidas sobre la creencia o no creencia de una hipótesis dadas las observaciones s1 y s2 se calculan de la siguiente forma: 0 sí MD[h, s1 ^ s2]= 1 MB [h, s1 ^ s2] = MB [h, s1] + MB [h, s2 ]*(1 - MB [h, s1]) en caso contrario 0 sí MD[h, s1 ^ s2]= 1 MD [h, s1 ^ s2]= MD [h, s1] + MD [h, s2 ]*(1 - MD [h, s1]) en caso contrario

s1

s2

h

Page 146: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo: Suponga que se tiene una observación inicial que confirma nuestra creencia en h con MB = 0.3. Entonces: MD [h, s1]= 0 CF[h, s1]= 0.3 – 0 = 0.3 A continuación se hace una segunda observación, que confirma h con un valor de MB[h,s2]=0.2. Entonces: MB [h, s1 ^ s2] = 0.3 + (0.2 )* (1 - 0.3) MB [h, s1 ^ s2] = 0.3 + 0.14 MB [h, s1 ^ s2] = 0.44 MD [h, s1 ^ s2] = 0 CF [h, s1 ^ s2] = 0.44 – 0 CF [h, s1 ^ s2] = 0.44 • Se obtiene el factor de certeza dada una combinación de hipótesis.

Se utiliza cuando se necesita conocer el factor de certeza de un antecedente de una regla que contiene varias cláusulas.

MB [h1 ^ h2 , e ]= mín (MB [h1, e], MB [h2, e])

MB [h1 v h2 , e ]= máx (MB [h1, e], MB [h2, e])

• Encadenamiento de reglas: El resultado de la incertidumbre de una regla es la entrada de

otra. Sea MB’s [h, s]la medida de la creencia sobre h estando completamente segura la validez de s y sea e la evidencia que nos lleva a creer en s, se tiene:

MB [h, s]= MB’[h, s] * máx (0, CF [s, e])

h1

h2

e

e s h

Page 147: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo Considérense las siguientes características (variables y sus posibles valores) de las personas de una población dada:

• Sexo = {hombre, mujer} • Fumador = {sí (f), no ( ¯ f)} • Estado Civil = {casado (c), no casado (¯c)} • Embarazo = {sí (e), no (¯e)}

La función de probabilidad conjunta de estas cuatro variables se da en la tabla. Por ello, por ejemplo, el 50% de las personas de una población son mujeres, y el

=+++++++

+++)07.000.002.000.0()10.001.004.001.0(

10.001.004.001.0

64% de los fumadores son mujeres. Sea A una persona elegida al azar de la población. Sin conocer si la persona es fumadora, la probabilidad de que se trate de una mujer es p(A = mujer) = 0.50. Pero si se sabe que la persona es fumadora, esta probabilidad cambia de 0.50 a p(A = mujer|A = f) = 0.64. Por tanto, se tiene p(A = mujer|A = f) ≠ p(A = mujer); por lo que las variables Sexo y Fumador son dependientes.

Ejemplo Considérese la función de probabilidad conjunta de las tres variables binarias X, Y y Z dadas en la tabla Entonces se tiene: • Las funciones de probabilidad marginal de X, Y y Z se muestran en la tabla. Por ejemplo, la función de probabilidad marginal de X se calcula mediante

Page 148: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

♦ Por ejemplo, las funciones de probabilidad conjunta de las parejas X e Y son:

♦ Por ejemplo, la probabilidad condicional de X dada Y es

♦ Funciones de Probabilidad Marginal

♦ Funciones de Probabilidad Conjuntas por Pares.

Page 149: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

♦ Función de Probabilidad Condicional de una Variable dado Otra.

Redes Bayesianas En las redes bayesianas el formalismo se preserva y se confía en la modularidad del mundo que se intenta modelar. La idea principal consiste en que para describir el mundo real no es necesario utilizar una tabla de probabilidades enorme en la que se listen las probabilidades de todas las combinaciones concebibles de sucesos. La mayoría de los sucesos son condicionalmente independientes de la mayoría de los demás por lo que no deben considerarse sus interacciones. En lugar de esto, se puede usar una representación mas local en donde se describan grupos de sucesos que interactúen. Existen dos diferentes formas en que las proposiciones pueden influenciar las probabilidades de las demás, la primera de ellas consiste en que influya en las probabilidades de sus indicios; la segunda en que la observación de un indicio afecte a la probabilidad de todas las posibles causas. La idea que hay detrás de la estructura de red bayesiana es la distinción clara entre estos dos tipos de influencia. Se construye un grafo acíclico dirigido (GAD) que representa las relaciones de causalidad entre las variables. Las variables del grafo pueden ser proposicionales (pueden tomar los valores verdadero o falso) o pueden ser variables que tomen valores de algún tipo (una temperatura corporal o una lectura tomada de algún dispositivo de diagnóstico). Ejemplo: Observe el grafo formado por la siguiente situación: En una determinada mañana la hierba se encuentra húmeda, pero no se tiene certeza de que la causa sea que hubo riego en la noche anterior o por la lluvia.

Estación lluviosa

Riego Lluvia

Húmedo

Page 150: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Un GAD ilustra las relaciones de causalidad que pueden surgir entre los nodos que contiene. Sin embargo, para poder usarlo como base de un razonamiento probabilístico, es necesario conocer para cada valor de un nodo padre, que evidencia proporciona sobre los valores que pueden tomar los nodos hijos. Estos datos se pueden encontrar en una tabla que contenga las probabilidades condicionadas. Ejemplo: Se muestra a continuación la tabla de probabilidades condicionadas para el grafo del ejemplo anterior:

Atributo Probabilidad P (Húmedo | Riego, Lluvia) 0.95 P (Húmedo | Riego, ¬ Lluvia) 0.9 P (Húmedo | ¬ Riego, Lluvia) 0.8 P (Húmedo | ¬ Riego, ¬ Lluvia) 0.1 P (Riego | Estación lluviosa) 0.0 P (Riego | ¬ Estación lluviosa) 1.0 P (Lluvia | Estación lluviosa) 0.9 P (Lluvia | ¬ Estación lluviosa) 0.1 P (Estación lluviosa) 0.5

A partir de la tabla se observa que la probabilidad a priori de una época de lluvias es de 50 %, entonces, si se esta en una época de lluvias, la probabilidad de que llueva durante una noche dada es de 90 %, si no es así, la probabilidad de que llueva es sólo de 10 %. Ejercicio. Calcule CF, MB y MD de h1 dada tres observaciones, donde:

CF(h1,o1) = 0.5 CF(h1,o2) = 0.3 CF(h1,o3) = -0.2

Page 151: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo. Para ilustrar el uso del teorema de Bayes, supóngase que un paciente puede estar sano (no tiene enfermedad alguna) o tiene una de m−1 enfermedades posibles {E1, . . . , Em−1}. Por simplicidad de notación, sea E una variable aleatoria que puede tomar uno de m posibles valores, {e1, . . . , em}, donde E = ei significa que el paciente tiene la enfermedad Ei, y E = em significa que el paciente no tiene ninguna enfermedad. Supóngase también que se tienen n síntomas {S1, . . . , Sn}. Ahora, dado que el paciente tiene un conjunto de síntomas {s1, . . . , sk}, se desea calcular la probabilidad de que el paciente tenga la enfermedad Ei, es decir, E = ei. Entonces, aplicando el teorema de Bayes, se obtiene

Conviene hacer los siguientes comentarios sobre la fórmula:

♦ La probabilidad p(ei) se llama probabilidad marginal, prior, “a priori” o inicial de la enfermedad E = ei puesto que puede ser obtenida antes de conocer los síntomas.

♦ La probabilidad p(ei|s1, . . . , sk) es la probabilidad posterior, “a posteriori” o condicional de la enfermedad E = ei, puesto que se calcula después de conocer los síntomas S1 = s1, . . . , Sk = sk.

♦ La probabilidad p(s1, . . . , sk|ei) se conoce por el nombre de verosimilitud de que un paciente con la enfermedad E = ei tenga los síntomas S1 = s1, . . . , Sk = sk.

Ejemplo 3.4 Adenocarcinoma gástrico. Un centro medico tiene una base de datos consistente en las historias clínicas de N = 1, 000 pacientes. Estas historias clínicas se resumen gráficamente en la figura. Hay 700 pacientes (la región sombreada) que tienen la enfermedad adenocarcinoma gástrico (G), y 300 que no la tienen (se considera estar sano como otro valor posible de la enfermedad). Tres síntomas, dolor (D), pérdida de peso (P) y vómitos (V), se considera que están ligados a esta enfermedad. Por tanto, cuando un paciente nuevo llega al centro médico, hay una probabilidad 700/1,000 = 70% de que el paciente tenga adenocarcinoma gástrico. Esta es la probabilidad inicial, o “a priori”, puesto que se calcula con la

información inicial, es decir, antes de conocer información alguna sobre el paciente. Por simplicidad de notación, se utiliza g para indicar que la enfermedad está presente y ¯g para indicar que la enfermedad está ausente. Notaciones similares se utilizan para los síntomas. Por tanto, pueden hacerse las afirmaciones siguientes:

Page 152: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• probabilidad “a priori”: 440 de 1,000 pacientes vomitan. Por ello, p(v) = card(v)/N = 440/1,000 = 0.44, donde card(v) denota el número de pacientes de la base de datos que vomitan. Esto significa que el 44% de los pacientes vomitan. • Verosimilitud: El 50% de los pacientes que tienen la enfermedad vomitan, puesto que p(v|g) = card(v, g)/card(g) = 350/700 = 0.5, mientras que sólo 30% de los pacientes que no tienen la enfermedad vomitan, puesto que p(v|¯g) = card(v, ¯g)/card(¯g) = 9 0/300 = 0.3. • Verosimilitud: El 45% de los pacientes que tienen la enfermedad vomitan y pierden peso, p(v, p|g) = card(v, p, g)/card(g) = 315/700 = 0.45, mientras que s´olo el 12% de los que no tienen la enfermedad vomitan y pierden peso, p(v, p|¯g) = card(v, p, ¯g)/card(¯g) = 35/300 ≈ 0.12. Puesto que la probabilidad inicial de que el paciente tenga adenocarcinoma gástrico, p(g) = 0.7, no es suficientemente alta para hacer un diagnóstico (nótese que tomar una decisión ahora implica una probabilidad 0.3 de equivocarse), el doctor decide examinar al paciente para obtener más información. Supóngase que los resultados del examen muestran que el paciente tiene los síntomas vómitos (V = v) y pérdida de peso (P = p). Ahora, dada la evidencia (el paciente tiene esos síntomas), ¿cual es la probabilidad de que el paciente tenga la enfermedad? Esta probabilidad “a posteriori” puede ser obtenida de la probabilidad “a priori” y de las verosimilitudes, aplicando el teorema de Bayes en dos etapas, como sigue: • Tras observar que V = v la probabilidad “a posteriori” es

•Tras observar que V = v y P = p la probabilidad “a posteriori” es

Page 153: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

SEXTA UNIDAD:

REDES NEURONALES 6.1. Concepto de red neuronal artificial 6.2. Redes neuronales y computadoras digitales 6.3. Redes neuronales e IA 6.4. Redes neuronales y mecanismos de aprendizaje (supervisado – no supervisado) 6.5. Redes neuronales y lógica borrosa ANTECEDENTES DE LAS NEURONAS Durante el periodo de 1967 a 1982, la búsqueda de la neurocomputación se lleva acabo fuera de Estados Unidos (la búsqueda en Japón, Europa, y la Unión Soviética). Sin embargo, una gran empresa investiga una cadena neuronal dentro de un proceso del principio adaptativo de procesos de imágenes, reconocimiento de patrones y modelos biológicos. Los primeros años de 1980, muchas investigaciones de la neurocomputacion empezaron a ser audaces propuestas para explorar el desarrollo de neurocomputadoras y aplicaciones de redes neuronales. En el primer lanzamiento de Defense Advanced Rechears Projects Agency (DARPA), donde Ira Skurnick (un programa maestro para la oficina de defensa) rechazo a seguir el concepto convencional e insistió a que escucharan sus argumentos a cerca de sus investigaciones sobre la neurocomputacion. Audazmente diversifica lo tradicional; Skurnick empezó sus investigaciones en 1983. Dando el estatus DARPA'S, como uno de los árbitros mundiales de la moda tecnología.Pocos meses después el programa maestro de otras organizaciones se consolidaron dando con esto un gran salto. Skurnic estuvo en el lugar adecuado en el momento adecuado para hacer una llave de decisión que ayudara al lanzamiento del renacimiento de la neurocomputación. Algunas otras fuerzas en los años de 1983 a 1986 fue Jonh Hopfiel, un físico famoso con reputación mundial quien comenzó una interesante investigación en redes neuronales en pocos anos. Hopfiel escribió dos grandes volúmenes de redes neuronales en 1982 y 1984, que fueron leídas por mucha gente alrededor del mundo persuadiendo a muchos físicos y matemáticos de todo el mundo a unirse a la nueva investigación de redes neuronales. En realidad alrededor de 1986, aproximadamente una tercera parte de toda esta gente se había vuelto seguidor de Hopfiel. El trabajo de hopfiel ha sido descrito y su principal contribución a esta ciencia es que la a revitalizado. En algunos círculos de investigadores se ha desarrollado una confusión en torno a que Hopfiel invento la neurocomputacion o es el que ha hecho los adelantos

Page 154: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

más significativos. Esta creencia ha generado gran inconformidad por parte de muchos pioneros especialmente por aquellos que han estado trabajando muchos años en la oscuridad. Para 1986, con la publicación del libro "PDP" (que significa procesamiento paralelo distribuido, volúmenes l y ll), editado por David Rumelhart el camino fue abierto. En 1987, se realizo la primera conferencia abierta sobre redes neuronales del I.E.E.E. (1700 participantes) fue hecha en San Diego (anteriormente ha habido conferencias solo que son extremadamente limitadas por el numero de participantes), y la Sociedad Internacional de Redes neuronales fue formada en 1988 es seguida por la computación neuronal en 1989 y el I.E.E.E. Transacción sobre Redes Neuronales en 1990. Y seguidas por muchas otras. A principios de 1987, muchas universidades anunciaron la formación de institutos de investigación y programas de educación acerca de la neurocomputacion. Alrededor de la neurocomputacion se hace una interesante historia pero el camino aun se esta desarrollando. Como dijo Winston Churchill estamos al final del principio. 6.1. CONCEPTO DE RED NEURONAL ARTIFICIAL Las Redes Neuronales Artificiales (ANNs de Artificial Neural Networks1) fueron originalmente una simulación abstracta de los sistemas nerviosos biológicos, formados por un conjunto de unidades llamadas "neuronas" o "nodos" conectadas unas con otras. Estas conexiones tienen una gran semejanza con las dendrítas y los axones en los sistemas nerviosos biológicos. La teoría y modelado de redes neuronales artificiales está inspirada en la estructura y funcionamiento de los sistemas nerviosos, donde la neurona es el elemento fundamental. Existen neuronas de diferentes formas, tamaños y longitudes, estos atributos son importantes para determinar la función y utilidad de la neurona.

Redes neuronales biológicas

Redes neuronales artificiales

Neuronas Unidades de proceso Conexiones sinápticas Conexiones ponderadas Efectividad de la sinapsis Peso de las conexiones Efecto excitatorio o inhibitorio Signo del peso de una conexión Estimulación total Entrada total ponderada Activación (tasa de disparo) Función de activación (salida)

Comparación entre RN biológicas y artificiales. Una neurona es una célula viva, que consta de un cuerpo celular más o menos esférico, de 5 a 10 micras de diámetro, del que sale una rama principal llamada axón, y varias ramas más cortas llamadas dendritas. A su vez, el axón puede producir ramas en torno a su punto de arranque, y con frecuencia se ramifica extensamente cerca de su extremo.

1 Véase: http://www.gc.ssr.upm.es/inves/neural/ann2/abrtions.htm

Page 155: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Las dendritas y el cuerpo celular reciben señales de entrada; el cuerpo celular las combina e integra y emite unas señales de salida. El axón transporta esas señales a los terminales axónicos, que se encargan de distribuir información a un nuevo conjunto de neuronas. Una neurona recibe información de miles de otras neuronas, y a su vez, envía información a miles de neuronas más. Se calcula que en el cerebro existen 1015 conexiones. Estas señales que reciben y emiten las neuronas son de dos tipos distintos de naturaleza: eléctrica y química. La señal generada por la neurona y transportada a lo largo del axón es un impulso eléctrico, mientras la señal que se transmite entre los terminales axónicos de una neurona y las dendritas de la neurona siguiente es de origen químico; concretamente se realiza mediante moléculas de sustancias transmisoras (neurotransmisores) que fluyen a través de unos contactos especiales, llamados sinapsis, que tiene la función de receptor y estan localizados entre los terminales axónicos y las dendritas de la neurona siguiente. Existen numerosas formas de definir lo que son las redes neuronales artificiales, desde las definiciones cortas y genéricas hasta las que intentan explicar más detalladamente lo que significa red neuronal o computación neuronal, veamos algunas de estas: Computación neuronal es una nueva forma de computación, inspirada en modelos biológicos. Una red neuronal artificial es un sistema de computación hecho por un gran número de elementos simples, elementos de procesos muy interconectados, los cuales procesan información por medio de su estado dinámico como respuestas a entradas externas. Redes neuronales artificiales son redes interconectadas masivamente en paralelo de elementos simples (usualmente adaptativos ) y con organización jerárquica, las cuales intentan interactuar con los objetos del mundo real del mismo modo que lo hace el sistema nervioso biológico. En las redes neuronales biológicas, las células neuronales (neuronas) corresponden a los elementos de procesos anteriores. Las interconexiones se realizan por medio de las ramas de salida (axones) que producen un número variable de conexiones (sinapsis) con otras neuronas. Las redes neuronales son sistemas de simples elementos de proceso muy interconectados. El Primer modelo de red neuronal fue propuesto en 1943 por McCulloch y Pitts en términos de un modelo computacional de "actividad nerviosa". El modelo de McCulloch-Pitts es un modelo binario, y cada neurona tiene un escalón o umbral prefijado. Este primer modelo sirvió de ejemplo para los modelos posteriores de Jhon Von Neumann, Marvin Minsky, Frank Rosenblatt, y muchos otros. Una primera clasificación de los modelos de ANNs podría ser, atendiendo a su similitud con la realidad biológica:

Page 156: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Los modelos de tipo biológico. Este comprende las redes que tratan de simular los sistemas neuronales biológicos así como las funciones auditivas o algunas funciones básicas de la visión.

El modelo dirigido a aplicación. Estos modelos no tienen porque guardar similitud con los

sistemas biológicos. Sus arquitecturas están fuertemente ligadas a las necesidades de las aplicaciones para las que son diseñados.

El objetivo principal de de las redes neuronales de tipo biológico es desarrollar un elemento sintético para verificar las hipótesis que conciernen a los sistemas biológicos. Las neuronas y las conexiones entre ellas (sinápsis) constituyen la clave para el procesado de la información. Observe la figura:

Hay tres partes en una neurona: El cuerpo de la neurona, Ramas de extensión llamadas dendrítas para recibir las entradas, y Un axón que lleva la salida de la neurona a las desdirías de otras neuronas. La forma que dos neuronas interactuan no está totalmente conocida, dependiendo además de cada neurona. En general, una neurona envía su salida a otras por su axón. El axón lleva la información por medio de diferencias de potencial, u ondas de corriente, que depende del potencial de la neurona. Este proceso es a menudo modelado como una regla de propagación representada por la función de red u(.).

Page 157: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

La neurona recoge las señales por su sinápsis sumando todas las influencias excitadoras e inhibidoras. Si las influencias excitadoras positivas dominan, entonces la neurona da una señal positiva y manda este mensaje a otras neuronas por sus sinápsis de salida. En este sentido la neurona puede ser modelada como una simple función escalón f(.). Como se muestra en la siguiente figura, la neurona se activa si la fuerza combinada de la señal de entrada es superior a un cierto nivel, en el caso general el valor de activación de la neurona viene dado por una función de activación f(.) Es generalmente admitido que las sinápsis pueden ser modificadas por la experiencia, es decir, por aprendizaje. Para su análisis, es conveniente considerar una sola neurona con sus sinápsis. Esta unidad es llamada perceptron, y constituye la base de las redes de neuronas.

Las ANNs dirigidas a aplicación están en general poco ligadas a las redes neuronales biológicas. Ya que el conocimiento que se posee sobre el sistema nervioso en general no es completo, se han de definir otras funcionalidades y estructuras de conexión distintas a las vistas desde la perspectiva biológica. Las características principales de este tipo de ANNs son los siguientes:

1. Auto Organización y Adaptatividad: utilizan algoritmos de aprendizaje adaptativo y auto organización, por lo que ofrecen posibilidades de procesado robusto y adaptativo.

2. Procesado No Lineal: aumenta la capacidad de la red de aproximar, clasificar y su

inmunidad frente al ruido.

3. Procesado paralelo: normalmente se usa un gran número de células de procesado por el alto nivel de interconectividad.

Estas características juegan un importante papel en las ANNs aplicadas al procesado de señal e imagen. Una red para una determinada aplicación presenta una arquitectura muy concreta, que comprende elementos de procesado adaptativo masivo paralelo combinadas con estructuras de interconexión de red jerárquica. Los componentes más importantes de una red neuronal artificial son:

• Unidades de procesamiento (la neurona artificial) • Estado de activación de cada neurona. • Patrón de conectividad entre neuronas.

Page 158: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

• Regla de propagación. • Función de transferencia. • Regla de activación. • Regla de aprendizaje.

De acuerdo a las características de cada nodo de la red (microestructura), se presenta la forma de organización de la red neuronal artificial (mesoestructura) en función de:

• Número de niveles o capas: La distribución de neuronas dentro de la red se realiza formando niveles o capas de un número determinado de neuronas cada una. A partir de su situación dentro de la red, se pueden distinguir tres tipos de capas: 1) de entrada, es la capa que recibe directamente la información proveniente de las fuentes externa de la red; 2) ocultas, son internas a la red y no tiene contacto directo con el entorno exterior; y 3) de salida, transfieren información de la red hacia el exterior.

• Número de neuronas por nivel:

• Patrones de conexión: La conectividad entre los nodos de una red neuronal artificial está

relacionada con la forma en que las salidas de las neuronas están canalizadas para convertirse en entradas de otras neuronas,

• Flujo de información:

Debido a su constitución y a sus fundamentos, las redes neuronales artificiales presentan un gran número de características semejantes a las del cerebro. Esto hace que ofrezcan numerosas ventajas y que este tipo de tecnología se este aplicando en diferentes áreas. Estas ventajas incluyen: Aprendizaje adaptativo: capacidad de aprender a realizar tareas basadas en un entrenamiento o una experiencia inicial.

Tipo de conexiones (Hacia atrás, hacia delante, lateral)

Número de niveles Número de neuronas por nivel

Grada de conectividad

Características de un grupo de neuronas

Page 159: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Autoorganización: una red neuronal puede crear su propia organización o representación de la información que recibe mediante una etapa de aprendizaje. Tolerancia a fallos: la destrucción parcial de una red conducen a una degradación de su estructura; sin embargo, algunas capacidades de la red se pueden retener, incluso sufriendo un gran daño. Operación en tiempo real: los computadores neuronales pueden ser realizados en paralelo, y se diseñan o fabrican maquinas con hardware especial para obtener esta capacidad. Fácil inserción dentro de la tecnología existente: se pueden obtener chip especializados para redes neuronales que mejoran su capacidad en ciertas tareas. Esto facilitará la integración modular en los sistemas existentes. Las redes neuronales son una tecnología computacional emergente que puede utilizarse en un gran número y variedad de aplicaciones, tanto comerciales como militares. Se pueden desarrollar redes neuronales en un periodo de tiempo razonable y puede realizar tareas concretas mejor que otras tecnologías convencionales.

• El perceptron está constituido por las N entradas provenientes de fuentes externas, las N conexiones o pesos w = (w1,w2,…,wN) y la salida . En realidad un perceptron es la red neuronal más simple posible: aquella donde no existen capas ocultas. Para cada configuración de los estados de las neuronas de entrada (estímulo) la respuesta del perceptron obedece la siguiente dinámica: sumar los potenciales sinápticos wij (ver figura 2). Esta suma ponderada, también llamada campo, se escribe:

Si hi > qi, la respuesta de la neurona es = +1; si no, es inactiva y si = -1. Si tanto las entradas como las salidas son binarias; se dice entonces que el perceptron realiza una función booleana de sus entradas. Pero otras posibilidades han sido estudiadas (entradas reales, salidas sigmoideas en función del campo, etc.), en vista de las aplicaciones. Con una arquitectura tan simple como la del perceptron no se pueden realizar más que una clase de funciones booleanas muy simples, llamadas linealmente separables. Son las funciones en las cuales los estados de entrada con salida positiva pueden ser separados de aquellos a salida negativa por un hiperplano. Un hiperplano es el conjunto de puntos en el espacio de estados de entrada, que satisfacen una ecuación lineal. En dos dimensiones, es una recta, en tres dimensiones un plano, etc. La figura 3 presenta dos ejemplos de funciones booleanas con 2 entradas (N=2). El ejemplo 3b no es realizable por un perceptron. Si se quieren realizar funciones más complejas con redes de neuronas, es necesario intercalar neuronas ocultas entre las entradas y la salida.

Page 160: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Red neuronal con una capa oculta y H unidades

Una red multicapas se define como un conjunto de perceptrones, ligados entre si por sinápsis y dispuestos en capas siguiendo diversas arquitecturas. Una de las arquitecturas más comúnmente usada es llamada feedforward: se tienen conexiones de la entrada a las capas ocultas y de aquí a la salida. En la figura 4 se muestra una RN feedforward con N entradas x=(x1,x 2,…,x N) y una capa oculta de H unidades ocultas. El perceptron de salida es denotado por z.

El funcionamiento de una RN es gobernado por reglas de propagación de actividades y de actualización de los estados. Teóricamente, una RN puede ser vista como un modelo que realiza una función de un espacio de entrada hacia un espacio de salida. El objetivo de esta modelización consiste en que la asociación sea lo más acorde posible con el medio ambiente del fenómeno estudiado. Observe en la figura 4 que el perceptron de salida z tiene ahora como entradas las salidas de las unidades ocultas s: es justamente aquí donde se realiza el mapeo del espacio de entrada hacia estados ocultos llamados representaciones internas, que son una codificación de la información, y de éstas a la salida.

6.2. REDES NEURONALES Y COMPUTADORAS DIGITALES Para entender el potencial real de la computación neuronal, será necesario hacer una clara distinción entre los sistemas de computación neuronal y digitales. Los sistemas neurológicos no aplican principios de circuitos lógicos o digitales: un sistema de computación digital debe ser asíncrono o asíncrono; mientras que las neuronas non pueden ser circuitos de umbral lógico, porque hay miles de entradas variables en la mayoría de las neuronas y el umbral es variable con el tiempo, siendo afectado por la estimulación, atenuación, etc. Los procesos colectivos que son importantes en computación neuronal no pueden implementarse en computación digital. Por lo que el cerebro debe ser un computador analógico.

Page 161: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ni las neuronas ni las sinapsis son elementos de memoria biestables. En la computación neuronal no hay instrucción de máquina ni códigos de control.

Los circuitos del cerebro no implementan computación recursiva, y por tanto no son algorítmicos. Incluso en el nivel más alto, la naturaleza del proceso de información es diferente en el cerebro y en los computadores digitales. Con el fin de llegar al entendimiento global de ANNs, adoptamos la siguiente perspectiva, llamada top-down que empieza por la aplicación se pasa al algoritmo y de aquí a la arquitectura: Esta aproximación a las ANNs está motivada por la aplicación, basada en la teoría y orientada hacia la implementación. Las principales aplicaciones son para el procesado de señal y el reconocimiento de patrones. La primera etapa algorítmica representa una combinación de la teoría matemática y la fundamentación heurística por los modelos neuronales. El

fin último es la construcción de neurocomputadores digitales, con la ayuda de las tecnologías y el procesado adaptativo, digital y paralelo Las redes neuronales tratan de resolver de forma eficiente problemas que pueden encuadrarse dentro de tres amplios grupos: optimización, reconocimiento y generalización. Estos tres tipos engloban un elevado número de situaciones, lo que hace que el campo de aplicación de las redes neuronales en la gestión empresarial sea muy amplio. En los problemas de optimización, se trata de determinar una solución que sea óptima. Generalmente se aplican redes neuronales realimentadas, como el modelo de Hopfield citado. En la gestión empresarial, son decisiones de optimización encontrar los niveles de tesorería, de existencias, de producción, construcción de carteras óptimas, etc. En los problemas de reconocimiento, se entrena una red neuronal con inputs como sonidos, números, letras y se procede a la fase de test presentando esos mismos patrones con ruido. Este es uno de los campos más fructíferos en el desarrollo de redes neuronales y casi todos los modelos: perceptrón, redes de Hopfield, mapas de Kohonen, etc, han sido aplicados con mayor o menor éxito. En los problemas de generalización, la red neuronal se entrena con unos inputs y el test se realiza con otros casos diferentes. Problemas típicos de generalización son los de clasificación y predicción. Las redes neuronales son modelos matemáticos especializados que pueden aplicarse en dominios muy concretos. Las redes neuronales están mostrando su utilidad en muchos problemas reales.

Page 162: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Los estudios empíricos muestran la eficiencia de las redes neuronales con datos basados en lógica difusa, patrones o rasgos ocultos para la mayoría de las técnicas incluida la capacidad humana, datos que exhiben no linealidad e información en la que se ha detectado caos. La elección entre los diferentes sistemas de ayuda a la toma de decisiones depende del tipo de tarea a realizar. También el nivel al que se toman las decisiones afecta la elección del tipo de sistema más apropiado. Simón (1960) clasificó las decisiones en estructuradas y no estructuradas: las decisiones estructuradas son repetitivas, rutinarias y existe un procedimiento definido para abordarlas, por el contrario, en las decisiones no estructuradas el decisor debe proporcionar juicios y aportar su propia evaluación. Más recientemente Gorry y Scott-Morton (1971) han propuesto un esquema que relaciona el tipo de decisión (estructurada, semiestructurada y no estructurada) y el nivel organizacional (control operativo, de gestión y estratégico) con la herramienta a utilizar. Lógicamente en el nivel operativo dominan las decisiones estructuradas, en el nivel de gestión las semiestructuradas y en el estratégico las no estructuradas, formando una diagonal. En la figura siguiente hemos actualizado este esquema incorporando las últimas tecnologías de la información, e incluso anticipando lo que puede ser un futuro próximo. 6.3. REDES NEURONALES E IA Las redes neuronales se encuentran dentro del campo de la IA, tal y como se muestra en el esquema siguiente:

Inteligencia Artificial

Redes de Autoproceso

Procesamiento Numérico Procesamiento Simbólico

Sistemas Asociativos Sistemas Distribuidos

Redes Neuronales Redes Subsimbólicas

Page 163: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

La Inteligencia Artificial clásica (IA) ha generado una cierta decepción al tratar de explicar los procesos cognoscitivos debido a que la representación usando reglas se aleja mucho de cualquier inspiración biológica por una parte y por otra conduce a la creación de sistemas que son demasiado rígidos y al mismo tiempo extremadamente frágiles. El reconocimiento, el aprendizaje y la memoria son mecanismos cognoscitivos que no pueden ser explicados por medio del simbolismo de la IA, sino más bien en función de unidades simples pero altamente interconectadas de las cuales emerge un comportamiento complejo, paralelo y auto-organizado, sin necesidad de tener reglas explícitas de decisión ni de un procesador maestro o motor de inferencia. La secuenciación y la rigidez de reglas son dos aspectos que han sido duramente atacados en las técnicas de IA. La inmensa ventaja de los métodos conexionistas comparado con los métodos tradicionales de IA es la siguiente: no es necesario conocer ni una expresión ni una construcción de la función a modelar, tan solo se requiere disponer de un conjunto de aprendizaje satisfactorio para que la red pueda aproximar esta función aplicando una regla de aprendizaje. Así, muchos fenómenos cognoscitivos han logrado ser modelados a través de sistemas conexionistas. Por otra parte, en lo que concierne a la aplicación tecnológica, las redes de neuronas son actualmente ampliamente utilizadas en aplicaciones tan variadas como la previsión, la clasificación, el diagnóstico automático, el procesamiento de señales, el reconocimiento de formas, la compresión de datos, la optimización combinatoria, la robótica y la búsqueda de documentos, entre otras. Existen diferencias relevantes entre redes neuronales con respecto a lo que se entiende como inteligencia artificial, las cuales se destacan a continuación: Representación del conocimiento: En IA se utilizan métodos de representación del conocimiento (reglas de producción, marcos, reglas semánticas, etc ) generalmente localizados: átomos de conocimiento, concepto asociado a una regla, etc. Esto hace que la gestión de las bases de conocimiento sea problemática: añadir una regla o suprimir un dato puede tener consecuencias imprevisibles sobre los demás datos. Actualmente se piensa que los conocimientos se presentan de forma distribuida en el cerebro. De esto se puede deducir algunas consecuencias:

a) La red puede crear su propia organización de la información. b) Como se dispone de un número finito de neuronas, varios hechos se memorizan por la

activación de clases de neuronas no disjuntas. c) Mejor tolerancia a fallos, la perdida de neuronas no implica que se deje de recordar, por

tanto, debe existir información redundante.

Page 164: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Mecanismos de inferencia: Los mecanismos de inferencia (razonamiento) utilizados en la IA estan basados en la lógica (lenguaje Prolog, por ejemplo). Sin embargo, el cerebro humano no realiza un razonamiento necesariamente lógico; utiliza la imprecisión y la contradicción parcial. El modo de funcionamiento del cerebro es la evolución dinámica de las actividades neuronales. Aprendizaje: El aprendizaje en IA consiste simplemente en añadir nuevos átomos de conocimientos (nuevos hechos, reglas, etc.). En el cerebro, el aprendizaje de un hecho parecido a otro del que ya tenemos conocimiento se hace por refuerzo de las conexiones entre neuronas y esta actividad conjunta es necesario para memorizarlo. Se ha demostrado que si un sujeto no esta expuesto a ciertos estímulos al comienzo de su vida, no podrá detectar más de estos estímulos, debido a la degeneración de las conexiones necesarias. Paralelismo: Es una característica innata de los sistemas conexionistas. Aunque un ordenador realiza cálculos mucho más rápido que un ser humano, no es capaz de desarrollar procesos que éste realiza de forma sencilla (comprensión de una frase, analizar una imagen, reconocer un rostro, etc). Esto es debido a que el cerebro humano, para hacerlo, pone en marcha simultáneamente millones de neuronas.

Modo de trabajo con redes neuronales.

Page 165: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Originalmente la red neuronal no dispone de ningún tipo de conocimiento útil almacenado. Para que ejecute una tarea es preciso entrenar o enseñar a la red neuronal. El entrenamiento se realiza mediante patrones-ejemplo. Existen dos tipos de aprendizaje: supervisado y no supervisado. Si la red utiliza un tipo de aprendizaje supervisado debemos proporcionarle parejas de patrones entrada-salida y la red neuronal aprende a asociarlos. En terminología estadística equivale a los modelos en los que hay vectores de variables independientes y dependientes. Si el entrenamiento es no supervisado, únicamente debemos suministrar a la red los datos de entrada para que extraiga los rasgos característicos esenciales. Estas redes neuronales no supervisadas están relacionadas con modelos estadísticos como el análisis de conglomerados o las escalas multidimensionales. Durante la fase de aprendizaje en la mayor parte de los modelos se produce una variación de los pesos sinápticos, es decir, de la intensidad de interacción entre las neuronas, lo que en terminología estadística equivale a calcular los coeficientes de las funciones de ajuste. INCONVENIENTES Los sistemas neuronales presentan ciertos inconvenientes. Uno importante es que habitualmente realizan un complejo procesamiento que supone millones de operaciones, por lo que no es posible seguir paso a paso el razonamiento que les ha llevado a extraer sus conclusiones. Sin embargo, en redes pequeñas, mediante simulación o por el estudio de los pesos sinápticos sí es posible saber, al menos, qué variables de las introducidas han sido relevantes para tomar la decisión. Falta todavía mucho por estudiar en el modo de operación de las redes neuronales. Otro problema es que al ser una herramienta novedosa y en pleno desarrollo, no se trata de una disciplina con un cuerpo formal, coherente y establecido, por lo que el investigador se encuentra con muchos problemas a los que todavía no se ha encontrado solución. 6.4. REDES NEURONALES Y MECANISMOS DE APRENDIZAJE (SUPERVISADO –

NO SUPERVISADO)

Los cambios que se producen durante el proceso de aprendizaje se reducen a la destrucción, modificación y creación de conexiones entre las neuronas. En los modelos de redes neuronales artificiales, la creación de una nueva conexión implica que el peso de la misma pasa a tener un valor distinto de cero. De la misma forma, una conexión se destruye cuando su peso pasa a ser cero. Un aspecto importante respecto al aprendizaje en las redes neuronales es el conocer como se modifican los valores de los pesos; es decir, cuales son los criterios que se sigue para cambiar el valor asignado a las conexiones cuando se pretende que la red aprende una nueva información. Estos criterios determinan lo que se conoce como ña regla de aprendizaje de la red.

Page 166: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Se suele considerar dos tipos de reglas: las que responden a los que habitualmente se conoce como aprendizaje supervisado, y las correspondientes a un aprendizaje no supervisado. La diferencia entre ambos tipos estriba en la existencia o no de un agente externo (supervisor) que controle el proceso de aprendizaje de la red. a) Redes con aprendizaje supervisado El aprendizaje supervisado se caracteriza porque el proceso de aprendizaje se realiza mediante un entrenamiento controlado por un agente externo (supervisor, maestro) que determina la respuesta que debería generar la red a partir de una entrada determinada. El supervisor comprueba la salida de la red y en el caso de que esta no coincida con la deseada, se procederá a modificar los pesos de las conexiones, con el fin de conseguir que la salida obtenida se aproxime a la deseada. En este tipo de aprendizaje se suele considerar, a su vez, las siguiente formas de llevar a cabo aprendizajes supervisados: Aprendizaje por corrección de errores: Consiste en ajustar los pesos de las conexiones de la red en función de la diferencia entre los valores deseados y los obtenidos en la salida de la red; es decir en función del error cometido en la salida. La red neuronal Perceptron utiliza esta forma de aprendizaje. Aprendizaje por refuerzo: Se trata de un aprendizaje supervisado más lento que el anterior, que se basa en la idea de no disponer de un ejemplo completo del comportamiento deseado; es decir, de no indicar durante el entrenamiento exactamente la salida que se desea que proporcione la red ante una determinada entrada. La función del supervisor se reduce a indicar mediante una señal de refuerzo si la salida obtenida en la red se ajusta a la deseada (éxito = + 1 o fracaso = - 1), y en función de ello se ajustan los pesos basándose en un mecanismo de probabilidades. Una red que utiliza este tipo de aprendizaje es la conocida como Linear Reward Penalty. Aprendizaje estocástico: Consisten básicamente en realizar cambios aleatorios en los valores de los pesos de las conexiones de la red y evaluar su efecto a partir del objetivo deseado y de distribuciones de probabilidades. Una red que utiliza este tipo de aprendizaje es la conocida como Boltzmann Machine.

b) Aprendizajes no supervisados Las redes con aprendizaje no supervisado (autosupervisado) no requieren influencia externa para ajustar los pesos de las conexiones entre sus neuronas. La red no recibe ninguna información por parte del entorno que le indique si la salida generada en respuesta a una determinada entrada es o no correcta; por ello, suele decirse que estas redes son capaces de autoorganizarse. Se consideran dos tipos de algoritmos de aprendizaje no supervisado:

Page 167: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Aprendizaje hebbiano: El aprendizaje hebbiano consiste básicamente en el ajuste de los pesos de las conexiones de acuerdo con la correlación (multiplicación en los casos de valores binarios +1 y –1 ) de los valores de activación (salidas) de dos neuronas conectadas. Si las dos unidades son activas (positivas), se produce un reforzamiento de la conexión, cuando una es activa y la otra pasiva (negativa), se produce un debilitamiento de la conexión. Se trata de una regla de aprendizaje no supervisado, pues la motivación de los pesos se realiza en función de los estados (salidas) de las neuronas obtenidos tras la presentación de cierto estímulo (información de entrada a la red ), sin tener en cuenta si se desea obtener o no esos estados de activación. Este tipo de aprendizaje fue empleado por Hopfield en la conocida red que lleva su nombre: “Red Hopfield”. Aprendizaje competitivo y cooperativo: En las redes con aprendizaje competitivo ( y cooperativo), suele decirse que las neuronas compiten (y cooperan ) unas con otras con el fin de llevar a cabo una tarea dada. Con este tipo de aprendizaje, se pretende que cuando se presente a la red cierta información de entrada, solo una de las neuronas de salida de la red, o una por cierto grupo de neuronas compiten por activarse, quedando finalmente una, o una por grupo, como neurona vencedora, siendo anuladas el resto, que son forzadas a sus valores de respuesta mínimo. El objetivo de este aprendizaje es categorizar los datos que se introducen a la red. De esta forma, las informaciones similares son clasificadas formando parte de la misma categoría, y por tanto deben activar la misma neurona de salida. Las clases o categorías deben ser creadas por la propia red, puesto que se trata de un aprendizaje no supervisado, a través de las correlaciones entre los datos de entrada. Este tipo de aprendizaje se ha aplicado a redes feedforward de dos capas.

Page 168: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

6.5. REDES NEURONALES Y LÓGICA BORROSA La lógica borrosa o multivaluada permite asignar diferentes grados de certeza a los hechos. En lógica borrosa se trabaja con conjuntos, que se definen por sus funciones de pertenencia, que se denotan como µ c (x) e indican el grado de pertenencia (entre 0 y 1) del elemento con valor x al conjunto C. Las operaciones entre conjuntos se plantean en forma de operaciones borrosas entre sus funciones de pertenencia. Las más utilizadas son la Unión ( ∪ ), Intercepción ( ∩ ) y complemento ( - ) para los conjuntos, y las correspondientes suma lógica borrosa ( ∨ ), producto lógico borroso ( ∧ ) y negación borrosa para las funciones de pertenencia. Sean dos conjuntos borrosos A y B, con funciones de pertenencia µ A y µ B tendríamos:

Unión: µ A ∪ B = µ A (x) ∨ µ B (x) = máx. (µ A (x), µ B (x)) Intercepción: µ A ∩ B = µ A (x) ∧ µ B (x) = mín. (µ A (x), µ B (x)) Complemento: µ -A (x) = 1 - µ A (x)

Neuronas borrosas y aprendizaje borroso Una neurona borrosa puede modelarse como una unidad de procesamiento que recibe una señales borrosas de entrada a través de una sinapsis borrosas, siendo la entrada el producto borroso de la salida de la neurona anterior por el peso borroso de la conexión. La entrada neta de la neurona no se obtiene como la suma aritmética de las entradas, sino como la suma borrosa de las mismas. Una posible utilidad en este tipo de redes, es servir de memoria asociativa para almacenar y evaluar las reglas de control en un sistema borroso. El mecanismo de aprendizaje también utiliza operadores borrosos para la obtención de los pesos, siendo una adaptación de la regla de hebb, conocida como aprendizaje hebbiano borroso. Implementación neuronal de mapas cognitivos borrosos.

Page 169: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

SÉPTIMA UNIDAD:

ALGORITMOS GENÉTICOS 7.1. Introducción 7.2. Algoritmos Genéticos

7.2.1 Representación de Hipótesis 7.2.2 Operadores Genéticos 7.2.3 Función de evaluación y selección

7.3. Búsqueda en el espacio de Hipótesis 7.4. Programación Genética

7.4.1 Representación de Programas

7.5. Modelos de evolución y aprendizaje 7.5.1 Evolución Lamarckiana 7.5.2 El efecto Baldwin

7.6. Paralelismo en Algoritmos Genéticos 7.1. INTRODUCCIÓN Los algoritmos genéticos (AG) proporcionan un método de aprendizaje basado en la analogía con la evolución de las especies. Los AG generan un conjunto de hipótesis mediante la mutación y recombinación de parte del conjunto de hipótesis conocido. En cada paso el conjunto de hipótesis conocido como “población actual” se renueva remplazando una proporción de esta población por los sucesores de las hipótesis más “adecuadas” (mediante el uso de una función de evaluación). La popularidad de los AG se debe en parte a que la evolución es un método robusto y bien probado dentro de los sistemas biológicos naturales. Además son fácilmente paralelizables, lo que supone una ventaja gracias al abaratamiento actual de los costes en hardware. Por otra parte, los AG pueden realizar búsquedas en espacios de hipótesis que contienen complejas interacciones entre las distintas partes, donde el impacto de cada parte sobre la función de evaluación es difícil de especificar. Aunque no se garantice encontrar la solución óptima, los AG generalmente encuentran soluciones con un alto grado de acierto.

Page 170: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

7.2. ALGORITMOS GENÉTICOS El objetivo de los AG es buscar dentro de un espacio de hipótesis candidatas la mejor de ellas. En los AG la “mejor hipótesis” es aquella que optimiza a una métrica predefinida para el problema dado, es decir, la que más se aproxima a dicho valor numérico una vez evaluada por la función de evaluación. El comportamiento básico de un algoritmo genético es el siguiente: de forma iterativa va actualizando la población de hipótesis. En cada iteración, todos los miembros de la población son procesados por la función de evaluación, tras lo cual una nueva población es generada. La nueva generación estará compuesta por: - Las mejores hipótesis de la población actual (seleccionadas probabilísticamente) - Y el resto de hipótesis necesarias para mantener el número, que se consiguen mediante el cruce de individuos. A partir de dos hipótesis padre (seleccionadas probabilísticamente a partir de la población actual) se generan dos hipótesis hijas recombinando sus partes siguiendo algún criterio establecido. Una vez llegados a este punto (con una nueva población con el mismo número de individuos), a un determinado porcentaje de la población se le aplica un operador de mutación. 7.2.1. Representación de Hipótesis Las hipótesis en los AG se suelen representar mediante cadenas de bits, de forma que puedan ser fácilmente manipulables por los operadores genéticos de mutación y cruce. Primero veamos como usar una cadena de bits para representar los posibles valores de un atributo. Si un atributo puede tomar tres valores posibles (A, B y C), una manera de representarlo es mediante tres bits de forma que: Atributo (100) = puede tomar el valor A Atributo (010) = puede tomar el valor B Atributo (001) = puede tomar el valor C Atributo (110) = puede tomar el valor A ó B (A or B) Atributo (111) = puede tomar el valor A, B ó C (A or B or C). No importa el valor del atributo. De esta forma podemos representar fácilmente conjunciones de varios atributos para expresar restricciones (precondiciones) mediante la concatenación de dichas cadenas de bits.

Page 171: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Ejemplo: “Tiempo” puede ser Despejado, Nublado o Lluvioso. “Viento” puede ser Fuerte o Moderado. (Tiempo = Nublado ó Lluvioso) y (Viento = Fuerte) se representaría con la siguiente cadena: 011 10. Las postcondiciones de las reglas se pueden representar de la misma forma. Por ello una regla se puede describir como la concatenación de la precondición y la postcondición. Ejemplo: “Jugar al Tenis” puede ser Cierto o Falso. Si Viento = Fuerte entonces “Jugar al Tenis” = Cierto se representaría mediante 111 10 10. Donde los tres primeros bits a uno indican que el atributo “Tiempo” no afecta a nuestra regla. Cabe destacar que una regla del tipo 111 10 11 no tiene demasiado sentido, puesto que no impone restricciones en la postcondición. Para solucionar esto, una alternativa es codificar la postcondición con un único BIT (1 = Cierto y 0 = Falso). Otra opción es condicionar los operadores genéticos para que no produzcan este tipo de cadenas o conseguir que estas hipótesis tengan una adecuación muy baja (según la función de evaluación) para que no logren pasar a la próxima generación de hipótesis. 7.2.2. Operadores Genéticos Los dos operadores más comunes son la “mutación” y el “cruce”. El operador de cruce genera dos nuevos hijos a partir de dos cadenas padre recombinando sus bits. Para elegir con que bits contribuye cada padre hacemos uso de una “máscara de cruce”. Veamos un par de ejemplos: Cruce Simple:

Cadenas padre Mascara de Cruce Hijos 11101001000 11101010101 11111000000 00001010101 00001001000

Page 172: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Cruce Doble:

Cadenas padre Mascara de Cruce Hijos 11101001000 11001011000 00111110000 00001010101 00101000101

El operador mutación produce un nuevo hijo de un solo padre cambiando el valor de uno de sus bits elegido al azar. Generalmente se aplica después de hacer uso del operador cruce. Otros operadores genéticos son “AddAlternative” y “DropCondition”. El primero de ellos cambia un BIT de un atributo de 0 a 1, es decir, permite que el atributo pueda tomar el valor representado por dicho BIT. El segundo pone todos los bits de un atributo a 1, con lo que elimina la restricción impuesta por el atributo. Una posibilidad interesante que surge con la aplicación de estos operadores, es la de incluir nuevos bits en las cadenas que representan las hipótesis y que indiquen que operadores pueden ser aplicados a dicha hipótesis (añadiendo un BIT por operador). Como estos bits van a sufrir modificaciones a causa de los operadores aplicados a la cadena, estaremos alterando dinámicamente los métodos de búsqueda del algoritmo genético. 7.2.3. Función de evaluación y selección La función de evaluación define el criterio para ordenar las hipótesis que potencialmente pueden pasar a formar parte de la siguiente generación. La selección de las hipótesis que formarán parte de la siguiente generación o que serán usadas para aplicarles los operadores genéticos, puede realizarse de varias formas. Las más usuales son: - Selección proporcional al ajuste dado por la función de evaluación. En este método la probabilidad de que una hipótesis sea seleccionada viene determinada por:

Page 173: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Figura 1 - Probabilidad de que la hipótesis hi sea elegida.

- Selección mediante torneo. Se eligen dos hipótesis al azar. La más “adecuada” (según la función de evaluación) tiene una probabilidad p (prefijada de antemano) de ser elegida, mientras que la otra tiene una probabilidad (1 – p). - Selección por rango. Las hipótesis de la población actual se ordenan de acuerdo a su adecuación. La probabilidad de que una hipótesis sea seleccionada será proporcional a su posición en dicha lista ordenada, en lugar de usar el valor devuelto por la función de evaluación. 7.3. BÚSQUEDA EN EL ESPACIO DE HIPÓTESIS Una de las dificultades que nos encontramos en algunos algoritmos genéticos es el problema del “crowding” (muchedumbre). Se trata de un fenómeno por el cual las mejores hipótesis se reproducen rápidamente de manera que las nuevas generaciones una gran proporción se debe a éstas hipótesis y a otras muy similares (descendientes), reduciendo así la diversidad de la población, y por lo tanto, las posibilidades de la evolución. Para reducir los efectos del “crowding” se usan varias estrategias. Una solución consiste en cambiar el método de selección habitual (selección proporcional al ajuste) por alguno de los otros vistos con anterioridad (selección mediante torneo o selección por rango). Otra opción consiste en usar otra función de evaluación, “ajuste compartido”, de manera que el valor devuelto por esta función se devalúa ante la presencia de otras hipótesis similares en la población. Y una tercera alternativa es restringir el tipo de hipótesis a los que se les permite la recombinación. 7.4. PROGRAMACIÓN GENÉTICA La programación genética (PG) es una forma de computación evolutiva en la que los individuos de la población son programas, en lugar de cadenas de bits.

Page 174: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

7.4.1. Representación de Programas Los programas usados en la programación genética suelen representarse mediante sus árboles sintácticos. En esta notación, cada llamada a una función se representa por un nodo en el árbol, y los argumentos de la función corresponden con los nodos hijos de éste. Para aplicar programación genética a un dominio particular, es necesario que el usuario defina de antemano las primitivas que se van a emplear así como el tipo de los nodos hoja. Por lo tanto, la programación genética realiza una búsqueda evolutiva en un espacio de programas descritos mediante sus árboles sintácticos. De igual forma que los algoritmos genéticos, la programación genética itera sobre una población de individuos produciendo una nueva generación mediante el empleo de la selección, el cruce y la mutación. La adecuación de un programa viene determinada por los resultados de su ejecución sobre unos datos de entrenamiento (función de evaluación). Así, por ejemplo, el operador de cruce se implementa mediante el intercambio de subárboles entre programas padres. En la mayoría de los casos, el rendimiento de la programación genética depende básicamente de la representación elegida y de la elección de la función de evaluación.

Figura 2 - Representación de un programa mediante su árbol.

Page 175: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

7.5. MODELOS DE EVOLUCIÓN Y APRENDIZAJE En muchos sistemas naturales, los individuos aprenden a adaptarse durante sus vidas. Al mismo tiempo distintos procesos biológicos y sociales permiten a la especie adaptarse a lo largo de las distintas generaciones, por lo que surge una interesante pregunta: ¿Cuál es la relación entre el aprendizaje individual de un organismo durante su vida y el aprendizaje colectivo de la especie? A esta cuestión intentan responder la teoría de la evolución Lamarckiana y la teoría del efecto Baldwin. 7.5.1. Evolución Lamarckiana Lamarck (científico de finales del siglo XIX) propuso que la experiencia de un individuo afecta directamente a su descendencia, por lo que el conocimiento sería hereditario y las siguientes generaciones no necesitarían adquirirlo. Se trata de una conjetura que mejora la eficiencia de los algoritmos genéticos y la programación genética, en las cuales se ignoraba la experiencia adquirida por el individuo durante su vida. Aunque biológicamente esta teoría no es correcta como modelo de evolución, sin embargo si es perfectamente aplicable al caso de la computación genética, donde recientes estudios han demostrado su capacidad para mejorar la efectividad. 7.5.2. El efecto Baldwin Se trata de otro mecanismo que sugiere como el aprendizaje de un individuo puede alterar el curso de la evolución de la especie. Se basa en las siguientes afirmaciones: - Si una especie evoluciona en un entorno cambiante, entonces los individuos capaces de aprender durante su vida se verán favorecidos. De hecho, la habilidad para aprender permite a los individuos maximizar su capacidad de adaptación en el entorno. - Los individuos con capacidad de aprendizaje dependerán en menor medida de su código genético. Como consecuencia de lo anterior las nuevas generaciones poseerán una diversidad genética mayor, lo que permitirá una evolución más rápida. En resumen, la capacidad de aprendizaje de algunos individuos provoca indirectamente una aceleración en la evolución de toda la población.

Page 176: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

7.6. PARALELISMO EN ALGORITMOS GENÉTICOS Los algoritmos genéticos son fácilmente paralelizables. A continuación se muestran las posibilidades de paralelismo con AG’s: Grano Grueso: Se subdivide la población en una serie de grupos distintos (siguiendo algún criterio), llamados “demes”. Cada uno de estos grupos se asigna a un nodo de computación distinto, y a continuación se aplica un AG en cada nodo. Los operadores de cruce se aplicaran generalmente entre individuos del mismo grupo, y en menor porcentaje, entre individuos de distintos grupos. En este entorno surge un nuevo concepto, denominado migración, que se produce cuando un individuo de un grupo se copia o se traslada a otro (s). Un beneficio del modelo de grano grueso es que se reduce el efecto “crowding” que aparecía en los AG no paralelizados. Grano Fino: Se asigna un procesador a cada individuo de la población. La recombinación se efectúa entre individuos vecinos en la red de computación. Algunos ejemplos de redes de procesadores (especifican las reglas de vecindad) son la malla, el toroide, etc.

EJERCICIO Diseñar un algoritmo genético que aprenda a clasificar conjunciones de reglas ara el problema “Jugar al Tenis” descrito en el capítulo 3 [nota]. Describe detalladamente la codificación de la cadena de bits para las hipótesis y el conjunto de operadores de cruce. La expresión que soluciona el problema es la siguiente: (Tiempo = soleado y Humedad=Normal) o (Tiempo = nublado) o (Tiempo = lluvioso y Viento=Debil) Los posibles valores de los atributos son: Tiempo = (Soleado,Nublado,Lluvioso) Humedad=(Alta,Normal) Viento=(Fuerte,Debil) JugarTenis=(Si,No) Por lo tanto, para la cadena de bits de las hipótesis usaremos tres bits para “Tiempo”, dos para “Humedad”, dos para “Viento” y uno para “Jugar tenis”. Ejemplo:

Si (Tiempo = soleado y Humedad=Normal y Viento = fuerte) -> JugarTenis=Si se expresaría como: 100 01 10 1

Page 177: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

Como la solución buscada es la disyunción de tres de estas reglas, las cadenas de bits de nuestras hipótesis estarán formadas por la concatenación de tres cadenas. Ejemplo:

100 01 10 1 + 010 10 10 1 + 100 10 01 1 En cuanto al operador de cruce, elegiremos uno de tipo uniforme con la siguiente máscara:

Máscara de cruce = 11000011 11000011 11000011

Para elegir las hipótesis que pasarán a la siguiente generación, o que serán elegidas para sufrir las operaciones de cruce, usaremos una selección probabilística tal que: ver Figura 1 A la hora de implementar el algoritmo, haremos uso de los siguientes parámetros:

r= % población que sufrirá la operación de cruce p= número de hipótesis de la población m= % de individuos (hipótesis) que mutan

Durante las iteraciones del algoritmo: a) (1-r)p pasarán a la siguiente generación (Ps) intactos b) (r*p)/2 parejas de hipótesis realizarán la operación de cruce c) Y el m porciento de la “nueva” población sufrirán mutaciones. Este m porciento se elige con una probabilidad uniforme.

Función Fitness (función de evaluación) Dispondremos de una base de datos de entrenamiento, compuesta por cadenas de 7 bits tal que nos indique que condiciones habrán de darse para jugar o no al tenis. Ejemplo:

100 01 10 1 = (Tiempo = soleado y Humedad=Normal) -> Si

En nuestro ejemplo, el número de combinaciones posible es 3x2x2=12 (lo cual no es mucho y nos permite tener una muestra de entrenamiento completa). El objetivo de la función es el de comprobar el porcentaje de reglas de entrenamiento que nuestra hipótesis es capaz de clasificar correctamente para, de esta forma, dotar a cada individuo de un valor numérico indicativo de su precisión (ajuste al modelo buscado). Nuestra hipótesis (individuo) se puede representar en tres partes (A,B y C) donde Z es el bit que indica si se juega o no al tenis en cada caso.

Page 178: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

A B C x x x x x x x x x x x x x x x x x x x x x x x x z z z

Nuestra función de evaluación tomará una hipótesis y la procesará con todo el conjunto de entrenamiento. Una cadena de entrenamiento se representa de la siguiente forma (donde R es el BIT que indica si se juega o no al tenis):

Entrenamiento x x x x x x x x Data (7 bits) R

Esta cadena de entrenamiento se compara con cada una de las partes de la hipótesis para ver si alguna de las tres la clasifica correctamente. Para saber si una parte clasifica bien una regla de entrenamiento procederemos de la siguiente forma:

Si R=1 entonces Si ( (Entrenamiento AND A) = Entrenamiento) devolver SI Sino devolver NO Si R=0 entonces Si ( (Data AND A) = Data) Si R=Z devolver SI Sino devolver NO Sino devolver NO

Si se ha devuelto SI, procedemos con el siguiente dato de entrenamiento. Si se ha devuelto NO, evaluamos la siguiente parte del individuo (B y después C). Para cada individuo, la función de evaluación realiza esta tarea con todos los datos de entrenamiento, devolviendo un número entre 0 y 1 que indique el porcentaje de clasificaciones correctas de la hipótesis actual (0% a 100%). Así pues, cada individuo estará asociado a un valor numérico que usará posteriormente la función de selección. Función AG (Fitness,Umbral,p,r,m) { Inicializar población P. Para cada hipótesis en P, calcular Fitness. Mientras que max(Fitness) < Umbral hacer Seleccionar (1-r)p individuos de P que pasan a Ps. Elegir (r*p)/2 parejas de P y aplicarles operadores de cruce. Añadir los hijos a Ps. Elegir m porciento sobre Ps y aplicar mutación.

Page 179: Inteligencia Artificial

Inteligencia Artificial.

Universidad Nacional de Ingeniería. Elaborado por Ing. Ariel Chávez Toruño Facultad de Ciencias y Sistemas.

P <- Ps Para cada hipótesis en P, calcular Fitness. Fin mientras Devolver la hipótesis con mayor fitness. } En nuestro caso el Umbral será 1 (100% de clasificaciones correctas) ya que disponemos en la base de entrenamiento de todas las combinaciones posibles (algo que no ocurrirá en problemas reales y no de juguete, como es éste) Nota: Se trata de un ejemplo sencillo en el que una determinada persona juega al tenis siempre y cuando se cumplan unas determindas condiciones atmosféricas.

CONCLUSIONES Como hemos podido observar, la principal ventaja de los algoritmos genéticos radica en su sencillez. Se requiere poca información sobre el espacio de búsqueda ya que se trabaja sobre un conjunto de soluciones o parámetros codificados (hipótesis o individuos). Se busca una solución por aproximación de la población, en lugar de una aproximación punto a punto. Con un control adecuado podemos mejorar la aptitud promedio de la población, obteniendo nuevos y mejores individuos y, por lo tanto, mejores soluciones. Se consigue un equilibrio entre la eficacia y la eficiencia. Este equilibrio es configurable mediante los parámetros y operaciones usados en el algoritmo. Así, por ejemplo, bajando el valor del umbral conseguiremos una rápida solución a cambio de perder en “calidad”. Si aumentamos dicho valor, tendremos una mejor solución a cambio de un mayor tiempo consumido en la búsqueda. Es decir, obtenemos una buena relación entre la calidad de la solución y el costo. Quizás el punto más delicado de todo se encuentra en la definición de la función de evaluación. Al igual que en el caso de la heurística, de su eficacia depende el obtener buenos resultados. El resto del proceso es siempre el mismo para todos los casos. La programación mediante algoritmos genéticos suponen un nuevo enfoque que permite abarcar todas aquellas áreas de aplicación donde no sepamos como resolver un problema, pero si seamos conscientes de que soluciones son buenas y cuales son malas. Desde aplicaciones evidentes, como la biología o la medicina, hasta otros campos como la industria (clasificación de piezas en cadenas de montaje). Los algoritmos genéticos poseen un importante papel en aplicaciones de búsqueda y optimización, pero desde nuestro punto de vista, es en el aprendizaje automático donde encuentra un estupendo marco de trabajo. La capacidad que poseen para favorecer a los individuos que explican bien los ejemplos, a costa de los que no lo hacen, consigue una nueva generación con mejores reglas y, por lo tanto el sistema será capaz de ir aprendiendo a conseguir mejores resultados.