Tema General Sistemas Basados en Conocimientos

298
Tema 01. Fundamentos de la Inteligencia Artificial Fuente: http://borrowbits.com/2012/03/inteligencia- artificial-mito-o-realidad/ Bienvenida Estimados estudiantes ¡bienvenidos! a la primera semana del curso, donde abordaremos los conceptos básicos de la inteligencia artificial, su historia y aplicaciones en sectores industriales y empresariales. Trataremos el test de Turing que permite determinar en qué momento una máquina adquiere la categoría de comportamiento inteligente. Alan Turing es considerado el padre de la inteligencia artificial. Asimismo presentaremos la estructura de los sistemas basados en conocimiento. Los contenidos se complementan con interesantes lecturas, valiosos videos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados. ¡Empecemos!

description

Sistemas Basados en Conocimientos

Transcript of Tema General Sistemas Basados en Conocimientos

Page 1: Tema General Sistemas Basados en Conocimientos

Tema 01. Fundamentos de la Inteligencia Artificial

Fuente: http://borrowbits.com/2012/03/inteligencia-artificial-mito-o-realidad/

Bienvenida

Estimados estudiantes ¡bienvenidos! a la primera semana del curso, donde abordaremos los conceptos básicos de la inteligencia artificial, su historia y aplicaciones en sectores industriales y empresariales. Trataremos el test de Turing que permite determinar en qué momento una máquina adquiere la categoría de comportamiento inteligente. Alan Turing es considerado el padre de la inteligencia artificial. Asimismo presentaremos la estructura de los sistemas basados en conocimiento. Los contenidos se complementan con interesantes lecturas, valiosos videos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados.

¡Empecemos!

Page 2: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente: http://psmheuristica.webnode.com.ve/clasificacion-metodos-heuristicos/sistema-basados-en-el-conocimiento-sbc/

El estudio de la inteligencia artificial se inicia formalmente en la década de los años 50, y desde entonces sus técnicas han sido utilizadas y aplicadas en diversas áreas comunes al desempeño cotidiano de las personas, ayudando, reemplazando, simulando las acciones o decisiones tomadas por individuos con ciertas características en particular.

La Inteligencia Artificial basada en las ciencias de la computación se complementa con la fisiología y filosofía, reuniendo varios campos (robótica, sistemas expertos, sistemas inteligentes entre otros), todos los cuales tienen en común la creación de “máquinas” que pueden en primer lugar “comportarse y posteriormente” "pensar" tal y como lo hacen los humanos. La idea de construir una máquina, que pueda ejecutar tareas que parecen necesitar de la inteligencia humana para llevarse a cabo es un atractivo. Las tareas que han sido estudiadas desde este punto de vista incluyen juegos, traducción de idiomas, diagnóstico, robótica, suministro de asesoría experta en diversos temas.

Aunque no existe una definición única, se entiende sus áreas de aplicación que las vamos conociendo a través de su historia y los legados dejados por los investigadores de la disciplina. Los temas de la inteligencia artificial son relativamente nuevos y en permanente evolución por lo que es necesario ubicar el contexto en el que se desarrollan las aplicaciones y la tecnología utilizada, sin las computadoras actuales no hubiera sido posible el avance de la disciplina.

Por esta razón en esta sesión estudiamos los conceptos generales de la inteligencia artificial, su historia, aplicaciones y tests para verificar cuando una máquina tiene comportamiento inteligente. Es fundamental comprender los contenidos propuestos para posteriormente enfrentar con éxito los temas de las siguientes sesiones.

Los sistemas basados en conocimiento intentan resolver problemas complejos imitando el comportamiento de un experto en el dominio del problema, por lo que se

Page 3: Tema General Sistemas Basados en Conocimientos

requiere de una estructura que permita representar el conocimiento y su posterior tratamiento en forma declarativa, tomando decisiones en función del estado del entorno, ejerciendo control sobre el mismo. Por esta razón en esta semana estudiamos la estructura de los sistemas basados en conocimiento, haciendo énfasis en un esquema particular y muy desarrollado a la fecha conocido como sistemas expertos.

Page 4: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este primer tema:

Capacidades

Conoce la definición de Inteligencia Artificial. Diferencia entre sistemas operacionales y sistemas inteligentes. Identifica las aplicaciones en la industria y en las empresas de diversos sectores. Aplica el Test de Turing para reconocer una máquina inteligente. Conoce la definición de los sistemas basados en conocimientos. Identifica la Estructura de los sistemas basados en conocimientos.

Actitudes

Demuestra tolerancia y respeto ante la opinión de sus compañeros en el debate de un foro.

Asume responsabilidad en el cumplimiento de las actividades. Reconoce los conceptos de la inteligencia artificial. Valora la historia de la inteligencia artificial. Reconoce la estructura de los sistemas basados en conocimiento

Page 5: Tema General Sistemas Basados en Conocimientos

Marco conceptualAnaliza el marco conceptual del temaLa inteligencia artificial es relativamente nueva (se inicia formalmente a mediados del sigo pasado) sin embargo a la fecha no tenemos una definición precisa, los autores la definen en función de los diferentes escenarios en los que se producen las soluciones. Se desarrolló gracias a la tecnología computacional y actualmente se aplica prácticamente en todos los campos del quehacer humano.

Observa detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 6: Tema General Sistemas Basados en Conocimientos

1.1 Presentación de la Inteligencia Artificial

Fuente: http://despiertaalfuturo.blogspot.com/2014/11/inteligencia-artificial-puede-extinguir.html

La historia del ser humano se ha visto rodeada de creaciones e innovaciones tecnológicas que van desde el invento de herramientas para la agricultura y uso de la rueda que le permitían ahorro de esfuerzo en la realización de tareas físicas hasta el desarrollo de herramientas computacionales que apoyan el procesamiento de información, muy útil en la gestión de las empresas. En este proceso de innovaciones aparece la necesidad de procesar conocimiento humano en un computador que apoye en la toma de decisiones que requieran cierto grado de inteligencia.

La inteligencia artificial es una rama del conocimiento humano de reciente aparición (fue formalizada a mediados del siglo pasado) con respecto a otras áreas como la matemáticas, la física y la química que tiene varios siglos de tratamiento y estudio. La idea es convertir al computador en una herramienta de procesamiento de conocimientos, para ello se requieren realizar un conjunto de tareas, tales como, el reconocimiento e interpretación de imágenes, el reconocimiento e interpretación del lenguaje natural, el tratamiento de información para elaborar diagnósticos y pronósticos, la deducción de teoremas, la participación en juegos electrónicos, entre otras.

La aparición de las modernas computadoras hace posible técnicamente la implementación de tareas como la visión artificial, tratamiento del lenguaje natural fundamentales para el procesamiento del conocimiento, en este sentido presentamos en nuestro curso la teoría y práctica relacionada a la implementación de sistemas basados en conocimiento.

Page 7: Tema General Sistemas Basados en Conocimientos

Enfoques de la inteligencia artificial

Los estudios en Inteligencia artificial se orientan bajo dos enfoques diferentes.

Fuente: http://www-formal.stanford.edu/jmc/personal.html. McCarthy

El Enfoque Tecnológico

McCarthy y Minsky, del MIT promueven un enfoque tecnológico que permita desarrollar una tecnología capaz de suministrar al ordenador capacidades de razonamiento o discernimiento similares, o aparentemente similares a las de la inteligencia humana. Este enfoque es eminentemente práctico y se centra en los resultados obtenidos, en la utilidad, y no tanto en el método. Este enfoque incluye a los Sistemas Expertos.

Enfoque Orientado A La Investigación Relativa A Los Mecanismos De Inteligencia Humana

Newell y Simon, de la Carnegie Mellon University proponen un enfoque orientado a la investigación relativa a los mecanismos de inteligencia humana, que emplea el ordenador como herramienta de simulación para la validación de teorías. En este sentido proponen la creación de un sistema artificial que sea capaz de realizar los procesos cognitivos humanos. Desde este punto de vista no es tan importante la utilidad del sistema creado (qué hace), como lo es método empleado (cómo lo hace) y se orientan a estudiar el aprendizaje y la adaptabilidad en un sistema cognitivo artificial.

Page 8: Tema General Sistemas Basados en Conocimientos

Definición de inteligencia artificial

Fuente: http://baycarsubol2124.blogspot.com/2012/03/conferencia-de-darmouth.html . Darmouth

El término inteligencia artificial fue propuesto en la conferencia de Darthmouth en 1956, sin embargo es complicado encontrar una sola definición que satisfaga a todos los grupos de investigadores a nivel mundial.

El problema se presenta cuando nos referimos a “comportamiento inteligente” o “razonamiento inteligente”, por ejemplo, un programa de computador que juega ajedrez frente a un maestro, podemos afirmar que el programa actúa inteligentemente pero razona inteligentemente?, en realidad lo que hace es implementar algoritmos de búsqueda de soluciones en un espacio determinado y selecciona la propuesta más cercana al objetivo, mientras que el maestro ademas de actuar con inteligencia aplica razonamiento cuando selecciona la mejor jugada en función de la viabilidad de unas cuantas posibilidades optimizando la búsqueda de soluciones.

En este sentido podemos partir que la IA busca implementar máquinas con comportamiento inteligente frente a un problema determinado, por lo tanto no constituye un objetivo el método o forma de razonamiento.

En esta definición no están incluidos los problemas que se resuelven de forma exacta con algoritmos bien definidos, pues en ellos no se evidencia ningún comportamiento inteligente sino más bien la aplicación mecánica de una secuencia de pasos o etapas.

Los problemas que estamos incluyendo en la definición son aquellos que enfrenta el ser humano para los que no existen algoritmos conocidos y para su solución se utilizan más bien un conjunto de reglas o criterios denominadas heurísticas.

La diferencia entre los algoritmos y las heurísticas es que los algoritmos siempre llevan a la misma solución, mientras que las heurísticas no garantiza que nos lleve a la solución correcta, ademas pueden existir muchas heurísticas aplicables a determinado problema, con lo que la selección de cualquiera de ellas afecta los resultados.

Page 9: Tema General Sistemas Basados en Conocimientos

Podemos entonces identificar un conjunto de problemas realmente complejos que requieren inteligencia y originalidad para su solución, tales como descubrir nuevos teoremas matemáticos, diagnosticar enfermedades como lo haría un médico, componer música como lo haría Beethoven o comprender una expresión en lenguaje natural como el español o el inglés. Para realizar estas tareas no existen algoritmos específicos sin embargo la gente tradicionalmente aplica heurísticas, incluso a veces, sin darse cuenta, y en muchos casos, las realizan sin saber realmente cómo las hacen ni qué pasos siguen en todos los casos, por mucha introspección a la que se sometan, solamente las ejecutan.

Podemos entonces formular una definición de IA para nuestro curso:

La IA es la rama de la ciencia de la computación que estudia la resolución de problemas no algorítmicos mediante el uso de cualquier técnica de computación disponible, sin tener en cuenta la forma de razonamiento subyacente a los métodos que se apliquen para lograr esa resolución.

Sin embargo aunque esta definición sea aceptable para un curso universitario presentamos un conjunto de alternativas:

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

El estudio de cómo lograr que las computadoras realicen tareas que, por el momento, los humanos hacen mejor. (Rich, Knight, 1991).

La rama de la ciencia de la computación que se ocupa de la automatización de la conducta inteligente (Luger y Stubblefield, 1993).

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).

Disciplina que se dedica a la construcción de programas informáticos capaces de realizar trabajos inteligentes. Sus objetivos básicos son dos: (1) estudiar el comportamiento inteligente de las personas humanas, y (2) hacer programas de ordenador inteligentes capaces de imitar el comportamiento humano (Duda y Shortliffe).

El arte de construir máquinas capaces de hacer cosas que requerirían inteligencia en el caso de que fueran hechas por seres humanos (Marvin Minsky).

En vista de las diversas posiciones respecto a la definición de la IA se ha propuesto una clasificación de las mismas:

Propuesta por Énfasis en Criterio

Charial y McDermot pensamiento Inteligencia ideal, o racionalidad

Rich y Knight comportamiento Inteligencia humana

Page 10: Tema General Sistemas Basados en Conocimientos

Estableciendo el siguiente cuadrante de relaciones:

Inteligencia humana Racionalidad

Razonamiento

Sistemas que piensan como humanos.

Enfoque cognoscitivo.

Sistemas que piensan racionalmente.

Enfoque lógico.

Comportamiento

Sistemas que actúan como humanos.

Enfoque “test de Turing”

Sistemas que actúan racionalmente.

Enfoque de agentes inteligentes.

Es conveniente mencionar que en todos los casos asumimos que se logra la inteligencia “artificial” con el uso de la ciencia de la computación apoyada en las tecnologías de la información y las comunicaciones. En la práctica la IA se implementa con las computadoras que son los dispositivos de procesamiento de información más complejos y potentes que ha desarrollado el ser humano, y la actividad intelectual es en esencia un proceso de manipulación y análisis de información.

La Inteligencia Artificial es multidisciplinaria y se apoya en los conceptos y técnicas de otras disciplinas, tales como: la Informática, la Ingeniería, la Sociología, la Ciencia del Comportamiento, la Psicología Cognoscitiva, la Investigación Operativa, la Economía, la Teoría General de Sistemas, etc.

Paradigmas de la inteligencia artificial.

Procesamiento simbólico: problemas de naturaleza no numérica.

Búsqueda heurística: hacer tratable la complejidad del proceso.

Sistemas expertos: visión conductista, funcional.

Sistemas basados en conocimiento: visión cognoscitiva, estructural.

Agentes inteligentes: “sociedades” de componentes con “personalidad”

Page 11: Tema General Sistemas Basados en Conocimientos

Áreas de estudio de la inteligencia artificial

Fuente: http://cio.com.mx/inteligencia-artificial-como-puede-ser-usada-por-las-empresas/

SOLUCION DE PROBLEMAS EN GENERAL. Estudia los sistemas capaces de hallar métodos para solucionar problemas de cierto grado de complejidad.

PERCEPCION. Estudia sistemas capaces de reaccionar al entorno y actuar sobre el, se usan sensores y para captar las variables del mundo exterior y actuadores para modificar el entorno. Incluye sistemas de visión artificial, reconocimiento de formas, etc.

COMPRENSION DE LENGUAJE NATURAL. Estudia sistemas que interpretan el lenguaje natural y permiten la interacción entre humanos y máquinas mediante lenguajes no estructurados.

APRENDIZAJE, DEMOSTRACION DE TEOREMAS, JUEGOS. Estudia técnicas de aprendizaje que permitan a una máquina captar información del mundo exterior y generar sus propios aprendizajes, asimismo puede reconocer formas y símbolos matemáticos con el objetivo de demostrar teoremas. También se trabaja con la teoría de juegos de manera que las máquinas se comporten inteligentemente, por ejemplo en el juego de ajedrez. Tradicionalmente se han estudiado escenarios que requieren deducción como son los casos del granjero, la gallina, el perro y el maíz, los misioneros y los caníbales, etc.

SISTEMAS EXPERTOS. Son sistemas capaces de tomar decisiones en base a información almacenada adecuadamente, la misma que es tratada por un motor de inferencias. Ejemplos de estos sistemas son: el diagnóstico médico, la ingeniería química, la exploración geológica, el diseño de computadoras entre otros.

LENGUAJES DE LA INTELIGENCIA ARTIFICIAL. Para desarrollar aplicaciones en Inteligencia artificial se usan lenguajes como Prolog (basado en la lógica) y LISP (procesamiento de listas), en la actualidad existen ambientes de desarrollo y frameworks que facilitan tareas al programador.

HARDWARE PARA LA INTELIGENCIA ARTIFICIAL. Los programas que implementan algoritmos y técnicas de la inteligencia artificial requieren procesadores veloces

Page 12: Tema General Sistemas Basados en Conocimientos

trabajando en paralelo, grandes capacidades de memoria, aunque los computadores que usamos en la actualidad han incrementado su capacidad de procesamiento, los investigadores siguen buscando el computador ideal que probablemente sea muy diferente a los que conocemos actualmente.

ROBOTICA. La ciencia de la robótica se apoya en diferentes técnicas de IA. El robot debe ser capaz de comunicarse en lenguaje natural y debe poder realizar tareas que requieran iniciativa y originalidad, esto implica que el robot debe aprender y llegar a realizar tareas para las cuales no estaba inicialmente programado. Es necesario distinguir a los robots con los autómatas programables.

CIBERNETICA. 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.

LA INGENIERIA DEL CONOCIMIENTO es una de las especialidades que necesitan los modernos métodos de la IA. Algunos aspectos importantes del conocimiento son intangibles e inexplicables; el trabajo de los ingenieros del conocimiento consiste en parte en extraer este tipo de conocimiento de los expertos humanos y en parte en codificar el conocimiento así obteniendo, de manera que pueda ser procesada por un sistema de computador. El problema es que el ingeniero del conocimiento no es un experto en el campo que intenta programar, mientras que el experto en el tema no tiene experiencia programando, y en cualquier otro caso este ultimo usa muchas partes importantes de su conocimiento de manera subconsciente, por lo que es incapaz de proporcionar la información de manera voluntaria aunque así lo desee.

Actividad de análisis y comprensión

Visualiza este video: https://www.youtube.com/watch?v=Ut6gDw_Onwk

Después de haber observado detenidamente el video responde a las siguientes preguntas:

Pregunta de Elección Múltiple

La inteligencia artificial se evidencia en el comportamiento de?

Las computadoras

El software

Los programas

La tecnología

Los robots

En el vídeo se evidencia el comportamiento inteligente mostrado por los robots.

Page 13: Tema General Sistemas Basados en Conocimientos

Pregunta de Selección Múltiple

Alberto Sanfeliu precisa que los robots deben

Encontrar la solución óptima a los problemas.

Aprender a resolver los problemas

Ser programados para resolver problemas específicos.

Adaptarse al entorno.

Trabajar en red de computadoras.

Según Sanfeliu los robots deben aprender a resolver problemas, adaptándose al entorno,

Pregunta de Elección Múltiple

1. Un robot capaz de conversar se denomina:

Interlocutor.

Conversacional.

Chateador.

Chatbot.

Chatting

El robot capaz de conversar se denomina chatbot

Page 14: Tema General Sistemas Basados en Conocimientos

1.2 Evolución histórica

Fuente: http://www.rutherfordjournal.org/article040101.html. Rosenblatt

Los primeros investigadores realizaban sus trabajos basados en el modelo de McCulloch y durante los años 50 se logra el Perceptrón de Rosenblatt, un sistema visual de reconocimiento de patrones.

Durante los años 60 Alan Newell y Herbert Simon trabajan la demostración de teoremas y el ajedrez con ayuda de computadoras usan un programa denominado GPS (General Problem Solver: solucionador general de problemas). Éste era un sistema en el que el usuario definía un entorno en función de una serie de objetos y los operadores que se podían aplicar sobre ellos. Este programa era capaz de trabajar con las torres de Hanoi, así como con criptoaritmética y otros problemas similares, operando, claro está, con microcosmos formalizados que representaban los parámetros dentro de los cuales se podían resolver problemas. Lo que no podía hacer el GPS era resolver problemas ni del mundo real, ni médicos ni tomar decisiones importantes. El GPS manejaba reglas heurísticas (aprender a partir de sus propios descubrimientos) que la conducían hasta el destino deseado mediante el método del ensayo y el error.

Ya en los años 70, un equipo de investigadores dirigido por Edward Feigenbaum comenzó a elaborar un proyecto para resolver problemas de la vida cotidiana o que se centrara, al menos, en problemas más concretos. Así es como nació el primer sistema experto denominado Dendral, un intérprete de espectrograma de masa construido en 1967, luego en 1974 aparece Mycin capaz de diagnosticar trastornos en la sangre y recetar la correspondiente medicación, todo un logro en aquella época que incluso

Page 15: Tema General Sistemas Basados en Conocimientos

fueron utilizados en hospitales (como el Puff, variante de Mycin de uso común en el Pacific Medical Center de San Francisco, EEUU).

Luego en los años 80, se desarrollaron lenguajes especiales para utilizar con la Inteligencia Artificial, tales como LISP y PROLOG. Es en esta época cuando se desarrollan sistemas expertos más refinados, como por el ejemplo el EURISKO. Este programa perfecciona su propio cuerpo de reglas heurísticas automáticamente, por inducción.

Page 16: Tema General Sistemas Basados en Conocimientos

Según Jackson

Jackson propone la historia de la IA en tres períodos

Período Años Hitos

Clásico 1950-1965

Gestación (McColluck y Pitts, Shannon, Turing). Inicio - reunión de Darmouth College en 1956 (Minsky,

McCarthy). Redes neuronales, robótica (Shakey). Búsqueda en un espacio de estados, Heurísticas, LISP. Resolvedor general de problemas (GPS, Newell, Simon). Juegos, prueba de teoremas. Limitaciones de pura búsqueda, explosión combinatoria.

Romántico 1965-1875

Representación “general” del conocimiento. Redes semánticas (Quillian). Prototipos (frames) (Minsky). Perceptrón (Minsky y Papert). Lógica [Kowalski]. Mundo de bloques (SHDRLU) (Winograd). Compresión de lenguaje, visión, robótica. Dificultades de representación “general”,problemas de

“juguete”.

Moderno1975- a la fecha

Inteligencia “especifica”' vs “general”. Representación explícita del conocimiento específico del

dominio. Sistemas expertos, Sistemas basados en conocimiento. Regreso de redes neuronales (Hopfield, Rumelhart,

Hinton), algoritmos genéticos (Holland, Goldberg) Reconocimiento de voz (HMM), incertidumbre (RB, Lógica difusa), planeación, aprendizaje Aplicaciones “reales”' (medicina, finanzas, ingeniería, exploración, etc.).

Limitaciones: conocimiento “superficial”'

Page 17: Tema General Sistemas Basados en Conocimientos

Según Russell y Norvig

Russell y Norvig proponen los siguientes períodos

Período Años Hitos

Gestación 1943-1956

McCullock y Pitts, Hebb, Shannon, Turing,Minsky y Edmonds, Darmouth College, McCarthy), Newell y Simon, The Logic Theorist.

Entusiasmo y grandes expectativas

1952-1969

Samuel – Checkers, McCarthy. Lisp, time sharing, Programas con sentido común. En 1963 McCarthy fue a Stanford SRI, Shakey, etc. Minsky, Evans, Student, Waltz, Winston, Winograd,

etc. Trabajo en RN: Hebb, Widrow, Rosenblatt

Dosis de realidad

1966-1974

Simon predecía que en 10 años se tendría una máquina inteligente. Predicciones similares en traducción automática y ajedrez. Teoría de NP-completness. Experimentos en machine evolution (ahora algoritmos genéticos) estaban bien fundados pero no produjeron nada.

En 1969 Minsky y Papert proponen Perceptrons, el mismo año se descubrió backpropagation (Bryson y Ho)

Sistemas basados en conocimiento

1969-1979

Dendral, Mycin, HPP, Prospector, Winograd SHDRLU Shank (no hay sintaxis), frames, Prolog, Planner

IA como industria (1980-1988): R1/XCON, proyecto de la quinta generación, shells y máquinas de Lisp ...

Regreso de redes neuronales

1986 – a la fecha

Hopfield, Rumelhart y Hinton y descenso de los SE. Cambio gradual hacia los técnicos y lejos de los rudos

(implica cierto grado de madurez y estabilidad) e.g., reconocimiento de voz (HMM), incertidumbre (Bayes), planeación (Tweak), robótica, aprendizaje (PAC), etc...

Biografías

Page 18: Tema General Sistemas Basados en Conocimientos

Alan Newell

Alan Newell (1927,1992)

Hijo de profesor de radiología de la universidad de Stanford se crió en San Francisco y se graduó en Stanford, después de graduarse pasó un año en Princeton, pero decidió que no era un matemático y optó por trabajar para la RAND Corporation en un proyecto sobre el modelado de un centro regional de defensa aérea. Newell conoció a Simon, con el que compartió su afinidad acerca de la I.A. (Fuente: Aircenter.net)El problema científico le elige, usted no lo elige. Mi estilo es ocuparse de un solo problema, a saber, la naturaleza de la mente humana. Ése es el problema que he cuidado a través de mi carrera científica, y será de esta manera hasta el final."Allen Newell condujo una vida muy productiva y exitosa como informático. Aquí está algo de la "heurística" que utilizó:"Haga lo que usted ame, quiera a lo qué usted hace." Persona de gran energía y entusiasmo increíbles que solía decir esto."Ayude a otros a encontrar un estado similar, no importa cómo de diferente puedan ser sus opciones" . Puesto que él era feliz y seguro en lo que él hacía, Allen se imbuía sobre lo que hacía la gente, y podría ayudarle a menudo a él hacer buenas opciones."No se preocupe de lo intrínseco o lo elegante que usted es o cualquier persona es". Nunca le vi sentirse amenazado por la brillantez de otra persona u ofendido por su carencia de ella. Él juzgó solamente el funcionamiento."Sea intelectualmente fuerte, uniformemente para todo el mundo". Allen era intelectual incluso al crítico más resistente que tenía siempre. Al principio, no pensé que se ajustara con su actitud de apoyo. Pero entonces reconocí algo que no era personal; él aplicó estándares resistentes así mismo."Sea cuidadoso sobre lo que usted vaya a hacer, y después realmente hágalo". Él acordó hacer solamente algunas de las cosas de las que le pregunté, ya que le ayudaría siempre con algo que creía que era importante. Cuando hacia algo, no había duda sobre su nivel del

Page 19: Tema General Sistemas Basados en Conocimientos

esfuerzo.

Alan Turing

1912 (el 23 de de junio): Nacimiento, Paddington, Londres 1926-31: Escuela de Sherborne1930: Muerte de su amigo Christopher Morcom 1931-34: Estudiante en King's College, universidad de Cambridge.1932-35: Mecánicos del quántum de los estudios, probabilidad, lógica 1935: Elegido"Compañero" de King's College, Cambridge1936: La máquina de Turing: En números computables...1936-38: En La Universidad De Princeton. Ph.D. Lógica, álgebra, teoría del número1938-39: Vuelta a Cambridge. Investiga el problema alemán de la cifra.1939-40: Idea el Bombe, máquina para el desciframiento de Enigma.1939-42: Descifra el código alemán Enigma1943-45: Principal consultor de Anglo-Americano. Introducción al elemento electrónico1945: Laboratorio Físico Nacional, Londres1946: Diseño del ordenador validado formalmente1947-48: Programación, redes neuronales y perspectivas de la inteligencia artificial1948: Universidad de Manchester1949 Trabajo sobre la programación y el primer uso serio en el mundo de un ordenador1950: Documento filosófico sobre inteligencia de la máquina: el test de Turing1951:FRS. elegido Paper en la teoría no lineal del morphogenesis1952: Arrestado como homosexual, pérdida de la habilitación1953-54: Trabajo inacabado en biología y física1954 (el 7 de de junio): Muerte por el envenenamiento de cianuro, Wilmslow, Cheshire.Alan Turing demostró que una serie de instrucciones sencillas podían resolver cualquier problema complejo. Él y su equipo desarrollaron el Colossus, uno de los primeros ordenadores. Esta enorme máquina empleaba 1500 válvulas, que se quemaban a razón de una cada pocos minutos. El Colossus podía procesar 5000 caracteres por segundo y tenía la misión de descifrar el código alemán Enigma.Es considerado por muchos como el padre de la inteligencia artificial.

John Von Neunman (1903, 1957)

1903 El 28 de diciembre nace en Budapest (Hungría) Janos Louis Neumann1921 Primer escrito matemático publicado junto con su tutor.1933 Es nombrado profesor en la Universidad de Princeton (Nueva Jersey, EEUU), refugio de Einstein y de otros matemáticos emigrados de Europa1942 Publica un libro sobre la aplicación de la teoría de juegos a la economía1944 Tiene noticias sobre el proyecto secreto ENIAC

Page 20: Tema General Sistemas Basados en Conocimientos

1945 Asiste a las primeras pruebas de la bomba atómica1947 Informe sobre el ENIAC y el bosquejo del diseño de un nuevo ordenador, que recibirá el nombre de EDVAC (Electronic Discrete Variable Computer) y será construido según sus ideas1951 JOHNIAC, el ordenador diseñado personalmente por Neumann, entra en funcionamiento en la Universidad de Princeton1951-1953 Presidente de la American Mathematical Society. Trabaja en la teoría de autómatas1955 El presidente Eisenhower le nombre comisionado de la US Atomic Energy1957 El 8 de febrero muere de cáncer en Washington D.C (U.S.A). Como un honor especial se dedica un volumen completo del Bulletin of the American Mathematical Society a su vida y obra.Hasta 1945 la arquitectura física de todo ordenador servían a la par de programa en el plano más estricto, y por lo tanto los cometidos de estas máquinas eran inamovibles, a menos que los ingenieros se atreviesen a cambiar las conexiones, esto además de ser una tarea ardua y en ocasiones casi imposible, era sumamente costoso. John Von Neumann sugirió en 1945 una alternativa hacia una arquitectura más versátil. Nacido en Budapest en 1903, Neumann a ofrecido a la humanidad muchas y muy variadas aportaciones científicas, como la teoría de los juegos, teoría de los autómatas, cálculo de la propagación de las ondas de choque, ensayo sobre la matemática de la teoría cuántica, etc. La arquitectura de "Von Neumann" fue adoptada por todos los ordenadores desde la Segunda Guerra Mundial, dicha arquitectura hace una diferenciación del ordenador en dos partes, que son las siguientes: CPU (Unidad Central de Procesamiento): que opera sobre los datos que hay que manipular. MEMORIA: es aquí donde están guardados los datos.Las máquinas con arquitectura Von Neumann operan al compás de ciclos definidos con precisión:- Toma de la memoria la 1º instrucción.- Toma de otra parte de la memoria el dato sobre el que hay que operar.- Ejecuta la operación.- Toma de la memoria la siguiente instrucción (en este caso la segunda)- etc...El primer ordenador que adoptó esta nueva arquitectura fue el Electronic Discrete Variable Computer [Ordenador Electrónico de Variable Discreta] (EDVAD). Más tarde se le unió el JOHNNIAC (de la RAND Corporation) y el MANIAC [Maniaco], el Mathematical Analyzer, Numerical Integrator and Calculator [Calculador, Integrador Numérico y Analizador Matemático.

Herbert Simon que por aquel entonces (1955) tenía 36 años, se formó como político científico, comenzó investigando sobre la

Page 21: Tema General Sistemas Basados en Conocimientos

Herbert Simon (1916 - 2001)

administración municipal. En 1948 participó en la administración pública en el Plan Marshall, después de la segunda guerra mundial. Poco después trabajó en la fundación de la Graduate School of Industrial Administration [Escuela de Administración Industrial para Postgraduados], organización perteneciente a la Canegie Mellon. A Herbert Simon le fascinaba la forma con la que las personas toman decisiones, y sus ideas prosperaron hacia el estudio del funcionamiento de la mente humana, hasta el punto de desarrollar una teoría que trataba de explicar cómo las personas e instituciones toman decisiones, tesis a la que llamó Teoría de la racionalidad limitada.Investigador en Psicología humana que empezó utilizando los símbolos para la resolución de problemas, hablados y escritos, aprender e inventar. Los últimos 45 años, la psicología cognitiva ha construido y testeado modelos empíricos de esos procesos como los que ellos utilizaron para resolver desde simples tareas a las más complicadas. Los modelos toman su forma de los programas computarizados que simulan el comportamiento humano.

Noam Chomsky(1928-)

Profesor de instituto; profesor de lingüística, teoría lingüística, sintaxis, semántica, filosofía del lenguaje y que recientemente ha publicado el libro "El archivo de Noam Chomsky"Publicaciones y libros: Linguistic Inquiry Monograph 13, Cambridge: MIT Press, 1986.Knowledge of Language: Its Nature, Origin, and Use. New York: Praeger Publishers, 1986.Language and Problems of Knowledge: The Managua Lectures, Cambridge: MIT Press, 1987.Language in a Psychological Setting. Sophia Linguistica Working Papers in Linguistics, No. 22, Sophia University, Tokyo, 1987.Generative Grammar: Its Basis, Development and Prospects. Studies in English Linguistics and Literature, Special Issue, Kyoto University of Foreign Studies, 1988."Some Notes on Economy of Derivation and Representation." In I. Laka and A. Mahajan (eds) Functional Heads and Clause Structure. MIT Working Papers in Linguistics, 10, 43-74, 1989. Reprinted in Robert Freidin (ed) Principles and Parameters in Comparative Grammar, Current Studies in Linguistics Series No. 20, 417-454, Cambridge: MIT Press, 1991."On the Nature, Use and Acquisition of Language." W. Lycan (ed) Mind and Cognition: A Reader, 627-646, Oxford: Blackwell, 1990."Linguistics and Adjacent Fields: A Personal View." In A. Kasher (ed) The Chomskyan Turn. 3-25, Oxford and Cambridge, MA: Basil Blackwell, 1991."Linguistics and Cognitive Science: Problems and Mysteries." In A. Kasher (ed) The Chomskyan Turn. 26-53, Oxford and Cambridge, MA: Basil Blackwell, 1991.

Page 22: Tema General Sistemas Basados en Conocimientos

"Explaining Language Use." Philosophical Topics, 20(1), Spring 1992."Language and Interpretation: Philosophical Reflections and Empirical Inquiry." In John Earman (ed) Inference, Explanation, and Other Philosophical Frustrations: Essays in the Philosophy of Science. Berkeley: University of California Press, 1992."A Minimalist Program for Linguistic Theory." In K. Hale and S.J. Keyser (eds) The View from Building 20: Essays in Linguistics in Honor of Sylvain Bromberger. 1-52, Cambridge MA: MIT Press, 1993.Language and Thought. Wakefield, RI: Moyer Bell, 1993.(with Howard Lasnik) "The Theory of Principles and Parameters." In J. Jacbos, A. von Stechow, W. Sternefeld and T. Vennemann (eds) Syntax: An International Handbook of Contemporary Research. 506-569, Berline and New York: Walter de Gruyter, 1993."Bare Phrase Structure." Cambridge: MITWPL, January 1994. Reprinted in Otero Festschrift. Georgetown University Press (in press). "Naturalism and Dualism in the Study of Language and Mind." International Journal of Philosophical Studies, 2, September 1994 (in press).Naturalism and Dualism in the Study of Language and Mind." International Journal of Philosophical Studies, 2, September 1994 (in press).

Claude Elwood Shannon (1916-2001)

Clause Shannon se graduó en Michigan y fue a MIT donde escribió una tesis sobre el uso del Algebra de Boole para analizar y optimizar el intercambio en los circuitos. Estuvo en Teléfonos Bell en 1941 como matemático investigador y permaneció allí hasta 1972. Publicó "A Mathematical Theory of Communication" en el diario de Bell System Technical Journal (1948). Su trabajo fundó el sujeto de la teoría de información y propuso un modelo esquemático lineal de sistemas de comunicaciones. Creó un método para el análisis de secuencias de términos de error en una señal para encontrar su variedad heredada, llegando a diseñar una variedad de sistemas de control. En 1952 generó un experimento que ilustraba las capacidades de los relés telefónicos. Shannon fue premiado con la Medalla Nacional de Ciencias en 1966.

Marvin Minsky ha hecho multitud de contribuciones a la Inteligencia Artificial, psicología cognitiva, matemáticas, lingüística computacional, robótica y óptica. En años recientes ha trabajado como jefe en la capacidad de las máquinas para el raciocinio. Sus concepción de la estructura humana intelectual y las funciones fueron presentadas en la The Society of Mind (1987), el cual es también el título de uno de los cursos en el MIT. Recibió el BA y PhD en matemáticas por Harvard y Princeton. En 1951 construyó el SNARC, el primero simulador de redes neuronales. Sus otras invenciones incluyen manos mecánicas y otros periféricos de robots, el "confocal scanning microscope", el "Muse", sintetizador para variaciones de música (con E.Fredkin) y la primera LOGO "tortuga" (con S.Papert). Miembro del NAS, NAE y NAS

Page 23: Tema General Sistemas Basados en Conocimientos

Marvin Minsky (1927-)

Argentina, ha recibido el premio Turing ACM, el Killiam MIT, el Prize japonés, el IJCAI Research Excellent y el Rank Prize.Publicaciones y libros:Alien Intelligence (enlace)Causal Diversity (enlace)Why People Think Computers Can't (enlace)Music Interview with Otto Laske (enlace)Matter, Mind and Models (enlace)Music, Mind, and Meaning (enlace)Symbolic vs. Connectionist (enlace)Alienable Rights (enlace)Afterword to True Names (enlace)Inventing the Confocal Microscope (enlace)Negative Expertise (enlace)Jokes and Cognition (enlace)Introduction to LogoWorks (enlace)More Turing Option chapters (enlace)Will Robots Inherit the Earth? (enlace)The Society of Mind (henlace)

John McCarthy (1927-2011)

Hijo de padre católico Irlandés y madre judía lituana, John McCarthy abrazó el marxismo. En un principio fue expulsado de la Cal Tech (Instituto Tecnológico de California) por negarse a seguir las clases de educación física, pero años después fue admitido de nuevo como veterano de guerra, pues formó parte del. Se licenció en matemáticas en 1948, después marchó a Princeton para llevar a cabo sus estudios de postgrado. Fue desde allí donde estudió a Von Neumann, sobretodo su teoría de los autómatas, y trabajó con Claude Shannon editando una colección de artículos sobre el tema. El verano de 1955, lo pasó en IBM fue allí donde comprendió que las computadoras digitales ofrecían la maravillosa posibilidad de construir inteligencias artificiales, yendo más lejos que los meros estudios abstractos que le exponían las Máquinas de Turing y la Teoría de los Autómatas de Von Neumann. Hasta los 60 trabajó en la investigación de temas relacionados con la I.A. arropado por el título de "profesor ayudante". Fue a partir de 1960 cuando se dejó el pelo largo y se movió en movimientos contraculturales. Luchó contra el posible mal uso de la información de los bancos de datos, y en los 70 busco a su " verdadero yo" practicando con su segunda mujer paracaidismo y escalada. Mas en 1980, después de la muerte de su mujer (en accidente de escalada), McCarthy adoptó una nueva imagen y personalidad, más conservadora, empezó a vestir con trajes clásicos, desdijo sus opiniones de los 60 acerca de la intimidad de datos informáticos, apoyo un reparto menos equitativo de los fondos para investigación, y se opuso al proyecto de Edward Fredkin de crear un laboratorio mundial de I.A.

Hurbert Dreyfus fue posiblemente el primer GRAN detractor con el

Page 24: Tema General Sistemas Basados en Conocimientos

Hurbert Dreyfus (1929-)

que se topó la Inteligencia Artificial desde su creación. El y su hermano Stuart asistieron en 1961 a una conferencia de Herbert Simon acerca de un modelo psicológico de memoria a corto plazo ideado por este. Después de una mesa redonda, los hermanos Dreyfus añadieron en el libro de actas una nota de discusión digna del mejor lenguaje diplomático "A los implacables profetas del ordenador omnipresente… les falta un atributo fundamental del cerebro humano: unas cuantas neuronas no comprometidas". Tres años después, en 1964 Hurbert Dreyfus fue contratado por la RAND Corporation para evaluar la viabilidad de la I.A. desde el punto de vista filosófico. Como confesó más tarde Paul Armer, que fue quien contrató a Hurbert "si hubiera sabido de sus anteriores publicaciones en contra de la I.A. no lo habría contratado". El informe escrito por Hurbert resultó una provocación para la comunidad científica de la I.A., empezando por el título "La alquimia y la inteligencia artificial". Los partidarios de la I.A. que la defendían desde la RAND intentaron impedir su publicación, porque…el hecho de que Dreyfus fuese consultor de la RAND le concedía credibilidad!. En el informe de Dreyfus (La alquimia de la I.A.), este recurre a argumentos filosóficos para negar la viabilidad de la I.A., todo ello formulado con la diplomacia que le caracteriza en asuntos de esta índole. Dicho artículo fue el más vendido de todos los difundidos por la RAND, cosa que a esta misma no le hizo nada de gracia. Seymour Paper, a su vez, respondió a La alquimia y la inteligencia artificial con un informe titulado La inteligencia de Hurbert L. Dreyfus: un manojo de falacias. Pero no solo eso, sino que Paper retó a Dreyfus a jugar una partida de ajedrez contra MacHack (programa de ajedrez desarrollado por el MIT) y…Herbert Dreyfus perdió.En 1972, Dreyfus extendió sus argumentaciones de La alquimia y la inteligencia artificial hasta convertirlo todo en un libro, titulado What Computers Can' t Do [Lo que los ordenadores no pueden hacer]. La lucha estaba abierta y esta continuó cerca de seis años más.Pero, todas estas dificultades que tuvo la I.A. en sus "inicios" nos parecen hoy en día aún más tristes, pues podemos comprobar que los comentarios de Dreyfus eran acertados y precisos, pero dado que su posición fue la "guerra a la I.A.", y sus medidas diplomáticas fueron inexistentes… todo lo que dijo Dreyfus no sirvió para nada. ¿Qué habría sido de la I.A. si Dreyfus hubiera expuesto todas sus teorías de una forma más constructiva?, posiblemente estaríamos igual (más o menos), pero habría colaborado a levantar un poquito esta joven ciencia, que aunque joven…promete.

Frank Rosenblatt, nacido en Nueva York, en 1928 se licenció en Psicología Social en la Universidad de Cornell en 1950 y en 1956 obtuvo el doctorado en Psicopatología Experimental por la misma universidad.El Perceptrón se creó por primera vez como una simulación en un IBM

Page 25: Tema General Sistemas Basados en Conocimientos

Frank Rosenblatt (1928-1971)

704, y en 1958, Rosenblatt entregó su proyecto a la prensa, este hecho encendió la ira de la comunidad científica de I.A., otro investigador que había cometido el grave error de dejarse llevar por los flashes de las cámaras.En un artículo publicado por Rosenblatt en la mismísima Science, solo el título hace prever el disgusto de los científicos << Perceptrón: ¿Un sustituto de los cerebros humanos? >> La verdad es que el Perceptrón fue una buena idea, y es posible que los problemas que obtuvo fuesen provocados más que nada por el exagerado entusiasmo de su creador. El Perceptrón suponía la unión entre el Pandemonium de Selfridge y las neuronas de McCulloch y Pitts.Más tarde, en 1969, Marvin Minsky y Seymour Paper escribieron un libro llamado "Perceptrones", en donde definían a estros como caminos sin salida. También es verdad que ahondaron en ellos y sacaron conclusiones muy curiosas e interesantes, pero dado que ambos son dos personalidades de peso en el mundo de la I.A., en cuanto se publicó el libro, todas las investigaciones acerca de Perceptrones se paralizaron y anularon. Frank Rosenblatt, que según se rumoreaba estaba ya algo cansado de los Perceptrones sufrió un accidente y se ahogó navegando.

Page 26: Tema General Sistemas Basados en Conocimientos

Sistemas desarrollados

Fuente: http://www.monografias.com/trabajos64/inteligencia-artificial-investigacion-sistemas-computo/inteligencia-artificial-investigacion-sistemas-computo2.shtml

GPS - Newell, Shaw y Simon Perceptron - Minsky y Papert Chekers - A. Samuel MACSYMA AM - D. Lenat ELIZA - Weisenbaum Shakey - SRI SHDRLU - Winogard MYCIN - E. Shortliffe Prospector - Duda, Hart Hearsay II - Erman, Hayes-Roth, Lesser, Reddy CYC - D. Lenat, R. Guha PEGASUS - hace reservas de transporte por teléfono [Zue et al. 94] MARVEL - sistema experto en tiempo real que maneja la información de

Voyager y ayuda a diagnosticar fallas [Schwuttke 92] Sistema de diagnóstico de medicina interna con capacidad de explicar sus

razones a los expertos [Heckerman 91] NAVLAB - vehículo autónomo que viaje en forma automática de un extremo a

otro de EUA [Pomerlau 93] Sistema de visión que monitorea el tráfico en Paris y reconoce accidentes con

los cuales llama a servicios de emergencia [Koller 94] DEEP BLUE - máquina paralela que juega ajedrez y primera en derrotar al

campeón mundial [IBM 97]

Page 27: Tema General Sistemas Basados en Conocimientos

Sistemas desarrollados (detalles)

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 transformó cuando el profesor de dicción le enseño a hablar un correcto inglés, 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.

MYCIN

La especialización de en cualquier actividad requiere un gran conocimiento de 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 práctica y el arte de tomar 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 modelizació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 está 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

Page 28: Tema General Sistemas Basados en Conocimientos

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.

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 máquinas 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 más éxito ha conseguido de entre las desarrolladas hasta la fecha.

Page 29: Tema General Sistemas Basados en Conocimientos

1.3 Sistemas computacionales y sistemas inteligentes

La evolución de millones de años ha permitido que los seres humanos logren realizar tareas consideradas como inteligentes. Posteriormente el hombre crea las computadoras que permiten el procesamiento de datos en base al modelo Von Neuman,, posteriormente se crean las redes de computadoras para el tratamiento secuencial de la información, a estos sistemas los denominamos sistemas computacionales, cuando estos sistemas pueden realizar tareas tal como si tuvieran comportamiento humano, las denominamos sistemas inteligentes.

Los sistemas computacionales han variado desde el tratamiento de archivos (sistemas computacionales) hasta el procesamiento del conocimiento (Sistemas inteligentes).

Fuente: Elaboración propia

El objetivo de los sistemas inteligentes (aunque ambicioso aún) es construir artefactos que puedan crear su propio conocimiento y razonar sobre él, que planifique su aprendizaje y modifique su entorno con toma de decisiones y autonomía, sin intervención del ser humano.

Basados en estos conceptos se han desarrollado los sistemas expertos que pueden imitar la capacidad mental del ser humano relacionando reglas de cierto lenguaje (hablado o escrito) y sobre su propia experiencia pueda hacer juicios sobre cierto tema o problemática, estos sistemas simulan el proceso de aprendizaje, memorización, razonamiento y comunicación de sus decisiones tal como lo haría un experto en cualquier disciplina del quehacer humano.

Page 30: Tema General Sistemas Basados en Conocimientos

1.4 Aplicaciones en las industrias y en las empresas

Las lineas tradicionales de investigación en IA incluyen el razonamiento lógico, la traducción automática y comprensión del lenguaje natural, la robótica y automatización, la visión artificial y, especialmente, las técnicas de aprendizaje y de ingeniería del conocimiento. Estas dos últimas ramas son las más directamente aplicables al campo de la industria y las finanzas pues, desde el punto de vista de los negocios, lo que interesa es construir sistemas que incorporen conocimiento y, de esta manera, sirvan de ayuda a los procesos de toma de decisiones en el ámbito de la gestión empresarial.

Desde un punto de vista amplio las aplicaciones de la IA actualmente se dirigen a resolver problemas en empresas industriales, disciplinas médicas, diseño de ingeniería, etc.

En el ámbito específico del Análisis Contable, según Bonsón Ponte y Sierra Molina la Inteligencia Artificial constituye una de las líneas de actuación futura más prometedoras, con posibilidades de aplicación tanto en el ámbito de la investigación como en el diseño de sistemas de información inteligentes, que no solamente proporcionen datos al decisor sino que recomienden el mejor curso de actuación a seguir.

Existe un gran número de aplicaciones exitosas de sistemas expertos. Algunos ejemplos de empresas que los utilizan son: American Express, Citibank, Manufacturers Hanover Trust, Yamaichi Securities y National Westminister Bank, que los han empleado para efectuar evaluación de préstamos personales, manejo de inversiones, y para predicciones de mercados financieros.

La empresa californiana Countrywide Funding usa un gigantesco sistema experto para evaluar sus hipotecas. El objetivo de la empresa era desarrollar un sistema inteligente capaz de evaluar hasta 50,000 aplicaciones mensuales de una forma más eficiente que la utilizada tradicionalmente. Aunque inicialmente se evaluaron otras técnicas, tales como las redes neuronales, se optó por los sistemas expertos debido a su capacidad de explicar la forma en que se llega a una cierta decisión. Tradicionalmente, el proceso de evaluación de hipotecas es efectuado por personal altamente calificado que analiza hasta unos 150 elementos para tomar su decisión, incluyendo la solvencia del cliente y el valor de la propiedad. En promedio, el proceso de evaluación manual toma unos 50 minutos. El sistema experto que Countrywide Funding usa ahora, llamado CLUES, tiene unas 1,000 reglas y requiere de entre 1 y 2 minutos para procesar una aplicación. El sistema aprueba automáticamente el 55% de las aplicaciones y desaprueba todas aquellas que un humano rechazaría. Si el sistema recomienda que se rechace una aplicación, la decisión final la debe tomar un evaluador humano, quien verifica el proceso que siguió el programa para tomar esa decisión.

La empresa aseguradora Continental Canada ha desarrollado un sistema experto para evaluar aplicaciones de seguros para automóviles de una forma eficiente. Este sistema contiene cientos de reglas derivadas de expertos humanos en pólizas de seguros. Por

Page 31: Tema General Sistemas Basados en Conocimientos

ejemplo, hay reglas específicas para asignar un riesgo más alto a aquellos casos en que el cliente sea joven (y por tanto inexperto) y cuando se tengan vehículos más viejos (y por ende más propensos a fallas mecánicas). El sistema procesa todas las aplicaciones y activa ciertas alertas cuando se detectan posibles problemas. En estos casos, la decisión final queda a cargo nuevamente de un experto humano. Continental Canada afirma que este sistema experto redujo los gastos administrativos de la empresa en un 55%, incrementado las ganancias en un 30%.

Presentamos a continuación una lista no excluyente de aplicaciones en el campo empresarial y financiero:

AFIN (Análisis Financiero de Balances): Realiza un análisis de los estados financieros. Estudia, para dos años consecutivos, los Balances y Cuentas de Resultados, la Memoria, el Estado de Origen y Aplicación de Fondos, confecciona cuadros y calcula ratios de tesorería, endeudamiento, rentabilidad económica y financiera, etc. También presenta un informe del diagnóstico de la situación de la empresa, indicando una serie de recomendaciones para su mejora.

AIDE (Assistance Informatisée au Diagnostic d’Entreprise). Ayuda en el diagnóstico de empresas realizado por la Central de Balances del Banco de Francia. La base de reglas está formada por dos bloques: un bloque financiero, calculado sobre la estructura del análisis de las empresas por la Central de Balances, y un bloque económico, centrado en la competitividad, crecimiento y estrategia. El sistema elabora un informe estudiando la posición de la empresa, sus potencialidades, sus resultados y su estrategia.

SEF (Systeme Expert Fiben). Proporciona a los bancos privados un análisis de solvencia de las compañías que éstos soliciten. El diagnóstico incluye una lista de debilidades y de materias sobre las que se requiere una investigación más profunda. Este sistema está pensado para ser utilizado cuando se necesita información rápida sobre una empresa en concreto, pues se puede acceder on line (vía tele texto), pero también proporciona información detallada si se trata de operaciones importantes, como por ejemplo préstamos de gran cuantía.

ALFEX (Alvey Financial Community Club, Helix Software Consultants y Expert Systems International). Es un proyecto de construcción de sistemas expertos patrocinado por el Alvey Financial Community Club. El objetivo de este proyecto es crear sistemas expertos capaces de asesorar sobre la salud financiera de una compañía, así como desarrollar bases de conocimiento y herramientas apropiadas para la construcción de estos sistemas. Proporciona un informe sobre la salud financiera de la compañía, apoyado con gráficos, previsiones de ventas, ratios, análisis de sensibilidad, etc.

ANALYSIS CERG Finance. Clasifica funcionalmente el Balance y la Cuenta de Pérdidas y Ganancias, calcula los flujos económico financieros,la rentabilidad, el potencial de crecimiento, la gestión del activo económico, la solvencia, la estructura financiera, etc.

Page 32: Tema General Sistemas Basados en Conocimientos

ANIBAL (Análisis Inteligente de Balances)

ERITEL Ayuda a los analistas financieros a evaluar la gestión comercial y financiera de la empresa. Realiza un análisis patrimonial, financiero y económico de la situación de la empresa, tanto desde un punto de vista estático como dinámico. Consta de dos módulos: el primero realiza el cálculo de ratios, gráficos, etc. y el segundo establece las conclusiones y presenta un informe de la compañía, resaltando los puntos fuertes y débiles.

FINEX Kerschberg y Dickinson Asesora en el análisis de los estados financieros de las empresas pertenecientes a la industria de venta al por mayor de petróleo. El sistema calcula los ratios financieros partiendo de los datos obtenidos de la Cuenta de Pérdidas y Ganancias y del Balance.

FINEXPERT / FINEXPRO EXPERTEAM Sirve de apoyo en el análisis de estados contables y en la producción de informes financieros. El sistema utiliza los más recientes avances en el análisis de estados financieros desarrollados por el Departamento de Finanzas del Centre d’Enseignement Supérieur des Affaires (CESA) de Francia y realiza un triple trabajo: análisis de la rentabilidad de la empresa, análisis de su estrategia financiera y análisis de los riesgos inherentes a su explotación. Posteriormente emite un informe sobre la gestión financiera de la empresa, indicando los puntos fuertes y débiles y las sugerencias para su mejora.

FSA (Financial Statement Analyzer) Arthur Andersen & Co. Realiza la revisión analítica de los estados financieros de una empresa. El sistema efectúa un análisis de ratios usando las cuentas e informes anuales que las sociedades americanas tienen que presentar a la SEC (Securities and Exchange Commision - Comisión del Mercado de Valores). Además se incorporan técnicas de procesamiento del lenguaje natural para analizar los textos de los documentos contables.

PRÉFACEEXPERT (Progiciel d’Expertise Financière en d’Analyse pour la Création d’Entreprises)

ORDIMEGA Es un sistema experto de previsión financiera. Partiendo de los datos generados por un módulo anterior (elPréface-Tableur), tales como ratios, umbral de rentabilidad, fondo de rotación, estructura de los costes y otros, analiza la estructura y la rentabilidad de la explotación, las tendencias de tesorería, la rentabilidad de los capitales, la estructura de la financiación, las cuentas previsionales, etc. Posteriormente se le han añadido dos módulos más, el Préface-Eao, que presenta definiciones comentadas y gráficos y el Préface-Synthèse, que produce un informe detallado de aproximadamente 20 páginas con los datos, apreciaciones y sugerencias del sistema experto en tres capítulos: explotación, balance y tesorería.

Page 33: Tema General Sistemas Basados en Conocimientos

SAGE Banco Bilbao Vizcaya y Sema Group System. Realiza el análisis financiero y de gestión de empresas. Analiza los estados financieros y los datos cualitativos de las empresas y emite un informe sobre la calidad financiera y de gestión.

SYMEDE Fredouet Es un sistema de diagnóstico de empresa multidisciplinar compuesto por tres módulos: jurídico, económico y financiero. El módulo de diagnóstico jurídico analiza la política patrimonial, contractual y social de la empresa, el módulo económico trata de los aspectos estratégicos de la situación de la empresa, y el módulo financiero analiza la actividad de las ventas y del sector productivo, la rentabilidad y la estructura financiera a largo y a corto plazo.

VENTURE EXPERT EXPERTEAM Efectúa un diagnóstico financiero de la empresa. Realiza el análisis de la rentabilidad, de las estrategias financieras y del riesgo. Emite un informe sobre la gestión de la empresa y los planes de acción a emprender por parte de la dirección.

COMPASS Bank of Scotland Asesora sobre la concesión de préstamos. Además de un módulo convencional que analiza las cuentas de las empresas solicitantes, incorpora otros tres destinados a tratar información de tipo cualitativo sobre la viabilidad, seguridad y credenciales de la empresa solicitante, respectivamente.

KABAL Tromsø Sparebank (Noruega) Realiza un análisis de los estados financieros de una empresa. Considera aspectos relacionados con las garantías, el mercado en el que opera la empresa, la gerencia y la organización interna.

PARMENIDE Banco di Napoli Analiza los estados financieros de una empresa, produciendo estados financieros previsionales. También incorpora información cualitativa y del mercado, en orden a corregir las valoraciones de las distintas partidas de los estados financieros.

Page 34: Tema General Sistemas Basados en Conocimientos

1.5 El test de Turing

Alan Turing postuló en 1960 que una máquina presenta comportamiento inteligente si un observador es incapaz de distinguir, para un problema determinado,entre las sucesivas respuestas proporcionadas por la máquina y un ser humano, la propuesta fue publicada en el artículo Computing machine and intelligence.

Una persona (X) se encuentra en una habitación mientras que en otra habitación se encuentra otra persona (y) y una máquina (M) que se supone inteligente, la persona X tiene comunicación tanto la persona Y y la máquina M a través de una interface. La persona X formula preguntas que son contestadas por la persona Y y la máquina M. En el momento que la persona X no puede distinguir las respuestas de la persona Y y de la máquina M, se dice que la máquina M tiene un comportamiento inteligente.

Fuente: Elaboración propia

En Junio del 2005 cuando se realiza un concurso organizado por la Real Society recordando el 60° aniversario de la muerte de Turing, una máquina conocida como “bot conversacional Eugene Goostman” pasa con éxito el test de Turing logrando convencer al 33% de un jurado que tenía el comportamiento de un adolescente de 13 años.

Page 35: Tema General Sistemas Basados en Conocimientos

Problemas clásicos

Fuente: https://deista.wordpress.com/2010/05/09/juego-matematico-las-torres-de-hanoi/

En los cursos universitarios se han propuesto un conjunto de problemas denominados clásicos tales como: Las N reinas, Las torres de Hanoi, Los misioneros y los caníbales., El problema de los baldes, El problema del agente viajero, El problema del granjero, etc.

Planteamos resolver el Problema de los baldes (todo un reto para inteligentes)

Tenemos 2 baldes de agua vacíos, uno con capacidad de 6 galones y otro con capacidad de 8 galones. Teniendo en cuenta que podemos llenar cada uno de los baldes como queramos, ¿ Cómo podríamos llenar el balde de 8 galones exactamente hasta la mitad? (Supongamos que no existe ninguna marca de medidas en los baldes).

En la siguiente tabla se observan acciones que conducen a una solución:

Número Acción Condiciones para su aplicación

1 Llenar el balde de 8 gal. El balde de 8 gal. no está lleno

2 Llenar el balde de 6 gal. El balde de 6 gal. no está lleno

3 Descargue el balde de 8 gal. El balde de 8 gal. no está vacío

4 Descargue el balde de 6 gal El balde de 6 gal. no está vacío

5 Vacíe el balde de 8 gal. en el de 6 gal.

El balde de 6 gal. no está lleno y el de 8 gal. no está vacío. El contenido conjunto es <= 6 gal.

6 Vacíe el balde de 6 gal. en el de 8 gal.

El balde de 8 gal. no está lleno y el de 6 gal. no está vacío. El contenido conjunto es <= 8 gal

7 Llene el balde de 8 gal. con el de 6 gal.

El balde de 8 gal. no está lleno y el de 6 gal. no está vacío. El contenido conjunto es >= 8 gal

8 Llene el balde de 6 gal. con el de 8 gal.

El balde de 6 gal. no está lleno y el de 8 gal. no está vacío. El contenido conjunto es >= 8 gal

Page 36: Tema General Sistemas Basados en Conocimientos

1.6 Introducción a los sistemas basados en conociminento

Normalmente cuando se presenta un tema lo primero que hacemos es definirlo y luego realizamos ampliaciones, proponemos esquemas, ejemplos, etc. para enriquecer las definiciones, sin embargo en este caso iniciamos proponiendo un conjunto de términos que en conjunto dan forma a los sistemas basados en conocimiento.

Las personas tenemos dominio sobre ciertos aspectos del conocimiento que nos permite resolver problemas en un determinado campo o disciplina. Por ejemplo, el profesional médico resuelve problemas de salud, el profesor trata el problema de aprendizaje, en este sentido, a la persona que demuestra los conocimientos para resolver determinado tipo de problemas la denominamos experto. Este experto proporciona el conocimiento inicial necesario al sistema artificial para tomar decisiones.

Cuando se desarrollan los sistemas tradicionales, se escriben programas que son una secuencia de instrucciones de procesamiento a través de los cuales determinado usuario representa el conocimiento y además define cómo interacciona con el conocimiento previo para realizar actividades de toma de decisiones. Sin embargo en los sistemas basados en conocimientos, el usuario a quien denominamos experto define el conocimiento y el sistema lo integra directamente en la explicación pertinente, la programación no se hace directamente sobre el conocimiento, sino más bien se programan algoritmos de inferencia a los que denominamos motor de inferencias que permiten tratar el conocimiento desde una base de datos.

A partir de la década del 70 se inicia el estudio de la ingeniería del conocimiento, que comprende el diseño y construcción de sistemas basados en conocimiento. Normalmente la programación tradicional se ha desarrollado a través de la ingeniería de software. Para tratar temas del conocimiento usando tecnologías computacionales se requiere un nuevo enfoque por cuanto:

1. El conocimiento humano es incompleto, inconsistente, impreciso, incierto, tolerante.

2. El razonamiento y respuesta proporcionado por las personas no siempre es el mismo y muchas veces no se puede precisar.

3. El conocimiento es evolutivo por lo que implica procesos de retroalimentación y de aprendizaje.

4. Los métodos tradicionales de desarrollo de software no son aplicables al tratamiento del conocimiento.

5. Los proyectos de desarrollo requieren la participación del “experto” en los proyectos de desarrollo.

Page 37: Tema General Sistemas Basados en Conocimientos

Podemos plantear dos paradigmas que orienten el estudio en nuestro curso, el primero proporciona una orientación estructural-cognoscitiva y el segundo formula una orientación funcional-conductista.

Los sistemas basados en conocimiento se desarrollan con una orientación cognoscitiva y se caracterizan por la capacidad de “saber” o conocer sobre un tipo de problemas, más que capacidades intelectivas generales. Separa el conocimiento codificado en la máquina (base de conocimientos) de los mecanismos deductivos (motor de inferencia).

A partir del segundo paradigma (orientación funcional-conductista) podemos definir otro tipo de sistemas que denominamos sistemas expertos, que se caracterizan por emular la actividad de un experto humano cuando resuelve un problema en una área muy concreta, es capaz de adquirir experiencia y puede conversar con los usuarios explicando su razonamiento.

En la siguiente figura se muestran las relaciones entre los paradigmas planteados.

Page 38: Tema General Sistemas Basados en Conocimientos
Page 39: Tema General Sistemas Basados en Conocimientos

Aplicaciones de los sistemas basados en conocimiento

Sistemas de diagnóstico de fallos y sugerencia de medidas correctoras.

Monitorización y control de procesos físicos para la detección temprana de anomalías en tiempo real.

Sistemas de apoyo en la planificación articulando coherentemente objetivos complejos e interrelacionados y las acciones que optimicen el logro de los mismos teniendo en cuenta las dependencias y restricciones existentes.

Sistemas de configuración de máquinas, seleccionando componentes de un conjunto en función de funcionalidades y restricciones de operación y compatibilidad.

Sistema de apoyo a la gestión del conocimiento poniendo a disponibilidad de los usuarios el conocimiento requerido en función de sus intereses con acciones de recomendación y de ayuda.

Page 40: Tema General Sistemas Basados en Conocimientos

1.7 Estructura de los sistemas basados en conocimiento

En la siguiente figura presentamos una primera versión de un sistema basado en conocimiento

La interfaz de usuario permite la interacción entre el sistema y el usuario, en la actualidad se implementan interfaces gráficas, reconocimientos de patrones, interpretación de lenguaje natural. De igual manera laadquisición del conocimiento permite interactuar al experto con el ingeniero del conocimiento y el sistema usando también interfaces emulando comportamiento humano.

El sistema contiene un conjunto de técnicas y algoritmos para implementar el motor de inferencias que da tratamiento a la información contenida en la base de conocimientos para formular soluciones y elgenerador de explicaciones que presenta en forma ordenada la justificación de las respuestas en base a los conocimientos analizados, los mismos que se implementan en reglas, macros y hechos.

En la memoria de trabajo se almacenan variables que permiten la implementación de los algoritmos y módulos del sistema.

Planteamos ahora una segunda versión de sistema basado en conocimientos definiendo sus requisitos:

Resolución de problemas a partir de información simbólica.

Resolución mediante razonamiento y métodos heurísticos.

Capacidad de explicar sus conclusiones.

Page 41: Tema General Sistemas Basados en Conocimientos

Sistema interactivo (Hombre/máquina).

Capacidad de adaptación al entorno.

Para desarrollar un sistema basado en conocimientos con los requisitos anteriormente planteados proponemos los siguientes módulos:

Módulo de razonamiento.

o Almacenamiento del conocimiento.

o Uso e interpretación del conocimiento.

o Almacenamiento del estado del conocimiento.

Módulo de justificación e inspección de la solución.

Interfaz de interacción.

Módulo de Aprendizaje

Page 42: Tema General Sistemas Basados en Conocimientos

Actividades de análisis y comprensión

Cómo hemos comentado no existe una definición universal de la inteligencia artificial, sin embargo podemos expresar un concepto que nos permita definir los objetivos y metodologías usadas durante nuestro curso, asimismo te invitamos a responder algunas preguntas sobre la estructura de un sistema basado en conocimientos.

1. ¿Puedes proponer un concepto de la inteligencia artificial?2. ¿Qué objetivos crees que debe tener la inteligencia artificial?3. ¿A quién se denomina el padre de la inteligencia artificial?4. ¿Cuál es el componente que trata la información contenida en una base de

conocimientos?5. ¿Existe algún nivel de interacción entre un sistema basado en conocimientos y

el hombre?6. ¿Cuáles son los componentes de una base de conocimientos?

Te invitamos a visualizar los siguientes videos Historia de la inteligencia artificial: https://www.youtube.com/watch?

v=ivW6zUse6h0 El test de turing: https://www.youtube.com/watch?v=Y90a6Xwwh3w Máquina logra aprobar el test de Turing: www.youtube.com/watch?

v=TQuszZQKQTc

Después de haber observado detenidamente los videos responde a las siguientes preguntas:

Una neuroma de McCullock-Pitts tiene:

Axón.

Sangre.

Leucocitos.

Dendritas.

Células madre.

Cuerpo.

Sinapsis.

La neurona artificial propuesta por McCullock-Pitts contiene Axón, dendritas, cuerpo y sinapsis.

Page 43: Tema General Sistemas Basados en Conocimientos

El test de Turing permite medir:

La capacidad de razonamiento de una máquina.

La capacidad de comportamiento humano de una máquina.

La posibilidad de una máquina para convertirse en ser humano

La capacidad de programación que tenga una máquina.

La capacidad evolutiva de una máquina.

El test de Turing permite conocer la capacidad de comportamiento humano de una máquina.

Cómo se llama el primer robot que supera el test de Turing?

Arturito.

Robocop.

Boris.

Eugenne.

Asimo.

En Junio del 2015 cuando se realiza un concurso organizado por la Real Society recordando el 60° aniversario de la muerte de Turing, una máquina conocida como “bot conversacional Eugene Goostman” logra pasar el test de Turing.

Page 44: Tema General Sistemas Basados en Conocimientos

Bibliografía

1. Bourcier, D. Inteligencia artificial y derecho. Disponible en la Biblioteca de la USS.

2. Russell y Norving (2004). Inteligencia artificial: Un enfoque moderno. Pearson Education S.A. 2da edición. España. Disponible en la Biblioteca de la USS.

3. Delgado, A. Inteligencia artificial y minirobots. Disponible en la Biblioteca de la USS.

4. Escolano, F. Inteligencia artificial, modelos,técnicas y áreas de aplicación.. Disponible en la Biblioteca de la USS.

5. Nilsson, N. Inteligencia artificial: Una nueva síntesis. Disponible en la Biblioteca de la USS.

6. Pajarez, M. Inteligencia artificial e ingeniería del conocimiento. Disponible en la Biblioteca de la USS.

7. Palma, J. Inteligencia artificial. Disponible en la Biblioteca de la USS.8. Ponce, P. Inteligencia artificial con aplicaciones en ingeniería. Disponible en la

Biblioteca de la USS.9. Sistemas basados en

conocimientos. http://www.wolnm.org/apa/articulos/Sistemas_Basados_Conocimiento.pdf?target=

Page 45: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadasPara saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: La inteligencia artificial, Hacia donde nos lleva?

URL: http://www.comoves.unam.mx/numeros/articulo/2/la-inteligencia-artificial-hacia-donde-nos-lleva

Breve descripción:

El documento presenta un análisis sobre la capacidad de inteligencia artificial que pueden adquirir las máquinas, incluye una entrevista al Dr. Ismael Espinoza del Laboratorio de Cibernética de la UNAM quién analiza la tendencia en la disciplina y el impacto en las personas.

…………………………………………………………………………………………………………………….…………..

Documento 2: El futuro de la inteligencia artificial y la cibernética

URL: https://www.bbvaopenmind.com/articulo/el-futuro-de-la-inteligencia-artificial-y-la-cibernetica/?fullscreen=true

Breve descripción:

El autor Kevin Warwick, Profesor de cibernética de la Universidad de Reading, analiza los cyborg que son seres humanos que han recibido implantes de componentes electrónicos para realizar tareas propias de los humanos, por ejemplo visión, audición, locomoción, etc.

Page 46: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

No existe una definición única de la inteligencia artificial.

Para nuestros fines de aprendizaje la IA busca realizar programas de computador que evidencien un comportamiento humano para resolver determinados problemas.

A partir de la década del 50 se inicia formalmente la historia de la IA.

Existen varias posturas de diferentes autores para clasificar los hitos históricos de la IA.

Se reconocen autores que han apoyado el desarrollo de la IA a Turing, Minsky, McCarthy, Rossenblant, entre otros.

Después de 60 años una computadora logra pasar satisfactoriamente el test de Turing.

Existen aplicaciones confiables de la IA en diversas empresas para tomar decisiones.

Los sistemas basados en conocimientos presentan estructuras bien definidas, por lo que pueden ser programados en computadores.

Los sistemas expertos, generan soluciones y son capaces de aprender, justificar sus resultados e interactuar con seres humanos.

Page 47: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?

Page 48: Tema General Sistemas Basados en Conocimientos

Tema 02. Representación del conocimiento

Fuente: http://lanegavi.blogspot.com/

Bienvenida

Estimados estudiantes ¡bienvenidos! a la segunda semana del curso, donde abordaremos la representación del conocimiento basado en reglas, aplicaremos la lógica de predicados y conoceremos el lenguaje Prolog para el tratamiento de reglas. Durante esta semana trabajaremos con el IDE Turbo Prolog que nos permite trabajar en forma sencilla introduciéndonos al mundo de la programación declarativa.. Los contenidos se complementan con interesantes lecturas, valiosos vídeos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados.

¡Continuemos!

Page 49: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente: http://psmheuristica.webnode.com.ve/clasificacion-metodos-heuristicos/sistema-basados-en-el-conocimiento-sbc/

La representación de conocimiento es el punto de partida cuando tratamos de diseñar soluciones que requieren cierto grado de inteligencia con el uso de computadoras. Los sistemas operativos actuales permiten ejecutar programas basados en algoritmos y con ellos podemos implementar aplicaciones informáticas. El uso de la lógica de predicados cambia el paradigma de la programación algorítmica hacia la programación declarativa, concentrándonos en los datos y la definición de reglas, sobre las cuales realizamos inferencias para lograr soluciones relacionadas con el conocimiento que podemos extraer de la información o datos.

Se ha diseñado un lenguaje que nos permite implementar el requerimiento del párrafo anterior conocido como Prolog (Programación lógica) y se basa en el paradigma de la programación declarativa que consiste precisamente declarar hechos o datos, definir reglas que los relaciona y el motor de inferencias de Prolog produce resultados.

Esta nueva forma de programar es sencilla, pero es necesario un ambiente en el cual se aísle los objetos computacionales para tratar objetos de información durante el proceso de aprendizaje, por esta razón presentaremos un IDE tradicional conocido como Turbo Prolog, el cuál no sirve para realizar soluciones profesionales en la actualidad, sin embargo, nos permite ingresar al mundo de la programación declarativa, posteriormente presentaremos IDEs modernos y visuales.

Durante esta semana conoceremos la estructura básica de un programa Prolog y los conceptos de tratamiento de variables y el procesamiento de reglas. La recursividad es un concepto ampliamente utilizado en Prolog, por esta razón dedicamos un ítem específico para desarrollar algunos predicados. Cuando terminemos esta sesión de aprendizaje estaremos en condiciones de implementar sistemas basados en conocimiento usando reglas de producción.

Page 50: Tema General Sistemas Basados en Conocimientos
Page 51: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Ocultar

Conozcamos ahora las capacidades y actitudes a desarrollar en este primer tema:

Capacidades

Ocultar

Conoce la lógica aplicable a la representación del conocimiento Identifica los patrones basados en reglas para representar conocimiento. Descarga e instala el IDE TURBO PROLOG para iniciar el estudio del lenguaje

PROLOG

Actitudes

Ocultar

Demuestra puntualidad y perseverancia en la asistencia de las tutorías programadas.

Reconoce los conceptos de los sistemas basados en conocimientos. Valora las opiniones de los demás y las recoge para fortalecer sus

conocimientos.

Page 52: Tema General Sistemas Basados en Conocimientos

Marco conceptual

Analiza el marco conceptual del tema

Estimado estudiante te invitamos a participar activamente de las actividades de aprendizaje relacionadas con la representación del conocimiento que nos permitirá conocer la lógica de predicados y su tratamiento con el lenguaje Prolog, asimismo conoceremos un nuevo paradigma conocido como programación declarativa concentrando nuestra atención en los datos que son procesados con reglas bien definidas, conoceremos el concepto de variables ligadas y aprenderemos a usar la recursividad.

Observa detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 53: Tema General Sistemas Basados en Conocimientos

2.1 Lógica

Fuente: https://poiritem.wordpress.com/2009/11/16/6-4-2-agentes-inteligentes-y-la-naturaleza-de-su-entorno/

El mundo que nos rodea está formado por un conjunto de objetos con propiedades particulares que se relacionan entre sí y que los diferencian uno a otro, generando lo que llamamos conocimiento. Estas relaciones se expresan en lenguaje natural hablado o escrito utilizando oraciones que el ser humano interpreta de acuerdo a formas de razonamiento que aún son motivo de estudio por parte de los especialistas en ramas como la psicología, sociología, etc.

La concepción moderna de la IA permite definir al agente inteligente como un ente que posee conocimiento y puede razonar sobre las acciones a realizar frente a cierto impulso o cambio en el mundo que lo rodea.

En términos generales la Inteligencia Artificial (IA) busca que un computador se comporte frente a determinadas situaciones como lo haría un ser humano. En términos específicos intentamos representar el conocimiento humano en un computador y partir de ello generar formas de razonamiento para resolver problemas que requieran cierto grado de inteligencia.

Respecto al primer punto los lenguajes naturales están orientados fundamentalmente para cumplir fines de comunicación entre seres humanos por lo que utilizar éstos para representar conocimiento en un computador resulta una tarea muy complicada y probablemente por el momento fuera de esquema. Por ello recurrimos a un formalismo conocido como lógica computacional dividido en dos partes: lógica proposicional y lógica de predicados.

Page 54: Tema General Sistemas Basados en Conocimientos

Todo lenguaje tiene una sintaxis y una semántica. La sintaxis está referida a la representación de oraciones y define los patrones físicos de escritura de la oraciones, mientras que la semántica expresa el significado de las oraciones buscando relaciones válidas entre los objetos en función del mundo que los rodea conocido como dominio.

La lógica proposicional, también conocida como lógica booleana, representa sintácticamente oraciones atómicas con proposiciones simples P, Q, R , etc, las cuales en determinado momento pueden tener uno y solo uno de los valores verdadero o falso pero no ambos. Se generan oraciones compuestas utilizando conectores lógicos: conjunción(y), disyunción(o), negación(no), implicación(Si...entonces), y otros. La semántica está representada en las tablas de verdad y aplicando reglas se hacen inferencias lógicas o inferencias formales. Sin embargo presenta una gran limitación pues es independiente de los datos.

La lógica de predicados más compleja que la anterior presenta una mejor alternativa para representar conocimiento. Permite tratar proposiciones facilitando el uso de variables y funciones de variables. Representa sintácticamente predicados y datos individuales. En forma específica predicado(dato1, dato2, ....) y en forma general predicado(lista de argumentos). Esta forma sintáctica constituye una proposición por lo tanto son aplicables las reglas de la lógica proposicional. En un sentido general la lógica de predicados de primer orden permite el tratamiento y cuantificación de variables individuales.

A manera de ejemplos:

+ “Juan es hombre” .....................se denota ............ hombre(“Juan”).

+ “Pedro es padre de Juan” ..........se denota ............ padre(“Pedro”,”Juan”).

Desde el punto de vista de razonamiento, el computador debe ejecutar un proceso de búsqueda de soluciones en base a oraciones previas llamadas premisas. Al proceso de relacionar mediante la implicación a un conjunto de premisas para llegar a una conclusión se le denomina deducción o inferencia lógica.

La inferencia lógica se implementa mediante la demostración de teoremas, programación lógica, lógica no monotónica, lógicas multievaluadas y difusas.

Page 55: Tema General Sistemas Basados en Conocimientos

2.2 Sistemas basados en reglas

Fuente: http://www.upf.edu/hipertextnet/numero-2/linguistica.html

Una regla es una proposición lógica que relaciona dos o más objetos y que está formada por dos partes, la premisa (o premisas) y la conclusión. La forma más sencilla de una regla es “Si (premisas válidas) entonces (conclusión)”.

El entorno que nos rodea y las circunstancias diarias en nuestras vidas están plagadas de reglas determinísticas:

Si el semáforo está en rojo, detengo el coche. Si tengo dinero suficiente podemos comprar la refrigeradora. Si está lloviendo usamos el paraguas.

Un sistema basado en conocimientos, expresado en su forma más sencilla está formado por un conjunto de reglas, un conjunto de datos aplicados a las reglas y un motor de inferencias que obtiene conclusiones aplicando la lógica clásica “Si ...(premisas)... entonces ...(conclusión)...” con operadores lógicos “y (and, conjunción)”, “o (or, disyunción)” o “no (not, negación)”.

Page 56: Tema General Sistemas Basados en Conocimientos

2.3 Relaciones, hechos y reglas

Tomando como referencia lo comentado en el ítem anterior relacionamos los formalismos para representar conocimiento en expresiones de lenguaje natural utilizando relaciones entre objetos:

Las siguientes expresiones representan relaciones:

Expresión Objetos Relación

Juan es padre de Pedro Juan, Pedro padre

Luis está casado con Ana Luis, Ana está casado

Miguel está matriculado en Física

Miguel, Física matriculado

El profesor García dicta Matemática

Profesor García, Matemática

dicta

Ana practica karate Ana, karate practica

Usando un lenguaje simbólico podemos expresar estas relaciones de la siguiente manera y representan hechos verdaderos o datos:

padre(“Juan”,”Pedro”).matrimonio(“Luis”,”Ana”). deporte_favorito(”Karate”, “Ana”).

Las formas de razonamiento en lógica están constituidas por la conjunción de varias premisas y una conclusión, a manera de ejemplo:

Si Juan está casado con Luisa y Juan es padre de Pedro entonces Luisa es madre de Pedro.

Esta forma de razonamiento se conoce como regla de producción y la podemos expresar:

madre(M,H):- matrimonio(P,M), padre(P,H).

Las letras con mayúscula representan variables y se lee:

M es madre de H si P está casado con M y P es padre de H.

Page 57: Tema General Sistemas Basados en Conocimientos

2.4 El lenguaje Prolog

Fuente: http://sofialenguajesprogra.blogspot.com/

PROLOG trata las variables en forma muy particular, hagamos algunas precisiones preliminares al respecto:

Existe un proceso que llamaremos emparejamiento de expresiones que consiste en comparar biunívocamente los componentes de dos expresiones en cada una de sus partes componentes.

Una variable que no aún no ha recibido valor alguno se llama variable libre. Una variable que ha recibido algún valor se llama variable ligada. (En otros

lenguajes se denomina asignar valor a una variable) Las variables reciben un valor cuando se pueden emparejar biunívocamente

dos expresiones. Una variable libre puede ser ligada solamente una vez. Esto difiere de la

operación de asignación que existe en otros lenguajes en los que una variable puede recibir varios valores en forma sucesiva, en PROLOG ésto último no es posible por el contexto mismo que las variables representan.

Analicemos desde la óptica de la lógica proposicional, supongamos que tenemos las proposiciones C1, C2, C3, C4 y C5 a las que denominaremos cláusulas:

C1 :- C2, C3, C4, C5.

En términos del lenguaje de la lógica se dice que:

C1 es una conclusión verdadera si se cumple que C2 y C3 y C4 y C5 son premisas verdaderas.

Page 58: Tema General Sistemas Basados en Conocimientos

C1 es una conclusión falsa si por lo menos una de las premisas C2 o C3 o C4 o C5 es falsa.

Expresemos desde otro punto de vista lo mencionado anteriormente relacionando las cláusulas con predicados de lenguaje natural:

- C1 = Luis es hermano de Pedro.

- C2 = Juan es padre de Luis.

- C3 = Juan es padre de Pedro.

- C4 = Ana es madre de Pedro.

- C5 = Ana es madre de Luis.

Escribiendo expresiones en forma clausular tendremos:

Consideramos verdaderos los siguientes hechos:

Luis es hermano de Pedro.

Juan es padre de Luis.

Juan es padre de Pedro.

Ana es madre de Luis.

Ana es madre de Pedro.

Planteamos la forma de razonamiento:

A es hermano de B Si:

P es padre de A y

P es padre de B y

M es madre de A y

M es madre de B.

Formulamos la siguiente pregunta objetivo:

Luis es hermano de Pedro ?

Haciendo un análisis de ejecución decimos:

Page 59: Tema General Sistemas Basados en Conocimientos

1. El objetivo es determinar si Luis es hermano de Pedro. Esto equivale a decir A es hermano de B. A se liga con Luis y B se liga con Pedro.

2. Con este objetivo entramos a la forma de razonamiento y tomamos la primera premisa P es padre de Luis. Buscando en los hechos encontramos Juan es Padre de Pedro por lo tanto P se liga con Juan, decimos que ésta premisa es verdadera y continuamos con la segunda.

3. P es padre de B. En el objetivo B fue ligada con Pedro y en la primera premisa P fue ligada con Juan, por lo tanto buscamos el hecho Juan es padre de Pedro determinando que es verdadera por lo que continuamos con la tercera premisa.

4. M es madre de A. En el objetivo A fue ligada con Luis, sin embargo M aún no ha sido ligada y se dice que M es una variable libre. En éste caso buscamos en los hechos el primer valor que pueda ligar con M. Así tenemos que Ana es madre de Luis permite ligar A con Ana haciéndose verdadera por lo que continuamos con la cuarta premisa.

5. M es madre de B. En el objetivo B fue ligada con Pedro y en la tercera premisa M fue ligada con Ana, por lo tanto buscamos el hecho Ana es madre de Pedro determinando que es verdadera. Así mismo no hay más premisas que buscar.

6. Habiendo determinado que todas las premisas de la forma de razonamiento son verdaderas concluimos que la objetivo Luis es hermano de Pedro es verdadero

7. En el caso que una premisa hubiera sido falsa, no se continúa con la siguiente y se dice que el objetivo es falso.

8. Los hechos, el objetivo y las premisas reciben el nombre de cláusulas, Ud debe comprender que los hechos constituyen cláusulas atómicas mientras que un objetivo constituye una cláusula compuesta por otras cláusulas las que a su vez pueden ser atómicas o compuestas, así sucesivamente dando forma a un programa completo.

9. En éste primer ejemplo podemos observar que PROLOG realiza búsqueda de soluciones a preguntas objetivo que a partir de ahora llamaremos goal.

Es muy importante entender este procedimiento pues representa la forma de ejecución de programas escritos en PROLOG, no existen estructuras de control de flujo como IF, DO, FOR, WHILE, REPEAT, etc.

Probemos ahora con la siguiente forma:

Consideramos verdaderos los siguientes hechos:

Juan es padre de Luis.

Juan es padre de Pedro.

Ana es madre de Luis.

Ana es madre de Pedro.

Page 60: Tema General Sistemas Basados en Conocimientos

Planteamos la forma de razonamiento:

A es hermano de B Si P es padre de A y

P es padre de B y

M es madre de A y

M es madre de B.

Formulamos la siguiente pregunta objetivo:

Luis es hermano de Angel ?

Basados en el procedimiento de análisis decimos:

1. El objetivo es determinar si Luis es hermano de Angel. Esto equivale a decir A es hermano de B. A se liga con Luis y B se liga con Angel.

2. Con este objetivo entramos a la forma de razonamiento y tomamos la primera premisa P es padre de Luis. Buscando en los hechos encontramos Juan es Padre de Pedro por lo tanto P se liga con Juan, decimos que ésta premisa es verdadera y continuamos con la segunda.

3. P es padre de B. En el objetivo B fue ligada con Angel y en la primera premisa P fue ligada con Juan, por lo tanto buscamos el hecho Juan es padre de Angel determinando que no existe por lo tanto es falso y no continuamos.

4. Habiendo determinado que una de las premisas de la forma de razonamiento ha fallado (no es verdadera) concluimos que el predicado objetivo Luis es hermano de Angel es falso.

Page 61: Tema General Sistemas Basados en Conocimientos

2.5 Estructura de un programa, tratamiento de variables.

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html

Iniciamos el estudio del lenguaje PROLOG, para ello presentamos en esta sesión un IDE sencillo conocido como TURBO PROLOG y denominaremos TProlog.

Un programa en TProlog tiene tres componentes básicos: predicates, clauses y goal.

Predicates permite declarar las reglas y el tipo de variables que procesan.

Clauses implementa la lógica de las reglas.

Goal conduce la ejecución del programa.

Page 62: Tema General Sistemas Basados en Conocimientos

Tipos de datos

En TProlog existen tipos de datos estándar predefinidos:

STRING...........Secuencia de caracteres encerrados entre comillas, incluye el espacio. SYMBOL.........Secuencia de caracteres, no incluye el espacio. Se inicia con letra

minúscula. PROLOG acepta tipo symbol con el mismo formato sintáctico del tipo string.

CHAR..............Normalmente es un caracter encerrado entre apóstrofos. Sin embargo existen caracteres especiales:

‘\N’.........donde N es un número que corresponde al caracter ASCII

‘\n’..........Salto de linea

‘\t’...........Tabulador

INTEGER........Número entero comprendido entre -23768 hasta 32767 inclusive REAL...............Número real comprendido entre +/-1e-307 hasta +/-1e+308 FILE.................Permite trabajar con datos almacenados en archivos tanto de

entrada como de salida.

Mostramos algunos ejemplos de tipos de datos:

STRING.................. “hola”, ‘esta es una cadena”, “XYZ”, “1123”, “X1y2”

SYMBOL................ hola, esta_es_una_cadena, “esta es una cadena”, “XYZ”, 1123, “X1y2”

CHAR...................... ‘a’, ‘1’, ‘X’

INTEGER................ 12, 134, -34, 0

REAL ......................12.34, 234.56, 234,

Observe que los tipo string y symbol son semejantes. La diferencia radica en que los tipo de dato symbol son almacenados en una tabla de símbolos de acceso rápido proporcionando ventaja de tiempo en los procesos de búsqueda, sin embargo es lento al momento de insertarlos en la tabla. La decisión de usar string o symbol depende del programador. En nuestro caso usaremos frecuentemente el tipo string.

Page 63: Tema General Sistemas Basados en Conocimientos

Constantes

1. Las constantes en TProlog tienen la misma concepción que en otros lenguajes, y representan datos en sí mismos.

2. Ejemplos de constantes:

“Juan”....... constante tipo string

234 ........... constante tipo integer

Page 64: Tema General Sistemas Basados en Conocimientos

Estructura elemental de un programa TProlog

En esta primera aproximación a un programa TProlog indicaremos que está formado por tres bloques: predicates, clauses y goal. En realidad un programa PROLOG tiene más componentes pero por el momento trabajaremos con éstos tres. Asimismo temporalmente codificaremos dentro del programa fuente los bloques predicates y clauses, mientras que el bloque goal lo haremos a través de la ventana de dialogo del ambiente TURBO PROLOG, a la cual accederemos con la opción RUN del menú principal de TURBO PROLOG.

Para codificar los bloques predicates y clauses que constituyen el programa fuente utilizamos la ventana de edición, después de seleccionar la opción EDIT del menú principal de TURBO PROLOG.

predicates

...

clauses

...

goal

...

El programa se inicia invocando la primera cláusula del goal, luego la segunda y así sucesivamente cada una de las cláusulas que constituyen el bloque goal. Estas a su vez invocan cláusulas implementadas en el bloque clauses. Mientras las cláusulas sean verdaderas la ejecución del programa continúa. Cuando alguna cláusula falla (es falsa), TPROLOG busca otra cláusula del mismo nombre para tratar de encintar alguna verdadera, de no encontrar ningún verdadera, el programa termina (falla).

La codificación de predicados tiene la sintaxis general:

predicado(lista de argumentos)

En forma específica, a manera de ejemplo tenemos:

predicado(tipo_dato_1, tipo_dato_2, tipo_dato_3,........tipo_dato_n)

En ésta declaración de predicado los argumentos tienen un atributo adicional que indica si contienen valores de entrada o de salida exclusivamente o de entrada/salida a la vez según el contexto. Cuando se trata de predicados declarados por el usuario es responsabilidad conocer si el argumento será de entrada o de salida. Cuando se trata de predicados predefinidos por PROLOG, se adjunta en la documentación de ayuda la

Page 65: Tema General Sistemas Basados en Conocimientos

clave de entrada/salida que corresponde al predicado. Se utiliza un formato muy simple, por ejemplo: (i,o,i,o) se interpreta como que el primer y tercer argumentos son de entrada (input) y que el segundo y cuarto argumentos son de salida (output).

Ejemplo:

predicates

edad(string, integer)

sexo(string, integer)

datos(string, string, string, string, string)

Observe:

El uso de los paréntesis. string significa tipo de dato cadena integer significa tipo de dato entero Los tipos de datos están separados por el caracter coma ‘,’ Al terminar la declaración de cada predicado no se ha escrito punto final.

Normalmente se espera que los predicados tengan que ver directamente con la solución de un problema, sin embargo, para efectos de completar el programa de computador tales como inicializar variables al inicio del programa o almacenar información en disco al finalizar el mismo, o ejecutar procedimientos de control de menús, etc, el usuario declara predicados (extra lógicos) con o sin argumentos.

Ejemplo:

predicates

inicio,

menú,

opcion(char),

programa,

fin.

Observe:

No se han usado los paréntesis, ni se han declarado tipos de datos en los predicados inicio, menu, programa y fin.

Se han usado los paréntesis y ni se ha declarado tipo de datos en el predicado opcion.

Page 66: Tema General Sistemas Basados en Conocimientos

Se mantiene la regla que al terminar la declaración de cada predicado no se ha escrito punto final.

La codificación de cláusulas atómicas (hechos o datos) tiene la siguiente sintaxis:

cláusula(dato_1, dato_2, dato_3,........dato_n).

Ejemplo:

clauses

edad(“Juan”,20).

sexo(“Pilar”,”femenino”).

datos(“auto”,”NISSAN”,”blanco”,”AG1526”,”1,987”).

Observe:

El uso de los paréntesis. Los datos tipo string se codifican entre comillas. Los datos tipo integer se codifican como tales. Los datos están separados por el caracter coma ‘,’ y se codifican de acuerdo al

tipo declarado. Al terminar la codificación de cada cláusula se ha escrito punto final.

La codificación de cláusulas compuestas (reglas de producción) tiene la siguiente sintaxis:

CC :- C1, C2, C3, .......... , Cn.

Donde:

CC constituye la cláusula objetivo y C1, C2, C3 y Cn constituyen cláusulas componentes.

Ejemplo:

clauses

hermano(A,B):- sexo(A,”masculino”),

padre(P,A),

padre(P,B),

madre(M,A),

Page 67: Tema General Sistemas Basados en Conocimientos

madre(M,B),

A <> B.

Observe:

El uso de los paréntesis El uso de variables: A, B, P, M. El uso de la constante “masculino”. El uso del símbolo dos puntos guión ‘:-’ que se lee ”SI”. El uso del símbolo coma ‘,’ que se lee “Y”, después de cada cláusula. permite separar los datos entre sí. Los datos se codifican de acuerdo al tipo declarado y están separados por

coma. Al terminar la codificación de la cláusula compuesta se ha escrito punto final.

Para efectos de programación se pueden implementar cláusulas (extralógicas) con o sin argumentos.

Ejemplo:

clauses

opcion(‘1’):- write(“hola”).

programa:- inicio,

menu.

fin.

Page 68: Tema General Sistemas Basados en Conocimientos

Predicados extralógicos

TProlog define una serie de predicados estandard para complementar las tareas propias del computador, tales como, limpiar pantalla, leer e imprimir datos, etc. En éste capítulo presentamos algunos de estos predicados:

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

Predicado: WRITE

Sintaxis : write(Lista de argumentos) ............. (o,...............)

Donde: Lista de argumentos puede ser uno o más argumentos separados por comas.

Los argumentos pueden ser son constantes o variables ligadas.

Función: Escribe sobre el dispositivo de salida el valor de los argumentos.

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

Predicado: READLN

Sintaxis: readln(X) ............. (o)

Donde: X es una variable libre cuando el predicado es invocado

X es de tipo string o symbol

Función : Lee desde el dispositivo de entrada una cadena hasta que encuentra un salto de linea. En el caso del teclado, el salto de linea corresponde a la tecla <enter>.

La cadena es ligada a la variable X.

Nota : Invocando el predicado readln(_) hace que el programa detenga su ejecución hasta que se presione <enter>.

En éste caso se dice que que el argumento corresponde a una variable anónima.

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

Predicado: READINT

Sintaxis : readint(X) ............. (o)

Donde: X es una variable libre cuando el predicado es invocado

Page 69: Tema General Sistemas Basados en Conocimientos

X es de tipo integer

Función : Lee desde el dispositivo de entrada una cadena hasta que encuentra un salto de linea. En el caso del teclado, el salto de linea corresponde a la tecla <enter>.

La cadena es convertida internamente al tipo integer y ligada a la variable X.

Si la cadena leída no corresponde con la sintaxis del tipo integer se produce una falla.

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

Predicado: READREAL

Sintaxis : readreal(X) ............. (o)

Donde: X es una variable libre cuando el predicado es invocado

X es de tipo real

Función : Lee desde el dispositivo de entrada una cadena hasta que encuentra un salto de linea. En el caso del teclado, el salto de linea corresponde a la tecla <enter>.

La cadena es convertida internamente al tipo real y ligada a la variable X.

Si la cadena leída no corresponde con la sintaxis del tipo real se produce una falla.

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

Predicado: READCHAR

Sintaxis : readchar(X) ............. (o)

Donde: X es una variable libre cuando el predicado es invocado

X es de tipo char

Función : Lee desde el dispositivo de entrada un caracter. (No necesita salto de linea)

El caracter es ligado a la variable X.

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

Predicado: CLEARWINDOW

Sintaxis : clearwindow

Page 70: Tema General Sistemas Basados en Conocimientos

Función : Limpia la ventana activa.

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

Predicado: MAKEWINDOW

Sintaxis : makewindow(NunVent, AtrPant, AtrMarco, TitVent, Fila, Col, Prof, Ancho )

(i, i, i, i, i, i, i, i)

(o, o, o, o, o, o, o, o)

Donde: NumVent... integer ..... Número de Ventana

AtrPant...... integer ..... Atributo de Pantalla

AtrMarco.. integer ..... Atributo del Marco

TitVent ..... string ........ Título de la Ventana

Fila ........... integer ...... Número de Fila, esquina superior izquierda

Col ........... integer ...... Número de Columna, esquina superior derecha

Prof .......... integer ...... Número de filas de la Ventana

Ancho ....... integer ...... Número de columnas de la Ventana

Función 1 : Crea una ventana con los parámetros de entrada.

Función 2 : Liga los valores de la ventana activa con las variables presentadas como argumentos.

A continuación se presenta la tabla de atributos de color.

COLOR DE PANTALLA COLOR DEL CARACTER

Negro ................................ 0 Negro ................. 0

Azul ................................... 16 Azul .................... 1

Verde ................................ 32 Verde ................. 2

Cyan .................................. 48 Cyan ................... 3

Rojo .................................. 64 Rojo ................... 4

Page 71: Tema General Sistemas Basados en Conocimientos

Magenta ............................ 80 Magenta ............. 5

Marrón ............................. 96 Marrón ............... 6

Blanco .............................. 112 Blanco ............... 7

Grey .................................. 8

Azul encendido ................ 24

Verde encendido .............. 40

Rojo encendido ............... 72

Magenta encendido ......... 88

Amarillo ........................... 104

Blanco alta intensidad ..... 120

Se pueden conseguir combinaciones de atributos sumando el valor de atributo de caracter mas atributo de color de pantalla.

Para asignar atributo de encendido/apagado sucesivo agregue 128 al resultado anterior

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

Predicado: BEEP

Sintaxis : beep

Función : Genera la emisión de un sonido corto a través del parlante de computador.

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

Predicado: NL

Sintaxis : nl

Función : Genera un salto de linea, ubican el cursor al inicio de la siguiente linea.

Page 72: Tema General Sistemas Basados en Conocimientos

Tratamiento de variables en TProlog

1. Por el momento, es conveniente codificar un programa utilizando letras minúsculas, a menos que se indique lo contrario.

2. Los nombres de variables o identificadores en PROLOG se codifican con por lo menos la primera letra en mayúscula.

Ejemplos: Contador, Suma, Hijo, A, M, Respuesta, etc.

3. En TProlog no existe el concepto de asignación de valor a una variable, lo que en otros lenguajes de programación se denomina operación de asignación. En TProlog corresponde a un enunciado lógico y en el caso que la variable de la izquierda no esté ligada, se resuelve la expresión de la derecha y se liga la variable de la izquierda.

4. Se dice que una variable es libre (no ligada) cuando no se ha logrado emparejar valor alguno

5. Se dice que una variable está ligada cuando se ha logrado emparejar un valor de acuerdo al tipo de dato declarado.

6. Una variable ligada no se puede emparejar dos veces, dentro de la misma cláusula.

Ejercicio:

predicates

deporte(string, string)

clauses

deporte(“Juan”,”basketball”)

1. En el programa:

Se pueden presentar los siguientes objetivos (goal) a manera de ejemplos:

deporte(A,B)................................. A ligado con “Juan”, B ligado con “basketball”.

deporte(“Juan”,C)........................ C ligado con “basketball”. deporte(D,”basketball”).............. D ligado con “Juan”. deporte(“Pedro”,E)...................... E no ligado. deporte(F,”voleyball”)................. F no ligado.

2. En los siguientes ejemplos se presenta otra forma de ligar variables con su respectiva interpretación:

Page 73: Tema General Sistemas Basados en Conocimientos

X1 = 5 ............... X1 ligado con 5.......................... tipo integer X2 = “Carlos”.... X2 ligado con “Carlos”............. tipo string X3 = ‘3’ .............. X3 ligado con ‘3’....................... tipo char X4 = 4.5 ............ X4 ligado con 4.5 .................... tipo real

VARIABLES ANONIMAS

Algunas veces no se requiere el valor de un argumento en cierta cláusula, PROLOG provee de un concepto de variable anónima, que se denota por el caracter subrayado “_” y al momento de leer el predicado se ignora el valor del argumento referenciado.

A manera de ejemplo, supongamos que tenemos el predicado alumno: alumno(Nombre, Sexo, Talla, Peso)

y en cierta cláusula solo interesa el nombre y el peso, podemos invocar la siguiente cláusula: alumno(Nombre, _, _, Peso)

que se lee: el alumno “Nombre” tiene un peso de “Peso” kilos.

ENTRADA / SALIDA ESTANDARD

Los predicados estandard para entrada/salida son read y write descritos anteriormente. Veamos un ejemplo simple. Programa que lee una cadena relacionada con cierto valor:

predicates

lee_c(string,string) /* lee_c(M, C): muestra el mensaje M y lee la cadena C */

clauses

lee_c(M,C):- write(M),

beep,

readln(C).

goal

clearwindow,

lee_c(“Entre un nombre: “,X),

write(“Nombre leído: “,X),

nl,

lee_c(“Presiona <enter> para continuar ... “,_).

Page 74: Tema General Sistemas Basados en Conocimientos

2.6 Recursividad

Fuente: http://www.mundonet.es/control-de-flujo-estructuras-iterativas-ejercicio-3.html?Pg=Entrega10.htm

La recursividad es una técnica de programación muy importante para quienes trabajan en PROLOG. Si Ud. escucha por primera vez éste término, le recomiendo leer detenidamente éste capítulo, en caso contrario, si Ud. ya conoce el concepto le recomiendo leer los programas codificados en PROLOG y pasar al siguiente capítulo.

Desde el punto de vista conceptual decimos que una definición es recursiva cuando se basa en ella misma, mientras que desde el punto de vista de la programación la forma más conocida de recursividad es cuando un procedimiento o función se invoca a sí mismo. También existe recursividad cuando la declaración de un tipo de datos se hace en base a sí misma. Cómo podemos definir algo sobre sí mismo?. Veamos un ejemplo. Imaginemos un profesor de cierto curso de dibujo frente a una pizarra y decide dibujarse el mismo y la pizarra en la pizarra del aula. Que ocurrió? Dentro de la pizarra real del aula aparece un rectángulo que es la pizarra recursiva y en ella incluido el dibujo del profesor. Si repetimos la experiencia varias veces tendremos cada vez una nueva pizarra dentro de otra. Eso ocurre más o menos en los procesos recursivos.

Cómo entendemos la recursividad ?

Recordemos en primera instancia como se conciben en implementan los procesos no recursivos que en éste capítulo denominaremos iterativos.

El factorial de un número puede ser expresado en forma iterativa. Por ejemplo:

factorial(0) = 1

Page 75: Tema General Sistemas Basados en Conocimientos

factorial(1) = 1

factorial(2) = 1 * 2 = 2

factorial(3) = 1 * 2 * 3 = 6

factorial(4) = 1 * 2 * 3 * 4 = 24

factorial(5) = 1 * 2 * 3 * 4 * 5 = 120

Entonces como una consecuencia de estos resultados podemos deducir que:

factorial(8) = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40580

La implementación de ésta fórmula en un lenguaje de computador con FOR es muy simple. Por ejemplo para calcular el factorial de 8 tendremos:

n = 8,

factorial = 1,

FOR i = 2 to n DO

factorial = i * factorial .

Esta implementación realmente lo que está desarrollando es una secuencia del siguiente tipo:

factorial(0) = 1

factorial(1) = 1 * factorial(0)

factorial(2) = 2 * factorial(1) = 2

factorial(3) = 3 * factorial(2) = 6

factorial(4) = 4 * factorial(3) = 24

factorial(5) = 5 * factorial(4) = 120

Desde otro punto de vista cuando se trabaja con asignación estática de memoria son muy convenientes las estructuras de control de flujo iterativas. Así implementar soluciones con arreglos (arrays) o procesos repetitivos se facilita mucho si se tienen estructuras tales como FOR, DO, CASE, WHILE, REPEAT ... UNTIL, etc.

Imprimir los primeros 20 elementos de un arreglo notas se consigue con la implementación del siguiente código Pascal:

Page 76: Tema General Sistemas Basados en Conocimientos

FOR i = 1 TO 20 DO writeln(notas(i));

El proceso repetitivo de la ejecución de un menu se puede programar de la siguiente manera:

opcion = “”

MIENTRAS opcion <> “fin”

INICIO

{cuerpo del menu]

LEER(opcion)

proceso(opcion)

FIN

Muchos lenguajes como “C” y Pascal ejecutan procesos iterativos basados en éstas estructuras. Esto es propio de ellos porque han sido diseñados para implementar soluciones algorítmicas.

Cambiemos de giro a nuestros comentarios.

La definición recursiva del factorial de un número es:

factorial(0) = 1

factorial(n) = n * factorial(n-1), si N > 0

La aplicación de ésta fórmula recursiva nos permite deducir que:

factorial(8) = 8 * factorial(7)

Observe que para calcular el factorial de 8 se requiere el factorial de 7, que en éste momento no conocemos. Así para calcular el factorial de 7 necesitamos conocer el factorial de 6. Para calcular el factorial de 5 necesitamos conocer el factorial de 4 y así sucesivamente. Cuando lleguemos al factorial de 0 podemos detener el proceso recursivo y completar los factoriales que quedaron pendientes de solución.

Los lenguajes como “C” y Pascal tienen la capacidad de procesar funciones recursivas, ademas tienen definida la operación de asignación por lo que el siguiente código implementa la función factorial de un número en forma recursiva:

Page 77: Tema General Sistemas Basados en Conocimientos

FUNCION factorial(n:integer)

INICIO

SI n = 0 ENTONCES factorial = 1.

SI n > 0 ENTONCES factorial = n * factorial(n-1).

FIN

Observamos que el código comprendido entre el bloque INICIO ... FIN es muy semejante a la definición recursiva por lo que resulta una codificación más natural que la usada con la estructura FOR.

La implementación de un procedimiento menu desde un enfoque recursivo podría ser:

menu()

INICIO

{cuerpo del menu}

LEER(opcion)

proceso(opcion)

SI opcion <> “fin” ENTONCES menu

FIN

Desde otro punto de vista cuando se trabaja con asignación dinámica de memoria es muy importante el tratamiento de punteros y las implementaciones se basan en procesos recursivos. La definición de estructuras de datos tipo listas o árboles requiere declaraciones recursivas y sus procesos son implementados también recursivamente.

El siguiente código declara recursivamente la estructura lista de números:

NUEVO_TIPO

lista_numeros = REGISTRO

INICIO

dato(ENTERO)

sig_dato(PUNTERO a lista_numeros)

FIN

Page 78: Tema General Sistemas Basados en Conocimientos

Mientras que el siguiente código implementa un procedimiento recursivo para recorrer la lista (Intente implementarlo usando FOR):

recorre_lista()

INICIO

FIN

Que sucede cuando un procedimiento se invoca a sí mismo?

Ocurre exactamente lo mismo que cuando un procedimiento invoca a otro. Se interrumpe el procedimiento que hace la llamada, las variables locales y la dirección de retorno se almacenan en una pila y se pasa el control al procedimiento invocado, cuando éste último termina su ejecución se retira de la pila la dirección de retorno y las variables locales continuando normalmente el procedimiento inicial.

La situación se complica cuando se invoca muchas veces un procedimiento y es posible que se sobrecargue la pila ocasionando problemas de memoria que de acuerdo al tipo de compilador y al lenguaje tendrá diferentes repercusiones.

En toda codificación recursiva es importante distinguir dos partes. La primera es aquella en la que el procedimiento se invoca a sí mismo (En el caso del factorial: SI n > 0 ENTONCES factorial = n * factorial(n-1). En el caso del menu: SI opcion <> “fin” ENTONCES menu) y la segunda es aquella en la que se indica el punto en el cual se termina de auto invocar el procedimiento (En el caso del factorial éste punto se da cuando n = 0 y en el caso del menú se da cuando opcion = “fin”). Esta segunda parte cumple un rol muy importante pues de otra manera el proceso recursivo nunca terminaría y se produciría la sobrecarga de la pila con la consecuente interrupción del programa.

Porqué es importante la recursividad para los programadores en PROLOG?

Recordemos que en PROLOG no es posible ligar una variable dos veces dentro de la misma cláusula por lo tanto estas expresiones son erradas:

X = X +1

factorial = i *factorial

Para implementar en PROLOG estas expresiones es necesario utilizar una variable libre que reciba el valor de la anterior incrementado:

X_N = X + 1 C

Factorial_N = I * Factorial

Page 79: Tema General Sistemas Basados en Conocimientos

Desde otro punto de vista recordemos que PROLOG no tiene predefinidas las estructuras de control de flujo FOR, DO, CASE, WHILE, REPEAT ... UNTIL, etc. Esto es razonable por cuanto la concepción de PROLOG no es precisamente el procesamiento algorítmico.

Cómo podemos escribir código recursivo PROLOG a partir de una fórmula?

En verdad que escribir cláusulas recursivas para un principiante siempre resulta una tarea compleja, pero si éste es su caso no se preocupe, le aseguro que luego de adquirir cierta pericia encontrará en la recursividad un forma muy poderosa y elegante de resolver problemas en cualquier lenguaje.

Para ello planteamos un método de aproximaciones que nos permitirá a partir de la fórmula llegar a los predicados y luego casi en forma inmediata escribir el código PROLOG.

Usaremos a manera de ejemplo la definición matemática recursiva del factorial:

factorial(0) = 1

factorial(N) = N * factorial (N - 1)

1. Expresamos una primera aproximación de predicados en base a la definición recursiva de factorial:

"factorial de 0 es 1."

"factorial de N es (N * factorial de (N-1)) Si N > 0."

2. La expresión factorial de (N-1) es inconsistente por lo que debe ser reformulada como:

factorial de (N-1) es FACTN1

Donde FACTN1 es una variable que contendrá el factorial de (N-1).

3. Tendremos entonces los siguientes predicados:

"factorial de 0 es 1."

"factorial de N es (N * FACTN1) Si N > 0 y

factorial de (N-1) es FACTN1."

4. Recuerde que en lógica de predicados de primer orden solo existen variables individuales por lo que en la expresión factorial de N es (N * FACTN1), la inclusión del producto (N * FACTN1) no es válida. La solución es reemplazar este producto por una variable en éste caso F.

Page 80: Tema General Sistemas Basados en Conocimientos

5. Tendremos entonces los siguientes predicados:

"factorial de 0 es 1."

"factorial de N es F Si N > 0 y

factorial de (N-1) es FACTN1 y

F es N * FACTN1."

6. Asimismo la diferencia (N-1) debe ser reemplazada por una variable, en éste caso N1. (por la razón mencionada en el ítem 4).

7. Tendremos entonces los siguientes predicados:

"factorial de 0 es 1."

"factorial de N es F Si N > 0 y

N1 es N - 1 y

factorial de N1 es FACTN1 y

F es N * FACTN1."

8. Habiendo completado el planteamiento de los predicados, reemplazamos la palabra “Si” por el símbolo “:-” y los conectores “y” por comas “,” consiguiendo en forma inmediata la codificación PROLOG. El predicado "factorial de N es F" sugiere la forma factorial(N,F)

9. De acuerdo con el predicado anterior tendremos el siguiente código PROLOG:

predicates

factorial(integer, integer)

clauses

factorial(0,1).

factorial(N,F):- N>0,

N1=N-1,

factorial(N1,FACTN1),

F=N*FACTN1.

Page 81: Tema General Sistemas Basados en Conocimientos

En conclusión:

Una cláusula es recursiva cuando se invoca a ella misma. Los procesos recursivos son contrarios a los procesos iterativos. Los procesos recursivos requieren grandes cantidades de memoria.

Page 82: Tema General Sistemas Basados en Conocimientos

Actividades de análisis y comprensión

Preguntas de reflexión.

Cómo hemos comentado no existe una definición universal de la inteligencia artificial, sin embargo podemos expresar un concepto que nos permita definir los objetivos y metodologías usadas durante nuestro curso, asimismo te invitamos a responder algunas preguntas sobre la estructura de un sistema basado en conocimientos.

1. ¿Puedes proponer un concepto de la inteligencia artificial?2. ¿Qué objetivos crees que debe tener la inteligencia artificial? 3. ¿A quién se denomina el padre de la inteligencia artificial?4. ¿Cuál es el componente que trata la información contenida en una base de

conocimientos?5. ¿Existe algún nivel de interacción entre un sistema basado en conocimientos y

el hombre?6. ¿Cuáles son los componentes de una base de conocimientos?

Retroalimentación

1. Una definición fue presentada en el documento: “la IA es la rama de la ciencia de la computación que estudia la resolución de problemas no algorítmicos mediante el uso de cualquier técnica de computación disponible, sin tener en cuenta la forma de razonamiento subyacente a los métodos que se apliquen para lograr esa resolución.”

2. Se proponen los siguientes objetivos de la inteligencia artificial:

(a) estudiar el comportamiento inteligente de las personas humanas, y

(b) hacer programas de ordenador inteligentes capaces de imitar el comportamiento humano.

3. Alan Turing es considerado el padre de la Inteligencia artificial.

4. El motor de inferencias permite dar tratamiento a la información contenida en una base de conocimientos.

5. Todo sistema basado en conocimiento tiene una interfaz (en la actualidad con características gráficas o visuales) para comunicar al sistema con el ser humano.

6. Una base de conocimientos está formada por reglas y hechos.

Page 83: Tema General Sistemas Basados en Conocimientos

Actividad de análisis y comprensíón.

Te invitamos a visualizar los siguientes videos

Historia de la inteligencia artificial: https://www.youtube.com/watch?v=ivW6zUse6h0

El test de turing: https://www.youtube.com/watch?v=Y90a6Xwwh3w Máquina logra aprobar el test de Turing: www.youtube.com/watch?

v=TQuszZQKQTc

Después de haber observado detenidamente los vídeos responde a las siguientes preguntas:

Pregunta

Una neuroma de McCullock-Pitts tiene:

Axón.

Sangre.

Leucocitos.

Dendritas.

Cuerpo.

Células madre.

Sinapsis.

RetroalimentaciónLa neurona artificial propuesta por McCullock-Pitts contiene Axón, dendritas, cuerpo y sinapsis.

El test de Turing permite medir:

La capacidad de razonamiento de una máquina.

La capacidad de comportamiento humano de una máquina.

La posibilidad de una máquina para convertirse en ser humano

La capacidad de programación que tenga una máquina.

La capacidad evolutiva de una máquina.

RetroalimentaciónEl test de Turing permite conocer la capacidad de comportamiento humano de una máquina.

Page 84: Tema General Sistemas Basados en Conocimientos

Cómo se llama el primer robot que supera el test de Turing?

Arturito.

Robocop.

Boris.

Eugenne.

Asimo.

Retroalimentación

En Junio del 2015 cuando se realiza un concurso organizado por la Real Society recordando el 60° aniversario de la muerte de Turing, una máquina conocida como “bot conversacional Eugene Goostman” logra pasar el test de Turing.

Page 85: Tema General Sistemas Basados en Conocimientos

Bibliografía

1. Bourcier, D. Inteligencia artificial y derecho. Disponible en la Biblioteca de la USS.

2. Russell y Norving (2004). Inteligencia artificial: Un enfoque moderno. Pearson Education S.A. 2da edición. España. Disponible en la Biblioteca de la USS.

3. Delgado, A. Inteligencia artificial y minirobots. Disponible en la Biblioteca de la USS.

4. Escolano, F. Inteligencia artificial, modelos,técnicas y áreas de aplicación.. Disponible en la Biblioteca de la USS.

5. Nilsson, N. Inteligencia artificial: Una nueva síntesis. Disponible en la Biblioteca de la USS.

6. Pajarez, M. Inteligencia artificial e ingeniería del conocimiento. Disponible en la Biblioteca de la USS.

7. Palma, J. Inteligencia artificial. Disponible en la Biblioteca de la USS.8. Ponce, P. Inteligencia artificial con aplicaciones en ingeniería. Disponible en la

Biblioteca de la USS.9. Sistemas basados en conocimientos.

http://www.wolnm.org/apa/articulos/Sistemas_Basados_Conocimiento.pdf?target=

Page 86: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadas

Para saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: La inteligencia artificial, Hacia donde nos lleva?

URL: http://www.comoves.unam.mx/numeros/articulo/2/la-inteligencia-artificial-hacia-donde-nos-lleva

Breve descripción:

El documento presenta un análisis sobre la capacidad de inteligencia artificial que pueden adquirir las máquinas, incluye una entrevista al Dr. Ismael Espinoza del Laboratorio de Cibernética de la UNAM quién analiza la tendencia en la disciplina y el impacto en las personas.

…………………………………………………………………………………………………………………….…………..

Documento 2: El futuro de la inteligencia artificial y la cibernética

URL: https://www.bbvaopenmind.com/articulo/el-futuro-de-la-inteligencia-artificial-y-la-cibernetica/?fullscreen=true

Breve descripción:

El autor Kevin Warwick, Profesor de cibernética de la Universidad de Reading, analiza los cyborg que son seres humanos que han recibido implantes de componentes electrónicos para realizar tareas propias de los humanos, por ejemplo visión, audición, locomoción, etc.

Page 87: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

No existe una definición única de la inteligencia artificial. Para nuestros fines de aprendizaje la IA busca realizar programas de

computador que evidencien un comportamiento humano para resolver determinados problemas.

A partir de la década del 50 se inicia formalmente la historia de la IA. Existen varias posturas de diferentes autores para clasificar los hitos históricos

de la IA. Se reconocen autores que han apoyado el desarrollo de la IA a Turing, Minsky,

McCarthy, Rossenblant, entre otros. Después de 60 años una computadora logra pasar satisfactoriamente el test de

Turing. Existen aplicaciones confiables de la IA en diversas empresas para tomar

decisiones. Los sistemas basados en conocimientos presentan estructuras bien definidas,

por lo que pueden ser programados en computadores. Los sistemas expertos, generan soluciones y son capaces de aprender, justificar

sus resultados e interactuar con seres humanos.

Page 88: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?

Page 89: Tema General Sistemas Basados en Conocimientos

Tema 03. Continuando con Prolog

Fuente:http://www.desarrolloweb.com/articulos/1573.php

Bienvenida

Estimados estudiantes ¡bienvenidos! a la tercera semana del curso, donde continuaremos estudiando el lenguaje Prolog. Durante esta semana trabajaremos con dos IDEs adicionales, usaremos SWI-Prolog en sus dos versiones texto y gráficos y el IDE Visual Prolog en su versión comunitaria. Esta semana conoceremos las rutas para buscar, descargar e instalar los IDEs e implementamos ejemplos de programación en Prolog que nos permitirán conocer el tratamiento de variables y la recursividad. Los contenidos se complementan con interesantes lecturas, valiosos videos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados.

¡Avancemos en el interesante mundo del tratamiento del conocimiento!

Page 90: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente: Fuente:http://www.swi-prolog.org/gtrace.html

La programación en Prolog es conocida como declarativa porque solo se requiere declarar hechos o datos considerados verdaderos y reglas que relacionan estos, el motor de inferencias de Prolog permite obtener conclusiones referidas a las reglas en forma automática, no se requiere programar algoritmos de búsqueda.

La sesión anterior tuvimos la oportunidad de escribir programas en Turbo Prolog, durante esta semana trabajaremos con SWI-Prolog y con Visual Prolog, dos IDEs de distribución gratuita, sobre los cuales podemos escribir nuestros programas en Prolog.

En Internet existen numerosas referencias a tutoriales y manuales relacionados con la descarga, instalación y ejecución de los IDEs mencionados. En nuestro caso mostraremos las rutas de descarga desde las páginas oficiales y los métodos de instalación y ejecución del primer programa conocido como “hola mundo”. Luego desarrollaremos programas que nos permitan comprender la programación Prolog que se diferencia de la programación algorítmica.

En los programas que abordaremos intentaremos proporcionar las bases para el procesamiento de la información convirtiéndola en conocimiento. A manera de ejemplo proporcionaremos datos sobre los miembros de cierta familia, luego incluiremos reglas que declaren las relaciones entre ellos tales como padre, madre, hermano, abuelo, etc, y consultaremos a Prolog sobre las relaciones familiares declaradas anteriormente. Podemos seguir este esquema para tratar cualquier sistema de conocimientos, por ejemplo, la familia de productos de un almacén, información de enfermedades y síntomas para hacer diagnóstico médico, los componentes de una

Page 91: Tema General Sistemas Basados en Conocimientos

computadora para realizar configuraciones, los hábitos y costumbres de compra de cierto grupo de personas para generar ofertas comerciales, los perfiles de profesionales para cubrir puestos de trabajo, etc.

SWI-Prolog es un software de libre disposición de la Universidad de Amsterdam disponible en http://www.swi-prolog.org/ está basado en la sintaxis de Edimburgo, tradicionalmente fue interpretado pero ahora se puede compilar y tiene abundante información, tutoriales y manuales de referencia. Corre sobre una variedad de máquinas con S.O Windows, Linux.

Visual Prolog es un lenguaje de programación potente que combina las mejores características de los paradigmas de programación lógica, funcional y orientadas a objetos de una manera consistente y elegante. Con Visual Prolog se pueden crear aplicaciones para las plataformas Microsoft Windows 32/64. Es compatible con las soluciones cliente-servidor y patrones MVC. Visual Prolog es especialmente adecuado para tratar con conocimientos complejos.

Page 92: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este tercer tema:

Capacidades

Conoce el procedimiento para descargar e instalar software de programación en PROLOG.

Conoce y utiliza el IDE SWI-Prolog para el procesamiento de reglas combinando interfaces gráficas.

Conoce y utiliza el IDE Visual Prolog para desarrollar aplicaciones combinando el procesamiento del conocimiento con interfaces visuales.

Actitudes

Valora la problemática para representar conocimiento. Reconoce un problema a través de acciones y alternativas. Asume responsabilidad en el cumplimiento de las actividades programadas. Asume una posición pro activa respecto a las técnicas de representación del

conocimiento. Valora la tecnología visual para la implementación de proyectos basados en

conocimiento.

Page 93: Tema General Sistemas Basados en Conocimientos

Marco conceptual

Analiza el marco conceptual del temaObserva detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 94: Tema General Sistemas Basados en Conocimientos

3.1 Descarga e instalación de SWI-Prolog.

Fuente: http://www.swi-prolog.org/download/stable

SWI-Prolog es un IDE gratuito para desarrollar aplicaciones escritas en lenguaje Prolog. Es utilizado ampliamente en la educación, investigación y en el mundo empresarial. Desarrollado desde 1987.

Se descarga desde su página inicial: http://www.swi-prolog.org/download/stable seleccionando el sistema operativo de nuestra máquina. El archivo descargado tiene extensión .exe, luego se ejecuta y se ingresa la siguiente información:

Ruta de instalación: C:\Program Files\swipl

Extension for Prolog files: pl

Start menu program group: SWI-Prolog

Se sugiere descargar el manual de referencia original: http://www.swi-prolog.org/download/stable/doc/SWI-Prolog-6.6.6.pdf

Page 95: Tema General Sistemas Basados en Conocimientos

Ejecutando el primer programa

Ocultar

SWI-Prolog trae por defecto un programa denominado likes.pl disponible en la carpeta C:\Program Files\swipl\demo con el siguiente contenido:

%% Demo coming from http://clwww.essex.ac.uk/course/LG519/2-facts/index_18.html

%%

%% Please load this file into SWI-Prolog

%%

%% Sam's likes and dislikes in food

%%

%% Considering the following will give some practice

%% in thinking about backtracking.

%% ?- likes(sam,dahl).

%% ?- likes(sam,chop_suey).

%% ?- likes(sam,pizza).

%% ?- likes(sam,chips).

%% ?- likes(sam,curry).

likes(sam,Food) :-

indian(Food),

mild(Food).

likes(sam,Food) :-

chinese(Food).

likes(sam,Food) :-

Page 96: Tema General Sistemas Basados en Conocimientos

italian(Food).

likes(sam,chips).

indian(curry).

indian(dahl).

indian(tandoori).

indian(kurma).

mild(dahl).

mild(tandoori).

mild(kurma).

chinese(chow_mein).

chinese(chop_suey).

chinese(sweet_and_sour).

italian(pizza).

italian(spaghetti).

Observamos la declaración de las clausulas likes(X, Y ) , indian(X), mild(X), chinese(X), italian(X). las mismas que desde el punto de vista de un sistema basado en reglas las podemos catalogar como reglas de producción (likes) y el resto como hechos o datos.

Observar también que las palabras que comienzan con minúscula dentro de los paréntesis son constantes, mientras que las que comienzan con mayúscula son variables, sobre las que se aplica el emparejamiento durante el procesamiento backtracking.

Sugerimos los siguientes pasos para ejecutar un programa con SWI-Prolog:

1. Crear una carpeta C:\programasPL2. Dirigirse a la ruta del programa C:\Program Files\swipl\demo y copiar el

archivo likes.pl a la carpeta C:\programasPL3. Hacer doble clic en el archivo copiado, aparece la ventana de SWI-Prolog.4. En el prompt 1 ?- digitamos likes(sam, X).

Prolog responde: X = dah

Page 97: Tema General Sistemas Basados en Conocimientos

5. Presionamos Shift + ; y Prolog sigue respondiendo.6. El proceso termina cuando aparece el prompt 2 ? -

Continuamos realizando individualmente las siguientes consultas en forma sucesiva:

?- likes(sam,dahl).

?- likes(sam,chop_suey).

?- likes(sam,pizza).

?- likes(sam,chips).

?- likes(sam,curry).

Actividad de análisis y comprensión

Ocultar

Se sugiere analizar el comportamiento de las reglas cuando se realiza el backtracking de las reglas y emparejamiento de las variables.

De lo expuesto hasta el momento podemos deducir.

1. Los programas fuente para WSI-Prolog tienen extensión .pl2. El código fuente se puede escribir en cualquier procesador de textos (notepad

o wordpad).3. Haciendo doble clic sobre el archivo fuente se invoca SWI-Prolog.4. Es necesario conocer los conceptos de backtracking y emparejamiento.

Page 98: Tema General Sistemas Basados en Conocimientos

Escribiendo programas con SWI-Prolog.

Para escribir programas presentamos un primer método que consiste en usar un procesador de textos (Block de notas, WordPad) y luego ejecutarlos con SWI-Prolog.

Creamos un archivo texto denominado p01.pl en la carpeta C:\programasPL con el siguiente contenido:

%% Declaración de hechos

======================

hombre(pedro).

hombre(alberto).

hombre(jorge).

hombre(carlos).

hombre(juan).

Hacemos doble clic sobre el archivo creado se invoca automáticamente SWI-Prolog.

En el prompt 1 ?- podemos realizar consultas digitando por ejemplo: hombre(alberto). SWI-Prolog contesta con true indicando que es un dato verdadero. Si digitamos hombre(luis). SWI-Prolog responde false indicando que no es válido según los datos proporcionados al programa.

Creamos ahora un segundo programa al que denominaremos p02.pl con el siguiente contenido:

hombre(alberto).

hombre(jorge).

hombre(carlos).

hombre(angel).

mujer(flor).

mujer(manuela).

mujer(ana).

Page 99: Tema General Sistemas Basados en Conocimientos

mujer(rosario).

padre(alberto,carlos).

padre(alberto,jorge).

padre(alberto,manuela).

padre(alberto,ana).

padre(juan,alberto).

padre(juan,angel).

matrimonio(alberto,flor).

matrimonio(juan,rosario).

madre(M,H):- padre(P,H),

matrimonio(P,M).

hermano(H,X):- padre(P,H), padre(P,X),

hombre(X), H<>X.

hermana(H,X):- padre(P,H), padre(P,X),

mujer(X), H<>X.

abuelo(A,N):- padre(A,P),

padre(P,N).

abuela(AA,N):- abuelo(AO,N),

matrimonio(AO,AA).

Realizamos las consultas y analizamos las respuestas proporcionadas por SWI-Prolog:

matrimonio(juan, X). abuelo(X,Y). madre(A,B). hermana(P, Q).

Page 100: Tema General Sistemas Basados en Conocimientos
Page 101: Tema General Sistemas Basados en Conocimientos

3.2 Gráficos en SWI-Prolog.

Fuente:http://www.swi-prolog.org/packages/xpce/UserGuide/sec-4.1.html

SWI-Prolog permite la declaración de clausulas que representan datos o hechos (información) y reglas de producción que relacionan los hechos generación cierto conocimiento. Esta forma de trabajar es interesante, sin embargo debido al avance de la tecnología y de las pantallas que permiten trabajar con objetos visuales, es necesario disponer de herramientas que combinen el tratamiento lógico de la información con diferentes formas de presentar la información.

En este sentido SWI-Prolog permite diseñar interfaces gráficas para nuestros programas usando la librería XPCE. Proponemos el siguiente procedimiento, a manera de ejemplo:

1. Ejecutamos SWI-Prolog, aparece el prompt 1 ?- 2. Invocamos la librería pce: use_module(library(pce)).3. Creamos un objeto: new(@demo, dialog('Demo Window')).4. Agregamos atributos al objeto: send(@demo, append(text_item(name))).5. Mostramos el objeto: send(@demo, open). (Se observa la ventana del diálogo).6. Leemos los valores del display y los mostramos:

get(@demo, display, D).

get(@display, size, Size),

get(Size, width, W),

get(Size, height, H).

7. Leemos y mostramos el valor digitado:

get(@demo, member(name), TextItem),

Page 102: Tema General Sistemas Basados en Conocimientos

get(TextItem, selection, Text).

Hemos logrado generar objetos gráficos para combinarlos con las reglas implementadas en nuestros programas, a partir de ahora sugerimos seguir la documentación oficial de SWI-Prolog realizando las siguientes actividades:

1. Descargar la guía de usuario oficial: http://www.swi-prolog.org/download/xpce/doc/userguide/userguide.pdf

2. Implementar los ejemplos: http://www.swi-prolog.org/packages/xpce/examples.html

3. Resolvamos los siguientes ejercicios: http://www.swi-prolog.org/download/xpce/doc/coursenotes/coursenotes.pdf

Proponemos implementar un programa que genere una interfaz mostrando un texto y dos botones, uno de Aceptar y otro de Cancelar, luego se indica el botón que el usuario pulsará.

Presentamos un segundo método de escribir programas esta vez usando el editor de SWI-Prolog.

1. Ejecutamos SWI-Prolog, aparece el prompt 1 ?- 2. Invocamos el editor: emacs.3. Aparece la ventana del editor y escribimos el siguiente programa.

pregunta(Preg,Resp) :-

new(D, dialog('Pregunta')),

send(D, append,

label(pr,Preg,font('times','roman',16))),

send(D, append, button(si,message(D,return,'si'))),

send(D, append, button(no,message(D,return,'no'))),

send(D, default_button, si),

get(D, confirm, Rval),

free(D),

Resp = Rval.

Page 103: Tema General Sistemas Basados en Conocimientos

4. Usando el menú del editor grabamos el programa p03.pl en la carpeta C:\programasPL

File / Saves as

5. Compilamos el programa: Compile / Compile buffer6. Observar los mensajes el SWI-Prolog.7. Realizamos consultas. En el prompt 1 ?- digitamos:

pregunta(estas_de_acuerdo, Y).8. Observar los mensajes en SWI-Prolog.

Actividad de análisis y comprensión

Se solicita analizar e interpretar el significado de las clausulas de programa y comentar su funcionamiento.

Retroalimentación

1. pregunta(Preg,Resp) :- ..... Declaración de la clausula pregunta.2. new(D, dialog('Pregunta')), ..... Creamos un objeto de tipo diálogo, diferenciado

como D y título Pregunta3. send(D, append, label(pr,Preg,font('times','roman',16))), .....Agregamos un

objeto label al diálogo4. send(D, append, button(si,message(D,return,'si'))), .....Agregamos un objeto

botón al diálogo.5. send(D, append, button(no,message(D,return,'no'))), .....Agregamos un objeto

botón al diálogo.6. send(D, default_button, si), ..... Activamos por defecto al botón si.7. get(D, confirm, Rval), Confirmamos los eventos de los botones sobre el diálogo

y almacenamos el valor en Rval.8. free(D), ..... liberamos memoria.9. Resp = Rval. ..... Ligamos la variable Resp con el valor de Rval.

Page 104: Tema General Sistemas Basados en Conocimientos

3.3 Descarga e instalación de Visual Prolog.

Fuente: Fuente: http://1.bp.blogspot.com/-DK5ZOfbf2NI/TaTA_zznIgI/AAAAAAAAApU/wBSDzozyVnw/s1600/PDC_VisualProlog.png

Visual Prolog puede ser descargado desde un enlace en su página oficial: http://www.visual-prolog.com/ descargamos la última versión de Visual Prolog Personal Edition.

El archivo descargado tiene extensión .msi, simplemente hacemos doble clic y se inicia el proceso de instalación.

Page 105: Tema General Sistemas Basados en Conocimientos

3.4 Desarrollo de aplicaciones con Visual Prolog.

Iniciamos el trabajo con Visual realizando el tradicional Hello word, para ello te invitamos a seguir este enlace: http://www.visual-prolog.com/video/HelloWorld/ aunque la explicación está en ingles, la descripción en pantalla es suficientemente clara para comprender el procedimiento.

Ahora que conocemos el ambiente de Visual Prolog procederemos a escribir un programa. El objetivo es consultar datos relacionados con el parentesco estableciendo relaciones de hijo, padre y abuelo.

Proponemos el siguiente procedimiento:

1. Ingresamos a Visual Prolog.2. Creamos un proyecto: Project / New, ingresamos:

1. Project Name: Proy012. Project Kind: Console application

3. Hacemos doble clic en main.pro y reemplazamos el código por el siguiente:

implement main open core

domains sexo = femenino(); masculino().

class facts persona : (string Nombre, sexo Sexo). hijo : (string Persona, string Hijo).

clauses persona("Ana",femenino). persona("Pedro",masculino). persona("Juan",masculino). persona("Flor",femenino). hijo("Pedro","Judith"). hijo("Juan","Pedro"). hijo("Flor","Juan").

class predicates father : (string Persona, string Padre) nondeterm anyflow. clauses father(Persona, Padre) :- hijo(Persona, Padre), persona(Padre, masculino()).

Page 106: Tema General Sistemas Basados en Conocimientos

class predicates abuelo : (string Persona, string Abuelo) nondeterm (o,o). clauses abuelo(Persona, Abuelo) :- hijo(Persona, Hijo), father(Hijo, Abuelo).

clauses run():- console::init(), stdIO::write("\nPADRE:\n"), father(X, Y), stdIO::writef("% es padre de %\n", Y, X), fail. run():- stdIO::write("\nABUELO:\n"), abuelo(X, Y), stdIO::writef("% es abuelo de %\n", Y, X), fail. run():- stdIO::write("\nFin del proceso\n").end implement main

goal mainExe::run(main::run).

4. Reconstruimos el proyecto: build / build.5. Ejecutamos: build / Run in Window.6. Observar el resultado.

Actividad de análisis y comprensión

Se solicita analizar e interpretar el significado de las clausulas de programa y comentar su funcionamiento.

Page 107: Tema General Sistemas Basados en Conocimientos

Implementando el concepto de recursividad.

Fuente: http://www.latrinchera.org/foros/content.php?417-Historias-Matem%C3%A1ticas-IV-Matem%C3%A1ticas-apocal%C3%ADpticas

La técnica del backtracking se implementa en Visual Prolog a través de la recursividad, mostramos la aplicación con un ejemplo tradicional relacionado con el juego de las torres de Hanoi.

Se dispone de tres torres con determinado número de discos de diferentes diámetros. El punto inicial del juego consiste en colocar sobre una torre todos los discos, los de mayor diámetro abajo y sobre ellos los de menor tamaño, no está permitido colocar un disco de mayor tamaño sobre otro de menor tamaño. El objetivo es pasar todos los discos a otra torres y queden como el estado inicial, utilizando la tercera torre como temporal.

La solución en Prolog usando recursividad resulta una tarea sencilla y con código reducido. Presentamos a continuación un ejemplo.

Hanoi(0,_,_,_).

hanoi(N,Origen,Temporal,Destino):-

N1 = N-1,

hanoi(N1,Origen,Destino,Temporal),

movimientos(Origen,Destino),

hanoi(N1,Auxiliar,Origen,Destino).

movimientos(Origen,Destino):-

Page 108: Tema General Sistemas Basados en Conocimientos

write(' desde '),

write(Origen),

write(' hasta '),

write(Destino),

write('\n').

Toda definición recursiva necesita dos componentes la función recursiva (se invoca así misma) y el límite de la recursión. La función recursiva es hanoi(N,Origen,Temporal,Destino):- y el límite es Hanoi(0,_,_,_).

Implementamos este programa en Visual Prolog siguiendo el proceso del ejemplo anterior. Creamos un proyecto, cambiamos el código de main.pro por el siguiente código, construimos el proyecto y lo ejecutamos.

class h1 predicates hanoi : (unsigned N).end class h1

implement h1 domains torre = string.

clauses hanoi(N) :- mover(N, "izquierdo", "central", "derecho").

class predicates mover : (unsigned N, torre A, torre B, torre C). clauses mover(0, _, _, _) :- !. mover(N, A, B, C) :- mover(N-1, A, C, B), stdio::writef("mover disco desde el eje % al eje %\n", A, C), mover(N-1, B, A, C).end implement h1

goalconsole::init(),h1::hanoi(4).

Page 109: Tema General Sistemas Basados en Conocimientos

Actividad de análisis y comprensión

Se solicita analizar e interpretar el significado de las clausulas de programa y comentar su funcionamiento. Probar cambiando el número de discos h1::hanoi(5).

Aplicaciones en entornos visuales.

Implementaremos ahora un proyecto en modo gráfico (con objetos visuales). Este es un proceso secuencial y orientado a la versión del software disponible en el momento que se realiza la descarga, por lo que realizaremos una descripción del procedimiento dejando los detalles para explicaciones en línea.

Las aplicaciones visuales de Prolog combinan el procesamiento de reglas de producción con entornos de objetos gráficos tales como formularios, botones, cajas de textos, etiquetas, cajas de listas, etc. En este sentido debemos ser capaces de distinguir los momentos en que programamos funcionalidades netamente computacionales con aquellas referidas a la programación lógica.

Desarrollamos una aplicación muy sencilla que muestra rutas turísticas en función del tipo de clima y el tipo de lugar que se desea visitar, el interés por ahora no es mostrar el desarrollo de un sistema experto, lo que buscamos es mostrar el uso combinado de Prolog con funcionalidades requeridas por usuarios en modos gráficos.

Atendiendo a lo mencionado en los párrafos anteriores sugerimos el siguiente procedimiento, se espera que el estudiante tenga experiencia con herramientas de desarrollo visual. Recomendamos que se realice permanentemente build o Rebuild de nuestro proyecto a medida que avanzamos con el desarrollo.

1. Ejecutamos el IDE Visual Prolog.2. Creamos un proyecto, asignando un nombre y un ámbito (kind), en este caso

seleccionamos MDI, en versiones anteriores se selecciona GUI.3. Diseñamos el formulario.

1. Creamos un formulario, para ello creamos un nuevo paquete asignándole un nombre y relacionándolo con un objeto form (Clic derecho en el proyecto / ).

2. El formulario default proporcionado por Visual Prolog contiene botones (OK, Cancel y Help).

Page 110: Tema General Sistemas Basados en Conocimientos

3. Eliminamos los botones y nos quedamos solamente de Cancel a quien cambiamos el nombre por Salir.

4. Agregamos objetos al formulario:1. Etiqueta: Climas.2. Etiqueta: Lugares.3. Etiqueta: Rutas.4. Caja de lista: lbclimas.5. Caja de lista: lblugares.6. Botón: Consultar, btconsultar.7. Nuestro formulario queda de la siguiente manera.

5. Cuando se ejecuta el programa Visual Prolog proporciona opciones de menú. (build / Execute)

Page 111: Tema General Sistemas Basados en Conocimientos

6. Eliminamos las opciones de menu y creamos una nueva denominada Consulta. (Archivo TaskMenu.nmu)

7. Después de eliminar la opciones de menu en el formulario debemos eliminar su código correspondiente en el archivo taskwindow.pro.

8. El formulario default también presenta un menu denominado Window, para ocultarlo debemos modificar la linea mdiProperty : boolean= true. por esta mdiProperty : boolean = false. en el archivo taskwindow.pro

9. Nuestro formulario queda de la siguiente manera.

4. Implementamos la funcionalidad de la aplicación (Eventos de las opciones del menu y del formulario).

1. Relacionamos la opción Consultar con el formulario.1. En el archivo TaskWindow.pro agregamos el código.

Page 112: Tema General Sistemas Basados en Conocimientos

predicates onConsultar : window::menuItemListener.clauses onConsultar(W, _MenuTag):- Formulario = formulario ::new(W), Formulario: show().

2. Activamos el evento onShow del formulario dentro de ShowListener (en la ventana eventos)

3. En el archivo formulario.pro encontrarás una clausula para onShow que debes modificar

predicates onShow : window::showListener.

clauses onShow(_Dource, _Data):- lbclimas:add("Frio"), lbclimas:add("Templado"), lbclimas:add("Cálido"), lblugares:add("Museos"), lblugares:add("Playas"), lblugares:add("Ruinas").

4. Agregamos el evento clic sobre el objeto botón Consultar. (doble clic en el formato del formulario y aparece su código en el archivo formulario.pro). Aquí combinamos código de tratamiento visual con código Prolog para el tratamiento de reglas

5. Modificamos el siguiente código

predicates onBconsultarClick : button::clickResponder.clauses onBconsultarClick(_Source) = button::defaultAction:- lbrutas_ctl:clearAll(), lbclimas_ctl:getAllSelected(Climas, _), lblugares_ctl:getAllSelected(Lugares, _), [Clima | _ ]=Climas, [Lugar | _ ]=Lugares, codigo(Clima, Lugar, Codruta), ruta(Codruta, Ciudades), imprimir(Ciudades), !.

onBconsultarClick(_Source) = butto

Page 113: Tema General Sistemas Basados en Conocimientos

n::defaultAction:- vpiCommonDialogs::note("Mensaje","No hayresultados"), !.

5. Implementamos la lógica Prolog. Este código lo agregamos en el archivo formulario.pro a continuación de la codificación del evento onBconsultaCkick.

domains ciudades=string*. facts codigo : (string, string, integer). ruta : (integer, ciudades). clauses codigo("Frio","Ruinas",1). ruta(1,["Trujillo","Cuzco","Puno"]).

predicates imprimir : (ciudades).

clauses imprimir([H | C]) :- lbrutas:add(H), imprimir(C), !. imprimir([]):- lbrutas:add("--------------------------------"), !.

1. En el código encontramos:1. la declaración de hechos (facts) codigo y ruta.2. La declaración de la regla imprimir (procesa lista).

Page 114: Tema General Sistemas Basados en Conocimientos

6. Nuestra aplicación queda finalmente.

7. Se selecciona un tipo de clima, luego un tipo de lugar, presionamos CONSULTAR y la aplicación nos muestra una ruta adecuada. Como comentamos al inicio, el propósito no es desarrollar un sistema experto, sino mas bien es mostrar la programación combinada de Prolog con objetos visuales. Mencionamos que la referencia para este ejemplo se ha tomado de https://www.youtube.com/watch?v=lqGMBr4GhSo

Actividad de análisis y comprensión

Después de haber implementado los programas en los IDEs SWI-Prolog y Visual ProLog responde a las siguientes preguntas:

1. El juego las torres de Hanoi se implementa en Prolog usando:

Hechos, reglas y procedimientos

Recursividad

Iteraciones

Page 115: Tema General Sistemas Basados en Conocimientos

Predicados extralógicos

Programando algoritmos

Retroalimentación

La solución al problema de las torres de Hanoi se implementa con recursividad.

El IDE SWI-Prolog

Diferencia entre hechos y reglas

No diferencia entre hechos y reglas.

Define predicados inclusivos

Define clausulas con backtracking

Define algoritmos inferenciales

Retroalimentación

El IDE SWI-Prolog no diferencia entre hechos y reglas

Page 116: Tema General Sistemas Basados en Conocimientos

Visual Prolog es:

Semejante a SWI-Prolog

Innovación a Turbo Prolog

Implementa su motor con java.

Diseñado para soluciones en consola

Diseñado para soluciones gráficas

Retroalimentación

Efectivamente Visual Prolog constituye una innovación a Turbo Prolog.

Está diseñado para soluciones en consola.

Está diseñado también para soluciones gráficas.

Page 117: Tema General Sistemas Basados en Conocimientos

Bibliografía

1. Escrig, Pacheco, Toledo. El lenguaje de programación Prolog. Universidad Jaume I de Castellón. Disponible en: http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

2. Nilson, Maluzynski. Logic, Progamming and Prolog. OpenLibra. Disponible en: http://www.etnassoft.com/biblioteca/logic-programming-and-prolog-2ed/

3. L. Sterling and E. Shapiro. The Art of Prolog. The MIT Press, Cambridge, Mass., second edition, 1994.

4. W.F. Clocksin and C.S. Mellish. Progamming in Prolog. Springer-Verlag, Berlin, fourth edition, 1994.

5. I. Bratko. Prolog Programming for Artificial Intelligence. Addison-Wesley, Reading, Massachusetts, third edition, 2001.

6. R. O’Keefe. The Craft of Prolog. The MIT Press, Cambridge, MA, 1990.7. Ejemplo completo en Prolog:

http://www.uhu.es/nieves.pavon/pprogramacion/practicas/visualprolog/visualprolog.html

8. Ejemplos de la página oficial de Visual Prolog: http://www.visual-prolog.com/vip/example/

9. Construcción de un Editor inteligente: http://www.visual-prolog.com/video/IntelliSpeed/default.htm

10. Construcción de formularios: http://www.visual-prolog.com/video/FormDemo/default.htm

Page 118: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadas

Para saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: A Beginners Guide to Visual Prolog

URL: http://wiki.visual-prolog.com/index.php?title=A_Beginners_Guide_to_Visual_Prolog

Breve descripción:

La Guía para principiantes de Visual Prolog es un libro completo escrito por Thomas W. de Boer. El libro contiene material, que se utiliza con permiso expreso de los autores. La versión actual del libro está dedicado a Visual Prolog 7.2 . El libro es una introducción, significa que está dirigido a aquellos que saben muy poco acerca de la programación.

…………………………………………………………………………………………………………………….…………..

Documento 2: Visual Prolog for Tyros

URL: http://wiki.visual-prolog.com/index.php?title=Visual_Prolog_for_Tyros

Breve descripción:

El documento Visual Prolog para Tyros es un completo libro escrito por Eduardo Costa. Es un buen punto de partida para el estudio Visual Prolog, se recomienda a los maestros para la educación. La última edición del libro es "Visual Prolog 7.3 para Tyros " . El libro incluye un número de ejemplos que ilustran diferentes características de Visual Prolog .

Page 119: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

Los IDEs facilitan la programación de Prolog. Cada IDE tiene su propia estructura para la construcción de programas, sin

embargo mantienen el mismo esquema de búsqueda de soluciones a través del backtracking y el emparejamiento de variables.

SWI-Prolog permite trabajar directamente en consola y con su extensión XPCE se construyen interfaces gráficas.

Visual Prolog aunque un poco mas complicado (al inicio) permite la programación tanto en consola como en entornos gráficos con orientación a objetos.

Se debe tener cuidado durante el proceso de aprendizaje, separando las clausulas que implementan las funcionalidades computacionales de las funcionalidades de procesamiento lógico.

Page 120: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?

Page 121: Tema General Sistemas Basados en Conocimientos

Tema 04. Tratamiento de cadenas y listas

Fuente http://smartcomputing.gerardorossel.org/reglas-recursivas.aspx

Bienvenida

Estimados estudiantes ¡bienvenidos! a la cuarta semana del curso, donde continuaremos estudiando el lenguaje Prolog. Durante esta semana trabajaremos con cadenas y listas que son estructuras dinámicas y permiten procesar datos en memoria relacionados con expresiones del lenguaje natural. Los seres humanos organizamos la información y el posterior conocimiento en forma de cadenas y listas. Recordemos algunos escenarios, cuando organizamos una fiesta elaboramos la lista de invitados y los nombres de las personas se almacena en forma de cadenas de caracteres, cuando hacemos un tour elaboramos la lista de lugares visitados, cuando terminamos una carrera profesional hemos acumulado una lista de cursos. Por esta razón es muy importante en sistemas basados en conocimiento el tratamiento de cadenas y listas. Los contenidos se complementan con interesantes lecturas, valiosos vídeos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados.

¡Continuemos programando en Prolog!

Page 122: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente http://slideplayer.es/slide/1872829/

Las cadenas en Prolog son un tipo de datos conocidos como string (algunas versiones de Prolog permiten el uso de symbol) y están formados por un conjunto de caracteres alfanuméricos (letras, números, signos especiales), en términos técnicos decimos que una cadena es una lista de códigos ASCII encerrada entre comillas.

El tratamiento de cadenas es muy importante porque permite analizar palabras en busca de determinadas características, por ejemplo conocer el contenido del primer caracter o en todo caso verificar si la palabra contiene determinados caracteres, es posible contar el numero de palabras en un texto o en un archivo, etc. Estas características de Prolog son interesantes al momento de programar aplicaciones con interpretación del lenguaje natural.

Prolog proporciona un conjunto de clausulas para trabajar con cadenas, podemos así implementar un conjunto de operaciones tales como la concatenación de cadenas que es la unión o suma de cadenas, podemos unir dos cadenas para formar una tercera cadena. Podemos separar una cadena en tramas mas pequeñas, etc. Las cadenas son un tipo de listas. Por otro lado las listas en Prolog son un tipo de datos encerrados entre concretes [ ], que contienen un conjunto de datos relacionados con determinado tipo de datos, por ejemplo, podemos tener una lista de números impares [1,3, 5, 7,9], o una lista de cadenas que representan nombres de personas [“Juan”, “Pedro”, “Ana”, “Luisa”]. Las listas también son conocidas como arreglos dinámicos en otros lenguajes de programación, por lo tanto las listas son ideales para el tratamiento de pilas, colas y árboles conceptos importantes para el tratamiento de datos en memoria.

Prolog representa listas en forma genérica precisando su cabeza (primer elemento) y la cola (resto de elementos) [ Cabeza | Cola ], donde Cabeza es un elemento y el resto constituye otra lista expresada recursivamente. Con esta sencilla forma de representar listas podemos realizar un conjunto de operaciones lógicas sobre un conjunto de datos o realizar operaciones computacionales como por ejemplo imprimir en pantalla un conjunto de datos o llenar con datos un caja de listas. El tratamiento de cadenas y listas está muy difundido en aplicaciones razonables de la inteligencia artificial y utiliza intensivamente el concepto de recursividad.

Page 123: Tema General Sistemas Basados en Conocimientos
Page 124: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:

Capacidades

Identifica y utiliza técnicas de procesamiento de cadenas. Analiza el contenido de una cadena como información básica del tratamiento

del conocimiento. Identifica y utiliza técnicas de procesamiento de listas. Conoce las operaciones básicas de programación sobre listas. implementa la creación de listas, agrega, busca y elimina elementos en una

lista.

Actitudes

Demuestra tolerancia y respeto ante la opinión de sus compañeros en el debate de un foro.

Valora los componentes y estrategias de programación de sistemas basados en reglas.

Asume responsabilidad en el cumplimiento de las actividades.

Page 125: Tema General Sistemas Basados en Conocimientos

Marco conceptual

Observa detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 126: Tema General Sistemas Basados en Conocimientos

4.1 Tratamiento de cadenas.

http://ia-israel.blogspot.com/2014/06/prolog-sintaxis-y-significado-de-los.html

PROLOG fue diseñado fundamentalmente para permitir la representación y tratamiento de conocimiento, en tal sentido, el tratamiento del lenguaje es un objetivo permanente y en el caso de lenguaje escrito, el tratamiento de textos juega un papel importante.

Las cadenas de caracteres constituyen un tipo de datos denominado String (algunas versiones de Prolog permiten el uso de un tipo de datos Symbol) y son un conjunto de caracteres ASCII.

Ejemplos de cadenas:

Nombre = “Juan”.

Ciudad = “San Juan de Miraflores”.

Fecha = “25 de Enero del 2,040”.

Meses_transcurridos_desde_la_ultima_compra=”23”.

En los ejemplos anteriores los caracteres entre comillas corresponden a cadenas de caracteres, en nuestro caso las denominamos simplemente cadenas.

Page 127: Tema General Sistemas Basados en Conocimientos

4.2 Tratamiento de los caracteres de una cadena.

El lenguaje Prolog ofrece un conjunto predefinido de predicados que permiten el tratamiento de cadenas, a continuación mostramos los predicados y ejemplos:

PREDICADOS STANDAR PARA EL TRATAMIENTO DE CADENAS

PREDICADO SINTAXIS FUNCION

frontchar frontchar(string, char, string)

frontchar(Cad, FCarac, Rest)

(i, o, o) (i, i, o) (i, o, i) (i, i, i) (o, i, i)

Fcarac es el primer caracter de Cad.

Rest es el resto de caracteres

Cad es la unión de FCarac con Rest

fronttoken fronttoken(string, string, string)

fronttoken(Cad, FPal, Rest)

(i, o, o) (i, i, o) (i, o, i) (i, i, i) (o, i, i)

FPal es la primera palabra de Cad.

Rest es el resto de caracteres

Cad es la unión de FPal con Rest

concat concat(string, string, string)

concat(Cad1, Cad2, Cad3)

(i, i, o) (i, o, i) (o, i, i) (i, i, i)

Cad3 es la unión de Cad1 y Cad2

str_len str_len(string, integer)

str_len(Cad, Long)

(i, i) (i, o)

Long es la longitud de Cad

isname isname(string)

isname(Cad)

( i )

Cláusula verdadera cuando Cad es un string

frontstr frontstr(integer, string, string, string)

frontstr(Long, Cad_e, Cad_i, Cad_r)

( i, i, o, o )

Cad_i es una cadena formada por los primeros Long caracteres de Cad_e

Cad_r son los caracteres restantes

Page 128: Tema General Sistemas Basados en Conocimientos

Ejemplos

1. Programa que lee una cadena e imprime un caracter por linea:

predicates

leer(string)

imprimir(string)

clauses

leer(X):-clearwindow,

write("Ingrese una cadena: "),

readln(X), nl.

imprimir("").

imprimir(C):-frontchar(C, C1, RC),

write(C1), nl,

imprimir(RC).

goal

leer(C),

imprimir(C).

2. Programa que lee una cadena e imprime un token por linea. Sugerencia: en el programa anterior reemplace la cláusula frontchar(C,C1,RC) por la cláusula fronttoken(C,C1,RC).

3. Realice la impresión de las cadenas solicitadas en los ejemplos anteriores en sentido inverso. Sugerencia: reemplace la cláusula imprimir por el siguiente código:

imprimir("").

imprimir(C):-frontchar(C, C1, RC),

imprimir(RC),

write(C1), nl.

Page 129: Tema General Sistemas Basados en Conocimientos

4.3 Concatenación.

Fuente: http://raymundoycaza.com/la-funcion-concatenar-en-excel/

La concatenación es una operación que consiste en unir dos o mas cadenas para formar una sola. Algunos lenguajes usan el operador “+”, en Prolog se usa el predicado CONCAT.

Ejemplos: (La implementación de estos ejemplos depende del IDE utilizado, el estudiante debe adecuar el código correspondiente)

1. Programa que genera un saludo “Hola Mario” a partir de dos cadenas “Hola” y “Mario” presentadas directamente.

saludo:-

concat(“Hola”, “ Mario”, Cad),

write(Cad).

2. Programa que genera un saludo “Hola Mario” a partir de dos cadenas “Hola” y “ Mario” declaradas previamente.

Cadena01 = “Hola”.

Cadena02 = “ Mario”.

saludo(Cadena01, Cadena02):-

concat(Cadena01, Cadena02, Cadena03),

write(Cadena03).

Page 130: Tema General Sistemas Basados en Conocimientos

Tipos de datos declarados por el usuario: domains

Los tipos de datos genéricos (string, char, integer, real) se pueden especificar y personalizar de acuerdo al programa, utilizando el bloque domains, que permite definir nuevos tipos de datos en base a los predefinidos.

Así tenemos que la declaración genérica del predicado padre:

Predicates

padre(string,string)

Se puede codificar de la siguiente manera:

domains

persona = string

predicates

padre(persona,persona)

Ejemplos:

domains

numero = integer

cuadrado = integer

predicates

cuad(numero,cuadrado)

domains

nombre = string

deporte = string

predicates

persona(nombre,deporte)

El uso de domains es importante y necesario para el tratamiento de listas que veremos a continuación.

Page 131: Tema General Sistemas Basados en Conocimientos

4.4 Tratamiento de listas.

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html

Las listas son estructuras de datos dinámicas. Pueden aumentar o disminuir el número de sus elementos, tienen el mismo tipo de elementos y pueden ser tan complejas como se requieran. La lista sin elementos existe y recibe el nombre de lista vacía.

Ejemplos: La lista de invitados a una fiesta. La lista de alumnos inscritos en un curso La lista de números enteros: 3 5 9 8 7 1 2 10 La lista de deportes: football, basketball, karate, voleyball La lista de nombres de personas: Juan, Pedro, Ana, Luisa, Miguel

En PROLOG los elementos de una lista se escriben entre corchetes [ ] y tiene dos componentes:

La cabeza que es el primer elemento (Head) de la lista y El resto de elementos (Tail) de la lista

Así tenemos que una lista se denota de la siguiente manera:

[H|T]

Donde H representa la cabeza y T representa el resto de elementos.

Ejemplos de listas:

Page 132: Tema General Sistemas Basados en Conocimientos
Page 133: Tema General Sistemas Basados en Conocimientos

[ ]........................................lista vacía. numeros([2,5,7,9]).........La cláusula numeros que contiene la lista [2,5,7,9],

donde H = [2] y T = [5,7,9]. personas([“Juan,”,”Pedro”,”Ana”,”Luisa”])......................La cláusula personas

que contiene la lista [“Juan,”,”Pedro”,”Ana”,”Luisa”] donde H = [“Juan”] y T = [“Juan,”,”Pedro”,”Ana”,”Luisa”].

Actividad de análisis y comprensión

Se solicita analizar e interpretar el significado de las clausulas de programa y comentar su funcionamiento.

Page 134: Tema General Sistemas Basados en Conocimientos

4.5 Operaciones sobre listas: Agregar, buscar, eliminar elementos.

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html

A continuación se muestra la forma de declarar listas:

domains

lista_num = integer*

lista_cad = string*

predicates

numeros(lista_num)

personas(lista_cad)

Donde:

El asterisco (*) se lee “lista de” integer* se lee “lista de enteros” string* se lee “lista de cadenas” lista_num es el nuevo tipo lista de enteros lista_cad es el nuevo tipo lista de cadenas numeros es un predicado con un argumento de tipo lista_num (lista de

enteros) persona es un predicado con un argumento de tipo lista_cad (lista de cadenas)

Page 135: Tema General Sistemas Basados en Conocimientos

Recuerde que tanto lista_num como lista_cad son tipos de datos no son nombres de variables

Analicemos el siguiente código:

domains

lista_num = integer*

predicates

numeros(lista_num)

clauses

numeros([1,3,5,7,9]).

goal

numeros(A),

numeros([H|T]),

write(A), nl,

write(H), nl,

write(T), nl.

1. Declara el nuevo tipo de dato lista_num como una lista de enteros.2. Declara el predicado numeros con un argumento tipo lista_num.3. Declara un dato numeros con la lista [1,3,5,7,9].4. Invoca la cláusula números(A)...................................................liga la variable A

con la lista [1,3,5,7,9,].5. Invoca la cláusula números([H|T]) ............................................liga la variable H

con el número 1 y la variable T con la lista [3,5,7,9].6. Imprime en pantalla la lista [1,3,5,7,9,], luego ejecuta un salto de línea.7. Imprime en pantalla el número 1, luego ejecuta un salto de línea.8. Imprime en pantalla la lista [3,5,7,9,], luego ejecuta un salto de línea.

Page 136: Tema General Sistemas Basados en Conocimientos

Operaciones básicas en listas

Fuente: http://ia-israel.blogspot.com/2014_06_01_archive.html

Definimos las siguientes operaciones básicas:

1. Agregar un elemento al inicio de la lista.2. Agregar un elemento al final de la lista.3. Agregar un elemento a la lista de acuerdo a una relación de orden.4. Verificar si un elemento pertenece a la lista.5. Eliminar un elemento de la lista.6. Ordenar los elementos de la lista.7. Imprimir los elementos de la lista.

Los siguientes programas presentan en forma aislada la implementación de las operaciones básicas

1. Agregar un elemento al inicio de la lista:

domains

lista_num = integer*

predicates

Page 137: Tema General Sistemas Basados en Conocimientos

agrega1(integer, lista_num, lista_num)

clauses

agrega1(Numero,ListaE,[Numero|ListaE]).

goal

write(“entre un número: “),

readint(DN),

agrega1(DN,[1,3,5,7,9]),ListaS),

write(ListaS),

readln(_).

2. Agrega un elemento al final de la lista:

domains

lista_num = integer*

predicates

agrega2(integer, lista_num, lista_num)

clauses

agrega2(Numero, [], [Numero]).

agrega2(Numero,[H|T],[H|TS]):-

agrega2(Numero,T,TS).

goal

write(“entre un número: “),

Page 138: Tema General Sistemas Basados en Conocimientos

readint(DN),

agrega2(DN,[1,3,5,7,9]),ListaS),

write(ListaS),

readln(_).

3. Agregar un elemento a la lista de acuerdo a una relación de orden:

domains

lista_num = integer*

predicates

ag_ord(integer, lista_num, lista_num)

clauses

ag_ord(N,[],[N]).

ag_ord(N,[H|T],[N|L]):- H >= N,

L = [H|T],

!.

ag_ord(N,[H|T],[H|TC]):- ag_ord(N,T,TC).

goal

write(“entre un número: “),

readint(DN),

agrega1(DN,[1,3,5,7,9]),ListaS),

write(ListaS),

readln(_).

Page 139: Tema General Sistemas Basados en Conocimientos

4. Verificar si un elemento pertenece a la lista:

domains

lista_num = integer*

predicates

miembro(integer, lista_num)

clauses

miembro(N,[]):- write(N,” no pertenece a la lista”).

miembro(N,[N|_]):- write(N,” si pertenece a la lista”).

miembro(N,[_|T]):- miembro(N,T).

goal

write(“entre un número: “),

readint(DN),

miembro (DN,[1,3,5,7,9])).

readln(_).

5. Eliminar un elemento de la lista:

domains

lista_num = integer*

predicates

elimina (integer, lista_num, lista_num)

clauses

elimina(N,[],[]):- write(N,” no pertenece a la lista”),

elimina(N,[N|T],T):- write(N,” ha sido

Page 140: Tema General Sistemas Basados en Conocimientos

eliminado de la lista”),

elimina(N,[H|T],[H|TC]):- elimina(N,T,TC).

goal

write(“entre un número: “),

readint(DN),

elimina (DN,[1,3,5,7,9]), ListaS).

write(ListaS),

readln(_).

6. Ordena los elementos de una lista:

domains

lista_num = integer*

predicates

ag_ord (integer, lista_num, lista_num)

ordena(lista_num, lista_num)

clauses

ag_ord(N,[ ],[N]).

ag_ord(N,[H|T],[N|L]):- H >= N,

L = [H|T],

!.

ag_ord(N,[H|T],[H|TC]):- ag_ord(N,T,TC).

ordena([ ],[ ]).

ordena([H|T],LO):-

Page 141: Tema General Sistemas Basados en Conocimientos

ordena(T,Lt),

ag_ord(H,Lt,LO).

goal

Linicial = [1, 3, 6, 2, 9, 5],

write(“Lista inicial: “, Linicial), nl,

ordena (Linicial,Lfinal).

write(Lfinal),

readln(_).

7. Imprime los elementos de la lista:

domains

lista_num = integer*

predicates

imprime (lista_num)

clauses

imprime([ ]).

imprime([H|T]):- write(H,' '),

imprime(T).

goal

imprime([1,3,5,7,9,2,4,6,8,]),

readln(_).

Page 142: Tema General Sistemas Basados en Conocimientos

Actividades

Actividad de programación

Utilizando el código de los ejemplos anteriores se solicita implementar las siguientes operaciones extendidas sobre listas, utilizando cualquiera de los IDE presentado en el curso:

1. Devolver el primer elemento de la lista......................primel(E,L)2. Devolver el último elemento de la lista......................ultel(E,L)3. Devolver el número de elementos de la lista.............numel(N,L)4. Devolver el sucesor de un elemento de la lista..........sucel(N,S,L)5. Devolver el predecesor de un elemento de la lista....predel(N,P,L)6. Devolver el menor elemento de la lista......................minlista(M,L)7. Devolver el mayor elemento de la lista......................maylist(M,L)8. Concatenar dos listas...................................................concatlista(La,Lb,Lc)9. Intercalar los elementos de dos listas.........................interclista(La,Lb,Lc)

Actividad de análisis y comprensión

Después de haber implementado los programas presentados y propuestos en esta sesión responde a las siguientes preguntas:

Las cadenas son un tipo de datos:

Integer

String

Values

Predicates

Encadenados

RetroalimentaciónLas cadenas son tipo de datos string (conjunto de caracteres ASCII).

Las listas se declaran con el símbolo:

+ (mas)

* (asterisco)

[ ] (Corchetes)

% (porcentaje)

No es necesario declararlas

Page 143: Tema General Sistemas Basados en Conocimientos

RetroalimentaciónLas listas se declaran usando el símbolo asterisco. Ejem nombre* ... se lee lista de nombres

Las listas son estructuras:

Estáticas

Dinámicas

Recursivas

Algorítmicas

Excluyentes

Retroalimentación

Las listas son estructuras dinámicas y su procesamiento se realiza en memoria.

Page 144: Tema General Sistemas Basados en Conocimientos

Bibliografía

1.1. Escrig, Pacheco, Toledo. El lenguaje de programación Prolog.

Universidad Jaume I de Castellón. Disponible en: http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

2. Nilson, Maluzynski. Logic, Progamming and Prolog. OpenLibra. Disponible en: http://www.etnassoft.com/biblioteca/logic-programming-and-prolog-2ed/

3. L. Sterling and E. Shapiro. The Art of Prolog. The MIT Press, Cambridge, Mass., second edition, 1994.

4. W.F. Clocksin and C.S. Mellish. Progamming in Prolog. Springer-Verlag, Berlin, fourth edition, 1994.

5. I. Bratko. Prolog Programming for Artificial Intelligence. Addison-Wesley, Reading, Massachusetts, third edition, 2001.

6. R. O’Keefe. The Craft of Prolog. The MIT Press, Cambridge, MA, 1990.

Page 145: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadas

Para saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: Inteligencia artificial explicada

URL: http://smartcomputing.gerardorossel.org/reglas-recursivas.aspx

Breve descripción:

Este sitio está dedicado a todos los temas de Inteligencia Computacional o Inteligencia Artificial. Encontraran también un libro (ebook) en linea que es utilizado en cursos universitarios. También pone a disposición de los lectores un blog con artículos y noticias relacionados con la Inteligencia Artificial.

…………………………………………………………………………………………………………………….…………..

Documento 2: Programación con listas

URL: http://www.lcc.uma.es/~pacog/apuntes/pd/CuadPrac2.pdf

Breve descripción:

El documento presenta teoría y práctica del procesamiento de listas en Prolog. Contiene definiciones y ejercicios resueltos y propuestos con aplicaciones prácticas.

Page 146: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

Prolog permite el tratamiento de cadenas de caracteres para el tratamiento de textos o palabras.

Prolog permite el tratamiento de estructuras dinámicas conocidas como listas y podemos definir nuestros propios tipos de datos para procesar cualquier tipo de conocimiento.

Las operaciones definidas sobre cadenas y listas son bastante conocidas y nos permiten resolver problemas mas complejos.

Page 147: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?

Page 148: Tema General Sistemas Basados en Conocimientos

Tema 05. Fundamentos de los sistemas expertos.

Fuente: Elaboración propia

Bienvenida

Estimados estudiantes ¡bienvenidos! a la quinta semana del curso, donde presentaremos conceptos de los sistemas expertos en el entorno de los sistemas basados en conocimiento, conoceremos la taxonomía y estructura de los sistemas expertos. En el análisis y diseño de sistemas es importante contar con un esquema metodológico para orientar nuestro trabajo por lo que abordaremos una metodología de amplia aceptación para desarrollar sistemas expertos denominada CommonKads, se ha seleccionada esta metodología porque su aplicación es adecuada con los IDEs presentados en sesiones anteriores, logrando productos de diseño moderno. Los contenidos se complementan con interesantes lecturas, valiosos videos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados.

¡Conozcamos y utilicemos la metodología CommonKads para desarrollar sistemas expertos!

Page 149: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente:http://www.casaestudioxigeno.cl/pag-in/i/9336

Los sistemas expertos son programas de computadora que resuelven tareas tal como las realizaría un experto humano, tratan de imitar el comportamiento humano utilizando información que le es proporcionado y generando una opinión sobre un tema específico.

El estudio y generación de sistemas expertos han permitido configurar una estructura caracterizada por contemplar las diferentes etapas de gestión del conocimiento: adquisición, tratamiento y uso. El razonamiento para producir resultados a las consultas de los usuarios son realizados por un motor de inferencias que relaciona hechos o datos con reglas de producción. Los sistemas expertos son capaces de mostrar una traza de los elementos de razonamiento utilizados y es posible que logren aprendizaje sobre las decisiones anteriores, mejorando el nivel de razonamiento.

Los sistemas expertos tienen una amplia taxonomía orientada por las diferentes aplicaciones y/o los diferentes criterios de diseño y uso por la forma de almacenar conocimiento, por la naturaleza de la tarea a realizar, por la interacción del usuario, por la limitación de tiempo para tomar decisiones, por la variabilidad temporal del conocimiento, por la naturaleza del conocimiento almacenado, por la certeza de la información.

El desarrollo de sistemas expertos comprende etapas de análisis, diseño y construcción del programa para ello usaremos la metodología CommonKads que permite modelar el conocimiento en un lenguaje independiente de la plataforma de construcción del producto informático. Esta metodología propone el uso de formularios para cada uno de sus componentes de manera que facilita el traslado a cualquier sistema computacional.

La metodología CommonKads propone tres niveles, el nivel de contexto, el nivel de concepto y el nivel de implementación, durante esta semana estudiaremos el nivel de contexto que incluye tres modelos, el modelo de organización que responde a la pregunta ¿para qué desarrollamos un sistema experto?, el modelo de tareas que responde a la pregunta ¿qué se debe implementar? y el modelo de agentes que responde a la pregunta ¿quién participa en el sistema experto?.

Page 150: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este quinto tema:

Capacidades

Conoce la definición de los sistemas Expertos. Identifica la Arquitectura y taxonomía de un sistema Experto. Conoce el espacio de soluciones que proporcionan los sistemas expertos. Conoce la metodología Commonkads para representar el conocimiento. Aplica la metodología para representar conocimiento y utiliza el lenguaje

Prolog para la implementación de la aplicación.

Actitudes

Demuestra puntualidad y perseverancia en la asistencia de las tutorías programadas.

Reconoce la taxonomía de un Sistema Experto. Valora las opiniones de los demás y las recoge para fortalecer sus

conocimientos.

Page 151: Tema General Sistemas Basados en Conocimientos

Marco conceptual

Observa detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 152: Tema General Sistemas Basados en Conocimientos

5.1 Definición de Sistemas Expertos

Fuente: http://carlosestiv.blogspot.com/

Los sistemas expertos fueron el primer logro de la inteligencia artificial resolviendo problemas a través del conocimiento y raciocinio tal como lo haría un ser humano.

Un sistema experto es un programa de computadora que resuelve tareas tal como las realizaría un experto humano, se puede decir que imita el comportamiento humano utilizando información que le es proporcionado y generando una opinión sobre un tema específico. Tiene la característica de ser interactivo, contiene reglas que les permiten tomar decisiones conocidas como bases de conocimientos, en concreto la tarea de un sistema experto es aconsejar a un usuario respecto a un tema específico.

Un sistema experto reúne las siguientes características: Tiene amplio conocimiento específico del área de especialización. Aplica técnicas de búsqueda. Soporta análisis heurístico. Es dinámico pues sus hechos y reglas están sujetos a constante revisión y es

capaz de inferir nuevos conocimientos a partir de los ya existentes. Capacidad de procesamiento de símbolos. Tiene inferencia deductiva siendo capaz de explicar su propio razonamiento. La base de conocimientos es independiente del motor de inferencias. Es generalmente declarativo.

Aunque no existe una única definición para los sistemas expertos presentamos algunas propuestas:

Congreso mundial de la IA Feigembaum: “”Un programa de computador inteligente que usa el conocimiento y procedimientos de inferencia para resolver problemas que son los suficientemente difíciles como para requerir la intervención de un experto humano para su resolución”.Asociación Argentina de inteligencia artificial: “Un SE es un sistema informático que simula los procesos de aprendizaje, memorización, razonamiento, comunicación y acción de un experto humano en una determinada rama de la ciencia, suministrando, de esta forma, un consultor que puede sustituirle con unas ciertas garantías de éxito”.

Page 153: Tema General Sistemas Basados en Conocimientos

5.2 Arquitectura de un sistema Experto

Iniciamos esta sección presentando una sencilla arquitectura de un sistema basado en conocimientos:

Fuente: Elaboración propia

La base de conocimientos es una estructura de datos que contiene una gran cantidad de información sobre un tema específico, es generada por un experto. Esta base de conocimientos está formada por:

Objetos y sus relaciones. Casos particulares o excepciones y diferentes estrategias de resolución con sus

condiciones de aplicación. (metaconocimiento – forma generar conocimiento en base a conocimiento)

En nuestro caso podemos decir, usando una terminología Prolog, que la base de conocimientos está constituida por la reglas de producción, en el caso de Visual Prolog se refieren a las clauses generadas por predicates.

La base de hechos está referida a los datos considerados verdaderos al momento de ejecutar la aplicación. En nuestro caso, refiriéndonos a Visual Prolog diremos que son las clauses generadas por facts.

Tanto la base de hechos como la base de conocimientos pueden estar declaradas en el programa Prolog o ser mantenidas externamente en un archivo que se agrega al programa con la clausula consult.

El motor de inferencias es el núcleo del sistema experto construyendo los razonamientos, es el encargado de ejecutar las inferencias durante el proceso de resolución. En el caso de Prolog, proporciona por default un motor que se encarga de detectar los conocimientos (hechos o reglas), los encadena y construye el plan de resolución mediante backtracking y emparejamiento de variables. Los motores de inferencias se clasifican en determinísticos cuando las conclusiones representan verdades absolutas y probabilísticos cuando las predicciones están sujetas a cierto grado de verdad en función de probabilidades.

Page 154: Tema General Sistemas Basados en Conocimientos

Para definir un arquitectura razonable de un sistema experto definimos cuatro requerimientos funcionales (momentos del ciclo de vida) para el tratamiento del conocimiento:

Adquisición del conocimiento.o Experto.o Conocimientos.o Módulo de adquisición del conocimiento.

Representación del conocimiento.o Base de conocimientos.o Base de hechos.

Tratamiento del conocimiento.o Motor de inferencias.o Módulo de explicaciones.

Utilización del conocimiento.o Usuario.o Módulo de consultas.

En la siguiente figura presentamos una arquitectura para los sistemas expertos:

Fuente: Elaboración propiaLa base de conocimientos, la base de hechos y el motor de inferencias fueron explicados en la arquitectura básica de un sistema basado en conocimientos.

El módulo de consultas gestiona la interacción entre el usuario y el sistema. Se puede implementar con formatos definidos o se puede definir un lenguaje de consultas basado en lenguaje natural.

El módulo de explicaciones realiza una traza de las conclusiones parciales conseguidas en el método de razonamiento, permite validar la coherencia de los hechos y las reglas justificando sus respuestas.

Page 155: Tema General Sistemas Basados en Conocimientos

El módulo de adquisición del conocimiento permite a los expertos ingresar el conocimiento a través de formatos predefinidos o usando el lenguaje natural, a las personas que realizan esta tarea se les llama cognimáticos o ingenieros del conocimiento.

Page 156: Tema General Sistemas Basados en Conocimientos

5.3 Taxonomía de los Sistemas Expertos

Los sistemas expertos se pueden clasificar de acuerdo a la siguiente tabla:

CLASE TIPO DESCRIPCIOIN

Por la forma de almacenar conocimiento

Basados en reglas Almacenan el conocimiento en forma de hechos y reglas.

Basados en probabilidades

Almacenan el conocimiento en hechos y sus dependencias probabilísticas.

MixtosAlmacenan el conocimiento en hechos y reglas que contienen probabilidades.

Por la naturaleza de la tarea a realizar

Diagnóstico o clasificación

Se conocen las posibles soluciones y se trata de clasificarlas o diagnosticarlas de acuerdo a una serie de datos y reglas almacenadas.

Monitorización

Se analiza el comportamiento de un sistema en búsqueda de posibles fallos.

Diseño

Se busca la construcción de la solución a un problema que en principio es desconocida, a partir d hechos y restricciones a satisfacer.

Predicción

Se estudia el comportamiento de un sistema tratando de predecir su comportamiento en el futuro cercano.

Por la interacción del usuario

Apoyo La tarea del sistema es aconsejar al usuario.

ControlEl sistema toma decisiones y actuá sobre su entorno sin participación humana.

Critica El sistema analiza, evaluá y critica las decisiones de una

Page 157: Tema General Sistemas Basados en Conocimientos

persona.

Por la limitación de tiempo para tomar decisiones

Tiempo ilimitado

Emplean conocimiento casual que busca las raíces de un problema ya ocurrido y cuto resultado no se requiere de inmediato.

Tiempo limitado

Sistemas de tiempo real que monitorizan o controlan dispositivos tomando decisiones en forma inmediata.

Por la variabilidad temporal del conocimiento

EstáticosLa base de conocimiento nos varía durante el proceso de decisión.

Dinámicos

La base de datos se mantiene dinámicamente en función de las decisiones tomadas.

Por la naturaleza del conocimiento almacenado

Basado en experiencia

Se basan en las experiencias de un experto a través de los hechos sin establecer una relación de de causalidad claramente definida.

Basado en relaciones causa-efecto

Las relaciones de causalidad están perfectamente definidas.

Por la certeza de la información

Completa o perfectaSe cuenta con todos los datos y reglas para tomar la decisión.

Imperfecta

No se cuenta con todos los datos, las datos son difusos, se cuenta con terminología ambigua.

Page 158: Tema General Sistemas Basados en Conocimientos

5.4 Las aplicaciones de los Sistemas Expertos

Los sistemas expertos ofrecen ayudan en casos como los siguientes:

Evitar fallos en labores rutinarias complejas. Ampliar de forma más rápida el conocimiento de los especialistas. Diagnosticar fallos con mayor rapidez. Conseguir tareas de planificación más complejas y consistentes.

Las aplicaciones de los sistemas expertos han incursionado en áreas de medicina, geología, química, economía, ingeniería civil, etc.

En el siguiente cuadro podemos observar diferentes aplicaciones de los sistemas expertos:Categoría Tipo de problema Usos

Interpretación Deducir situaciones a partir de datos observados

Análisis de imágenes, reconocimiento del habla, inversiones financieras.

Predicción Inferir posibles consecuencias a partir de una situación.

Predicción meteorológica, previsión del tráfico, evolución de la bolsa.

Diagnóstico Deducir fallos a partir de sus efectos.

Diagnóstico médico, detección de fallos de equipos.

Diseño Configurar objetos bajo ciertas especificaciones.

Diseño de circuitos, edificios, automóviles, etc.

Planificación Desarrollar planes para llegar a unas metas.

Programación de proyectos e inversiones, planificación militar.

Monitorización o supervisión

Controlar situaciones donde hay planes vulnerables.

Control de centrales nucleares y factorías químicas.

Depuración Prescribir remedios para funcionamientos erróneos.

Desarrollo de software y circuitos electrónicos.

Reparación Efectuar lo necesario para hacer una corrección.

Reparar sistemas informáticos, automóviles, etc.

Instrucción Diagnóstico, depuración y corrección de una conducta.

Corrección de errores, enseñanza.

Control Mantener un sistema por un camino previamente trazado. Interpreta, predice y supervisa su conducta.

Estrategia militar, control de tráfico aéreo.

Enseñanza Recoger el conocimiento y mostrarlo.

Aprendizaje de experiencia.

Page 159: Tema General Sistemas Basados en Conocimientos

5.5 Ventajas de los Sistemas Expertos

Fuente: http://cristianarrobo.blogspot.com/2011_03_01_archive.html

Los sistemas expertos presentan ventajas frente a los expertos humanos:

1. Asesoría. Los SSEE apoyan a personas con poco conocimiento en la solución de problemas que requieren conocimiento especializado.

2. Disponibilidad. Los SSEE pueden operar ininterrumpidamente las 24 horas del día durante todo el año.

3. Estabilidad emocional. Los SSEE pueden operar sin interferencias emocionales características de un ser humano, por lo tanto sus decisiones serán objetivas.

4. Portabilidad. Los SSEE pueden operar en diferentes plataformas y en diferentes idiomas.

5. Estandarización. Los SSEE mantienen un alto grado de estabilidad y pueden ser adaptados a estándares internacionales.

6. Facilidad de mantenimiento. Los lenguajes modernos permiten mecanismos de actualización del software proporcionando en todo momento una alta integración tecnológica.

7. Existencia. Los SSEE pueden ,perdurar en el tiempo y crecer indefinidamente.8. Compatibilidad. Los SSEE pueden ser consultados por diferentes usuarios y/o

plataformas tecnológicas.9. Complejidad. Los SSEE pueden trabajar con alto grado de complejidad

relacionando variables que para un ser humano son difíciles de mantener.

El uso de sistemas expertos es aconsejable cuando:

Los expertos humanos son escasos. Existen situación demasiado complejas en las que la subjetividad humana

puede llevar a errores de percepción. Cuando el volumen de datos es muy elevado para tomar decisiones.

Page 160: Tema General Sistemas Basados en Conocimientos

5.6 Metodología Commonkads.

CommonKADS es una metodología aplicable al análisis y la construcción de Sistemas Basados en Conocimiento, la cual está orientada hacia la realización de actividades de modelado, donde se desarrollan un conjunto de modelos que permiten expresar diferentes perspectivas de la situación que se está analizando. Esta metodología ofrece teorías, métodos y técnicas científicas para representar el conocimiento y modelar los procesos mentales, así como acercarse a los contenidos de conocimientos de las personas.

Principios de la metodología Commonkads:

1. La ingeniería del conocimiento consiste en la construcción de modelos que formalizan diferentes aspectos del conocimiento humano.

2. El modelado de la estructura del conocimiento se ha de realizar de forma independiente a la implementación.

3. El conocimiento tiene una estructura interna en la que se pueden distinguir tipos de conocimiento y tareas específicas.

La metodología Commonkads se basa en los siguientes fundamentos teóricos:

1. La construcción de un sistema basado en conocimiento se basa en la construcción de varios modelos que formalizan una parte concreta del proceso.

2. El número y nivel de desarrollo de cada modelo depende del contexto de la aplicación.

3. El desarrollo de estos modelos se realiza en tres niveles: análisis del contexto, formalización abstracta e implementación.

4. El desarrollo de cada fase depende del resultado obtenido en la fase anterior.

Basándonos en las premisas de los principios y los fundamentos teóricos presentamos un esquema de los componentes de la metodología Commonkads.

Page 161: Tema General Sistemas Basados en Conocimientos

Fuente: Elaboración propia

Describimos cada uno de los modelos:

Modelo de organización: o Realiza un análisis de la organización con el objetivo de identificar los

problemas y las posibilidades de incorporación de SBCs.o Los aspectos de la organización son tan importantes porque, al igual

que el resto de los sistemas de información, éstos sólo tendrán éxito si se integran adecuadamente en su contexto. Normalmente, el SBC actúa como una agente cooperando con otros agentes (humanos o no) realizando una parte de las tareas de la organización. En realidad, este modelo se corresponde con un estudio de viabilidad.

o Afortunadamente, no se trata de modelar toda la organización, sino de centrarse en la orientación del conocimiento. La primera parte identifica problemas y oportunidades. Se termina delimitando objetivos, estrategias, factores externos, etc.

o En este modelo se debe tener presente todo lo relativo a la gestión del conocimiento (KM) y a su integración con la Ingeniería del conocimiento. La propuesta define un nivel específico para recoger la gestión del conocimiento en la empresa.

Modelo de tareas: o Describe las tareas que se realizan o deben realizarse en el contexto de

la organización donde se van a utilizar SBCs.o Si el análisis de viabilidad resulta positivo el siguiente paso es

determinar las tares relevantes y los agentes que las realizarán.o Una tarea representa un objetivo deseable con unas entradas y salidas

bien estructuradas que requiere y proporciona conocimiento y se realiza por agentes según unos criterios de rendimiento y calidad.

o En la especificación de la estructura de la tarea se pueden utilizar diagramas de clases de UML.

Page 162: Tema General Sistemas Basados en Conocimientos

o Es importante establecer el control temporal de la tarea. Para ello se utilizan los diagramas de estado (si el control es externo) o losdiagramas de actividad (si el control es interno).

Modelo de agentes: o Describe las capacidades, preferencias y permisos de los agentes que

realizan las tareas.o Determina los roles y las competencias de los actores que participan en

la realización de la tarea. Es conveniente utilizar los diagramas de casos de UML para describir su participación. Este modelo establece la cooperación entre agentes (incluido el usuario).

Modelo de conocimiento: o Proporciona una descripción independiente de la implementación del

conocimiento involucrado en las tareas.o Especifica el conocimiento y los requerimientos de razonamiento del

sistema. Tiene tres partes denominadas categorías del conocimiento.o La primera se denomina conocimiento del dominio y especifica

conocimiento y tipos de información concretos que se usaran en la aplicación. Representa la parte estática. Por ej., en una aplicación de diagnóstico médico contendría definiciones de enfermedades, síntomas y pruebas relevantes, así como de las relaciones entre estas. Es comparable a un “modelo de datos” o “modelo de objetos” en ingeniería del software.

o Puede estar constituido por dos tipos de elementos: Esquema del dominio: son como los esquemas conceptuales de

las modernas bases de datos, en este caso constituyen la ontología de las clases y entidades del dominio. En un sistema de medicina contendría definiciones generales de enfermedades, síntomas, etc.

Base de conocimiento: constituye la instanciación del anterior. Por ejemplo, concretando las patologías y síntomas del cáncer de mama.

La segunda componente se refiere al conocimiento de inferencia. Las inferencias son bloques (building blocks) que representan el último nivel en la descomposición funcional del sistema. Por ejemplo, en un sistema de diagnóstico podría darse la inferencia verificar para identificar pruebas que sirvan para determinar si una enfermedad es la causa de un síntoma.

Finalmente se distingue el conocimiento de tarea. Describe los objetivos y las aplicaciones posibles, así como su descomposición en subtareas y, finalmente, inferencias. La especificación de estas tareas en módulos reusables denominados tipos de tarea es lo que se conoce en la bibliografía del campo como PSMs, problem solving methods. La particularidad de CommonKads es que éstos están especificados para una tarea concreta. Al igual que en la mayoría de las descomposiciones existentes se distinguen dos tipos básicos de tareas, las de análisis y las de síntesis.

Page 163: Tema General Sistemas Basados en Conocimientos

o Es importante recordar que la potencialidad de este planteamiento reside en que en la especificación de las tareas no hay conocimiento del dominio específico. En todo caso, se establecen suposiciones sobre la naturaleza del conocimiento del dominio.

Modelo de comunicación: o Describe las transacciones entre los agentes que realizan las tareas.o Se concretan los procesos de comunicación entre los agentes en un

formato independiente de la implementación, como el modelo del conocimiento.

Modelo de diseño: o Describe la estructura del SBC a desarrollar.o Se trata de diseñar el sistema sin modificar el modelo.o Permite el paso del nivel de conocimiento al nivel simbólico, mediante

técnicas y paradigmas de la inteligencia artificial. Considera restricciones externas (velocidad, programas, equipos, etc.).

o El modelo de diseño proporciona las especificaciones técnicas del sistema en lo referido a: módulos de software, plataforma de implementación, arquitectura y los elementos de representación y de cálculo necesarios para llevar a cabo las funciones establecidas en el modelo del conocimiento y de comunicación.

o Conviene aclarar que el vocabulario utilizado en la especificación de este modelo es radicalmente diferente al anterior y muchos de sus términos provienen del campo de la ingeniería del software.

La implementación de los modelos se realiza a través de:

Plantillas: Modelos predefinidos por CommonKADS (hojas de trabajo) Instancias: Modelos con información específica del proyecto, pueden existir

varias instancias de un mismo modelo. Versiones: Describen la evolución de las instancias en el ciclo de vida del

proyecto.

En esta sesión de aprendizaje desarrollamos el nivel de contexto, en la siguiente sesión desarrollamos el nivel de concepto.

Page 164: Tema General Sistemas Basados en Conocimientos

Hojas de trabajo del Modelo de Organización. (05 hojas)

Objetivos del Modelo de Organización:

Identificar las áreas de la organización que presentan problemas o posibles oportunidades de mejora.

Proponer soluciones potenciales. Tomar decisiones sobre la viabilidad económica y técnica del proyecto

Hoja de trabajo OM-1: Problemas y oportunidades de mejora

Objetivo Análisis del contexto de la organización (elemento invariante), problemas y soluciones

Problemas y oportunidades

Enumerar los problemas y posibilidades de mejora que han podido ser observados

Contexto organizacional

Indicar las características claves de la organización, situar los problemas y posibilidades de mejora dentro de la perspectiva adecuada. Algunas de estas características son: misión, visión y objetivos de la organización; factores externos con los que tiene que tratar la organización; y estrategia de la organización

Soluciones Listar las posibles soluciones para los problemas y posibilidades percibidas dentro del contexto de la

organización

Hoja de trabajo OM-2: Aspectos variables

Objetivo Descripción del área de interés de la organización (elemento variable)

Estructura Gráfico de la parte de la organización objeto de análisis en términos de departamentos, grupos, unidades, etc.

Procesos Diagrama de los procesos que se llevan a cabo. Se detallarán en la hoja de trabajo OM-3

Personal Identificación y enumeración de los miembros de la planilla implicados en los procesos

Recursos Descripción de los recursos utilizados por los procesos: sistemas de información, equipamiento, material, experiencia social o interpersonal, tecnología, etc.

Conocimiento Identificación y enumeración de los activos de conocimiento. Se detallarán en la hoja de trabajo OM-4

Cultura y potencial

Modus operandi no explícitos, incluyendo formas de trabajar, de comunicarse, relaciones formales e informales, etc.

Hoja de trabajo OM-3: Descomposición de los procesos

Page 165: Tema General Sistemas Basados en Conocimientos

Objetivo Describir en detalle el proceso objeto de mejora

Identificador Número de tarea

Nombre Nombre de la tarea como parte de los procesos descritos en OM-2

Realizada por Agente humano o software encargado de la tarea perteneciente al personal o a los recursos descritos en OM-2

Lugar Localización de la tarea en la estructura descrita en OM-2

Recurso de Conocimiento

Nombre de los recursos de conocimiento descritos en OM-2

Intensiva en conocimiento

Si o No

Importancia Grado de importancia de la tarea en los procesos descritos en OM-2, usando un criterio predefinido

Hoja de trabajo OM4: Activos de conocimiento

Objetivo Visión preliminar de los activos de conocimiento involucrados en el proceso objeto de mejora

Recurso de conocimiento

Nombre del recurso de conocimiento enumerado en OM-2 / OM-3

Pertenece a Agente humano o software poseedor del recurso de conocimiento perteneciente al personal o a los recursos descritos en OM-2 / OM-3

Usado en Lista de tareas que utilizan el recurso de conocimiento, utilizando los identificadores asignados en OM-3

¿Uso correcto? ¿Se utiliza el recurso en forma correcta?

¿Lugar correcto?

¿Se utiliza el recurso en el lugar correcto?

¿Momento correcto?

¿Se utiliza el recurso en el momento correcto?

¿Calidad correcta?

¿Tiene el recurso la calidad correcta?

Hoja de trabajo OM-5: Análisis de viabilidad

Objetivo Identificar las implicaciones clave de la información recogida en los formularios anteriores

Viabilidad empresarial

Beneficios, valor añadido, coste esperado, cambios en la organización, etc.

Viabilidad técnica

Técnicas y métodos actuales, criterios de éxito, etc.

Viabilidad del proyecto

Disponibilidad de los recursos, compromiso de implantación, etc.

Acciones Plan de actuación; área de actuación; solución elegida; resultados,

Page 166: Tema General Sistemas Basados en Conocimientos

propuestas costes y beneficios esperados; proceso de implantación

Hojas de trabajo del Modelo de Tareas. (02 hojas)

Objetivo del Modelo de Tareas:

Descripción detallada de las tareas y de los elementos de conocimiento dentro del proceso en el que se implementará el SBC, dependiendo del análisis de viabilidad de la fase anterior.

Hoja de trabajo TM-1: Análisis de tareas

Objetivo Descripción detallada de los problemas

Tarea Identificador y nombre de la tarea (OM-3)

Organización Proceso del que esta tarea forma parte, y parte de la organización donde se desarrolla (OM-3)

Objetivo y valor Objetivo de la tarea y el valor que añade al proceso del que forma parte

Dependencia y flujos

Enumeración de tareas precedentes que proporcionan la entrada y de las tareas que utilizan el resultado de ésta

Objetos manipulados

Descripción de los objetos de entrada, de salida e internos utilizados en la tarea

Tiempo y control Frecuencia y duración de la tarea, precondiciones y postcondiciones de la tarea, restricciones que se deben cumplir durante su ejecución

Agentes Agentes responsables de desarrollar la tarea (OM-2 / OM-3)

Conocimiento y capacidad

Capacidades necesarias para el desarrollo de la tarea (OM-4), los elementos de conocimiento se describen en TM-2

Recursos Se describen y cuantifican los recursos requeridos por la tarea, refinamiento de OM-2

Calidad y eficiencia

Medidas utilizadas por la organización para determinar la ejecución exitosa de la tarea

Hoja de trabajo TM-2: Elemento de conocimiento

Objetivo Análisis de los cuellos de botella del conocimiento

Nombre Elemento de conocimiento enumerado en OM-3

Poseído por Agente poseedor del conocimiento indicado en OM-4

Usado en Nombre e identificador de las tareas en la que se usa este conocimiento indicado en OM-3

Dominio Dominio mas amplio en el que se encuentra el conocimiento,

Page 167: Tema General Sistemas Basados en Conocimientos

especialidad, disciplina, rama de la ciencia o ingeniería,etc.

Naturaleza Para cada característica indicar sí o no, y si un cuello de botella (fuente de problemas) que debe ser mejorado:

Formal, riguroso Empírico, cuantitativo Heurístico, sentido común Especializado, específico del dominio Basado en la experiencia Basado en la acción Incompleto Incierto, puede ser incorrecto Cambia con rapidez Difícil de verificar Tácito, difícil de transferir

Forma Para cada característica indicar sí o no, y si un cuello de botella (fuente de problemas) que debe ser mejorado:

Mental Papel Electrónica Habilidades otros

Disponibilidad Para cada característica indicar sí o no, y si un cuello de botella (fuente de problemas) que debe ser mejorado:

Limitaciones en tiempo Limitaciones en espacio Limitaciones de acceso Limitaciones de calidad Limitaciones de forma

Page 168: Tema General Sistemas Basados en Conocimientos

Tipología de tareas

En la metodología Commonkads se ha definido un catálogo de tareas agrupadas por tipos:

TIPOLOGÍA DE TAREAS

Analíticas Sintéticas

El sistema (solución) preexiste (aunque no sea visible).

Entrada: Algún dato del sistema.

Salida: Alguna caracterización del sistema.

El sistema (solución) no existe antes del desarrollo.

Entrada: Requisitos del sistema a construir.

Salida: Descripción del sistema construido.

Las tareas están predefinidas en el modelo de acuerdo a la siguiente tabla:

Tipo/Tarea Entrada Salida Conocimiento Características

Analítica Observaciones del sistema

Caracterización del sistema

Conocimiento Características

Clasificación Características del objeto

Clase del objeto

Asociaciones

Clase-característica

El conjunto de clases está predefinido

Diagnosis Síntomas/Quejas Categoría del fallo

Modelo de comportamiento del sistema

El formato de salida es variable (modelo causal, estado, componente) y depende del uso que se vaya a hacer

Valoración Descripción del caso

Clase de decisión

Criterios, normas Se realizan en un momento concreto

Monitorización Datos del sistema

Clase de discrepancia

Comportamiento normal del sistema

El sistema evoluciona en el tiempo. La tarea se ejecuta

Page 169: Tema General Sistemas Basados en Conocimientos

repetidamente

Predicción Datos del sistema

Estado del sistema

Modelo de comportamiento del sistema

El estado del salida consiste en una descripción del sistema en algún punto temporal futuro

Sintética Requisitos Estructura del sistema

Elementos, restricciones, preferencias

Es preciso generar la descripción del sistema

Diseño Requisitos Descripción del artefacto

Componentes, restricciones, preferencias

Puede incluir el diseño creativo de componentes

Diseño de configuraciones

Requisitos Descripción del artefacto

Componentes, estructura de diseño, restricciones, preferencias

Subtipo de diseño en el que todos los componentes vienen predefinidos

Asignación Dos conjuntos de objetos.

Requisitos

Asignación del conjunto 1 sobre el conjunto 2

Restricciones y preferencias

La asignación no tiene porque ser de uno a uno

Planificación Metas, requisitos

Plan de acción Acciones, restricciones, preferencias

Las acciones se ordenan (parcialmente) en el tiempo

Programación Actividades de trabajo, recursos, ranuras de tiempo, requisitos

Las actividades se distribuyen en las ranuras de tiempo de los recursos

Restricciones, preferencias

Se distingue la asignación en su orientación temporal

Modelado Requisitos Modelo Elementos de modelado, plantillas de modelo

Podría incluir síntesis creativa

Page 170: Tema General Sistemas Basados en Conocimientos

Hoja de trabajo del Modelo de Agentes. (01 hoja)

Objetivo del Modelo de Agentes:

Análisis de impacto y mejoras desde el punto de vista de los agentes que realizan las tareas.

Hoja de trabajo AM-1: Agentes

Objetivo Descripción de los agentes que desarrollan las tareas

Nombre Nombre del agente

Organización Posición del agente dentro de la organización, incluyendo su tipo (humano, sistema de información) (OM-2)

Implicado en Tareas en las que está implicado (TM-1)

Se comunica con Nombres de otros agentes

Conocimiento Elementos de conocimiento que el agente posee (TM-2)

Otras competencias Lista del resto de competencias requeridas o presentes en el agente

Responsabilidades y restricciones

Responsabilidades del agente durante la ejecución de la tarea, así como sus restricciones de autoridad respecto a las normas legales o profesionales, etc.

Page 171: Tema General Sistemas Basados en Conocimientos

Hoja de trabajo Resumen. (01 hoja)

Se elabora una vez terminados los modelos de tareas y agentes.

Hoja de trabajo OTA-1: Documento sobre impacto y mejora

Impacto y cambios en la organización

Describir el impacto y cambios que el SBC traerá a la organización, comparándola con la estructura actual

Impacto y cambios en tareas y agentes

Describir el impacto y cambios que el SBC introducirá en los agentes y tareas, comparándolos con la situación actual. Indicando los cambios

En la estructura de las tareas En los recursos necesarios En los criterios de calidad En los agentes implicados En las posiciones de los agentes implicados En el conocimiento y capacidad requeridos En los canales de comunicación

Actitudes y compromisos

Analizar cómo reaccionarán a los cambios introducidos los individuos y el personal cualificado involucrado

Acciones propuestas

Acuerdos de gestión y toma de decisiones

Mejoras: ¿Cuáles son los cambios recomendados? Medidas adicionales: ¿Qué medidas hay que tomar para

facilitar dichos cambios? Acciones del proyecto: ¿Cuál es la siguiente acción a

realizar dentro del proyecto respecto al SBC? Resultados, costes y beneficios esperados (OM-5) En caso de cambios en la organización, ¿en qué

condiciones es adecuado reconsiderar las acciones tomadas?

Se comunica con Nombres de otros agentes

Conocimiento Elementos de conocimiento que el agente posee (TM-2)

Otras competencias

Lista del resto de competencias requeridas o presentes en el agente

Responsabilidades y restricciones

Responsabilidades del agente durante la ejecución de la tarea, así como sus restricciones de autoridad respecto a las normas legales o profesionales, etc.

Page 172: Tema General Sistemas Basados en Conocimientos

Mapa de trabajo para el nivel de contexto

Page 173: Tema General Sistemas Basados en Conocimientos

Bibliografía

1.1. Escrig, Pacheco, Toledo. El lenguaje de programación Prolog.

Universidad Jaume I de Castellón. Disponible en: http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

2. Nilson, Maluzynski. Logic, Progamming and Prolog. OpenLibra. Disponible en: http://www.etnassoft.com/biblioteca/logic-programming-and-prolog-2ed/

3. L. Sterling and E. Shapiro. The Art of Prolog. The MIT Press, Cambridge, Mass., second edition, 1994.

4. W.F. Clocksin and C.S. Mellish. Progamming in Prolog. Springer-Verlag, Berlin, fourth edition, 1994.

5. I. Bratko. Prolog Programming for Artificial Intelligence. Addison-Wesley, Reading, Massachusetts, third edition, 2001.

6. R. O’Keefe. The Craft of Prolog. The MIT Press, Cambridge, MA, 1990.

Page 174: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadas

Para saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: De Inteligencia Artificial, Sistemas Expertos, Robótica, Procesamiento de Lenguaje Natural e Ingeniería del Conocimiento

URL: http://www.tendencias21.net/iartificial/De-Inteligencia-Artificial-Sistemas-Expertos-Robotica-Procesamiento-de-Lenguaje-Natural-e-Ingenieria-del-Conocimiento_a3.html

Breve descripción:

El autor del documento realiza un análisis critico de la inteligencia artificial, se formula preguntas respecto a los sistemas expertos y la robótica. No intenta transferir conocimiento, lo que trata es cuestionar los conceptos de ña inteligencia artificial incluyendo a los sistemas expertos haciendo referencias históricas.

…………………………………………………………………………………………………………………….…………..

Documento 2: Metodología CommonKads en el desarrollo de sistemas expertos

URL:http://publicaciones.uci.cu/index.php/SC/article/view/868/583

Breve descripción:

En este documento el autor presenta la metodología CommonKads en forma calara y concreta, usando el recurso didáctico mapas conceptuales para cada uno de los modelos. Comenta otras metodologías de desarrollo de sistemas expertos.

Page 175: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

Es difícil formular una definición única de los sistemas expertos, sin embargo podemos concluir que los sistemas expertos buscan imitar el comportamiento humano en determinado campos de estudio.

La taxonomía de los sistemas expertos permite comprender los diferentes escenarios sobre los que podemos construir aplicaciones de los sistemas expertos.

La arquitectura de los sistemas expertos es un referente para su desarrollo en función de los módulos propuestos, haciendo énfasis en el módulo de adquisición del conocimiento, el motor de inferencias, la base de conocimientos, el módulo de explicaciones y el módulo de consultas del usuario.

Aunque existen varias metodologías para desarrollar sistemas expertos, en este curso proponemos el uso de CommonKads, adecuando la programación en los IDEs SWI-Prolog y Visual Prolog.

Page 176: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?

Page 177: Tema General Sistemas Basados en Conocimientos

Tema 06. Adquisición del conocimiento

Fuente: http://www.upf.edu/hipertextnet/numero-2/linguistica.html

Bienvenida

Estimados estudiantes ¡bienvenidos! a la sexta semana del curso, donde presentaremos los métodos y técnicas para adquirir el conocimiento. La gestión del conocimiento es el tema central de nuestro curso y buscamos técnicas que permitan el procesamiento del conocimiento en medios informáticos. La sesión anterior presentamos la metodología CommonKads para modelar sistemas expertos y tratamos el nivel de contexto, es momento de tratar ahora el nivel de concepto que contiene el modelo del conocimiento y el de comunicación. Hacemos énfasis en el modelo de conocimiento que nos permitirá escribir programas y desarrollar aplicaciones en lenguaje Prolog. Los contenidos se complementan con interesantes lecturas, valiosos videos, páginas interactivas e importantes actividades de evaluación que conducen a la metacognición y a la comprobación de los aprendizajes logrados.

¡ Continuemos con el interesante estudio de tratamiento del conocimiento!

Page 178: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente: http://es.slideshare.net/uni_fcys_sistemas/metodologa-commonkads

El desarrollo de sistemas expertos requiere captar el conocimiento de personas especializadas para llevarlo a formatos y estructuras que permitan su tratamiento en medios computacionales. Trataremos este aspecto en dos etapas, la primera nos permitirá conocer y utilizar técnicas para captar el conocimiento de los expertos (intervención humana), y la segunda nos permitirá transformar este conocimiento en estructuras compatibles con medios computacionales.

La adquisición del conocimiento humano para llevarlo a la computadora es todo un reto para los profesionales de la ingeniería del conocimiento, en nuestro curso presentamos un método básico para captar conocimiento y un conjunto de técnicas de nivel humano, como por ejemplo, las entrevistas, la lluvia de ideas, etc.

Luego presentamos el modelo de conocimiento perteneciente al nivel de concepto de la metodología CommonKads, para ello utilizamos el CML (Conceptual Modelling Language), la producción de código en este lenguaje es transparente a la tecnología utilizada para desarrollar el sistema experto, sin embargo durante el estudio podremos apreciar muchas similitudes con los IDEs presentados en sesiones anteriores (SWI-Prolog y Visual Prolog).

Por supuesto que existen varias metodologías para representar el conocimiento adquirido, sin embargo para efectos de nuestro curso, tomando conocimiento de la metodología CommonKads podemos construir esquemas mentales del conocimiento y transferirlos a otros lenguajes de tipo general o específicos a diferentes plataformas de desarrollo.

En forma concreta durante esta sesión presentaremos una definición inicial del conocimiento y que tipo de conocimiento podemos procesar en computadores, luego revisamos una metodología básica e intuitiva que nos permita desarrollar sistemas expertos. Finalmente presentamos el lenguaje CML que nos permitirá expresar las reglas de producción requeridas en Prolog.

Page 179: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este sexto tema:

Capacidades

Conoce la problemática en adquisición del conocimiento. Identifica los tipos de conocimiento que pueden ser tratados con tecnologías. Conoce las diferentes metodologías para captar conocimiento con el apoyo de

las tecnologías.

Actitudes

Valora las técnicas artificiales para adquirir conocimiento.. Asume responsabilidad en el cumplimiento de las actividades programadas. Asume una posición proactiva respecto al uso de metodologías para la

adquisición de los conocimientos en escenarios tecnológicos.

Page 180: Tema General Sistemas Basados en Conocimientos

Marco conceptual

Observa detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 181: Tema General Sistemas Basados en Conocimientos

6.1 La problemática en la adquisición del conocimiento.

Fuente: http://menteerrabunda.blogspot.com/2010/01/sistemas-inteligentes.html

Para enfocar el problema de la adquisición del conocimiento nos formulamos tres preguntas:

1. ¿Qué es un conocimiento?2. ¿Cómo adquiere el hombre los conocimientos?3. ¿Cómo podemos transferir los conocimientos a un computador?

Un conocimiento es la capacidad adquirida de hacer algo, sin embargo no basta con estar informado, haber leído o estudiado un tema para decir que se poseen conocimientos con respeto a ese tema, lo importante es su aplicación.

En forma resumida podemos afirmar que el conocimiento se adquiere a través de un proceso que tiene tres etapas sucesivas perfectamente definidas:

1. Recepción y comprensión de la información.2. Experimentación con los conceptos recibidos, verificando su aplicación en casos

reales.3. Aptitud para gestionar el conocimiento adquirido aplicándolo en nuevas

situaciones.

La transferencia de conocimientos al computador es un problema complejo, sin embargo se viene estudiando en el campo de la inteligencia artificial métodos pertinentes al almacenamiento de información y conocimientos, tratamiento de los datos y sus relaciones que constituyen la base del razonamiento automático.

En nuestro curso delimitamos la adquisición del conocimiento como el proceso de recolección de información a partir de cualquier fuente (personas expertas, libros, revistas, etc.) requerida para construir un sistema experto.

Probablemente la adquisición del conocimiento es la tarea más importante en el proceso de desarrollo de sistemas expertos, está presente en cada una de las etapas,

Page 182: Tema General Sistemas Basados en Conocimientos

sin embargo aún no se cuenta con métodos automáticos y y de momento es un campo de estudio experimental, en este sentido realizaremos actividades a la medida adecuándonos a las características de cada caso particular y de los expertos involucrados.

El conocimiento presenta una problemática que tratamos de expresar en las siguientes líneas:

El conocimiento se adquiere mediante la interacción directa con el experto. El conocimiento difundido entre los científicos se encuentra en el nivel tácito

(adquirido a través de la práctica y experiencia) y es muy complejo expresarlo en forma explícita.

La experiencia plantea una paradoja: “Los expertos más competentes son incapaces de describir el conocimiento que usan para resolver los problemas”. Esta situación complica el proceso cuando se pregunta al experto directamente acerca de qué reglas o métodos usa para resolver un tipo de problema particular en el dominio.

La interacción consiste en una serie prolongada de intensas y sistemáticas entrevistas.

Para comprender el nivel del problema, sugerimos al estudiante, nos explique cómo se le enseño a manejar bicicleta y de que manera adquirió estos conocimientos, es muy complicado articular cada paso y hasta es posible ignorar cada uno de los pasos individuales dados para lograr adquirir el conocimiento.

El nivel de conocimiento de un experto parce haber seguido una ruta de compilación y lo que buscamos con la adquisición del conocimientos es reducirlo a su mínima expresión para transferirlo a un computador que pueda darle tratamiento, es como pasar un programa compilado a su código fuente.

Cuando un experto se enfrenta a nuevas situaciones aplica principios generales y procesos deductivos métodos que proporcionan enlaces causales entre varias etapas de un a sucesión de sub-problemas. El experto aplica principios que conoce pero no puede explicar (o se le hace muy difícil) o quizás no tiene conciencia de lo que conoce.

Page 183: Tema General Sistemas Basados en Conocimientos

6.2 Tipos de conocimiento.

Fuente: http://cibertareas.com/tipos-de-conocimiento-introduccion-las-ciencias-sociales.html

Existen diferentes tipos de conocimiento y cada autor los define en función de los usos que le va a dar, en nuestro caso, para efectos del desarrollo de sistemas expertos proponemos los siguientes tipos de conocimiento.

Conocimiento conceptual.o Conocimiento de conceptos, hechos o ideas. Describen las principales

entidades y relaciones del dominio.o Conocimiento clasificatorio. Distingue entre conceptos similares.

Conocimiento procedimental.o Conocimiento de procedimientos rutinarios. Formado por técnicas

estándar y procedimientos de trabajo.o Heurísticas. Son reglas prácticas utilizadas para realizar tareas. Facilitan

la implementación de reglas de producción (frente a la situación A realizamos la acción B).

Conocimiento semántico.o Está referido a saber y explicar el significado y sentido del

funcionamiento de ciertos lenguajes propios de cada negocio o proceso, relacionando las características estructurales y su significado.

Conocimiento episódico.o Es el conocimiento que, intuitivamente, todos sabemos, que adquirimos

y recordamos: el de qué pasó en la situación concreta de aprendizaje y cuándo ésta tuvo lugar.

Page 184: Tema General Sistemas Basados en Conocimientos
Page 185: Tema General Sistemas Basados en Conocimientos

6.3 Métodos básicos para captar conocimiento.

Fuente: http://jorfallahuert.blogspot.com/

El conocimiento tal como lo concebimos actualmente implica un proceso progresivo y gradual desarrollado por el hombre para aprehender su mundo y realizarse como individuo. Esta concepción es demasiada amplia para trabajar en nuestro curso, mas bien debemos limitarla al conocimiento adquirido por el ser humano para resolver tareas específicas que requieren cierto grado de conocimiento. Tal es el caso de las denominadas "profesiones" que requieren estudios específicos a determinadas áreas del quehacer humano.

En este sentido para llevar el conocimiento humano a medios computarizados que puedan ejercer algún tipo de razonamiento automático es necesario utilizar métodos y técnicas específicas, esta tarea resulta compleja por cuanto el temas se encuentra aún en estudio, sin embargo se ha definido a la ontología en términos computacionales como un entendimiento común y compartido de un dominio que puede comunicarse entre científicos y sistemas computacionaleses por lo tanto es un recurso artificial creado por el hombre para conceptualizar algún tipo de conocimiento en un modelo abstracto en el que se identifican conceptos relevantes y las relaciones entre sus actores independiente de las plataformas computacionales requeridas para su implementación..

En esta sesión de aprendizaje presentamos inicialmente un método básico que se implementa con las siguientes fases: identificación, conceptualización, formalización, implementación y pruebas. Posteriormente presentamos una metodología de carácter general denominada CommonKads que permite modelar el conocimiento en determinado tema para luego ser implementado en cualquier plataforma tecnológica.

Page 186: Tema General Sistemas Basados en Conocimientos

Técnicas para adquirir conocimiento.

Para efectos de nuestro curso denominamos adquisición de conocimiento al proceso de recoger los datos e información que necesitamos para construir un sistema basado en conocimientos.

En la siguiente tabla mostramos algunas técnicas para adquisición de conocimientos.

Tipo conocimiento Actividad Técnica

Declarativo Búsqueda de heurísticas generales

Entrevistas no estructuradas

Procedimental Búsqueda de rutinas y procedimientos

Entrevistas estructuradas

Semántico Búsqueda de conceptos y vocabulario

Observación directa

Análisis de tareas

Heurísticas y procedimientos de toma de decisiones

Emparrillado

Clasificaciones

Trazado del proceso de razonamiento

Episódico Búsqueda de heurísticas analógicas de solución de problemas

Simulaciones

Seguimiento de protocolos

Page 187: Tema General Sistemas Basados en Conocimientos

Método básico para adquirir conocimiento.

La adquisición del conocimiento para construir sistemas expertos se puede realizar siguiendo este esquema que presenta una secuencia de fases:

FASE PRODUCTO TRABAJA CON

Identificación Requerimientos. Problemas, características.

Conceptualización Conceptos Conceptos que representan el conocimiento

Formalización Estructura Organización del conocimiento, espacio de búsqueda

Implementación Reglas Construcción de reglas que representan el conocimiento

Prueba Lista de cotejo Verificación de la adquisición del conocimiento

Page 188: Tema General Sistemas Basados en Conocimientos

Procedimientos de las fases de adquisición del conocimiento:

1. Identificación:1. Definir el problema con los siguientes requisitos:

1. No debe ser trivial (se resuelve de manera algorítmica)2. Se requiere de fuentes de conocimiento.3. Problema complejo.

2. Búsqueda de fuentes de información:1. Expertos humanos en el dominio del problema.2. Libros y manuales que traten el problema y técnicas de

resolución.3. Ejemplos de casos resueltos.

3. Definición de datos y criterios que determinan la solución (Primera descripción del problema):

1. Objetivos.2. Motivaciones.3. Estrategias de resolución y justificación.4. Fuentes de conocimiento.5. Tipos de tareas requeridas

2. Formalización.1. Definir esquemas de razonamiento para modelar la resolución del

problema.2. Definir el espacio de búsqueda de soluciones y tipo de búsqueda a

realizar.3. Definir la certidumbre y completud de la información representada en

datos o hechos verdaderos.4. El objetivo es desarrollar un modelo formal que permita razonar a un

programa de computador.3. Implementación.

1. Identificación de algoritmos de resolución del problema.2. Definición de las estructuras de datos para la representación del

conocimiento.3. Pueden aparecer incoherencias que requieran retroalimentación de las

fases anteriores.4. Prueba.

1. Selección de casos resueltos representativos.2. Elaborar una lista de cotejo para verificar el funcionamiento del sistema

aplicado a los casos representativos.3. En función de los resultados, se deben corregir las incoherencias de las

fases anteriores.

Page 189: Tema General Sistemas Basados en Conocimientos

6.4 Presentación de metodologías para adquirir conocimiento.

Fuente: http://cmapspublic3.ihmc.us/rid=1LNT1R7KL-JZ1G1L-1BFL/principal.cmap

Existen varias metodologías para adquirir y representar el conocimiento tales como MASE, GAIA, COMMONKADS, INGENIAS, MESSAGE entre otras. Por consideraciones de tiempo y practicidad se ha seleccionado utilizar COMMONKads en nuestro curso. Es conveniente revisar información relacionada a las otras metodologías.

La metodología CommonKads presentada en el curso sugiere construir el modelo de conocimientos en forma clara y precisa que permite la construcción de sistemas expertos en este sentido presentamos un resumen y en forma secuencial este proceso siguiendo la sintaxis del lenguaje CML (Conceptual Modelling Language) propuesto por la misma metodología.

Debemos mencionar que para comprender esta metodología se requiere cierta experiencia el el uso de otras metodologías y lenguajes de modelado de la ingeniería de software, pues en el ámbito del curso no está contemplado el estudio detalle de metodologías de desarrollo.

Page 190: Tema General Sistemas Basados en Conocimientos

Conocimiento del dominio.

Conocimiento e información estáticos relevantes del dominio. Equivalente al modelo de datos (entidades) o al modelo clases (O/R). Se definen dos componentes:

o Esquema del dominio. Declara la estructura estática de la información. Equivale al modelo de datos. Se define a través de los constructos del dominio. Formado por:

Conceptos. Declaran entidades, objetos o instancias del

dominio con estructura de información semejantes.

Equivale a definir clases pero sin métodos. Atributos.

Tipos de datos estándar o declarados por el usuario.

Corresponden a las características de los conceptos.

Relaciones. Equivalen a las asociaciones E-R en modelos

relaciones o O-O en modelos de objetos. Tipos de reglas.

Introduce el concepto de expresiones lógicas. No tiene equivalente en la ingeniería de software

tradicionalo Base de conocimiento.

Implementa el esquema del dominio. Contiene instancias de los tipos especificados en el esquema de

dominios. Equivale a una base de datos.

Page 191: Tema General Sistemas Basados en Conocimientos

Declaración del conocimiento

Declaración del conocimiento del dominio.

El conocimiento del dominio en CMLDOMAIN-KNOWLEDGE identificadorDK;

/* Descripción del esquema(s) del dominio */

DOMAIN-SCHEMA identificadorDS

Especificación de conceptos

Especificación de relaciones

Especificación de atributos

Especificación de reglas

/* Descripción de la(s) base(s) de conocimiento */

KNOWLEDGE-BASE indentificadorKB

Ocurrencias de objetos del esquema

END DOMAIN-KNOWLEDGE identificadorDK;

Declaración del esquema del dominio.

El esquema del dominio en CML con especificaciones definidas en el mismo esquemaDOMAIN-SCHEMA identificador;

Especificación de conceptos

Especificación de relaciones

Especificación de atributos

Especificación de reglas

Page 192: Tema General Sistemas Basados en Conocimientos

END DOMAIN-SCHEMA identificador;El esquema del dominio en CML con especificaciones importadas de otros esquemas

(Modularización y reutilización)DOMAIN-SCHEMA identificador;

USES componentes_de_ordenador

...

END DOMAIN-SCHEMA identificador;El esquema del dominio en CML con algunas especificaciones importadas de otros esquemas

(Modularización y reutilización)DOMAIN-SCHEMA identificador;

USES memoria, cpu FROM componentes_de_ordenador

...

END DOMAIN-SCHEMA identificador;

Page 193: Tema General Sistemas Basados en Conocimientos

Declaraciones de conceptos.Conceptos en CMLCONCEPT cliente;DESCRIPTION:”Datos personales del cliente”;ATTRIBUTES:nombre: STRING;domicilio: STRING;edad: NATURAL;...AXIOMS:edad >= 18;END CONCEPT cliente;

Conceptos en CMLCONCEPT marcador_combustible;DESCRIPTION:"Dispositivo que muestra elnivel disponible decombustible";ATTRIBUTES:marca: valor_marcador;END CONCEPT marcador_combustible;

CONCEPTtanque_combustible;DESCRIPTION:"Recipiente de combustible";ATTRIBUTES:nivel:{lleno, medio, vacío}END CONCEPT tanque combustible;

VALUE-TYPE valor_marcadorVALUE-LIST {normal, bajo, cero}TYPE ORDINAL;END VALUE-TYPE valor marcador

Page 194: Tema General Sistemas Basados en Conocimientos

Declaración de relaciones

Declaración de relaciones de especialización/generalizaciónJerarquías de conceptos en CMLCONCEPT ordenador;DESCRIPTION:"Ordenador personal";SUPER-TYPE-OF: portátil,sobremesa;SEMANTICS:DISJOINT: YES;COMPLETE: YES;ATTRIBUTES:marca: STRING;modelo: STRING;END CONCEPT ordenador;

CONCEPT portátil;DESCRIPTION:”Ordenador personal portátil”;SUB-TYPE-OF: ordenador;ATTRIBUTES:peso: FLOAT;autonomía: FLOATEND CONCEPT portátil;

CONCEPT sobremesa;DESCRIPTION:”Ordenador personal fijo”;SUB-TYPE-OF: ordenador;END CONCEPT portátil;

Declaración de relaciones de agregación (todo / parte)Relaciones de agregación en CMLCONCEPT ordenador;DESCRIPTION:”Ordenador personal”;HAS-PARTS: cpu, memoria.ATTRIBUTES:marca: STRING;modelo: STRING;END CONCEPT portátil;

CONCEPT memoria;DESCRIPTION:”Módulo de memoria RAM”;PART-OF: ordenadorATTRIBUTES:tipo: STRING;capacidad: NATURAL;velocidad: NATURAL;END CONCEPT memoria;

CONCEPT cpu;DESCRIPTION:”unidad central de procesamiento”;PART-OF: ordenadorATTRIBUTES:marca: STRING;modelo: STRING;velocidad: NATURAL;END CONCEPT cpu;

Declaración de relacionesRelaciones en CMLRELATION venta;ARGUMENTS:ordenador;CARDINALITY 0-1;cliente;CARDINALITY ANY;comercial;CARDINALITY ANY;ATTRIBUTES:fecha-de-venta: DATE;END RELATION venta;

Page 195: Tema General Sistemas Basados en Conocimientos

Declaración de relaciones binariasRelaciones binarias en CMLRELATION comprado-por;INVERSE: comprar;ARGUMENT-1: ordenador;CARDINALITY 0-1;ARGUMENT-2: cliente;CARDINALITY ANY;[REFLEXIVE | SYMMETRIC | TRANSITIVE]END RELATION comprado-por;

Page 196: Tema General Sistemas Basados en Conocimientos

Declaración de tipos de reglas

Declaración de tipos de reglas

Esta construcción requiere una explicación previa.

Objetivo: Calificar la disponibilidad crediticia de una persona en función del sueldo que percibe

Premisas:

1. Tenemos un concepto persona con atributos nombre y sueldo2. Tenemos un concepto préstamo con atributos cantidad e intereses.

Conjunto de reglas:

R1: Si persona.sueldo <= 1000 entonces la persona califica para préstamo.cantidad <= 200.

R2: Si persona.sueldo <= 2000 entonces la persona califica para préstamo.cantidad <= 500.

Denominamos calificar_prestamo al conjunto de reglas.

Denominamos califica a la relación entre persona y préstamo.

La declaración de tipo de regla es genérica expresando una relación lógica para tomar decisiones.

Tipos de reglas en CMLRULE-TYPE calificar_prestamo;

DESCRIPTION:

"Califica la cantidad a prestar a una persona”

ANTECEDENT: persona.sueldo;

CONSEQUENT: prestamo.cantidadr;

CONNECTION-SYMBOL califica;

END RULE-TYPE calificar_prestamo;

Page 197: Tema General Sistemas Basados en Conocimientos

Declaración de bases de datos

Declaración de bases de conocimiento

Base de conocimiento en CMLKNOWLEDGE-BASE conocimiento_prestamos;

USES:

/* tipo de regla FROM esquema */

/* regla calificar_prestamo definida en esquema prestamo_consumo

calificar_prestamo FROM prestamo_consumo;

EXPRESSIONS:

/* declaración de las reglas */

persona.sueldo <= 1000 CALIFICA prestamo.cantidad <= 200;

persona.sueldo <= 2000 CALIFICA prestamo.cantidad <= 500;

END KNOWLEDGE-BASE conocimiento_prestamo;

Page 198: Tema General Sistemas Basados en Conocimientos

Declaración de inferencias

Conocimiento sobre inferencias en CMLINFERENCE-KNOWLEDGE identificador;

Descripción de inferencias, roles de conocimiento y

funciones de transferencia;

END INFERENCE-KNOWLEDGE identificador;Inferencia y roles de conocimiento en CMLINFERENCIA abstraer;

OPERATION-TYPE: ABSTRACT

ROLES:

INPUT caso;

OUTPUT caso-abstraido;

STATIC conocimiento-abstracción;

SPECIFICATION:

"Genera una transformación en los datos de entrada que produce una descripción más

cualificada de un caso”;

END INFERENCE abstraer;Inferencia y roles de conocimiento en CMLINFERENCIA diagnosticar;

OPERATION-TYPE: COVER

ROLES:

INPUT fallo;

OUTPUT hipótesis;

STATIC modelo-causal;

SPECIFICATION:

Page 199: Tema General Sistemas Basados en Conocimientos

"Genera el conjunto de todas las situaciones

que pueden causar el fallo introducido como

entrada”;

END INFERENCE diagnosticar;Inferencias en CMLKNOWLEDGE-ROLE caso;

TYPE: DYNAMIC;

DOMAIN-MAPPING: solicitud;

END KNOWLEDGE-ROLE caso;

KNOWLEDGE-ROLE caso-abstraido;

TYPE: DYNAMIC;

DOMAIN-MAPPING: solicitud;

END KNOWLEDGE-ROLE caso-abstraido;

KNOWLEDGE-ROLE conocimiento-abstracción;

TYPE: STATIC;

DOMAIN-MAPPING:

abstracciones FROM asesoramiento-computador;

END KNOWLEDGE-ROLE conocimiento-abstracción;

Inferencias en CML

TRANSFER-FUNCTION obtener;TYPE: OBTAINROLES:INPUT hallazgo-esperado;OUTPUT hallazgo-observado;END TRANSFER-FUNCTION obtener;

Page 200: Tema General Sistemas Basados en Conocimientos

Conocimiento sobre las tareas

Conocimiento sobre las tareas

Responde al ¿Qué? y ¿Cómo?. Está orientado a la meta:

o Diseño de un campo deportivo.o Asesorar sobre el otorgamiento de un préstamo hipotecario.

Describe estrategias para lograr las metas.o Generalmente tienen una estructura jerárquica:

Tareas – Métodos – Subtareas.o Tiene dos componentes:

TASK (La tarea). Define el objetivo del proceso de razonamiento que se

está intentando modelar en función de las entradas y las salidas.

Los datos de la tarea son independientes del dominio (si se trata de diagnóstico médico, la salida no es "enfermedad", se considera un nombre abstracto (genérico) tal como "categoría de avería")

TASK-METHOD (Método de la tarea). Define la estrategia que se debe seguir:

Especificación de su descomposición. Tareas.

Inferencias. Funciones de transferencia

Especificación del control Independiente del dominio.

Conocimiento sobre tareas en CMLTASK-KNOWLEDGE identificador;

Descripción de tareas y métodos de tareas;

END TASK-KNOWLEDGE identificador;Tareas en CMLTASK decidir-caso;

GOAL:

”Aplicar criterios al caso para tomar una decisión en

función de sus valores”;

ROLES:

Page 201: Tema General Sistemas Basados en Conocimientos

INPUT:

caso-abstraido;

criterios-especificos;

OUTPUT:

decisión;

END TASK decidir-caso;Métodos de las tareas en CMLTASK-METHOD metodo-decidir-caso;

REALIZES: decidir-caso;

DECOMPOSITION:

[TASKS: ...]

INFERENCES: especificar, seleccionar, evaluar, encajar;

TRANSFER-FUNCTIONS: obtener;

ROLES:

INTERMEDIATE:

criterios: ”el conjunto de criterios a evaluar”;

criterio: ”un criterio de asesoramiento”;

valor: ”valor de un criterio de asesoramiento”;

resultados: ”criterios seleccionados junto con sus valores”;

CONTROL-STRUCTURE:

Descripción en pseudocódigo del proceso a realizar en términos de

las subtareas, inferencias y funciones de transferencia

END TASK-METHOD metodo-decidir-caso;

Page 202: Tema General Sistemas Basados en Conocimientos

Actividad de análisis y comprensión

Después de haber tratado los contenidos sobre la adquisición del conocimiento responde a las siguientes preguntas:

Se dice que una persona tiene conocimiento cuando

Obtiene la nota más alta del áula

Ofrece una conferencia sobre un tema

Lee sobre un tema

Aplica lo aprendido.

Discute sobre determinado tema

Retroalimentación

Una persona tiene conocimiento cuando aplica lo aprendido, no basta solo con leer o estudiar.

Son tipos de conocimiento presentados en nuestro curso:

Científico

Inteligente

Conceptual

Intuitivo

Procedimental

Retroalimentación

En nuestro curso hemos presentado dos tipos de conocimiento: conceptual y procedimental.

El nivel de concepto de la metodología CommonKads tiene los modelos: CommonKads:

Conocimiento

Organización

Comunicación

Implementación

DiseñoRetroalimentaciónEl nivel de concepto de la metodología CommonKads tiene los modelos de conocimiento y de comunicación.

Page 203: Tema General Sistemas Basados en Conocimientos

Bibliografía

1. Alonso, A; Guijarro, B; Lozano, A; Palma, J; Tabeada, MJ. Ingeniería del conocimiento. Aspectos metodológicos. Pearson/Prentice may. Madrid 2004.

2. Anjewierden, A. A., De Hoog, R., Van De Belde, W. Y Wielinga, B. J. (1998). Engineering of Knowledge. The CommonKADS Methodology. MIT Press, 1999.

3. CommonKADS Technical Reports. http://CommonKADS.uva.nl4. Gómez, A. y otros: Ingeniería del Conocimiento. Centro de Estudios Ramón

Areces. Madrid, 1998.5. Harmon, P Y King, D.: Sistemas Expertos. Díaz de Santos, 1988.6. Nilsson, N. J.: Inteligencia Artificial. Un nuevo enfoque. McGraw-Hill. Madrid,

2000.7. Palma, J.; Martín, F. y Marín, R. Ingeniería del conocimiento. De la extracción al

modelado del conocimiento. Revista Iberoamericana de Inteligencia Artificial. Nº 11. 2001

8. Rich: Inteligencia Artificial. McGraw-Hill. 1995.9. Rational Software Corporation (1997). Unified Modelling Language. Notation

Guide. Version 1.1.URL: http://www.rational.com.10. Rodríguez, A.; Hernández, C.; Plácido, C. Ingeniería del Conocimiento.

Universidad de Las Palmas de Gran Canaria, 1994.11. Schreiber, A. T., Akkermans, J. M., Schreiber, G., Wielinga, B.J. y Breuker, J.A,

editors (1993).12. KADS: A Principled Approach to Knowledge-Based System Development.

Academic Press. 1993. ISBN 0-12-629040-7.

Page 204: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadas

Para saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: El conocimiento. Niveles y tipos de conocimiento.

URL: http://www.webdianoia.com/moderna/locke/locke_fil_conoc.htm

Breve descripción:

El autor presenta la filosofía de Locke quien plantea que el conocimiento es la percepción del acuerdo o desacuerdo de dos ideas. Sugerimos la lectura del documento para problematizar el tipo de conocimiento que puedes ser procesado en un computador y comprender la problemática que esto implica.

…………………………………………………………………………………………………………………….…………..

Documento 2: Metodologías de agentes.

URL: http://metodologiadeagentes.galeon.com/enlaces1101021.html

Breve descripción:

El documento digital presenta varias metodologías de agentes inteligentes, entre ellas: CommonKads, MASE y GAIA. Los agentes inteligentes constituyen un paso adelante en el estudio de la inteligencia artificial y debería ser parte de los conocimientos profesionales de nuestros egresados. Proponemos esta lectura para que el estudiante tenga una idea mas general de las tendencias en inteligencia artificial.

Page 205: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

La definición del conocimiento tiene diferentes escenarios en función del uso que se le va a dar.

En todo caso queda claro que con el conocimiento somos capaces de realizar alguna tarea inteligente.

La primera tarea para nosotros es adquirir y formalizar el conocimiento de los expertos o de las fuentes de información, luego debemos pasarla a formatos compatibles en un computador para su procesamiento, logrando el tan ansiado razonamiento automático.

Existen técnica para captar el conocimiento de acuerdo a los diferentes tipos definidos.

Es posible formalizar conocimiento independiente de la plataforma de desarrollo utilizando el lenguaje CML propuesto por CommonKads en el nivel conceptual, específicamente para su modelo de conocimiento.

Aunque la metodología CommonKads parece ser demasiado amplia, es necesario comprender que debemos tratar sus componentes en función del problema que queremos resolver, adaptando la a nuestras necesidades.

Page 206: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?

Page 207: Tema General Sistemas Basados en Conocimientos

Tema 07. Presentación de aplicaciones

Fuente:https://geekoverdose.files.wordpress.com/2012/07/wumpus-world.gif

Bienvenida

Estimados estudiantes ¡bienvenidos! a la séptima y última semana del curso, donde presentaremos diversas aplicaciones de sistemas basados en conocimiento, el objetivo de esta sesión es familiarizarse con casos resueltos que permitan consolidar los aprendizajes adquiridos durante el desarrollo del curso. Es probable que las soluciones sean presentadas en diferentes plataformas tecnológicas y constituyen un excelente laboratorio para transformar sus especificaciones del conocimiento a la sintaxis propuesta por el lenguaje CML y posteriormente desarrollar soluciones usando alguno de los IDEs propuestos en el curso.

¡ Estudiando casos fortalecemos nuestros aprendizajes!

Page 208: Tema General Sistemas Basados en Conocimientos

Introducción al tema

Fuente: http://www.educagratis.org/moodle/course/view.php?id=48

La práctica y experimentación fortalece los aprendizajes adquiridos durante las sesiones de un curso, Como ustedes pueden comprender el desarrollo de sistemas basados en conocimientos es una tarea compleja que demanda un esfuerzo grande en recursos y tiempo.

Durante el desarrollo de nuestro curso hemos proporcionado conceptos, técnicas y metodologías, herramientas de desarrollo, lenguajes de modelamiento y construcción. Ahora ha llegado el momento de analizar aplicaciones que nos permitan fortalecer los aprendizajes, para ello presentamos a ustedes un conjunto de proyectos desarrollados con diversas tecnologías y metodologías, esperamos que puedan ser comprendidas y analizadas en su contexto.

Estamos usando soluciones y proyectos tomandos directamente de Internet, algunos son presentados en cursos, otros en libros, blogs o directamente de la página de los autores, en todos los casos, lo hacemos con fines didácticos y con el ánimo de despertar en el estudiante el afán de búsqueda en tan importante espacio que nos brinda la tecnología.

Presentamos casos conocidos como por ejemplo el mundo de wumpus, el problema de las n reinas, el juego sudoku, domótica: la vivienda inteligente, aplicaciones en educación, aplicaciones de control, entre otros. La metodología que seguimos es presentar el caso, mostrar documentos que tratan el caso (en algunos se presentan las soluciones), seguir o implementar el caso, hacer un análisis y comentarios, terminando con la internalización de los conocimientos.

Esperamos que después de visualizar los contenidos propuestos, el estudiante complete sus aprendizajes desde un punto de vista de experimentación y prueba, para luego emprender con alto grado de aptitud la solución de casos de su entorno profesional.

Page 209: Tema General Sistemas Basados en Conocimientos

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este séptimo tema:

Capacidades

Define y diseña aplicaciones que requieren conocimientos. Aplica las técnicas de los sistemas basados en conocimiento para proponer

soluciones tecnológicas modernas. Propone alternativas de solución a problemas actuales con tecnologías

adecuadas.

Actitudes

Demuestra tolerancia y respeto ante la opinión de sus compañeros en el debate de un foro.

Asume responsabilidad en el cumplimiento de las actividades programadas. Valora la problemática del conocimiento y la posibilidad de formular soluciones

con tecnologías informáticas.

Page 210: Tema General Sistemas Basados en Conocimientos

Marco conceptual

Observa detenidamente el siguiente esquema, en el encontrarás de un "vistazo" de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?

Page 211: Tema General Sistemas Basados en Conocimientos

7.1 El mundo de wumpus.

Fuente: http://verilobi.com/wumpus+game/#prettyPhoto

El mundo de wumpus es una cueva que está compuesta por habitaciones conectadas mediante pasillos. Escondido en algún lugar de la cueva está el wumpus, una bestia que se come a cualquiera que entre en su habitación. El wumpus puede ser derribado por la flecha de un agente, y éste sólo dispone de una. Algunas habitaciones contienen hoyos sin fondo que atrapan a aquel que deambula por dichas habitaciones (menos al wumpus que es demasiado grande para caer en ellos). El único premio de vivir en este entorno es la posibilidad de encontrar una olla de oro. Aunque el mundo de wumpus pertenece más al ámbito de los juegos por computador, es un entorno perfecto para evaluar los agentes inteligentes. Michael Genesereth fue el primero que lo propuso.

Actividad de análisis, diseño y programación.

Este caso está propuesto en libro de Rusell (ver enlace en lecturas recomendadas) y aunque está orientado a ser resuelto como agente inteligente es un buen caso para modelar un sistema experto basado en la metodología CommonKads y realizar la programación en Prolog.

Sugerimos visitar el siguiente enlace e implementar el caso propuesto.

https://github.com/rlegendi/wumpus-prolog/

Page 212: Tema General Sistemas Basados en Conocimientos

7.2 Aplicaciones lúdicas.

Fuente: http://en.wikipedia.org/wiki/Sudoku

Una de las aplicaciones mas conocidas de la inteligencia artificial está referida a la solución de juegos en el computador. El capítulo 6 del libro de Rusell trata con mucho detalle este tema.

Durante el estudio de la inteligencia artificial se han planteado juegos clásicos como las “n reinas”, sudoku, tres en raya, las torres de Hanoi, entre otros.

El lenguaje Prolog es adecuado para resolver estos problemas, a continuación presentamos un conjunto de enlaces a código en Prolog.

Problema de las N-reinas

http://www.logic.at/prolog/queens/queens.html

http://blog.andinadigital.com/2012/09/23/demostracion-de-problema-de-las-n-reinas-en-swi-prolog-programacion-logica/

Juego Sudoku:

http://www.visual-prolog.com/vip/example/userExample/sudoku_Cumming/sudoku_Cumming.htm

Actividad de análisis y diseño y programación.

Proponemos al estudiante descargar el código desde los enlaces presentados, ejecutar los programas según el IDE utilizado, analizar su ejecución, visualizar y comprender el código fuente. Aplicando un proceso de reingeniería modelar el caso siguiendo la metodología CommonKads.

Page 213: Tema General Sistemas Basados en Conocimientos
Page 214: Tema General Sistemas Basados en Conocimientos

7.3 La vivienda inteligente.

Fuente: http://www.cedom.es/sobre-domotica/que-es-domotica

Construir una vivienda inteligente fue un sueño de muchos estudiosos de la inteligencia artificial y podemos afirmar que en la actualidad se han logrado avances impresionantes a través del campo conocido como “domótica”.

La domótica según la Asociación española de domótica e inmótica es “el conjunto de tecnologías aplicadas al control y la automatización inteligente de la vivienda, que permite una gestión eficiente del uso de la energía, que aporta seguridad y confort, además de comunicación entre el usuario y el sistema.”

Presentamos esta caso porque nos permite mostrar una extensión tecnológica a las propuestas de solución de la inteligencia artificial, nos referimos a los sistemas de control implementados con microcontroladores (arduino), aunque no es objetivo directo del curso el uso de microcontroladores, resulta interesante que los estudiantes adquieran conocimiento respecto a estos temas que luego podrán ser usado como temas de investigación.

Actividad de lectura y experimentación.Recomendamos al estudiante recorrer los siguientes enlaces con el objetivo de conocer la domótica y su implementación con software y hardware libre. Luego se sugiere modelar soluciones usando la metodología CommonKads.

Domótica: http://www.cedom.es/sobre-domotica/que-es-domotica https://www.casadomo.com/

Domótica con Arduino: http://forum.arduino.cc/index.php?topic=223723.0 http://domotica-arduino.es/es/ http://es.opendomo.org/arduino

Page 215: Tema General Sistemas Basados en Conocimientos

7.4 Implementación de electrónica digital.

Fuente: http://www.tourdigital.net/SimuladorTTLconEscenarios.htm

La electrónica digital implementa soluciones del mundo real basadas en chips (circuitos integrados) que contienen puertas lógicas construidas con semiconductores, fundamentalmente transistores y diodos. Las puertas lógicas se basan en la lógica digital que implementa los operadores lógicos and, or, not, etc. El funcionamiento de las puertas lógicas se define en tablas de verdad que relaciona el valor de las entradas y genera una salida.

Lo interesante de este caso radica en que podemos plantear problemas que requieran soluciones basadas en ,los estado de varales entrada y generan actuaciones sobre variables de salida. Encontramos casos de control domótico, control de un vehículo, control de semáforos, control de riego tecnificado, etc.

Actividad de análisis y diseñoEste caso genera un amplio conjunto de problemas, sin embargo proponemos un desarrollo incremental:

1. Creamos reglas para cada una de las puertas lógicas (And, Or, Not)2. Implementamos predicados para evaluar funciones lógicas que contienen las

puertas lógicas definidas en el ítem anterior. (se deben definir previamente las funciones lógicas.

La siguiente actividad es opcional y plantea un problema con cierto grado de complejidad, consiste en determinar fallas en circuitos digitales. Se sugiere seguir el enlace http://ssdi.di.fct.unl.pt/plr/enunciado/trab1.html aunque está escrito en portugués se entienden los gráficos, en todo caso recuerden que ahora contamos con excelentes traductores en línea, de manera que el idioma ya no es barrera para nuestro estudio.

Aplicando reingeniería modelar la solución usando CommonKads.Para complementar puedes visitar este enlace http://www.oldemarrodriguez.com/yahoo_site_admin/assets/docs/Programacion_PR

Page 216: Tema General Sistemas Basados en Conocimientos

OLOG_VStrawBerryV2.223100300.pdf en el que encontrarás un ejemplo de simulación de compuertas lógicas en Prolog.

Page 217: Tema General Sistemas Basados en Conocimientos

7.5 Agentes inteligentes.

Fuente: http://www.monografias.com/trabajos74/agentes-inteligentes-paso-inteligencia-artificial/agentes-inteligentes-paso-inteligencia-artificial2.shtml

Los agentes inteligentes son el siguiente paso a los sistemas expertos. Aunque nuestro curso no fue planteado para trabajar con agentes inteligentes no quisiéramos dejar pasar la oportunidad de presentarlos y proponer algunos casos y herramientas de trabajo con ellos.

Actividad de programación de agentes

Proponemos leer la documentación oficial de JADE (software para el desarrollo de agentes), descargar e instalar el software e implementar los casos propuestos.

http://jade.tilab.com/

http://programacionjade.wikispaces.com/Agentes

https://github.com/bluezio/jade-booktrading

Page 218: Tema General Sistemas Basados en Conocimientos

7.6 Sistemas inteligentes en educación.

Fuente: http://myblogpedagogia4callejas.blogspot.com/

Hemos comentado que la inteligencia artificial aborda casos y problemas de diferentes campos del quehacer humano, sin embargo en el campo educativo es donde tiene muchas aplicaciones. Proponemos al estudiante visitar los siguientes enlaces y hacer un resumen de posibles aplicaciones que pueda desarrollar en este campo.

Sistemas inteligentes en la educación: una revisión de las líneas de investigación y aplicaciones actuales: http://www.uv.es/relieve/v10n1/relievev10n1_1.htm

Inteligencia artificial aplicada a la educación: http://t01nocturno.blogspot.com/ Sistemas expertos en el proceso de enseñanza-aprendizaje:

http://www.progmat.uaem.mx:8080/Vol5num1/vol5num1art4.pdf

Page 219: Tema General Sistemas Basados en Conocimientos

7.7 El futuro se materializa en nuestra creatividad.

Fuente: http://www.emiliosilveravazquez.com/blog/2013/06/10/%C2%A1el-futuro-%C2%BFpodremos-disenarlo-nosotros/

Como hemos visto en los ejemplos anteriores no existen límites para el desarrollo de los sistemas basados en conocimientos, podemos desarrollar aplicaciones en prácticamente todas las actividades del ser humano.

Recomendamos al estudiante elaborar una lista de enlaces de aplicaciones de la inteligencia artificial en los diferentes campos, tales como contabilidad, medicina, finanzas, ingeniería, etc.

Usos y aplicaciones de la inteligencia artificial: http://www.uv.mx/cienciahombre/revistae/vol17num3/articulos/inteligencia/

Aplicaciones prácticas de la inteligencia artificial: http://www.davidam.com/docu/aplic-ia/

Artificial intelligence. An illustrative overview: http://www.gitsinformatica.com/areas%20de%20aplicacion%20de%20la%20ia.pdf

Aplicaciones de la inteligencia artificial en la Medicina: perspectivas y problemas: http://scielo.sld.cu/scielo.php?pid=S1024-94352008000500005&script=sci_arttext

Page 220: Tema General Sistemas Basados en Conocimientos

Actividad de análisis y comprensión

Después de haber tratado los contenidos sobre las aplicaciones responde a las siguientes preguntas:

La domótica permite automatizar:

Domos de seguridad.

Fábricas.

Circuitos eléctricos

Viviendas

Sistemas expertos.

RetroalimentaciónLa domótica permite automatizar viviendas.

Los agentes inteligentes:

Fueron primeros que los sistemas expertos.

Son sistemas expertos.

Constituyen el siguiente paso de los sistemas expertos.

Todavía no existen en inteligencia artificial.

Se encuentran disponibles en hardware.

RetroalimentaciónLos agentes inteligentes constituyen el siguiente paso de los sistemas expertos.

Para nuestro curso el mundo de wumpus fue presentado en el libro de:

Prolog

CLISP

Russell

Kernighan

Briceño

RetroalimentaciónEl mundo de wumpus fue presentado en el libro de Russell.

Page 221: Tema General Sistemas Basados en Conocimientos

Bibliografía

1. Alonso, A; Guijarro, B; Lozano, A; Palma, J; Tabeada, MJ. Ingeniería del conocimiento. Aspectos metodológicos. Pearson/Prentice may. Madrid 2004.

2. Anjewierden, A. A., De Hoog, R., Van De Belde, W. Y Wielinga, B. J. (1998). Engineering of Knowledge. The CommonKADS Methodology. MIT Press, 1999.

3. CommonKADS Technical Reports. http://CommonKADS.uva.nl4. Gómez, A. y otros: Ingeniería del Conocimiento. Centro de Estudios Ramón

Areces. Madrid, 1998.5. Harmon, P Y King, D.: Sistemas Expertos. Díaz de Santos, 1988.6. Nilsson, N. J.: Inteligencia Artificial. Un nuevo enfoque. McGraw-Hill. Madrid,

2000.7. Palma, J.; Martín, F. y Marín, R. Ingeniería del conocimiento. De la extracción al

modelado del conocimiento. Revista Iberoamericana de Inteligencia Artificial. Nº 11. 2001

8. Rich: Inteligencia Artificial. McGraw-Hill. 1995.9. Rational Software Corporation (1997). Unified Modelling Language. Notation

Guide. Version 1.1.URL: http://www.rational.com.10. Rodríguez, A.; Hernández, C.; Plácido, C. Ingeniería del Conocimiento.

Universidad de Las Palmas de Gran Canaria, 1994.11. Schreiber, A. T., Akkermans, J. M., Schreiber, G., Wielinga, B.J. y Breuker, J.A,

editors (1993).12. KADS: A Principled Approach to Knowledge-Based System Development.

Academic Press. 1993. ISBN 0-12-629040-7.

Page 222: Tema General Sistemas Basados en Conocimientos

Lecturas recomendadas

Para saber más

Ponemos a tu disposición y te invitamos a revisar dos interesantes documentos que te ayudaran a reforzar y ampliar los temas que hemos estudiado.

Documento 1: Inteligencia artificial: Un enfoque moderno.

URL:http://iarp.cic.ipn.mx/~hcalvo/Inteligencia_Artificial_files/Inteligencia%20Artificial,%20Un%20Enfoque%20Moderno%20-%20Stuart%20J.%20Russell,%20Peter%20Norvig%20-%20Prentice%20Hall%20%28ocr,%20caps%201-11%29.pdf

Breve descripción:

Este libro contiene una descripción de sistemas expertos y presenta el siguiente paso que son los agentes inteligentes. Es de lectura obligatoria para todo estudiante de inteligencia artificial, sistemas basados en conocimiento, sistemas expertos, agentes inteligentes.

…………………………………………………………………………………………………………………….…………..

Documento 2: Curso de sistemas expertos.

URL: http://www.educagratis.org/moodle/course/view.php?id=48

Breve descripción:

El enlace nos conduce a un curso de sistemas expertos en el el autor pone a disposición material de aprendizaje y muestra varios lenguajes de programación como LISP, JESS, PROLOG. Pone a disposición el libro de castillo que en su parte final incluye casos de sistemas probabilísticos.

Page 223: Tema General Sistemas Basados en Conocimientos

Conclusiones de la sesión

Durante esta semana de aprendizaje hemos comprendido que:

Se pueden desarrollar aplicaciones de sistemas expertos en todos los campos del quehacer humano.

Es posible modelar las soluciones de sistemas basados en conocimientos utilizando la metodología CommonKads.

Confirmamos la eficacia de Prolog para implementar soluciones basadas en conocimiento.

Existen otras metodologías de desarrollo de los sistemas expertos. Además de Prolog, existen otros lenguajes para programar sistemas expertos,

tales como LISP, CLIP, JESS y otros.

Page 224: Tema General Sistemas Basados en Conocimientos

Metacognición

Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado pata razonar e identificar nuestro esfuerzo intelectual, la finalidad es guiar nuestras acciones y procesos mentales.

¿De la temática abordada que te llamó más la atención?

¿Consideras que aprendiste con los temas abordados?

¿Tuviste dificultad con algún tema o actividad? ¿Cómo lo solucionaste?

¿Qué acciones realizaste para aprender?