CAPÍTULO
I:
INTELIGENCIA
ARTIFICIAL
1.1 CONCEPTOS.
La IA es una ciencia que estudia el comportamiento inteligente de las máquinas lo cual conlleva a realizar tareas como: percibir, razonar, aprender, comunicarse y actuar en entornos complejos.
La IA. es la parte de la informática concerniente al diseño de sistemas de computación inteligente, es decir, de sistemas que exhiban o simulen las características que son comúnmente asociadas con la inteligencia en la conducta humana humana (Handbook81). (Handbook81).
Una de las metas a largo plazo de la IA es el desarrollo de máquinas que puedan hacer todas estas cosas igual, o quizá incluso mejor, que los humanos.
Otra meta de la IA es llegar a comprender este tipo de comportamiento, sea en las máquinas, en los humanos o en otros animales.
La IA ha estado siempre rodeada de controversia. La cuestión básica de la IA ¿Pueden pensar las máquinas? ha interesado tanto a filósofos como a científicos e ingenieros. Algunas personas creen que las máquinas pensantes tendrían que ser tan complejas, y disponer de una experiencia tan compleja (por ejemplo, interaccionando con el entorno o con otras máquinas pensantes), que nunca seremos capaces de diseñarías o construirlas. Otros puntos de vista sobre el tipo de máquinas que podrían ser capaces de desarrollar habilidades pensantes como las de los humanos. Algunas Algunas de las hipótesis: hipótesis: El cerebro procesa la información en paralelo, mientras que los ordenadores convencionales lo hacen secuencialmente. Por tanto, tenemos que construir nuevas variedades de ordenadores paralelos para realizar progresos en la IA.
La maquinaria computacional convencional está basada en la lógica binaria (verdadera y falsa). Por tanto, los sistemas realmente inteligentes tendrán que usar algún tipo de lógica borrosa.
Las neuronas animales son mucho más complejas que simples conmutadores (los bloques constructivos básicos de los ordenadores actuales). Por tanto, necesitaremos neuronas artificiales verdaderamente verdaderamente realistas para construir máquinas inteligentes.
1.2 DEFINICIÓN DE LA IA EN 4 DIMENSIONES Entre ellas tenemos las siguientes: Sistemas que actúan como humanos. Sistemas que piensan como humanos. Sistemas que piensan racionalmente. Sistemas que actúan racionalmente.
1.2.1.
Sistemas que actúan como humanos.
El modelo es el hombre, el objetivo es construir un sistema que pase por humano. Test de Turing: Si un sistema lo pasa es inteligente. Necesitamos máquinas con: Procesamiento Procesamiento de lenguaje natural. Representación Representación del conocimiento. Razonamiento automático.
1.2.2.
Sistemas que piensan como humanos.
1.2.3.
Su enfoque es el modelo Cognoscitivo. Es necesario disponer de mecanismos que permitan determinar cómo piensan los humanos. Hay 2 Técnicas. Introspección: Intentar atrapar nuestros pensamientos conforme van apareciendo. Experimentos psicológicos. Se intenta elaborar teorías precisas y verificables del funcionamiento de la mente humana.
Sistemas que piensan racionalmente.
1.2.4.
Aprendizaje automático.
El enfoque de las leyes del pensamiento pensamiento racional se fundamenta fundamenta en la lógica (silogismos de Aristóteles). La lógica formal está en la base de los programas inteligentes (logicismo). Hay 2 obstáculos: Es muy difícil formalizar el conocimiento Hay un gran salto entre la capacidad teórica de la lógica y su realización práctica.
Sistemas que actúan racionalmente.
El enfoque del agente racional. Actuar racionalmente significa conseguir unos objetivos dadas unas creencias. El paradigma es el agente rracional, acional, que se aplica, por ejemplo, a muchos sistemas robóticos. Un agente percibe y actúa, siempre teniendo en cuenta el entorno en el que está situado. Las capacidades necesarias: Percepción. Procesamiento Procesamiento del lenguaje natural. Representación Representación del conocimiento. Razonamiento. Aprendizaje automático.
1.3 OBJETIVOS Desde el punto de vista de los objetivos, la IA puede considerarse en parte como ingeniería y en parte como ciencia.
Como Com o in i n geni erí er ía , el
objetivo de la IA es resolver problemas reales, actuando como un conjunto de ideas acerca de cómo representar y utilizar el conocimiento, y de cómo desarrollar sistemas informáticos. Como ciencia, el objetivo de la IA es buscar la explicación de diversas clases de inteligencia, a través de la representación del conocimiento y de la aplicación que se da a éste en los sistemas informáticos desarrollados.
1.4 FUNDAMENTOS. La IA ha tenido como fundamento las bases de varias disciplinas, entre las cuales mencionaremos las siguientes: Filosofía: Sócrates, Platón, Aristóteles, Leibniz (abuelo de la IA), desde el año 428 a.c hasta el presente. Lógica: Searle.
Matemática: (Frege, Tarski) desde el año 800 a.c, proveyeron las herramientas para manipular las aseveraciones de certeza lógica así como las inciertas de tipo probabilista. Así mismo prepararon el terreno para el manejo del razonamiento con algoritmos de probabilidad, álgebra booleana. Psicología: (Piaget – Craik), Craik), conductismo, psicología psicología cognitiva dándose dándose desde el año 1869 1869 hasta la actualidad. Ciencias de la Computación: Comenzó muy poco antes. Las teorías encuentran un medio para su implementación (artefactos y modelado cognitivo). Lingüística: Se desarrolló en paralelo con la IA y sirve de base para la representación del conocimiento (Chomsky), año 1957 hasta el presente. Neurociencia ¿Cómo procesa la información el cerebro?
1.5 HISTORIA. En 1950 con el trabajo de Alan Turing, el matemático británico que diseñó el primer computador electrónico digital y funcional del mundo en los años 1940. Cuando era estudiante de posgrado en Princeton en 1936, Turing publicó On Computable Numbers, Numbers , un artículo que estableció las bases teóricas para todas las ciencias de computación. Ahí describió lo que denominó Máquina de Turing, un dispositivo teórico que podía leer instrucciones de una cinta de papel perforada y ejecutar todas las operaciones críticas de un computador. El artículo fijó los límites de las ciencias de la computación porque demostró que no es posible resolver problemas con ningún tipo de computador. Después de doctorarse en 1938, Turing tuvo la oportunidad de poner en práctica la teoría cuando, al prever pr ever una invasión por parte de las fuerzas de Adolf Hitler, el gobierno británico reunió un equipo de matemáticos e ingenieros con la misión súper secreta de descifrar el código militar alemán. Turing con un grupo construyó COLOSSUS, una máquina de propósito específico considerado como el primer computador digital electrónico. Desde que se completó el Colossus en 1943 hasta que terminó la Segunda Guerra Mundial, descifró con éxito los códigos nazis. Muchos expertos creen que Colussus fue responsable r esponsable de la derrota de los nazis. Turing inauguró el campo de la inteligencia artificial con su artículo publicado en 1950, Computing Machinery and Intelligence, en el que propuso una prueba concreta para determinar si una máquina era inteligente o no. Años después Turing se convirtió en el adalid que quienes defendían la posibilidad de emular le pensamiento humano a través de la computación y fue coautor del primer programa para jugar ajedrez. En su histórico artículo de 1950, Turing propuso qu e la pregunta “¿puede pensar una máquina?” era demasiado filosófica para tener valor y, para hacerlo más concreto, propuso “un juego de imitación”. En la
prueba de Turing intervienen dos personas y una computadora. computadora. Una persona, el interrogador, se sienta en una sala y teclea preguntas en la terminal de una computadora. Cuando aparecen las respuestas en la terminal, el interrogador intenta determinar si fueron hechas por otra persona o por una computadora. Si actúa de manera inteligente, según Turing es inteligente. Turing, señaló que una máquina podría fracasar y aún ser inteligente. Aun así creía que las máquinas podrían superar la prueba a fin del siglo. En 1951 William Shockley inventa el transistor tr ansistor de unión. El invento hizo posible una nueva generación de computadoras mucho más rápidas y pequeñas. En 1956 se acuñó el término "inteligencia artificial" en Dartmouth durante una conferencia convocada por McCarthy, a la cual asistieron, entre otros, Minsky, Newell y Simon. En esta conferencia se hicieron previsiones triunfalistas a diez años que jamás se cumplieron, cumplieron, lo que provocó el abandono casi total de las investigaciones durante quince años. En 1980 la historia se repitió con el desafío japonés de la quinta generación, que dio lugar al auge de los sistemas expertos pero que no alcanzó muchos de sus objetivos, por lo que este campo sufrió una nueva interrupción en los años noventa. En 1987 Martín Fiscales y Oscar Firschein describieron los atributos de un agente inteligente. Al intentar describir con un mayor ámbito (no sólo la comunicación) los atributos de un agente inteligente, la IA se ha expandido a muchas áreas que han creado ramas de investigaciones enormes y diferenciadas.
Podemos entonces decir que la IA incluye i ncluye características humanas humanas tales como el aprendizaje, la adaptación, el razonamiento, la autocorrección, el mejoramiento implícito, y la percepción modular del mundo. Así, podemos hablar ya no sólo de un objetivo, sino de muchos, dependiendo del punto de vista o utilidad que pueda encontrarse encontrarse a la IA. Muchos de los investigadores sobre IA sostienen que "la inteligencia es un programa capaz de ser ejecutado independientemente independientemente de la máquina que lo ejecute, computador o cerebro".
1.6 TÉCNICAS DE LA IA. Entre ellas las siguientes:
1.6.1.
Sistemas Expertos. 1.6.1.1. Concepto: Consiste de equipos y software que almacenan conocimientos y hacen inferencias, en forma similar a un experto humano. A finales de los cincuenta y principios de los sesenta, los ingenieros en computación trataron de construir computadoras capaces de realizar tareas inteligentes. Los esfuerzos se encaminaron a crear un solucionador de problemas generales, una máquina capaz de imitar el proceso de razonamiento humano para resolver cualquier problema que un ser humano pudiera solucionar. Los esfuerzos se orientaron al diseño de programas que resolvieran problemas en áreas precisas utilizando utilizando conocimiento y razonamiento de expertos. 1.6.1.2.
El propósito de los SE Es duplicar el conocimiento no estructurado ni documentado de unos pocos (los expertos) y los pone a disposición de otros. Debido a la forma en que están planteados los SE (basados en la experiencia) no puede ayudar a los usuarios que tratan con sucesos que los expertos no consideraron durante el periodo de creación. Sin embargo muchos programas avanzados que incluyen “redes neuronales” aprenden de situaciones nuevas y formulan reglas adhoc en sus bases de conocimiento para resolver eventualidades no consideradas originalmente en su diseño. Para construir un SE un ingeniero del conocimiento se entrevista con un experto, traduce la información en código. Por lo general con la regla r egla SI-Entonces. Otros métodos son marcos semánticos integrados por cuadros con listas de entidades y atributos; y las redes semánticas, mapas de entidades y sus atributos relacionados.
1.6.1.3.
Características Características de un SE Pueden explicar su razonamiento o decisiones sugeridas: La capacidad de explicar cómo se llegó a una decisión o solución. Puede mostrar un comportamiento comportamiento “inteligente”: Al examinar un grupo de datos, un SE puede proponer nuevas ideas o métodos para la solución del problema, o proporcionar asesoramiento asesoramiento en el el trabajo para los trabajadores. trabajadores. Puede obtener conclusiones de relaciones complejas: Evaluar relaciones complejas para llegar a conclusiones y solucionar problemas, por ejemplo: un SE propuesto trabajará con un sistema de fabricación flexible para determinar la mejor utilización de las herramientas, y otro sugerirá los mejores procedimientos de control de calidad. Puede proporcionar conocimientos acumulados: Se puede usar para capturar conocimientos de humanos que de lo contrario podrían perderse. Ejemplo es el SE denominado DELTA (Diesel Electronic Locomotive Troble-shooting Aid), desarrollado para conservar el conocimiento de David Smith, único ingeniero competente para manejar muchas reparaciones extremadamente técnicas de esas máquinas, cuando llegó el momento de su jubilación.
Puede hacer frente a la incertidumbre: Una de las características más importantes de un SE es su capacidad para enfrentar conocimientos incompletos o inexactos en su totalidad. Mediante el uso de las probabilidades, las estadísticas y las heurísticas.
1.6.1.4.
Características Características que limitan su Utilidad No se han usada o probado en forma extensa: Los SE no se emplean en un gran número de organizaciones. Dificultad de uso: Algunos sistemas expertos son difíciles de controlar y usar. En algunos casos se requiere del uso de personal de computación, o del personas capacitadas en el uso de SE, para ayudar al usuario a obtener todo lo más posible de estos sistemas. Están limitados a problemas relativamente limitados: Algunos sistemas expertos pueden realizar análisis de datos complejos, otros están limitados a problemas sencillos. No pueden enfrentar con facilidad conocimientos “mixtos”: Un SE en una aplicación quizá no pueda hacer frente a conocimientos que combinen tanto reglas como casos. Posibilidad de error: Algunos sistemas expertos tienen capacidades limitadas para aprender de la experiencia, la fuente principal de conocimientos es un experto humano. Si este conocimiento es incorrecto o incompleto, afectará al sistema en forma negativa. Dificultad de mantenimiento: Los SE pueden ser difíciles de actualizar. Algunos no responden o no se adaptan a condiciones cambiantes. Pueden tener costo altos de desarrollo: Cuando se usan los lenguajes y métodos de programación tradicionales. Se puede lograr una reducción considerable en los costos de desarrollo si se emplea software para el desarrollo de SE. Ocasionan preocupaciones legales y éticas: Las personas que toman decisiones y llevan a cabo acciones son responsables, desde el punto de vista legal y ético, por su comportamiento. Por ejemplo, una persona puede ser procesado y condenada por un delito. Cuando los SE se usan para tomar decisiones o ayudan a tomarlas, ¿quién es el responsable de esta decisión? d ecisión?
1.6.1.5.
Capacidades de los SE En comparación con otros tipos de sistemas de información, los SE ofrecen varias capacidades poderosas y beneficios. Por ejemplo, con frecuencia se usa un SE denominado XCON para diseñar configuraciones de sistemas computación, pues realiza, en forma consistente, un mejor trabajo tr abajo que los seres humanos. Los SE se pueden usar para solucionar problemas en todos los campos y disciplinas y ayudar en la totalidad de las etapas del proceso de solución de los problemas.
Fijación de objetivos estratégicos: Un SE puede ayudar a los administradores de alto nivel de la compañía a determinar los costos y beneficios que existen en producir vinos de mayor calidad calidad y cambiar su imagen imagen en el mercado. mercado. Planeación: Un SE puede ayudar a este proceso mediante la sugerencia de factores que se deben considerar al tomar la decisión final, sobre la base de datos proporcionados proporcionados por la administración. administración. Diseño: Estos SE usan principios generales de diseño, comprensión de los procedimientos de fabricación y un grupo de reglas reglas de diseño. Toma de decisiones: Pueden sugerir posibles alternativas, formas de contemplar los problemas y métodos lógicos al proceso de toma de decisiones. Además, los SE pueden mejorar el proceso de aprendizaje para aquellos que no tienen tanta experiencia en tomar decisiones. Control y supervisión de calidad: Los SE computarizados pueden ayudar a supervisar varios sistemas y proponer soluciones a problemas que se presenten en
ellos. Los SE también se pueden usar para supervisar la calidad de los productos. Cuando las máquinas funcionan en forma deficiente, el SE puede ayudar a determinar las causas posibles. Diagnóstico: Puede proporcionar al médico la probable causa de enfermedad y proponer tratamientos u operaciones. En los negocios también diagnóstica posibles problemas y soluciones.
1.6.1.6.
Cuando usar los SE El desarrollo se SE complejos puede ser difícil, costoso y requerir de tiempo, por lo tanto, es importante asegurarse de que los posibles beneficios valen el esfuerzo y que las diversas características del SE se equilibren, en términos de costo, control y complejidad. Proporciona un alto potencial de rendimiento o reduce el riesgo Puede capturar y conservar conocimientos humanos irremplazables Puede desarrollar un sistema más consistente que los expertos humanos Puede proporcionar los conocimientos necesarios en varias ubicaciones al mismo tiempo o en un ambiente hostil peligroso para la salud humana. Puede proporcionar conocimientos costosos y poco comunes. Puede proporcionar los conocimientos necesarios para la capacitación y el desarrollo con el propósito de compartir los conocimientos y la experiencia de expertos humanos con un gran número de personas.
1.6.1.7.
Componentes de los SE
L a Base de Conoci mi entos: Almacena
toda la información, datos, reglas, casos y relaciones importantes que utiliza el SE. Para cada aplicación única se tiene que desarrollar una base conocimientos. Por ejemplo, un SE médico contendrá hechos sobre enfermedades y síntomas. La base de conocimientos puede incluir conocimientos genéricos provenientes de teorías generales que se han establecido con el tiempo y conocimientos específicos que provienen de experiencias más recientes y de reglas prácticas. Propósito de una base de conocimientos: Contener los hechos y la información pertinentes para el SE específico. Una base de conocimientos es similar a la suma total de los conocimientos y experiencias de los expertos humanos que se obtienen a través de años de trabajo en un área o disciplina específica. que contiene información Reunión de expertos humanos: Una base proporcionada por diversos expertos puede ser extremadamente eficiente y exacta desde el punto de vista de sus sugerencias y pronósticos. Utilización de la lógica difusa: Otro reto para los diseñadores y desarrolladores de SE es capturar conocimientos y relaciones que no son precisos o exactos. El uso de reglas: Una regla es una instrucción condicionada que enlaza determinadas condiciones con acciones o resultados. La regla se crea por medio de construcciones de si-entonces. El uso de casos: Un SE puede usar casos al desarrollar la solución a un problema o situación actual. El proceso incluye: 1) Encontrar casos almacenados en la base de conocimientos, que sean similares al problema. 2) Modificar las soluciones a los casos para adaptarlas, o acomodarlas, al problema o la situación actual.
El M otor de Inf erencias : El propósito general de
un motor de inferencias es buscar información y relaciones en la base de conocimientos, y proporcionar respuestas, pronósticos y sugerencias en la misma forma en que lo haría un experto humano. En otras palabras, el motor de inferencias es el que proporciona el consejo experto.
Encadenamiento inverso: Es el proceso de comenzar con conclusiones y trabajar hacia atrás hasta los hechos de soporte. Si los hechos no apoyan la conclusión, se elige y prueba otra. Encadenamiento hacia delante: Se inicia con los hechos y trabajo hacia delante hasta las conclusiones. Comparación del encadenamiento inverso y el encadenamiento hacia delante: El encadenamiento hacia delante puede llegar a conclusiones y producir más información con menos consultas para el usuario que el encadenamiento inverso, pero este método requiere más procesamiento y un mayor grado de sofisticación.
L os Recur sos de Ex plicaciones: Una
parte importante del SE son los recursos de explicaciones que le permiten al usuario, o al responsable de tomar las decisiones comprender en que forma llegó el SE a ciertas conclusiones o resultados.
L os Recur sos de Adqu isici ón de Conoci mi entos: una tarea difícil
L a I nterfaz del U suar io: Sirve
en el desarrollo de un sistema experto es el proceso de crear y actualizar la base de conocimientos. En la actualidad, existe software especializado que le permite a los usuarios y a quienes toman las decisiones crear y modificar sus propias bases de conocimientos. para diseñar, crear, actualizar y usar los SE. El propósito general de la interfaz del usuario es facilitar a los usuarios y a los tomadores de las decisiones el desarrollo y el uso de un SE.
1.6.1.8.
Desarrollo de los SE Los SE requieren de un método de desarrollo sistemático para obtener los mejores resultados. Proceso De Desarrollo: La especificación de los requisitos para un SE se inicia con la identificación de los objetivos del sistema y su uso potencial. Identificar a los expertos puede ser difícil. En algunos casos, una compañía contará con expertos humanos; en otros, se requerirá expertos ajenos a la organización. Para el desarrollo de los elementos del SE son necesarias habilidades especiales. La puesta en operación del SE incluye ponerlo en acción y asegurarse de que funciona como se desea.
1.6.1.9.
Participantes en el Desarrollo y Utilización de los SE El experto en dominio: Debido al tiempo y el esfuerzo que se requieren para la tarea, se desarrolla un SE para atender un área de conocimiento. A dicha área se le conoce como dominio. El experto en dominio es la persona o grupo que tiene la experiencia o el conocimiento al cual se intenta capturar en el SE. Por lo general con la siguiente capacidad: Reconocer el problema real Desarrollar una estructura general para la solución de problemas Formular teorías sobre la situación Desarrollar y usar reglas generales para solucionar un problema Identificar cuándo deben quebrantarse las reglas Solucionar problemas con rapidez y eficiencia Aprender de experiencias anteriores Identificar lo que es importante y lo que no lo es para solucionar un problema Explicar a otros la situación y las soluciones de problemas.
El ingeniero del conocimiento y el usuario del conocimiento: El primero es la persona que tiene el entrenamiento y la experiencia en el diseño, desarrollo, puesta
en operación y mantenimiento de un SE, incluyendo entrenamiento y experiencia con shells de SE. El segundo es quien usa el SE y se beneficia de él.
1.6.1.10. Herramientas y técnica para el desarrollo de sistemas expertos En teoría, los sistemas expertos se deben desarrollar a partir de algún lenguaje de programación. Desde la introducción de los sistemas de computación, los lenguajes de fáciles de usar, más potentes y cada vez más capaces de manejar. En los inicios del desarrollo de SE se usaban los lenguajes Pascal, FORTRAN Y COBOL. LISP fue uno de los primeros lenguajes especiales desarrollados y empleados para aplicaciones de inteligencia artificial. PROLOG es otro. Sin embargo, actualmente existen otros productos de SE (como los shells) que evitan el trabajo de programar. Shells y productos para SE: Un shell (interprete) de SE es un grupo de paquetes y herramientas de software utilizados para diseñar, desarrollar, poner en operación y mantener SE con una programación mínima. Existen shells de SE tanto para computadoras personales como para sistemas de macrocomputadoras. Algunos son baratos con costo inferior a los 500 dólares. El usuario introduce los datos o parámetros apropiados y el SE proporciona el resultado para el problema o situación. Algunos de los shells más populares son Exsys de MultilLogic, Inc. Level 5, de Rule Machines Corporación y XpertRule, de Attar Software. 1.6.1.11. Ventajas de los shells y los productos de SE Fáciles de desarrollar y modificar: Conforme se dispone de nuevos hechos y reglas y se hace necesario modificar los ya existentes, es deseable hacer cambios a la base de conocimientos. Los sistemas desarrollados por medio de PROLOG y LIPS son más difíciles de modificar y más costosos que los SE desarrollados con shells. El uso de la satisfacción: El método tradicional de solución de problemas intenta encontrar la solución óptima, o la mejor; los lenguajes avanzados y simbólicos pueden hacer frente a problemas más complejos y producir decisiones muy buenas, aunque no siempre óptimas. El uso de la heurística: Es necesario que los SE puedan manejar relaciones imprecisas. La heurística puede hacerlo y a menudo producirá una buena solución que deje satisfecho al tomador de las decisiones. Desarrollo por los ingenieros y usuarios del conocimiento: Con los shells de SE, los ingenieros y usuarios del conocimiento pueden completar el proceso de desarrollo. Es frecuente que al desarrollar SE con lenguajes de programación tradicionales se requieran análisis de sistemas y programación de computación, que son costosos y que por lo común requieren de más tiempo. 1.6.1.12. Alternativas de desarrollo de SE Los SE se pueden desarrollar desde cero por medio de un shell de SE o mediante un paquete de software de SE ya existente. El método seleccionado depende de los beneficios del sistema comparados con el costo, el control y la complejidad de cada alternativa. Es más fácil y menos costoso desarrollar un SE utilizando un paqueta ya existente o un shell de SE. Sin embargo, si la organización no cuenta ya con este tipo de software, habrá un costo adicional para desarrollar un paquete existente o adquirir un shell de SE Desarrollo en la propia empresa (desde cero): Es el método más costoso, pero la organización tiene más control sobre las características y los elementos del SE. Desarrollo en la propia empresa (desde un shell): Puede ser menos complejo y más fácil de mantener que desarrollarlo desde cero. Sin embargo, quizá sea necesario modificar el SE resultante para que sea idóneo para aplicaciones específicas. Compra paquetes ya existentes (uso de paquetes existentes): M étodo menos costoso y más rápido. Aquel cuyo desarrollo corrió a cargo de una compañía de
software o de asesoría para un campo o área específicos, tales como el diseño de un nuevo microprocesador para computación o un sistema para pronosticar y predecir el clima. Estos sistemas pueden ser más fáciles de mantener y actualizar al transcurso del tiempo, pero no pueden satisfacer las necesidades especiales de la organización.
1.6.1.13. Aplicaciones de los SE y de la IA Otorgar crédito: Para revisar la solicitud de crédito de una persona y el historial crediticio que mantiene con las agencias dedicadas a este rubro, para tomar la decisión de otorgar el crédito.
Administración y recuperación de información: Los SE pueden ayudar a este proceso mediante el uso de agentes. Los agentes de SE ayudan a los gerentes a encontrar los datos y la información correctos, al mismo tiempo que eliminan hechos sin importancia que puedan obstaculizar la toma de decisiones oportunas.
IA y SE incorporados a los productos: El sistema de frenos antibloqueo de los automóviles modernos es un ejemplo de un SE rudimentario. Los investigadores de IA también están encontrando formas para usar las redes neuronales y la robótica en dispositivos de uso diario, tales como tostadoras de pan, relojes despertadores y aparatos de TV.
Disposición de plantas: FLEXPERT es un SE que usa la lógica difusa para realizar el trazado de plantas. El software ayuda a las compañías a determinar la mejor ubicación para los equipos y las instalaciones de fabricación. Instalaciones de hospitales y médicas: Algunos hospitales usan SE para determinar la posibilidad de que un paciente contraiga cáncer u otras enfermedades. MYCIN es un SE creado en la Universidad Stanfor para analizar infecciones en la sangre.
Departamento de ayuda y asistencia: Los departamentos de servicios de ayuda al cliente usan SE para proporcionar asistencia oportuna y exacta. Kaiser Permanente, un HMO (Health Mantenance Organization) de gran tamaño, usa un SE y repuesta verbal para automatizar la función del su departamento de ayuda.
Evaluación del desempeño de empleados: Un SE de Austin-Hayne, llamado Employee Appreiser, les proporciona asesora experta a los gerentes para que la utilicen en las revisiones del desempeño de los empleados y el desarrollo de carreras.
Análisis de préstamos: KPMG Peat Marwick usa un SE llamado Loan Probe para revisar las reservas para pérdidas en préstamos, con el propósito de determinar si se han reservado fondos suficientes para cubrir riesgos de que algunos préstamos se vuelvan incobrables. Detección de virus: IBM utiliza la tecnología de red neuronal para ayudar a crear software más avanzado en la erradicación de los virus de computación, un problema importante para las empresas estadounidenses.
Reparación y mantenimiento: AT&T usa el SE ACE para analizar el mantenimiento de las redes telefónicas. Nynex (New York and New England Telephone Exchange) tiene sistemas expertos para ayudar a sus trabajadores a localizar y resolver problemas telefónicos con referencia a sus clientes. Embarques: Lufthansa, una aerolínea alemana, usa un SE, CARGEX-Cargo, para ayudar a determinar las mejores rutas de embarque.
Mercadotecnia: CoverStory es un SE que trae información de una base de datos y elabora, en forma automática, informes de mercadotecnia.
Optimización de almacenes: Unite Distillers emplea un SE para determinar las mejores combinaciones de existencias, para producir su mezcla de whisky escocés.
Integración de SE: Un SE se puede integrar con otros sistemas en una organización mediante una base de datos común. Un SE que identifique a los clientes que demoran sus pagos y que no deben recibir crédito adicional puede tomar los datos de la misma base de datos que un MIS de facturación que elabora informes semanales de las cuentas vencidas. La misma base de datos podría usarse para un sistema de apoyo a las decisiones que realice análisis de “que sucedería sí”, para determinar la
repercusión de los pagos demorados sobre los flujos ejecutivo, ingresos y niveles generales de utilidad.
1.6.1.14. Limitaciones de los SE Los SE sólo manejan áreas precisas del conocimiento : Funcionan bien si el dominio al que se enfocan está bien definido. Por ejemplo, es difícil que se encuentre un SE médico general. Los SE no tienen sentido común: El sistema sólo resolverá aquellos problemas para los que está específicamente programado. Los SE Tienen una capacidad limitada de aprendizaje: Los ingenieros del conocimiento deben dirigir los sistemas y proporcionar retroalimentación continua para que aprenda. 1.6.2.
Lógica Difusa. 1.6.2.1. Historia Esta simple idea nació en un artículo de Lofti A. Zadeh publicado en 1965 y titulado "Fuzzy Sets" (Conjuntos Difusos). La lógica difusa permite representar de forma matemática conceptos o conjuntos imprecisos, tales como días fríos, meses calurosos, personas altas, salarios bajos, guisos con mucho condimento, profesores poco valorados, etc. Pero hay que tener en cuenta que la idea en sí de que las cosas no son blancas o negras, sino que existen infinitos matices de grises viene ya desde la época de los primeros grandes filósofos como Platón. Posteriormente a ellos, otros grandes pensadores como David Hume o Kant apoyaban esta idea manteniendo que el razonamiento venía dado por las observaciones de las que somos testigos a lo largo de nuestra vida y la detección de algunos principios contradictorios en la lógica clásica. Tras la publicación de Lotfi A. Zadeh, se comenzó rápidamente a usar la lógica difusa en distintas aplicaciones prácticas, llegando a su máximo auge a principios de los años 90, y continuando éste hasta la época actual. 1.6.2.2.
Concepto: La lógica difusa se funda en el concepto de que todo es cuestión de grado, lo cual permite manejar información vaga o de difícil especificación, importante para la resolución de un problema, por medio de una serie de reglas de "sentido común" aprendidas con sistemas adaptativos que se nutren de la observación de las personas o de la formulación por parte del experto humano. En la actualidad hay un número creciente de aplicaciones entre las cuales podemos mencionar: La construcción de artefactos electrónicos de uso doméstico y de entretenimiento. El diseño de dispositivos artificiales de deducción automática.
1.6.2.3.
El diseño de sistemas de diagnóstico y de control de complejos procesos industriales, etc.
Funcionamiento La lógica difusa se adapta mejor al mundo real en el que vivimos, e incluso puede comprender y funcionar con nuestras expresiones, del tipo "hace mucho calor", "no es muy alto", "el ritmo del corazón está un poco acelerado", etc. La clave de esta adaptación al lenguaje, se basa en comprender los cuantificadores de nuestro lenguaje (en los ejemplos de arriba "mucho", "muy" y "un poco"). En la teoría de conjuntos difusos se definen también las operaciones de unión, intersección, diferencia, negación o complemento, y otras operaciones sobre conjuntos (ver también subconjunto difuso), en los que se basa esta lógica. Para cada conjunto difuso, existe asociada una función de pertenencia para sus elementos, que indican en qué medida el elemento forma parte de ese conjunto difuso. Las formas de las funciones de pertenencia más típicas son trapezoidales, lineales y curvas. Se basa en reglas heurísticas de la forma SI (antecedente) ENTONCES (consecuente) , donde el antecedente y el consecuente son también conjuntos difusos, ya sea puros o resultado de operar con ellos. Sirvan como ejemplos de regla heurística para esta lógica (nótese la importancia de las palabras "muchísimo", "drásticamente", "un poco" y "levemente" para la lógica difusa): SI hace muchísimo calor ENTONCES disminuyo drásticamente la temperatura. SI voy a llegar un poco tarde ENTONCES aumento levemente la velocidad. Los métodos de inferencia para esta base de reglas deben ser simples, veloces y eficaces. Los resultados de dichos métodos son un área final, fruto de un conjunto de áreas solapadas entre sí (cada área es resultado de una regla de inferencia). Para escoger una salida concreta a partir de tanta premisa difusa, el método más usado es el del centroide, en el que la salida final será el centro de gravedad del área total resultante. Las reglas de las que dispone el motor de inferencia de un sistema difuso pueden ser formuladas por expertos, o bien aprendidas por el propio sistema, haciendo uso en este caso de Redes neuronales para fortalecer las futuras tomas de decisiones. Los datos de entrada suelen ser recogidos por sensores, que miden las variables de entrada de un sistema. El motor de inferencias se basa en chips difusos, que están aumentando exponencialmente su capacidad de procesamiento de reglas año a año. Un esquema de funcionamiento típico para un sistema difuso podría ser de la siguiente manera: En la figura, el sistema de control hace los cálculos en base a sus reglas heurísticas, comentadas anteriormente. La salida final actuaría sobre el entorno físico, y los valores de las nuevas entradas sobre el entorno físico (modificado por la salida del sistema de control) serían tomados por sensores del sistema. Por ejemplo, imaginando que nuestro sistema borroso fuese el climatizador de un coche que se autorregula según las necesidades: Los chips borrosos del climatizador recogen los datos de entrada, que en este caso bien podrían ser la temperatura y humedad simplemente. Estos datos se someten a las reglas del motor de inferencia (como se ha comentado antes, de la forma SI... ENTONCES...), resultando un área de resultados. De esa área se escogerá el centro de gravedad, proporcionándola como salida. Dependiendo del resultado, el climatizador podría aumentar la temperatura o disminuirla dependeiendo del grado de la salida.
1.6.2.4.
Ventajas e Inconvenientes Como principal ventaja, cabe destacar los excelentes resultados que brinda un sistema de control basado en lógica difusa: ofrece salidas de una forma veloz y precisa, disminuyendo así las transiciones de estados fundamentales en el entorno físico que controle. Por ejemplo, si el aire acondicionado se encendiese al llegar a la temperatura de
30º, y la temperatura actual oscilase entre los 29º-30º, nuestro sistema de aire acondicionado estaría encendiéndose y apagándose continuamente, con el gasto energético que ello conllevaría. Si estuviese regulado por lógica difusa, esos 30º no serían ningún umbral, y el sistema de control aprendería a mantener una temperatura estable sin continuos apagados y encendidos. Del mismo ejemplo puede observarse otra de las principales ventajas de estos sistemas, que es la capacidad de adelantarse en el tiempo a los acontecimientos, estabilizando siempre el entorno físico que controla. Como principal incoveniente cabe destacar la dificultad de elegir una correcta función de pertenencia para los conjuntos difusos, ya que en ocasiones no es sencillo especificar el efecto de los cuantificadores de nuestro lenguaje en dicha función. El hecho de que cualquier función de pertenencia del sistema estuviese mal especificada, haría fallar, muy probablemente, todo el sistema completo. También está la indecisión de decantarse por los expertos o por la tecnología (principalmente mediante Redes neuronales) para reforzar las reglas heurísticas iniciales de cualquier sistema de control basado en este tipo de lógica.
1.6.2.5.
1.6.3.
Aplicaciones La lógica difusa se utiliza cuando la complejidad del proceso en cuestión es muy alta y no existen modelos matemáticos precisos, para procesos altamente no lineales y cuando se envuelven definiciones y conocimiento no estrictamente definido (impreciso o subjetivo). En cambio, no es una buena idea usarla cuando algún modelo matemático ya soluciona eficientemente el problema, cuando los problemas son lineales o cuando no tienen solución. Esta técnica se ha empleado con bastante éxito en la industria, principalmente en Japón, y cada vez se está usando en gran multitud de campos. La primera vez que se usó de forma importante fue en el metro japonés, con excelentes resultados. A continuación se citan algunos ejemplos de su aplicación: Sistemas de control de acondicionadores de aire Sistemas de foco automático en cámaras fotográficas Electrodomésticos familiares (Frigoríficos, lavadoras...) Optimización de sistemas de control industriales Sistemas de reconocimiento de escritura Mejora en la eficiencia del uso de combustible en motores Sistemas expertos del conocimiento (simular el comportamiento de un experto humano) Tecnología informática Bases de datos difusas: Almacenar y consultar información imprecisa. Para este punto, por ejemplo, existe el lenguaje FSQL. Y, en general, en la gran mayoría de los sistemas de control que no dependen de un Sí/No.
Redes Neuronales. 1.6.3.1. Historia de las Redes Neuronales Conseguir diseñar y construir máquinas capaces de realizar procesos con cierta inteligencia ha sido uno de los principales objetivos de los científicos a lo largo de la historia. De los intentos realizados en este sentido se han llegado a definir las líneas fundamentales para la obtención de máquinas inteligentes: En un principio los esfuerzos estuvieron dirigidos a la obtención de autómatas, en el sentido de máquinas que realizaran, con más o menos éxito, alguna función típica de los seres humanos. Hoy en día se continúa estudiando en ésta misma línea, con resultados sorprendentes, existen maneras de realizar procesos similares a los inteligentes y que podemos encuadrar dentro de la llamada Inteligencia Artificial (IA).
A pesar de disponer de herramientas y lenguajes de programación diseñados expresamente para el desarrollo de máquinas inteligentes, existe un enorme problema que limita los resultados que se pueden obtener: estas máquinas se implementan sobre computadoras basadas en la filosofía de Von Neumann, y que se apoyan en una descripción secuencial del proceso de tratamiento de la información. Si bien el desarrollo de estas computadoras es espectacular, no deja de seguir la línea antes expuesta: una máquina que es capaz de realizar tareas mecánicas de forma increíblemente rápida, como por ejemplo cálculo, ordenación o control, pero incapaz de obtener resultados aceptables cuando se trata de tareas como reconocimiento de formas, voz, etc. La otra línea de la investigación ha tratado de aplicar principios físicos que rigen en la naturaleza para obtener máquinas que realicen trabajos pesados en nuestro lugar. De igual manera se puede pensar respecto a la forma y capacidad de razonamiento humano; se puede intentar obtener máquinas con esta capacidad basadas en el mismo principio de funcionamiento. No se trata de construir máquinas que compitan con los seres humanos, sino que realicen ciertas tareas de rango intelectual con que ayudarle, principio básico de la Inteligencia Artificial. Las primeras explicaciones teóricas sobre el cerebro y el pensamiento ya fueron dadas ya por Platón (427-347 a.C.) y Aristóteles (348-422 a.C.). Las mismas ideas también las mantuvo Descartes (1569-1650) y los filósofos empiristas del siglo XVIII. La clase de las llamadas máquinas cibernéticas, a la cual la computación neuronal pertenece, tiene más historia de la que se cree: Herón (100 a.C) construyó un autómata hidráulico. 1936 - Alan Turing. Fue el primero en estudiar el cerebro como una forma de ver el mundo de la computación. Sin embargo, los primeros teóricos que concibieron los fundamentos de la computación neuronal fueron Warren McCulloch, un neurofisiólogo, y Walter Pitts, un matemático, quienes, en 1943, lanzaron una teoría acerca de la forma de trabajar de las neuronas (Un Cálculo Lógico de la Inminente Idea de la Actividad Nerviosa - Boletín de Matemática Biofísica 5: 115-133). Ellos modelaron una red neuronal simple mediante circuitos eléctricos. 1949 - Donald Hebb. Escribió un importante libro: La organización del comportamiento, en el que se establece una conexión entre psicología y fisiología. Fue el primero en explicar los procesos del aprendizaje (que es el elemento básico de la inteligencia humana) desde un punto de vista psicológico, desarrollando una regla de como el aprendizaje ocurría. Aun hoy, este es el fundamento de la mayoría de las funciones de aprendizaje que pueden hallarse en una red neuronal. Su idea fue que el aprendizaje ocurría cuando ciertos cambios en una neurona eran activados. También intentó encontrar semejanzas entre el aprendizaje y la actividad nerviosa. Los trabajos de Hebb formaron las bases de la Teoría de las Redes Neuronales. 1950 - Karl Lashley. En sus series de ensayos, encontró que la información no era almacenada en forma centralizada en el cerebro sino que era distribuida encima de él. 1956 - Congreso de Dartmouth. Este Congreso frecuentemente se menciona para indicar el nacimiento de la inteligencia artificial. 1957 - Frank Rosenblatt. Comenzó el desarrollo del Perceptrón. Esta es la red neuronal más antigua; utilizándose hoy en día para aplicación como reconocedor de patrones. Este modelo era capaz de generalizar, es decir, después de haber aprendido una serie de patrones podía reconocer otros similares, aunque no se le hubiesen presentado anteriormente. Sin embargo, tenía una serie de limitaciones, por ejemplo, su incapacidad para resolver el problema de la función OR-exclusiva y, en general, era incapaz de clasificar clases no separables linealmente. En 1959, escribió el libro Principios de Neurodinámica, en el que confirmó que, bajo ciertas condiciones, el aprendizaje del Perceptrón convergía hacia un estado finito (Teorema de Convergencia del Perceptrón). 1960 - Bernard Widrow/Marcial Hoff. Desarrollaron el modelo Adaline (ADAptative LINear Elements). Esta fue la primera red neuronal aplicada a un problema real (filtros
adaptativos para eliminar ecos en las líneas telefónicas) que se ha utilizado comercialmente durante varias décadas. 1961 - Karl Steinbeck: Die Lernmatrix. Red neuronal para simples realizaciones técnicas (memoria asociativa). 1967 - Stephen Grossberg. A partir de sus conocimientos fisiológicos, ha escrito numerosos libros y desarrollado modelo de redes neuronales. Realizó una red: Avalancha, que consistía en elementos discretos con actividad que varía en el tiempo que satisface ecuaciones diferenciales continuas, para resolver actividades como reconocimiento continúo de habla y aprendizaje de los brazos de un robot. 1969 - Marvin Minsky/Seymour Papert. En este año surgieron críticas que frenaron, hasta 1982, el crecimiento que estaban experimentando las investigaciones sobre redes neuronales. Minsky y Papera, del Instituto Tecnológico de Massachussets (MIT), publicaron un libro Perceptrons. Probaron (matemáticamente) que el Perceptrón no era capaz de resolver problemas relativamente fáciles, tales como el aprendizaje de una función no-lineal. Esto demostró que el Perceptrón era muy débil, dado que las funciones no-lineales son extensamente empleadas en computación y en los problemas del mundo real. A pesar del libro, algunos investigadores continuaron su trabajo. Tal fue el caso de James Anderson, que desarrolló un modelo lineal, llamado Asociador Lineal, que consistía en unos elementos integradores lineales (neuronas) que sumaban sus entradas. Este modelo se basa en el principio de que las conexiones entre neuronas son reforzadas cada vez que son activadas. Anderson diseñó una potente extensión del Asociador Lineal, llamada Brain State in a Box (BSB). 1974 - Paul Werbos. Desarrolló la idea básica del algoritmo de aprendizaje de propagación hacia atrás (backpropagation); cuyo significado quedó definitivamente aclarado en 1985. 1977 - Stephen Grossberg . Teoría de Resonancia Adaptada (TRA). La Teoría de Resonancia Adaptada es una arquitectura de red que se diferencia de todas las demás previamente inventadas. La misma simula otras habilidades del cerebro: memoria a largo y corto plazo. 1977 - Teuvo Kohonen. Ingeniero electrónico de la Universidad de Helsinki, desarrolló un modelo similar al de Anderson, pero independientemente. 1980 - Kunihiko Fukushima. Desarrolló un modelo neuronal para el reconocimiento de patrones visuales.. 1985 - John Hopfield. Provocó el renacimiento de las redes neuronales con su libro: “Computación neuronal de decisiones en problemas de optimización.”
1986 - David Rumelhart/G. Hinton. Redescubrieron el algoritmo de aprendizaje de propagación hacia atrás (backpropagation). A partir de 1986, el panorama fue alentador con respecto a las investigaciones y el desarrollo de las redes neuronales. En la actualidad, son numerosos los trabajos que se realizan y publican cada año, las aplicaciones nuevas que surgen (sobretodo en el área de control) y las empresas que lanzan al mercado productos nuevos, tanto hardware como software (sobre todo para simulación). Actualmente, son numerosos los trabajos que se realizan y se publican, las aplicaciones nuevas que surgen y las empresas que lanzan al mercado productos nuevos, tanto hardware como software, sobre todo para simulación. 1.6.3.2.
Definiciones de una red neuronal Existen numerosas formas de definir a las redes neuronales; desde las definiciones cortas y genéricas hasta las que intentan explicar más detalladamente qué son las redes neuronales. Por ejemplo: 1) Una nueva forma de computación, inspirada en modelos biológicos. 2) Un modelo matemático compuesto por un gran número de elementos procesales organizados en niveles.
3) Un sistema de computación compuesto por un gran número de elementos simples, elementos de procesos muy interconectados, los cuales procesan información por medio de su estado dinámico como respuesta a entradas externas. 4) Redes neuronales artificiales son redes interconectadas masivamente en paralelo de elementos simples (usualmente adaptativos) y con organización jerárquica, las cuales intentan interactuar con los objetos del mundo real del mismo modo que lo hace el sistema nervioso biológico.
1.6.3.3.
Ventajas que ofrecen las redes neuronales Debido a su constitución y a sus fundamentos, las redes neuronales artificiales presentan un gran número de características semejantes a las del cerebro. Por ejemplo, son capaces de aprender de la experiencia, de generalizar de casos anteriores a nuevos casos, de abstraer características esenciales a partir de entradas que representan información irrelevante, etc. Esto hace que ofrezcan numerosas ventajas y que este tipo de tecnología se esté aplicando en múltiples áreas. Entre las ventajas se incluyen: Aprendizaje Adaptativo: La capacidad de aprendizaje adaptativo es una de las características más atractivas de redes neuronales. Esto es, aprenden a llevar a cabo ciertas tareas mediante un entrenamiento con ejemplos ilustrativos. Como las redes neuronales pueden aprender a diferenciar patrones mediante ejemplos y entrenamientos, no es necesario elaborar modelos a priori ni necesidad de especificar funciones de distribución de probabilidad. Las redes neuronales son sistemas dinámicos autoadaptativos. Son adaptables debido a la capacidad de autoajuste de los elementos procesales (neuronas) que componen el sistema. Son dinámicos, pues son capaces de estar constantemente cambiando para adaptarse a las nuevas condiciones. En el proceso de aprendizaje, los enlaces ponderados de las neuronas se ajustan de manera que se obtengan ciertos resultados específicos. Una red neuronal no necesita un algoritmo para resolver un problema, ya que ella puede generar su propia distribución de pesos en los enlaces mediante el aprendizaje. También existen redes que continúan aprendiendo a lo largo de su vida, después de completado su período de entrenamiento. La función del diseñador es únicamente la obtención de la arquitectura apropiada. No es problema del diseñador el cómo la red aprenderá a discriminar. Sin embargo, sí es necesario que desarrolle un buen algoritmo de aprendizaje que le proporcione a la red la capacidad de discriminar, mediante un entrenamiento con patrones.
Auto-organización: Las redes neuronales emplean su capacidad de aprendizaje adaptativo para auto organizar la información que reciben durante el aprendizaje y/o la operación. Mientras que el aprendizaje es la modificación de cada elemento procesal, la autoorganización consiste en la modificación de la red neuronal completa para llevar a cabo un objetivo específico. Cuando las redes neuronales se usan para reconocer ciertas clases de patrones, ellas auto organizan la información usada. Por ejemplo, la red llamada backpropagation, creará su propia representación característica, mediante la cual puede reconocer ciertos patrones. Esta autoorganización provoca la generalización: facultad de las redes neuronales de responder apropiadamente cuando se les presentan datos o situaciones a las que no había sido expuesta anteriormente. El sistema puede generalizar la entrada para obtener una respuesta. Esta característica es muy importante cuando se tiene que solucionar problemas en los cuales la información de entrada no es muy clara; además permite que el sistema dé una solución, incluso cuando la información de entrada está especificada de forma incompleta.
Tolerancia a fallos: Las redes neuronales fueron los primeros métodos computacionales con la capacidad inherente de tolerancia a fallos. Comparados con los sistemas computacionales tradicionales, los cuales pierden su funcionalidad cuando sufren un pequeño error de memoria, en las redes neuronales, si se produce un fallo en un número no muy grande de neuronas y aunque el comportamiento del sistema se ve influenciado, no sufre una caída repentina. Hay dos aspectos distintos respecto a la tolerancia a fallos: a) Las redes pueden aprender a reconocer patrones con ruido, distorsionados o incompletos. Esta es una tolerancia a fallos respecto a los datos. b) Las redes pueden seguir realizando su función (con cierta degradación) aunque se destruya parte de la red. La razón por la que las redes neuronales son tolerantes a los fallos es que tienen su información distribuida en las conexiones entre neuronas, existiendo cierto grado de redundancia en este tipo de almacenamiento. La mayoría de los ordenadores algorítmicos y sistemas de recuperación de datos almacenan cada pieza de información en un espacio único, localizado y direccionable. En cambio, las redes neuronales almacenan información no localizada. Por lo tanto, la mayoría de las interconexiones entre los nodos de la red tendrán sus valores en función de los estímulos recibidos, y se generará un patrón de salida que represente la información almacenada.
Operación en tiempo real: Una de las mayores prioridades, casi en la totalidad de las áreas de aplicación, es la necesidad de realizar procesos con datos de forma muy rápida. Las redes neuronales se adaptan bien a esto debido a su implementación paralela. Para que la mayoría de las redes puedan operar en un entorno de tiempo real, la necesidad de cambio en los pesos de las conexiones o entrenamiento es mínima. Fácil inserción dentro de la tecnología existente: Una red individual puede ser entrenada para desarrollar una única y bien definida tarea (tareas complejas, que hagan múltiples selecciones de patrones, requerirán sistemas de redes interconectadas). Con las herramientas computacionales existentes (no del tipo PC), una red puede ser rápidamente entrenada, comprobada, verificada y trasladada a una implementación hardware de bajo coste. Por lo tanto, no se presentan dificultades para la inserción de redes neuronales en aplicaciones específicas, por ejemplo de control, dentro de los sistemas existentes. De esta manera, las redes neuronales se pueden utilizar para mejorar sistemas en forma incremental y cada paso puede ser evaluado antes de acometer un desarrollo más amplio.
1.6.3.4.
Redes neuronales y computadoras digitales. Para entender el potencial de la computación neuronal, sería necesario hacer una breve distinción entre sistemas de computaciones neuronales y digitales: los sistemas neurológicos no aplican principios de circuitos lógicos o digitales. Un sistema de computación digital debe ser síncrono o asíncrono. Si fuera asíncrono, la duración de los impulsos neuronales debería ser variable para mantener uno de los valores binarios por periodos de tiempo indefinido, lo cual no es el caso. Si el principio fuera síncrono, se necesitaría un reloj global o maestro con el cual los pulsos estén sincronizados. Éste tampoco es el caso. Las neuronas no pueden ser circuitos de umbral lógico, porque hay miles de entradas variables en la mayoría de las neuronas y el umbral es variable con el tiempo, siendo afectado por la estimulación, atenuación, etc. La precisión y estabilidad de tales circuitos no es suficiente para definir ninguna función booleana. Los procesos colectivos que son importantes en computación neuronal no pueden implementarse por computación digital. Por todo ello, el cerebro debe ser un computador analógico.
Ni las neuronas ni las sinapsis son elementos de memoria biestable. Todos los hechos fisiológicos hablan a favor de las acciones de las neuronas como integradores analógicos, y la eficiencia de la sinapsis cambia de forma gradual, lo cual no es característico de sistemas biestables. Los circuitos del cerebro no implementan computación recursiva y por lo tanto no son algorítmicos. Debido a los problemas de estabilidad, los circuitos neuronales no son suficientemente estables para definiciones recursivas de funciones como en computación digital. Un algoritmo, por definición, define una función recursiva.
1.6.3.5.
Fundamentos de las Redes Neuronales El modelo Biológico Se estima que el cerebro humano contiene más de cien mil millones de neuronas estudios sobre la anatomía del cerebro humano concluyen que hay más de 1000 sinápsis a la entrada y a la salida de cada neurona. Es importante notar que aunque el tiempo de conmutación de la neurona (unos pocos milisegundos) es casi un millón de veces menor que en los actuales elementos de las computadoras, ellas tienen una conectividad miles de veces superior que las actuales supercomputadoras. Las neuronas y las conexiones entre ellas (sinápsis) constituyen la clave para el procesado de la información. Algunos elementos ha destacar de su estructura histológica son: Las dendritas, que son la vía de entrada de las señales que se combinan en el cuerpo de la neurona. De alguna manera la neurona elabora una señal de salida a partir de ellas. El axón, que es el camino de salida de la señal generada por la neurona. Las sinapsis, que son las unidades funcionales y estructurales elementales que median entre las interacciones de las neuronas. En las terminaciones de las sinapsis se encuentran unas vesículas que contienen unas sustancias químicas llamadas neurotransmisores, que ayudan a la propagación de las señales electroquímicas de una neurona a otra. Lo que básicamente ocurre en una neurona biológica es lo siguiente: la neurona es estimulada o excitada a través de sus entradas (inputs) y cuando se alcanza un cierto umbral, la neurona se dispara o activa, pasando una señal hacia el axón. Posteriores investigaciones condujeron al descubrimiento de que estos procesos son el resultado de eventos electroquímicos. Como ya se sabe, el pensamiento tiene lugar en el cerebro, que consta de billones de neuronas interconectadas. Así, el secreto de la “inteligencia” -sin importar como se defina- se sitúa dentro de estas neuronas interconectadas y de su interacción. La forma que dos neuronas interactúan no está totalmente conocida, dependiendo además de cada neurona. En general, una neurona envía su salida a otras por su axón. El axón lleva la información por medio de diferencias de potencial, u ondas de corriente, que depende del potencial de la neurona. Este proceso es a menudo modelado como una regla de propagación representada por la función de red u (.). La neurona recoge las señales por su sinápsis sumando todas las influencias excitadoras e inhibidoras. Si las influencias excitadoras positivas dominan, entonces la neurona da una señal positiva y manda este mensaje a otras neuronas por sus sinápsis de salida. En este sentido la neurona puede ser modelada como una simple función escalón f (.). Como se muestra en la próxima figura, la neurona se activa si la fuerza combinada de la señal de entrada es superior a un cierto nivel, en el caso general el valor de activación de la neurona viene dado por una función de activación f (.).
Fígura Nº 4: Función de Activación 1.6.3.6.
1.6.3.7.
Otras definiciones de Redes Neuronales Una red neuronal es un procesador masivamente paralelo distribuido que es propenso por naturaleza a almacenar conocimiento experimental y hacerlo disponible para su uso. Este mecanismo se parece al cerebro en dos aspectos [SH1]: El conocimiento es adquirido por la red a través de un proceso que se denomina aprendizaje. El conocimiento se almacena mediante la modificación de la fuerza o peso sináptico de las distintas uniones entre neuronas. Una red neuronal es un modelo computacional con un conjunto de propiedades específicas, como son la habilidad de adaptarse o aprender, generalizar u organizar la información, todo ello basado en un procesamiento eminentemente paralelo. Elementos de una Red Neuronal Artificial Las redes neuronales son modelos que intentan reproducir el comportamiento del cerebro. Los mismos constan de dispositivos elementales de proceso: L as neur onas. A partir de ellas, se pueden generar representaciones específicas, de tal forma que un estado conjunto de ellas puede significar una letra, un número u otro objeto. Generalmente se pueden encontrar tres tipos de neuronas: 1) Aquellas que reciben estímulos externos relacionados con el aparato sensorial, que tomarán la información de entrada. Dicha información se transmite a ciertos elementos internos que se ocupan de su procesamiento. 2) Es en las sinapsis y neuronas correspondientes a este segundo nivel donde se genera cualquier tipo de representación interna de información. Como no tienen relación directa con la información de entrada ni con la salida, estos elementos se denominan unidades ocultas. 3) Una vez finalizado el período de procesado, la información llega a las unidades de salida, cuya misión es dar la respuesta al sistema. A continuación se puede ver en la siguiente figura. La misma está constituida por neuronas interconectadas y arregladas en tres capas (esto último puede variar). Los datos ingresan por medio de la “capa de entrada”, pasan a través de la “capa oculta” y salen por la “capa de salida”. Cabe mencionar que la capa
oculta puede estar constituida por varias capas. En la siguiente figura se compara una neurona biológica con una neurona artificial. En la misma se pueden observar las similitudes entre ambas (tienen entradas, utilizan pesos y generan salidas). La neurona artificial pretende mimetizar las características más importantes de las neuronas biológicas. Cada neurona i-ésima está caracterizada en cualquier instante por un valor numérico denominado valor o estado de activación ai (t ) ; asociado a cada unidad, existe una función de salida, f i , que transforma el estado actual de activación en una señal de salida. Dicha señal es enviada a través de los canales de comunicación
unidireccionales a otras unidades de la red; estos canales la señal se modifica de acuerdo con la sinápsis (el peso, w ji ) asociada a cada uno de ellos según determinada regla. Las señales moduladas que han llegado a la unidad j-ésima se combinan Net j
yi w ji entre i
ellas, generando así la entrada total
Net j
. a (t 1)
Una función de activación, F, determina el nuevo estado de activación j de la neurona, teniendo en cuenta la entrada total calculada y el anterior estado de activación a j (t )
. La dinámica que rige la actualización de los estados de las unidades puede ser de dos tipos: asíncrono y modo síncrono. En el primer caso, las neuronas evalúan su estado continuamente según les va llegando información, y lo hacen de forma independiente, En el segundo caso, la información llega de forma continua, pero los cambios se realizan simultáneamente, como si existiera un reloj interno que decidiera cuando cambiar su estado. Los sistemas biológicos quedan probablemente entre ambas posibilidades.
1.6.3.8.
Aplicaciones. Las características de las RNA las hacen bastante apropiadas para aplicaciones en las que no se dispone a priori de un modelo identificable que pueda ser programado, pero se dispone de un conjunto básico de ejemplos de entrada (previamente clasificados o no). Asimismo, son altamente robustas tanto al ruido como a la disfunción de elementos concretos y son fácilmente paralelizables. Esto incluye problemas de clasificación y reconocimiento de patrones de voz, imágenes, señales, etc. Asimismo se han utilizado para encontrar patrones de fraude económico, hacer predicciones en el mercado financiero, hacer predicciones de tiempo atmosférico, etc. También se pueden utilizar cuando no existen modelos matemáticos precisos o algoritmos con complejidad razonable; por ejemplo la red de Kohonen ha sido aplicada con un éxito más que razonable al clásico problema del viajante (un problema para el que no se conoce solución algorítmica de complejidad polinómica). Otro tipo especial de redes neuronales artificiales se ha aplicado en conjunción con los algoritmos genéticos (AG) para crear controladores para robots. La disciplina que trata l a evolución de redes neuronales mediante algoritmos genéticos se denomina Robótica Evolutiva. En este tipo de aplicación el genoma del AG lo constituyen los parámetros de la red (topología, algoritmo de aprendizaje, funciones de activación, etc.) y la adecuación de la red viene dada por la adecuación del comportamiento exhibido por el robot controlado (normalmente una simulación de dicho comportamiento). Ejemplos Quake II Neuralbot Un bot es un programa que simula a un jugador humano. El Neuralbot es un bot para el juego Quake II que utiliza una red neuronal para decidir su comportamiento y un algoritmo genético para el aprendizaje. Es muy fácil probarlo y ver su evolución. Clasificador No Sesgado de Proteínas Es un programa que combina diversas técnicas computacionales con el objetivo de clasificar familias de proteínas. Un posible método consiste en utilizar métricas adaptativas como por ejemplo: mapas autoorganizados y algoritmos genéticos. El problema de clasificación no sesgada basada en la expresión de las proteínas en Aminoácidos puede reducirse, conceptualmente, a lo siguiente: La identificación de grupos de proteínas que compartan características comunes. La determinación de las razones estructurales por las cuales las proteínas en cuestión se agrupan de la manera indicada.
Evitar la idea de establecer criterios de clasificación (“sesgados”) fundamentados
en ideas preconcebidas para lograr su clasificación. En este sentido, hay dos asuntos que considerar: 1) Cómo lograr la caracterización de las proteínas de manera no sesgada 2) Cómo lograr lo anterior sin apelar a medidas de agrupamiento que, a su vez, impliquen algún tipo de sesgo sobre dicho agrupamiento.
Las RNA han sido aplicadas a un número en aumento de problemas en la vida real y de considerable complejidad, donde su mayor ventaja es en la solución de problemas que son bastante complejos para la tecnología actual, tratándose de problemas que no tienen una solución algorítmica cuya solución algorítmica es demasiado compleja para ser encontrada. En general, debido a que son parecidas al las del cerebro humano, las RNA son bien nombradas ya que son buenas para resolver problemas que el humano puede resolver pero las computadoras no. Estos problemas incluyen el reconocimiento de patrones y la predicción del tiempo. De cualquier forma, el humano tiene capacidad para el reconocimiento de patrones, pero la capacidad de las redes neuronales no se ve afectada por la fatiga, condiciones de trabajo, estado emocional, y compensaciones. Se conocen cinco aplicaciones tecnológicas aplicadas: Reconocimiento de textos manuscritos Reconocimiento del habla Simulación de centrales de producción de energía Detección de explosivos Identificación de blancos de radares
1.6.4.
Los Algoritmos genéticos. 1.6.4.1. Antecedentes El algoritmo genético es una técnica de búsqueda basada en la teoría de la evolución de Darwin, que ha cobrado tremenda popularidad en todo el mundo durante los últimos años. Se presentarán aquí los conceptos básicos que se requieren para abordarla, así como unos sencillos ejemplos que permitan a los lectores comprender cómo aplicarla al problema de su elección. En los últimos años, la comunidad científica internacional ha mostrado un creciente interés en una nueva técnica de búsqueda basada en la teoría de la evolución y que se conoce como el algoritmo genético. Esta técnica se basa en los mecanismos de selección que utiliza la naturaleza, de acuerdo a los cuales los individuos más aptos de una población son los que sobreviven, al adaptarse más fácilmente a los cambios que se producen en su entorno. Hoy en día se sabe que estos cambios se efectúan en los genes de un individuo (unidad básica de codificación de cada uno de los atributos de un ser vivo), y que sus atributos más deseables (i.e., los que le permiten adaptarse mejor a su entorno) se transmiten a sus descendientes cuando éste se reproduce sexualmente. Un investigador de la Universidad de Michigan llamado John Holland era consciente de la importancia de la selección natural, y a fines de los 60s desarrolló una técnica que permitió incorporarla a un programa. Su objetivo era lograr que las computadoras aprendieran por sí mismas. A la técnica que inventó Holland se le llamó originalmente "planes reproductivos", pero se hizo popular bajo el nombre "algoritmo genético" tras la publicación de su libro en 1975. Una definición bastante completa de un algoritmo genético es la propuesta por John Koza: "Es un algoritmo matemático altamente paralelo que transforma un conjunto de objetos matemáticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras haberse presentado de forma natural una serie de operaciones genéticas de entre las que destaca la recombinación sexual. Cada uno de estos objetos matemáticos suele ser una
cadena de caracteres (letras o números) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta función matemática que refleja su aptitud”.
1.6.4.2.
Definiciones Los Algoritmos Genéticos (AGs) son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con los principios de la selección natural y la supervivencia de los más fuertes, postulados por Darwin. Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos del problema depende en buena medida de una adecuada codificación de las mismas. Un algoritmo genético consiste en una función matemática o una rutina de software que toma como entradas a los ejemplares y retorna como salidas cuales de ellos deben generar descendencia para la nueva generación. Versiones más complejas de algoritmos genéticos generan un ciclo iterativo que directamente toma a la especie (el total de los ejemplares) y crea una nueva generación que reemplaza a la antigua una cantidad de veces determinada por su propio diseño. Una de sus características principales es la de ir perfeccionando su propia heurística en el proceso de ejecución, por lo que no requiere largos períodos de entrenamiento especializado por parte del ser humano, principal defecto de otros métodos para solucionar problemas, como los Sistemas Expertos. Los algoritmos genéticos son el resultado de los recientes avances de la computación evolutiva y la genética y se constituyen en una de las principales herramientas tecnológicas de la inteligencia artificial. Estos algoritmos simulan la mecánica de la selección natural y de la genética utilizando la información histórica para encontrar nuevos puntos de búsqueda de una solución óptima, permitiendo obtener soluciones a un problema que por su complejidad no tiene ningún método de solución de forma preciso. Dicha solución exige cálculos complejos que de manera normal tomarían demasiado tiempo.
1.6.4.3.
Ventajas y Desventajas No necesitan conocimientos específicos sobre el problema que intentan resolver. Operan de forma simultánea con varias soluciones, en vez de trabajar de forma secuencial como las técnicas tradicionales. Cuando se usan para problemas de optimización maximizar una función objetivoresultan menos afectados por los máximos locales (falsas soluciones) que las técnicas tradicionales. Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivamente paralelas. Usan operadores probabilísticas, en vez de los típicos operadores determinísticos de las otras técnicas. Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta medida de los parámetros que se utilicen tamaño de la población, número de generaciones, etc.-. Pueden converger prematuramente debido a una serie de problemas de diversa índole.
1.6.4.4.
Limitaciones El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el Algoritmo Genético encuentre la solución óptima, del
problema, existe evidencia empírica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimización combinatoria. En el caso de que existan técnicas especializadas para resolver un determinado problema, lo más probable es que superen al Algoritmo Genético, tanto en rapidez como en eficacia. El gran campo de aplicación de los Algoritmos Genéticos se relaciona con aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridándolas con los Algoritmos Genéticos.
1.6.4.5.
Como saber si es posible usar un Algoritmo Genético La aplicación más común de los algoritmos genéticos ha sido la solución de problemas de optimización, en donde han mostrado ser muy eficientes y confiables. Sin embargo, no todos los problemas pudieran ser apropiados para la técnica, y se recomienda en general tomar en cuenta las siguientes características del mismo antes de intentar usarla: Su espacio de búsqueda (i.e., sus posibles soluciones) debe estar delimitado dentro de un cierto rango. Debe poderse definir una función de aptitud que nos indique qué tan buena o mala es una cierta respuesta. Las soluciones deben codificarse de una forma que resulte relativamente fácil de implementar en la computadora. El primer punto es muy importante, y lo más recomendable es intentar resolver problemas que tengan espacios de búsqueda discretos aunque éstos sean muy grandes. Sin embargo, también podrá intentarse usar la técnica con espacios de búsqueda continuos, pero preferentemente cuando exista un rango de soluciones relativamente pequeño. La función de aptitud no es más que la función objetiva de nuestro problema de optimización. El algoritmo genético únicamente maximiza, pero la minimización puede realizarse fácilmente utilizando el recíproco de la función maximizante (debe cuidarse, por supuesto, que el recíproco de la función no genere una división por cero). Una característica que debe tener esta función es que tiene ser capaz de "castigar" a las malas soluciones, y de "premiar" a las buenas, de forma que sean estas últimas las que se propaguen con mayor rapidez. La codificación más común de las soluciones es a través de cadenas binarias, aunque se han utilizado también números reales y letras. El primero de estos esquemas ha gozado de mucha popularidad debido a que es el que propuso originalmente Holland, y además porque resulta muy sencillo de implementar.
1.6.4.6.
Marco de Desarrollo Antes de continuar ahondando en la técnica de los Algoritmos Genéticos sería interesante dejarla situada dentro de un marco más amplio. Nos referimos a la rama de la Inteligencia Artificial que se ha denominado Computación Evolutiva. El término Computación Evolutiva se refiere al estudio de los fundamentos y aplicaciones de ciertas técnicas heurísticas de búsqueda basadas en los principios naturales de la evolución. Una gran variedad de algoritmos evolutivos han sido propuestos pero principalmente pueden clasificarse en: Algoritmos Genéticos, Programación Evolutiva, Estrategias Evolutivas, Sistemas Clasificadores y Programación Genética. Esta clasificación se basa sobre todo en detalles de desarrollo histórico más que en el hecho de un funcionamiento realmente diferente, de hecho las bases biológicas en las que se apoyan son esencialmente las mismas. Las diferencias entre ellos se centran en los operadores que se usan en cada caso y en general en la forma de implementar la selección, reproducción y sustitución de individuos en una población. Aunque los detalles de la evolución no han sido completamente comprendidos, incluso hoy en día, existen algunos puntos en los que se fundamentan:
La evolución es un proceso que opera a nivel de cromosomas, y no a nivel de individuos. Cada individuo es codificado como un conjunto de cromosomas. La selección natural es el mecanismo mediante el cual los individuos mejor adaptados son los que tienen mayores posibilidades de reproducirse. El proceso evolutivo tiene lugar en la etapa de la reproducción. Es en esta etapa donde se producen la mutación, que es la causante de que los cromosomas de los hijos puedan ser diferentes a los de los padres, y el cruce, que combina los cromosomas de los padres para que los hijos tengan cromosomas diferentes. De forma breve, pasamos a comentar cada una de los algoritmos mencionados anteriormente, para que pueda tener una idea de las similitudes y diferencias entre ellos. Los Algoritmos Genéticos resuelven los problemas generando poblaciones sucesivas a las que se aplican los operadores de mutación y cruce. Cada individuo representa una solución al problema, y se trata de encontrar al individuo que represente a la mejor solución. La Programación Genética funciona igual que la técnica anterior pero se centra en el estudio de problemas cuya solución es un programa. De manera que los individuos de la población son programas que se acercan más o menos a realizar una tarea que es la solución. La Programación Evolutiva es otro enfoque de los algoritmos genéticos, en este caso el estudio se centra en conseguir operadores genéticos que imiten lo mejor posible a la naturaleza, en cada caso, más que en la relación de los padres con su descendencia. En este caso no se utiliza el operador de cruce, tomando la máxima importancia el operador de mutación. Estrategias Evolutivas se centran en el estudio de problemas de optimización e incluyen una visión del aprendizaje en dos niveles: a nivel de genotipo, y a nivel de fenotipo. Y por último los Sistemas Clasificadores engloban el estudio de problemas en los que la solución buscada se corresponde con toda una población. Para finalizar se muestra un esquema en el que se sitúan las técnicas mencionadas con respecto a otros procedimientos de búsqueda conocidos.
1.6.4.7.
Aplicaciones Como hemos podido observar, el área de aplicación de los AG es muy amplia, y en general sus aplicaciones se pueden implementar a muchos de los problemas de la vida cotidiana, de igual forma, se hayan aplicado a diversos problemas y modelos en ingeniaría, y en la ciencia en general cabe destacar entre ellos: Las principales aplicaciones de los algoritmos genéticos en el campo de la gestión financiera empresarial son: La predicción de la bancarrota de una empresa. Evaluación y predicción de la capacidad financiera de una empresa para absorber un préstamo y con el fin de decidir el otorgamiento del mismo, la inferencia de reglas que indiquen las mejores decisiones sobre la asignación de recursos con base en información histórica de varios años. Generalmente, los algoritmos genéticos se emplean con bastante éxito en la investigación de operaciones para resolver problemas de optimización numérica y combinatoria.
1.6.4.8.
Ciclo general de un algoritmo genético estándar El AG estándar se puede expresar en pseudocódigo con el siguiente ciclo: 1. Generar aleatoriamente la población inicial de individuos P (0). 2. Mientras ( numero _ generaciones <= máximo _ números _ generaciones) Hacer: { Evaluación; Selección;
Reproducción; Generación ++; } 3. Mostrar resultados. 4. Fin de la generación. 1.6.4.9. Función de evaluación y selección La función de evaluación define el criterio para ordenar las hipótesis que potencialmente pueden pasar a formar parte de la siguiente generación. La selección de las hipótesis que formarán parte de la siguiente generación o que serán usadas para aplicarles los operadores genéticos, puede realizarse de varias formas. Las más usuales son: Selección proporcional. En este método la probabilidad de que una hipótesis sea seleccionada viene determinada por: Selección mediante tor neo. Se eligen dos hipótesis al azar. Selección por rango. La probabilidad de que una hipótesis sea seleccionada será proporcional a su posición en dicha lista ordenada, en lugar de usar el valor devuelto por la función de evaluación.
1.6.4.10. Clases de algoritmos genéticos Algoritmos Genéticos Generacionales. Algoritmos Genéticos de estado Fijo. Algoritmos Genéticos Paralelos. Modelos de Islas. Modelo Celular 1.6.4.11. Operadores genéticos Los dos operadores más comunes son la mutación y el cruce. Además existen varios tipos de cruce:
Cruce Simple
Cruce Doble
Mutación. Generalmente se aplica después de hacer uso del operador cruce. Su objetivo es producir diversidad en la población.
1.6.5.
Razonamiento basado en Casos. 1.6.5.1. Concepto Se ocupa del estudio de los mecanismos mentales necesarios para repetir lo que se ha hecho o vivido con anterioridad, ya sea por experiencia propia o por casos concretos recopilados en la bibliografía o en la sabiduría popular. Los diversos casos son del tipo "Si X, entonces Y" con algunas adaptaciones y críticas según las experiencias previas en el resultado de cada una de dichas reglas. RBC es razonar por recuerdo RBC resuelve problemas nuevos adaptando soluciones que se han usado en la solución de problemas viejos RBC es una nueva aproximación a la resolución de problemas y el aprendizaje RBC es una forma con que las personas resolvemos problemas usando casos a la vez que una manera para construir máquinas que los usen. 1.6.5.2.
Ventajas: Técnica de adquisición de conocimientos. Técnica de resolución de problemas. Dominios de difícil estructuración.
1.6.5.3.
Inconvenientes Memoria Manipulación de la incertidumbre.
1.6.5.4.
Etapas Recuperación Adaptación Evaluación Aprendizaje
1.6.5.5.
El ciclo del razonamiento basado en casos Un ciclo de vida CBR está formado esencialmente por los cuatro procesos siguientes (ver figura): Recuperar el caso ó casos pasados más similares (RETRIEVE). Esto es, retomar 1. La experiencia de un problema anterior que se cree es similar al nuevo. 2. Reutilizar la información y conocimiento de este caso ó casos recuperados para resolver el nuevo problema (REUSE). Esto es, copiar o integrar la solución del caso ó casos recuperados. 3. Revisar la solución propuesta (REVISE). 4. Guardar la nueva solución una vez ha sido confirmada ó validada (RETAIN). Se guardan aquellas partes de la experiencia de una manera tal que sea útil para resolver problemas futuros. Es decir, un problema nuevo se resuelve recuperando uno o más casos previos (ya experimentados), reutilizando el caso de una manera u otra, revisando la solución propuesta, y guardando la nueva experiencia incorporándola a la base de conocimiento existente (base de casos). A este respecto hay que hacer varias aclaraciones:
Los cuatro procesos no son tareas únicas, es decir, cada uno de ellos implica llevar a cabo una serie de tareas más específicas Si bien se ha dado a entender que en el proceso de reutilización se lleva a cabo toda la problemática de adaptación del caso ó casos recuperados para el nuevo problema, en muchas aplicaciones prácticas las fases de reutilización y revisión apenas se distinguen, y muchos investigados hablan de fase de adaptación, que combina ambas.
No obstante, la adaptación es quizá uno de los frentes más abiertos en los sistemas CBR debido a su complejidad. En la figura podemos observar lo comentado sobre el ciclo CBR. Una descripción de un problema define un nuevo caso, que se usa en la RECUPERACIÓN de un caso de entre la colección de casos pasados. El caso recuperado se combina con el nuevo caso para, a través de la REUTILIZACIÓN, proponer un caso que sea una solución al problema inicial. En una fase de EVALUACIÓN se verificará el éxito de la solución, por ejemplo siendo comprobada en el mundo real (habitualmente por un agente humano), y se reparará si falla. Durante el ALMACENAMIENTO, la experiencia útil se guarda para una futura reutilización, y el caso base se actualiza por un nuevo caso aprendido, o por una modificación de algunos casos existentes. Además, la figura nos muestra cómo el conocimiento general juega un papel importante en el ciclo, dando soporte a los procesos CBR. Dependiendo del tipo de método CBR, este soporte puede variar, desde una consideración débil (ó nula) a un soporte muy fuerte. Se trata, por tanto, de un conocimiento general, frente al conocimiento específico encerrado en los casos. Por ejemplo, en el diagnóstico médico por analogía con casos de pacientes previos, el conocimiento general podría consistir en un modelo de anatomía junto con relaciones causales entre estados patológicos, formulados quizá a modo de un conjunto de reglas.
1.7 ÁREAS DE LA IA Las definiciones anteriores implican que las máquinas para ser consideradas inteligentes deben exhibir ciertas habilidades, suficientemente complejas como para ser tratadas como áreas independientes. La forma de abordaje de cada una de estas áreas suele ser tan disímil, que es difícil reconocerles un origen común.
1.7.1.
Procesamiento del lenguaje natural. Una de las ramas más importantes de la Inteligencia Artificial es aquella orientada a facilitar la comunicación hombre-computadora por medio del lenguaje humano, o lenguaje natural. El Procesamiento del Lenguaje Natural (PLN) es la disciplina encargada de producir sistemas informáticos que posibiliten dicha comunicación, por medio de la voz o del texto. Se trata de una disciplina tan antigua como el uso de las computadoras (años 50), de gran profundidad, y con aplicaciones tan importantes como la traducción automática o la búsqueda de información en Internet. El procesamiento del lenguaje natural presenta múltiples aplicaciones: Corrección de textos : Permite la detección y corrección de errores ortográficos y gramaticales, Para detectar este tipo de errores, la computadora necesita entender en cierto grado el sentido del texto. Los correctores de gramática detectan las estructuras incorrectas en las oraciones aunque todas las palabras en la oración estén bien escritas en el lenguaje en cuestión. El problema de detectar los errores de este tipo es complejo debido a la existencia de gran variedad de estructuras permitidas. Para describir las estructuras de las oraciones en el idioma, se usan las llamadas gramáticas formales, o sea conjuntos de reglas de combinación de palabras y su orden relativo en las oraciones. La traducción automática: Se refiere a la traducción correcta de un lenguaje a otro, tomando en cuenta lo que se quiere expresar en cada oración.
En el campo de la recuperación de la información han desarrollado sistemas que permiten obtener información sobre estadísticas deportivas, información turística, geografía etc. En lugar de buscar los documentos para encontrar en ellos la respuesta a su pregunta, el usuario podría hacer su pregunta a la computadora: ¿Cómo se llama el
Presidente de Francia?, ¿Cuáles son los centros más avanzados en Procesamiento del Lenguaje Natural?, y otras.
1.7.2.
Por otra parte Se han desarrollado sistemas con la capacidad de crear resúmenes de documentos a partir de los datos suministrados. Estos sistemas son capaces de realizar un análisis detallado del contenido del texto y elaborar un resumen.
También se han desarrollado sistemas inteligentes que permiten modelar el comportamiento del estudiante , reconocer y procesar sus errores, desarrollar habilidades en la resolución de problemas y otras actividades del proceso enseñanza y aprendizaje. En ellos el Procesamiento del Lenguaje Natural juega un papel de relevante importancia en la creación y desarrollo de interfaces amigables.
Visión Artificial. La visión artificial (machine vision) es la adquisición automática de imágenes sin contacto y su análisis también automático con el fin de extraer la información necesaria para controlar un proceso o una actividad como: Control de calidad. Ordenación por calidades ( grading ). Manipulación de materiales. Test y calibración de aparatos. Monitorización de procesos. El propósito de la visión artificial es programar un computador para que "entienda" una escena o las características de una imagen. Los objetivos típicos de la visión artificial incluyen: La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes (por ejemplo, caras humanas). La evaluación de los resultados (ej.: segmentación, registro). Registro de diferentes imágenes de una misma escena u objeto, i.e., hacer concordar un mismo objeto en diversas imágenes. Seguimiento de un objeto en una secuencia de imágenes. Mapeo de una escena para generar un modelo tridimensional de la escena; tal modelo podría ser usado por un robot para navegar por la escena. Estimación de las posturas tridimensionales de humanos. Búsqueda de imágenes digitales por su contenido. Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadístico, geometría de proyección, procesado de imágenes, teoría de gráficos y otros campos. La visión artificial cognitiva está muy relacionada con la psicología cognitiva y la computación biológica.
1.7.3.
Robótica. Es la ciencia encaminada a diseñar y construir aparatos y sistemas capaces de realizar tareas propias de un ser humano. No es un campo propio de la Inteligencia Artificial pero es quizá todo un conjunto de circuito compacto que van a permitir tener como base para que una computadora pensante pueda desplazarse y lograr así la movilidad. 1.7.3.1. Robots Físicos Robótica Industrial: Es la parte de la Ingeniería que se dedica a la construcción de máquinas capaces de realizar tareas mecánicas y repetitivas de una manera muy eficiente y con costes reducidos.
Robótica de Servicio: Es la parte de la Ingeniería que se centra en el diseño y construcción de máquinas capaces de proporcionar servicios directamente a los miembros que forman sociedad. Robótica Inteligente: Son robots capaces de desarrollar tareas que, desarrolladas en un ser humano, requieren el uso de su capacidad de razonamiento. Robótica Humanoide: Es la parte de la ingeniería que se dedica al desarrollo de sistemas robotizados para imitar determinadas peculiaridades del ser humano.
1.7.3.2. Robots Software Robótica de Exploración: Es la parte de la Ingeniería del Software que se encarga de desarrollar programas capaces de explorar documentos en busca de determinados contenidos. Existen diversos servicios en Internet dedicados a esta parcela de la robótica. 1.7.4.
Reconocimiento de Patrones. También llamado lectura de patrones , identificación de figuras y reconocimiento de formas es el reconocimiento de patrones en señales. No sólo es un campo de la informática sino un proceso fundamental que se encuentra en casi todos las acciones humanas. El punto esencial del reconocimiento de patrones es la clasificación: se quiere clasificar una señal dependiendo de sus características. Señales, características y clases pueden ser de cualquiera forma, por ejemplo se puede clasificar imágenes digitales de letras en las clases «A» a «Z» dependiente de sus píxeles o se puede clasificar ruidos de cantos de los pájaros en clases de órdenes aviares dependiente de las frecuencias. El objetivo es clasificar patrones con base en un conocimiento a priori o información estadística extraída de los patrones. Los patrones a clasificar suelen ser grupos de medidas u observaciones, definiendo puntos en un espacio multidimensional apropiado. Un sistema de reconocimiento de patrones completo consiste en un sensor que recoge las observaciones a clasificar, un sistema de extracción de características que transforma la información observada en valores numéricos o simbólicos, y un sistema de clasificación o descripción que, basado en las características extraídas, clasifica la medición. A continuación se sugieren algunos ejemplos relevantes al área de reconocimiento de patrones: Parámetros para reconocer la cara de una persona. Agrupación de palabras para hacer sentido en una frase. Buscar la llave para abrir una chapa. Olores para saber si una naranja esta fresca o podrida.
1.7.5.
La realidad Virtual. La realidad virtual (RV) es una simulación tridimensional generada o asistida comúnmente por computadora de algún aspecto del mundo real o ficticio, en el cual el usuario tiene la sensación de pertenecer a ese ambiente sintético o interactuar con él. La RV permite interactuar con mundos tridimensionales de una manera más natural, por ejemplo, un usuario puede realizar acciones dentro de un modelo virtual, desplazarse, moverse, caminar a través de él o levantar cosas, y de esta forma experimentar situaciones que se asemejan al mundo real. Se destacan tres características idóneas de la RV: Es un ambiente tridimensional generado por computadora. Es interactiva. Es inmersiva, es decir, el usuario se siente parte del ambiente virtual. Las partes básicas de un sistema de realidad virtual son: el modelo de simulación, la representación del ambiente virtual, la entrada/salida y por supuesto el usuario.
1.7.6.
Cibernética. Es la ciencia que se ocupa de los sistemas de control y de comunicación en las personas y en las máquinas, estudiando y aprovechando todos sus aspectos y mecanismos comunes. El nacimiento de la cibernética se estableció en el año 1942, en la época de un congreso sobre la inhibición cerebral celebrado en Nueva York, del cual surgió la idea de la fecundidad de un intercambio de conocimiento entre fisiólogos y técnicos en mecanismos de control. Cinco años más tarde, Norbert Wiener uno de los principales fundadores de esta ciencia, propuso el nombre de cibernética, derivado de una palabra griega que puede traducirse como piloto, timonel o regulador. Por tanto la palabra cibernética podría significar ciencia de los mandos. Estos mandos son estructuras con elementos especialmente electrónicos y en correlación con los mecanismos que regulan la psicología de los seres vivientes y los sistemas sociales humanos, y a la vez que permiten la organización de máquinas capaces de reaccionar y operar con más precisión y rapidez que los seres vivos, ofrecen posibilidades nuevas para penetrar más exactamente las leyes que regulan la vida general y especialmente la del hombre en sus aspectos psicológicos, económicos, sociales etc. Dentro del campo de la cibernética se incluyen las grandes máquinas calculadoras y toda clase de mecanismos o procesos de autocontrol semejantes y las máquinas que imitan la vida. Las perspectivas abiertas por la cibernética y la síntesis realizada en la comparación de algunos resultados por la biología y la electrónica, han dado vida a una nueva disciplina, la biónica. La biónica es la ciencia que estudia los: principios de la organización de los seres vivos para su aplicación a las necesidades técnicas. Una realización especialmente interesante de la biónica es la construcción de modelos de materia viva, particularmente de las moléculas proteicas y de los ácidos nucleicos.
1.7.7.
Multimedia. Es un sistema que utiliza más un medio de comunicación al mismo tiempo en la presentación de la información, como el texto, la imagen, la animación, el vídeo y el sonido. Tipos de información multimedia : Texto: sin formatear, formateado, lineal e hipertexto. Gráficos: utilizados para representar esquemas, planos, dibujos lineales... Imágenes: son documentos formados por píxeles. Pueden generarse por copia del entorno (escaneado, fotografía digital) y tienden a ser ficheros muy voluminosos. Animación: presentación de un número de gráficos por segundo que genera en el observador la sensación de movimiento. Vídeo: Presentación de un número de imágenes por segundo, que crean en el observador la sensación de movimiento. Pueden ser sintetizadas o captadas. Sonido: puede ser habla, música u otros sonidos.
1.7.8.
Juegos. La mayor parte de los juegos están construidos usando técnicas de inteligencia artificial.
1.7.9.
Otras Áreas Planificación y soporte a la decisión. Programación Automática. Prueba Automática de teoremas y matemáticas simbólica. Problemas de optimización combinatorios y de itinerarios. Aprendizaje.
1.8 ALGUNAS APLICACIONES DE LA IA
80´s SE en diferentes dominios (Mycin, R1,Prospector, Dendral.) 89 HITECH Programa de ajedrez. 92 MARVEL S.E. En tiempo real que monitorea nave espacial
94 PEGASUS Realiza reservas de vuelos Sistemas de conducción de automóviles. Newstracker: Este programa recupera datos específicos. Cuando el usuario indica el tipo de información que le interesa, Newstracker comprende el mensaje y, después de revisar durante horas miles de artículos en periódicos, agencias de noticias o revistas conectadas a Internet, cada mañana "edita" un periódico personalizado. Si la selección de noticias no satisface por completo al lector, Newstracker toma nota, rectifica y es capaz de aprender de sus errores. Una vez que haya estudiado durante cierto tiempo los hábitos de lectura del usuario, le proporciona información a su medida. Los expertos definen a este sofisticado programa como un "asistente polivalente" de la primera generación.
Racter: Creado en 1980 por Thomas Etter, un programador-analista de San Francisco y William Chamberlain, un escritor neoyorquino. La intención de ambos era crear un programa que crease cuentos. Posteriormente, lo modificaron para permitirle mantener conversaciones con seres humanos, veamos un extracto de una conversación entre Racter y Chamberlain. Racter: ¿Hemos hablado antes? Chamberlain: No Racter: ¿De qué sexo eres? Chamberlain: Masculino Racter: ¿Cuál es tu nombre completo? Chamberlain: Bill Chamberlain Racter: ¿Qué eres? Chamberlain: Cronorreflectometrista Racter: ¿De dónde eres? Chamberlain: De la ciudad de Nueva York Racter: Ya veo. Así que cronorreflectometrista, ¿verdad? Escucha. Gritemos juntos con decisión. Me gusta la cautivadora música italiana. ¿Qué clase de música te gusta a ti? Chamberlain: el jazz Racter: El jazz está bien. ¿Qué me dices de la clásica? Chamberlain: Me gusta la música clásica Racter: ¿Y de qué nacionalidad? Chamberlain: También me gusta la música italiana Racter: A mí, personalmente, Palestrina me inflama. Además de Italia, otros países produjeron en el siglo XVII embelesados músicos. Sewall fue un importante y furibundo maestro del Renacimiento. América fue su nación. Yo saco de la música amoroso placer. El diálogo prosigue por similares derroteros, mezclando sin pudor Bach con el rodaballo y las lechugas. Al comparar este diálogo con el que yo mismo he mantenido con el programa Doctor se aprecia una diferencia; el diálogo de Racter es mucho más rico y fluido que el de Doctor, si bien es bastante más disparatado. En el test de Turing Racter podría pasar por un humano con una marcada tendencia a la divagación. ¿Cuál es el funcionamiento de Racter? Al principio de la conversación hace una serie de preguntas a su interlocutor, cuyas respuestas va almacenando en una base de datos. En cuanto juzga que dispone de suficiente información empieza a elaborar frases, en las que combina los elementos de que dispone en su memoria con aquellos que ha recibido de su interlocutor, con lo que logra implicarlo en la conversación. Para construir las frases sigue un mismo esquema gramatical, en el que los sustantivos, adjetivos y verbos se eligen al azar entre una amplia variedad que pertenecen a una misma categoría, y los artículos se adecuan a la forma gramatical correspondiente. Esto hace que las frases sean sintácticamente correctas, pero en tanto los sustantivos, adjetivos y verbos se escogen al azar el sentido suele ser disparatado.
Mycin: Se trataba de un sistema experto para el diagnóstico de enfermedades infecciosas. Desde los resultados de análisis de sangre, cultivos bacterianos y demás datos, el programa era capaz de determinar, o en lo menos, sugerir el microorganismo que estaba causando la infección. Después de
llegar a una conclusión, MYCIN prescribía una medicación que se adaptaba perfectamente a las características de la persona, tales como el peso corporal de este. Después del reconocido éxito que tuvo.
Mondrian: Un agente gráfico Un agente autónomo que no sólo interactúa con la interfaz modificándola (agente autónomo de interfaz) sino que se utiliza para facilitar labores de diseño gráfico. Mondrian parte "conociendo" solamente figuras geométricas básicas. Se puede seleccionar alguna en su paleta de comandos y luego determinar su posición y tamaño, y eventualmente desplazar y borrar. Pero, lo más interesante y característica esencial del agente es que, teniendo alguna figura diseñada en base a los componentes fundamentales, se pueden agrupar, nombrar y de este modo agregar como nuevo recurso en la paleta Progresivamente, el agente "aprende" así nuevas confi-guraciones y las agrega a su base de conocimientos, el diseñador llegando a disponer de una gran cantidad de figuras reutilizables. En cualquier momento el usuario puede obtener información acerca del modo en que el componente fue construido gracias a otra funcionalidad del agente.
Express: Este programa permite realizar múltiples búsquedas simultáneas en diferentes buscadores, y localizar información en Internet de manera fácil y rápida a través de una interfaz sencilla.
Un sistema experto para la diagnosis de enfermedades de los ganglios linfáticos, capaz de emitir una diagnosis y de dar una explicación de la misma que sirva para señalar los factores que la han motivado (Heckerman, 1991).
Un sistema robótico integrado en un coche, que recoge imágenes de video y señales de sensores, las integra con la experiencia adquirida en conducciones de entrenamiento, y es capaz de conducir en una autopista sin la intervención humana (Pomerleau, 1993).
Un sistema de monitorización de trafico capaz de reconocer distintas escenas a partir de las imágenes tomadas desde una cámara en un cruce, e incluso de realizar llamadas automáticas a los servicios de emergencia en caso de accidentes (King et al., 1993).
Pegasus: Un programa de comprensión del habla capaz de entender los detalles de una petición de reserva de vuelo y de tramitar la transacción (Zue et al. 1994).
Deep Blue: Máquina paralela que juega ajedrez y primera en derrotar al campeón mundial [IBM 97]. Aibo: De Sony, es un perro inteligente el cual fue introducido al mercado en Japón y Estados Unidos en 1999, y solo era vendido por la red. El robot cuenta con múltiples sensores a lo largo de su cuerpo para la iteración con su dueño, así como para darle su ubicación. También cuenta con luces, con las cuales expresa su estado de ánimo en distintas situaciones. La unidad de procesamiento central es un procesador RISK de 64 bits con 32 Mb en RAM de memoria, con un sistema operativo OPEN-R v.1.1.2 de sony. Además se pueden conseguir programas para modelar su comportamiento.
Manejador inteligente de bases de datos. Proceso automático inteligente para realizar taladros sobre una placa Robot angular de movimiento continúo. Control virtual-remoto de la trayectoria de un vehiculo autónomo. Central inteligente de alarmas Central inteligente de atención de emergencias medicas. Proceso automático inteligente para cortar piezas de cuero para zapatos, carteras y otros.
CAPÍTULO II: UN AGENTE BASADO EN EL CONOCIMIENTO 1.1 CONCEPTOS. Un agente lógico o basado en el conocimiento parte de conocimiento y utiliza el razonamiento lógico para decidir las acciones que le llevaran a su objetivo. Un agente basado en el conocimiento necesita conocimiento muy variado: Sobre el mundo: estado actual, como inferir sus propiedades a partir de percepciones, como evoluciona. Sobre el objetivo a conseguir. Sobre las acciones a realizar dependiendo de las circunstancias. El enfoque basado en el conocimiento tiene como objetivo implantar agentes que se pueden considerar como entidades que poseen un conocimiento de su mundo, y que también son capaces de razonar sobre las posibles acciones que pueden emprender.
1.2 BASE DE CONOCIMIENTOS El componente principal de un agente basado en el conocimiento es su base de conocimientos, o BC. De manera informal podría decirse que una base de conocimientos es un conjunto de representaciones de ciertos hechos acerca del mundo. Cada una de estas representaciones se denomina oración. Las oraciones se expresan en un lenguaje denominado lenguaje para la representación del conocimiento. Para interactuar con la BC, es decir para agregarle nuevas oraciones e interrogarle sobre ellas, existen dos tareas que pueden realizarse: INFORMAR y PREGUNTAR, respectivamente.
1.3 INFORMAR Y PREGUNTAR Siempre que se solicita la intervención de un programa de agente, se realizan dos acciones. Primera, el programa INFORMA a la base de conocimientos lo que percibe. Segunda, le PREGUNTA a la base de conocimientos cuál es la acción que debe emprender. Debe quedar claro que es el agente quien informa y pregunta a su BC, y no una entidad externa a él.
1.4 CARACTERÍSTICAS El agente basado en el conocimiento no determina las acciones a seguir en forma arbitraria, sino que se caracteriza por los siguientes tres niveles:
El nivel de conocimiento o nivel epistemológico: es el más abstracto de los tres. Se puede describir un agente basándose en lo que éste sabe. Si INFORMAR y PREGUNTAR funcionan bien, la mayoría de las veces basta con trabajar en este nivel sin necesidad de ocuparse de los niveles inferiores. El nivel lógico: es donde el conocimiento se codifica mediante oraciones. El nivel de implantación: es el que opera la arquitectura del agente y es donde se encuentran las representaciones físicas de las oraciones correspondientes al nivel lógico.
1.5 ENFOQUE DECLARATIVO Si es posible entender la operación de un agente basado en el conocimiento en función de lo que éste sabe, entonces es posible construirlo informándole todo lo que necesita saber. El programa inicial del agente, antes de que empiece a recibir percepciones, se construye incorporando de una en una todas las oraciones
que representan todo lo que el diseñador sabe acerca del ambiente. A lo anterior se lo conoce como enfoque declarativo de la construcción de un sistema. 1.6 APRENDIZAJE Es posible diseñar mecanismos de aprendizaje producen un conocimiento general acerca del ambiente una vez que se les proporciona un conjunto de percepciones. Mediante la incorporación de mecanismos de aprendizaje en un agente basado en el conocimiento se logra la total autonomía de éste.
1.7 CONSTRUCCIÓN DE UNA BASE DE CONOCIMIENTOS. El proceso mediante el cual se construye una base de conocimiento se conoce como ingeniería del conocimiento. Este entrevista a los verdaderos expertos de un campo para que éstos le enseñen lo necesario sobre el dominio de interés y le deslinden las fronteras del conocimiento respectivo, por medio de un proceso denominado adquisición del conocimiento. 1.7.1.
Características de las buenas y de las malas bases de conocimiento. El aspecto más difícil de resolver es el de la eficiencia. Lo ideal e conservar la separación ente base de conocimientos y procedimientos de inferencia. Esto permitirá al constructor de la base de conocimientos ocuparse sólo del contenido del conocimiento, no de cómo se le utilizará en el procedimiento de inferencia. Pero aun en el mejor de los casos el ingeniero del conocimiento debe conocer por lo menos lo elemental sobre cómo se realiza la inferencia, de manera que la representación esté diseñada para lograr la máxima eficiencia. Toda base de conocimiento tiene dos consumidores en potencia: los lectores humanos y los procedimientos de inferencia. Cada vez que alguien escriba una oración, deberá preguntarse lo siguiente: ¿Por qué lo anterior es verdadero? ¿En vez de ello, podría escribir los hechos que lo hacen verdadero? ¿Qué tan aplicable es un general? ¿Podría definirlo para una clase de objetos más general? ¿Necesito de una nueva clase de predicado para denotar esta clase de objetos? ¿Cómo se relaciona esta clase con otras? ¿Forma parte de una clase mayor? ¿Esa clase tiene otras subclases? ¿Qué otras propiedades poseen los objetos pertenecientes a esta clase?
1.7.2.
Ingeniería del conocimiento. Con el fin de facilitar el desarrollo de una base de conocimientos se recomienda utilizar el siguiente método que consta de cinco pasos: 1. Defina acerca de que va a hablar. Que su conocimiento del dominio sea suficiente para poder definir de qué objetos y hechos es necesario hablar, y cuáles habrá que ignorar. 2. Escoja un vocabulario para predicados, funciones y constantes. Traduzca los conceptos importantes del nivel de dominio a nombres del nivel de lógica. Una vez realizadas las elecciones correspondientes, el resultado es un vocabulario que se conoce como ontología del dominio. 3. Codifique todo el conocimiento general relativo al dominio. La ontología es una lista informal de los conceptos de un dominio. 4. Codifique una descripción de un caso específico del problema. Consistirá básicamente en la obtención de oraciones atómicas relativas a casos específicos de conceptos que forman ya parte de la ontología. 5. Haga consultas al procedimiento de inferencia y obtenga las respuestas.
1.7.3.
Ontología general. Son dos de las características principales de las ontologías para propósito general que las diferencian del grupo de las ontologías para casos especiales: Las ontologías de propósito general deben funcionar también en prácticamente cualquier domino especial.
Existen dominios muy exigentes, en donde es necesario unificar diversas áreas del conocimiento puesto que el razonamiento y la resolución de problemas pueden llegar a implicar simultáneamente a varias áreas.
El estudio de la ontología de propósito general está organizado de acuerdo con los siguientes subtemas:
1.7.3.1.
Representación de categorías Buena parte del razonamiento se realiza a nivel de categorías. Existen dos maneras para representar las categorías en la lógica de primer orden: Mediante predicados unarios Mediante la reificación. La reificación es el procedimiento mediante el cual un predicado o una función se convierten en un objeto del lenguaje. Las categorías desempeñan un papel importante: sirven para organizar y simplificar la base de conocimientos a través de la herencia. Las relaciones de subclase organizan las categorías en una taxonomía o jerarquía taxonómica. Se dice que dos categorías son disyuntas si no tienen ningún miembro en común. Incluso sabiendo que dos categorías son disyuntas, no podemos saber que si un objeto no forma parte de una categoría, debe formar parte de la otra, a menos que afirmemos que ambas categoría constituyen lo que se conoce como descomposición exhaustiva. A una descomposición exhaustiva disyunta se la conoce con el nombre de fragmentación. Las categorías se pueden definir también cuando se cumple con las condiciones necesarias y suficientes de la membresía.
1.7.3.2.
Medidas. En el universo existen “objetos de medida” abstractos. Este objeto de medida abstracto puede llamarse de diferentes maneras en nuestro lenguaje. En lógica esto se realiza combinando una función de unidades. Las medidas pueden servir para especificar objetos. Es fácil representar las medidas sencillas y cuantitativas. Es aspecto más importante de las medidas no reside en los valores numéricos particulares en sí, sino en el hecho de que las medidas permiten una ordenación. Aun cuando las medidas no estén representadas por números, es posible compararlas entre sí mediante signos de ordenación como >. 1.7.3.3. Objetos compuestos. Todo objeto que esté formado por partes se denomina objeto compuesto. Las categorías de los objetos compuestos normalmente se caracterizan mediante la estructura de dichos objetos, es decir, por sus partes y cómo se relacionan éstas entre sí. Es conveniente definir los objetos compuestos mediante partes bien definidas, aunque sin una estructura determinada. 1.7.3.4.
Representación del cambio mediante eventos. Para poder representar el cambio mediante eventos se utiliza lo que se conoce como cálculo de eventos, que viene a ser una versión continua del cálculo de situaciones. Un evento, de manera no formal, se considera como un “trozo” del universo temporal y
espacial. Los intervalos son secciones temporales completas del universo. En el cálculo de eventos, un evento determinado se produce durante un intervalo determinado. Se puede considerar que un lugar es una pieza de espacio constante, que se prolonga en el tiempo.
1.7.3.5.
Momentos, intervalos y acciones. Los intervalos de tiempo se dividen en: Momentos su duración es de cero Intervalos amplios
La relación más sencilla entre intervalos es Coincidir, en la cual el tiempo final del primero es igual al tiempo de inicio del segundo.
1.7.3.6.
Sustancias y objetos Existe una importante porción de realidad que parecería desafiar todo tipo de individualización (separación en objetos distintos). A esta porción se le conoce genéricamente como materia o sustancia. Hay varios tipos de sustancias: Sustancias temporales: se llama así a los eventos líquidos Sustancias espaciales. Los objetos pueden tener propiedades: Intrínsecas: son aquellas propiedades que pertenecen a la misma sustancia del objeto, más que al objeto como un todo. Cuando se parte algo en dos, ambas partes conservan el mismo conjunto de propiedades intrínsecas Extrínsecas: son aquellas propiedades que luego de dividir un objeto, se pierden. Aquella clase de objetos que en su definición incorporen sólo propiedades intrínsecas es una sustancia. En cambio aquella clase que incorpore cualquier propiedad extrínseca en su definición es una sustantivo contable.
1.7.3.7.
Eventos mentales y objetos mentales. El agente necesita contar con un modelo de aquello que los demás agentes saben, así como con cierto conocimiento acerca de su propio conocimiento, de lo que no conoce y de los procedimientos de inferencia. Se necesita contar con un modelo de los objetos mentales que hay dentro de la cabeza de alguien y de los procesos mentales mediante los que se manipulan tales objetos mentales. A la propiedad de sustituir libremente un término por otro igual se le denomina transparencia referencial.
1.7.3.8.
Conocimiento y acción. Las acciones tienen condiciones previas de conocimiento y también efectos de conocimientos.
CAPÍTULO IV: AGENTES QUE RESUELVEN PROBLEMAS 1.1 CONCEPTO. Son agentes basados en metas que determinan que deberán hacer por medio de secuencias de acciones que les permitan obtener estados deseables. Utilizan algoritmos (no dan información sobre el problema salvo su definición). Los objetivos ayudan a dirigir el comportamiento del agente limitando las acciones que intenta realizar.
1.2 PASOS PARA LA SOLUCIÓN DE PROBLEMAS Se sigue lo siguiente: Formulación de metas: Se establece la función objetivo basándose en la situación actual y la medida de rendimiento del agente. Formulación del problema: se decide que acciones y estados habrán de considerarse. Búsqueda: evaluación de las posibles secuencias de acciones que le llevan a la meta y elección de la más apta. Ejecución: se llevan adelante la solución que presenta la búsqueda.
Un agente con distintas opciones inmediatas de valores desconocidos puede decidir que hacer, examinando las diferentes secuencias posibles de acciones que le conduzcan a estados de valores conocidos, y entonces escoger la mejor secuencia.
1.3
DEFINICIÓN DE PROBLEMAS Es un conjunto de información que el agente utiliza para decidir lo que va a hacer. Un problema esta compuesto por:
Un estado inicial que es donde se encuentra el agente. Un conjunto de acciones que le agente puede emprender. La prueba de meta para saber si alcanzo un estado meta. La función costo de ruta que le asigna un valor a una ruta determinada.
1.4 TIPOS DE PROBLEMAS:
Problemas de un solo estado: El agente conoce con exactitud en que estado se encuentra y el resultado de cada una de sus acciones.
Problemas de estados múltiples: el agente no conoce con exactitud en que estado se encuentra, pero si el resultado de cada una de sus acciones.
Problemas de contingencias: el agente no conoce con exactitud en que estado se encuentra, pero si el resultado de cada una de sus acciones, aunque se le pueden presentar ciertas contingencias en las mismas.
Problemas de exploración: el agente no conoce con exactitud en que estado se encuentra, ni el resultado exacto de cada una de sus acciones.
1.5 EFICIENCIA PARA RESOLVER PROBLEMAS Hay tres formas para medir la eficiencia de la búsqueda: Según permita o no alcanzar la solución. Según su costo de ruta. Según el costo de tiempo y memoria para alcanzar la solución.
1.6 EJEMPLOS: 1.6.1.
Hallar rutas en Rumania Estamos de vacaciones en Rumania, concretamente en Arad y nuestro vuelo sale mañana de Bucarest.
Formulación de objetivos: Estar en Bucarest Formulación del problema Estados: Distintas ciudades. Acciones: Conducir entre ciudades
Encontrar solución: por ejemplo: secuencia de ciudades, Arad, Sibiu, Fagaras, Bucarest.
Esquema
Figura Nº 14: Mapa de las Rutas El problema puede estar definido por: Estado inicial: p.e. “en Arad” Operadores : Operadores que lleven de una ciudad a otra según el mapa, p.e. Arad => Zerind,Arad => Sibiu,etc Test de objetivo: explicito, p.e. x = “en Bucharest” Coste del camino: Número de etapas del viaje.
Una solución Seria una ruta que lleve de Arad a Bucarest. p.e. Arad => Sibiu => Rimnicu Vilcea => Pitesti => Bucharest La formulación de problemas de conjuntos de estados se realiza de manera similar. 1.6.2.
El puzzle de las 8 piezas
Estado Inicial
Estado Ob etivo
Figura Nº 15: Juego del Puzzle Estados: posiciones de las piezas y del hueco. Operadores: Llevar el hueco a izquierda, derecha, arriba o abajo. Test de objetivo: El estado objetivo predefinido. Coste del camino: 1 por movimiento.
Hallar la longitud de Ruta: _____________________ Hallar su costo : _____________________
CAPÍTULO II: BÚSQUEDA DE SOLUCIONES 2.1 CONCEPTO La búsqueda consiste en escoger una opción, haciendo a un lado las demás para considerarlas posteriormente en caso de no obtener respuesta alguna mediante la primera opción. La búsqueda termina cuando se encuentra una solución o cuando no hay más estados que expandir.
2.2 ÁRBOLES DE BÚSQUEDA Componentes en la estructura de datos para los árboles de búsqueda: El estado al que corresponda el nodo. El nodo padre. El operador que se aplico para generar el nodo. La profundidad del nodo (distancia hasta la raíz). El costo de ruta desde el estado inicial hasta el nodo.
2.3 ESTRATEGIA DE BÚSQUEDA Las estrategias de búsqueda se evalúan según los siguientes criterios: Completez: si garantiza o no encontrar la solución si es que existe. Complejidad temporal: cantidad de tiempo necesario para encontrar la solución. Complejidad espacial: cantidad de memoria necesaria para encontrar la solución. Optimidad: si se encontrará o no la mejor solución en caso de que existan varias.
2.4 TIPOS DE ESTRATEGIAS DE BÚSQUEDA Las estrategias de búsqueda se pueden agrupar en dos grandes grupos: Búsquedas sin contar con información (o búsqueda ciega): no existe información acerca de la cantidad de pasos necesarios o sobre el costo de ruta para pasar del estado de un momento dado a la meta. Búsqueda respaldada con información (o búsqueda heurística): Se posee información muy valiosa para orientar la búsqueda para que sea más óptima.
2.4.1.
Búsquedas sin contar con información Las 6 estrategias de búsqueda agrupadas genéricamente bajo el nombre de búsqueda sin contar con información. Es decir, no existe información acerca de la cantidad de pasos necesarios o sobre el coso de ruta para pasar del estado de un momento dado a la meta: lo único que permiten hacer es diferenciar entre un estado meta del otro que no lo es. A la búsqueda sin contar con información también se le conoce como búsqueda ciega y son las siguientes: Búsqueda preferente por amplitud. Búsqueda de costo uniforme. Búsqueda preferente por profundidad. Búsqueda limitada por profundidad. Búsqueda por profundización iterativa. Búsqueda direccional.
2.4.1.1.
Búsqueda preferente por amplitud: En esta búsqueda todos los nodos que están en la profundidad d del árbol de búsqueda se expanden antes de los nodos que estén en la profundidad d+1.
Si son varias las soluciones, este tipo de búsqueda permitirá siempre encontrar primero el estado meta más próximo a la raíz. En esta búsqueda el tiempo y la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad. Su complejidad espacio temporal es O (bd). Es óptima y completa. Si d es la longitud de ruta mínima. Si b el factor de ramificación, el número de nodos expandidos estará entre: 1+b+b2+...bd-1 y 1+b+b2+...bd
Tiempo y Memoria necesarios en la Búsqueda Preferente por Amplitud. Las cifras indicadas suponen que hay un factor de ramificación b=10; 1000 nodos/segundo; 100 bytes/nodo. Tabla Nº 4: Tiempo y Memoria en B.P. por Amplitud
Profundidad Nodos 0 1 2 111 4 11,111 6 106 8 108 10 1010 12 1012 14 1014 Ejemplo: Tomemos como el ir de Ada a Bucarest
Tiempo 1 milisegundo 1 segundos 11 segundos 18 minutos 31 horas 128 días 35 años 3500 años
Memoria 100 bytes 11 kilobytes 1 megabytes 111 megabytes 11 gigabytes 1 Terabytes 111 terabytes 11,111 terabytes
Figura Nº 16: Solución por búsqueda preferente por amplitud
2.4.1.2.
Búsquedas de costo uniforme: En esta búsqueda se modifica la estrategia preferente por amplitud en el sentido de expandir siempre el nodo de menor costo en el margen (medido por el costo de la ruta g(n)) en vez del nodo de menor profundidad. Este tipo de búsqueda permitirá siempre encontrar la solución mas barata siempre y cuando el costo de ruta nunca disminuya conforme avanzamos por la ruta. En esta búsqueda el tiempo y la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad.
Es óptima y completa. Los costos deben ser positivos, caso contrario no se aplica esta búsqueda. Ejemplo: Tómese el caso del problema de la determinación de ruta que radica en ir de S a G.
Figura Nº 17: Solución por búsqueda de costo uniforme Respuesta: S-B-G 2.4.1.3.
Búsqueda preferente por profundidad: En esta búsqueda siempre se expande uno de los nodos que se encuentren en los más profundos del árbol. Solo si la búsqueda conduce a un callejón sin salida, ser revierte la búsqueda y se expanden los nodos de niveles menos profundos. Esta búsqueda o se queda atorada en un bucle infinito y nunca es posible regresar al encuentro de una solución, o a la larga encontrará una ruta de solución más larga que la solución óptima. En esta búsqueda el tiempo necesario crece exponencialmente con respecto a la profundidad, mientras que el espacio requerido en memoria lo hace en forma lineal No es óptima ni completa. Su complejidad temporal O (bm) y su complejidad espacial es O (bm), en donde m es la profundidad máxima.
Figura Nº 18: Esquema de Búsqueda preferente por profundidad Ejemplo: Tómese el caso del problema de la determinación de ruta.
Figura Nº 19: Solución por búsqueda preferente por profundidad Ejemplo 2: Tómese el caso del problema del puzzle pero con otras posiciones.
Figura Nº 20: Resolución del puzzle por búsqueda preferente por profundidad 2.4.1.4.
Búsqueda limitada por profundidad: Esta búsqueda es similar a la búsqueda preferente por profundidad con la diferencia que se impone un límite a la profundidad máxima de una ruta. Se utilizan operadores que informan constantemente de la profundad del nodo. En esta búsqueda el tiempo necesario crece exponencialmente con respecto a la profundidad, mientras que el espacio requerido en memoria lo hace en forma lineal No es óptima, pero si completa cuando la profundidad del límite es menor o igual a la profundidad de la solución.
2.4.1.5.
Búsqueda por profundización iterativa: Esta búsqueda es similar a la búsqueda limitada por profundidad con la diferencia que se repiten las búsquedas dando en cada iteración un valor distinto de profundidad para la misma. En esta búsqueda el tiempo necesario crece exponencialmente con respecto a la profundidad, mientras que el espacio requerido en memoria lo hace en forma lineal Es óptima y completa. Su complejidad temporal es O (bd) y su complejidad espacial es O (bd).
Figura Nº 21: Esquema por búsqueda preferente por profundidad Por ejemplo, en lugar de que sea 1 + b + b 2+….+ bd, el primero se expande d+1 veces, el segundo veces, el tercero d - 1, etc. Por ejemplo, con un factor de 10 y con profundidad 5, los nodos expandidos serían Con cantidad de expansiones (d+1) son:
Entre más grande sea el factor de arborecencia, menor el trabajo extra. Sin embargo, inclusive para un árbol binario se toma como el doble de tiempo que breadth-first pero con mucho menos memoria. En general, si el espacio de búsqueda es grande y no se sabe la profundidad del árbol es el método a usar.
2.4.1.6.
Búsqueda bidireccional: Esta es una búsqueda que avanza a partir del estado inicial y que retrocede a partir de la meta y que se detiene cuando ambas búsquedas se encuentran en algún punto intermedio. En esta búsqueda el tiempo y el espacio requerido en memoria crecen exponencialmente con respecto a la mitad de la profundidad (bd/2). Es óptima y completa. Ejemplo: Tomemos el caso de los puzzle
Figura Nº 22: Resolución por búsqueda preferente por profundidad Tabla Nº 5: Comparación entre las diferentes estrategias de búsqueda sin información Criterio
Tiempo Espacio ¿Es óptima? ¿Es completa?
2.4.2.
Pref. por amplitud
Costo uniforme
Pref. por profundidad
Limitada en profundidad
Profundización iterativa
Bidireccional
bd bd
bd bd
bm bm
bl bl
bd bd
bd/2 bd/2
Sí
Sí
No
No
Si
Si
Sí
Sí
No
Si, cuando l>=d
Sí
Sí
b es el factor de ramificación; d es la profundidad de la solución; m es la profundidad máxima del árbol de búsqueda; l es el límite de profundidad
Estrategias de Búsqueda Informada Se verá que el contar con información sobre un espacio de estados evita a los algoritmos emprender búsquedas a ciegas., permitiendo así encontrar soluciones con más eficiencia. Presentaremos los siguientes métodos:
2.4.2.1.
Búsqueda primero el mejor La búsqueda primero el mejor es un caso particular del algoritmo general de Búsqueda Árboles o Búsqueda de Grafos en el cual se selecciona un nodo para la expansión basada en una función de evaluación f(n). Esta función evaluación devuelve un número que sirve para representar lo deseable (o indeseable) que seria la expansión de un nodo. Se expande primero aquel nodo que tiene mejor evaluación. Se escoge el que parece ser el mejor pero puede no serlo. Hay una familia entera de algoritmos de Búsqueda Primer Mejor con funciones de evaluación diferentes. Una componente clave de estos algoritmos es una función heurística, denotada h(n): H(n) = coste estimado del camino mas barato desde el nodo n a un nodo objetivo. Las funciones heurísticas son la forma más común de transmitir el conocimiento adicional del problema al algoritmo de búsqueda.
Si en verdad fuese posible expandir desde un principio el mejor nodo, en realidad no se trataría de una búsqueda; sería encaminarse directamente a la meta. Lo que sucede es que se escoge el nodo que parece ser el mejor, según lo aconsejado por la función de evaluación. Puesto que su objetivo es encontrar soluciones de bajo costo, por lo general en estos algoritmos se utiliza alguna medida estimada del costo de la solución, y se hacen esfuerzos por reducir esta medida al mínimo. Para enfocar la búsqueda, en tal medida debe figurar algún tipo de cálculo del costo de ruta que va de un estado al estado más cercano a la meta. Dentro de este tipo de búsqueda se encuentran: Búsqueda avara. Búsqueda A*.
2.4.2.1.1. Búsqueda avara La búsqueda voraz primero el mejor trata de expandir el nodo mas cercano al objetivo, alegando que probablemente conduzca rápidamente a una solución. Así, evalúa los nodos utilizando solamente la función heurística f(n)=h(n). Este algoritmo consiste en reducir al mínimo el costo estimado para lograr una meta. El nodo que se considere más cercano al estado de meta es el que se expande primero. La búsqueda avara y la preferente por profundidad se asemejan por su indicación a utilizar una sola ruta hasta llegar a la meta, pero se atorarán cuando topen con un callejón sin salida. Sus deficiencias son las mismas que las de la búsqueda preferente por profundidad: No es óptima. Es incompleta, pues puede recorrer una ruta infinita y nunca regresar a probar otras posibilidades. Tiempo: O (b) (se deben recorrer todos los nodos). Espacio: O (b) (se deben almacenar todos los nodos). Tomemos el ejemplo del mapa de Rumania: Un agente se encuentra en una ciudad rumana llamada Oradea, el agente desea viajar hasta Bucarest para poder tomar un vuelo que lo conduzca hasta su destino final. El problema principal es que no conoce el país pero afortunadamente dispone de un mapa de carretera con las distancias estimadas (en línea recta) desde cada ciudad del país hasta Bucarest. Veamos la situación en el siguiente espacio de estado, donde cada nodo representa una ciudad rumana y cada arista representa una carretera entre ciudades vecinas.
Figura Nº 23: Resolución por búsqueda Avara Distancia en línea recta Vaslain 199, Zerind 374, Arad 366, Bucarest 0, Craiova 160, Dobreta 242, Eforie 161, Fagaras 178, Giorgia 77, Hirsova 151, Iasi 226, Lugoj 244, Mehadia 241, Neamt 234, Oradea 380, Pitesti 98,
Solución La solución produce una ruta que tiene un costo mínimo (obtiene una solución sin expandir nodos que no están en la ruta). La cantidad de kilómetros reales a recorrer por esta ruta (Oradea-Sibiu-Fagaras-Bucarest) es de 461 Km., sin embargo otra ruta puede producir un resultado mejor y no encontrarse debido a la heurística utilizada. En el libro de texto se analiza esa situación considerando la ciudad de Arad como punto de partida. Debido a esta situación la búsqueda avara no es óptima. El nombre de búsqueda avara viene dado por el hecho de que se trata de aprovechar al máximo la heurística sin tomar en cuenta otros factores, en realidad este método de búsqueda produce casi siempre buenos resultados aunque puede resultar no óptimo como el caso que nos ocupa. La búsqueda avara tiene sus problemas con relación a: Equivocar la ruta, por ejemplo si el estado origen es Iasi y la meta Fagaras, la estrategia conduce a Neamt, desde donde no se puede ir a ninguna parte y por eso se habrá generado un nodo innecesario. En este caso se puede repetir un ciclo infinito (si no se controla la existencia de estados repetidos) 2.4.2.1.2. Búsqueda A*: minimizar el costo estima total de la solución A la búsqueda mas ampliamente conocida de la búsqueda primero el mejor se la llama búsqueda A*. La búsqueda avara permite reducir al mínimo el costo de la meta, h(n), con lo que también se reduce en forma considerable el costo de la búsqueda. Sin embargo, este tipo de búsqueda no es óptimo ni tampoco completo. Por otra parte, la búsqueda por costo uniforme, reduce al mínimo el costo de la ruta (g(n)). Es óptima y completa, pero puede ser muy ineficiente. Sería bueno poder utilizar ambas estrategias para así combinar las ventajas que ofrecen. Afortunadamente si es posible hacerlo, al combinar las dos funciones de evaluación mediante una suma: f(n) = g(n) + h(n) Dado que con g(n) se calcula el costo de la ruta que va del nodo de partida al nodo n, y h(n) es el costo estimado de la ruta más barata que va de n a la meta, tenemos que: f(n) = costo estimado de la solución más barata, pasando por n. La optimalidad de A* es sencilla de analizar si se usa con la Búsqueda-Árboles. A* es óptima si h(n) es una heurística admisible, es decir, con tal de que la h(n) nunca sobrestime el coste de alcanzar el objetivo. Como g(n) es el coste exacto para alcanzar n, tenemos como consecuencia inmediata que la f(n) nunca sobrestima el coste verdadero de una solución a través de n. Ejemplo. El objetivo será de nuevo ir hasta Bucarest, pero en esta ocasión partiremos desde la ciudad de Arad. Veamos los árboles de búsqueda se generan.
Se debe observar que la función f es monótona o sea esta función nunca disminuye cuando profundizamos en el árbol de búsqueda, algo que debemos esperar si decimos que la heurística es aceptable.
2.4.2.2.
Búsqueda limitada por la capacidad de la memoria Cuando se implementan las búsquedas vistas hasta el momento, hay ciertos problemas muy difíciles de resolver y por lo tanto siempre hay que dar algo a cambio para resolverlos, y lo primero que se cede es la memoria disponible. Para poder conservar la memoria existen: La búsqueda A* por profundización iterativa La búsqueda A* acotada por memoria simplificada.
2.4.2.2.1. Búsqueda A* por profundización iterativa (A*PI): En este algoritmo, cada iteración es una búsqueda preferente por profundidad, la cual se modifica para utilizar un límite de costo f en vez de un límite de profundidad. En esta búsqueda el espacio requerido en memoria crece en forma lineal con respecto a la profundidad, mientras que la complejidad temporal depende de la cantidad de distintos valores que adopte la función heurística. Es óptima y completa.
2.4.2.2.2. Búsqueda A* acotada por memoria simplificada (A*SRM): Tiene las siguientes características:
2.4.2.3.
Hace uso de toda la memoria que puede disponer En la medida que se lo facilite la memoria, evitará los estados repetidos Es completa si la memoria disponible tiene capacidad suficiente para guardar la ruta de solución más cercana Es óptima si dispone de suficiente memoria para guardar la ruta de solución óptima más cercana. De lo contrario produce la mejor solución que sea posible obtener con la memoria disponible.
Búsqueda de mejoramiento iterativo La idea básica de los algoritmos de estos tipos de búsqueda consiste en empezar con una configuración completa y efectuar modificaciones para mejorar su calidad. Entre estas búsquedas se pueden encontrar: Búsqueda por ascenso de cima. Búsqueda con endurecimiento simulado.
2.4.2.3.1. Búsqueda por ascenso de cima: Esta búsqueda se trata de un bucle que constantemente se desplaza en la dirección de un valor ascendente. Como el algoritmo no mantiene un árbol de búsqueda, la estructura de datos del nodo sólo tiene que registrar el estado y su evaluación, denominado VALOR. Cuando el algoritmo llega a un punto mas allá del cual no se logra ningún avance, es obvio que debe empezarse de nuevo en otro punto.
2.4.2.3.2. Búsqueda por endurecimiento simulado: Esta búsqueda es muy similar a la búsqueda por ascenso a la cima, pero con la diferencia de que en vez de empezar otra vez al azar luego de quedarse atorado en un máximo local, sería conveniente descender unos cuantos pasos y así escapar del máximo local en cuestión.
CAPÍTULO IV: REPRESENTACIÓN, RAZONAMIENTO Y LÓGICA 2.1 CONCEPTO El objetivo de la representación del conocimiento es expresar éste en forma manejable por la computadora, de manera que se la pueda utilizar como un auxiliar para el buen desempeño de los agentes. Un lenguaje para la representación del conocimiento consta de dos aspectos: La sintaxis del lenguaje explica las posibles configuraciones mediante las cuales se forman las oraciones. La semántica determina los hechos del mundo a los que hacen alusión las oraciones. Mediante la semántica, cada oración expresa algo relacionado con el mundo.
Figura Nº 29: Conexión entre Oraciones y Hechos 2.2 INFERENCIA Con base en la sintaxis y la semántica se obtiene el mecanismo de inferencia que servirá al agente que emplee el lenguaje: Recuérdese que la semántica del lenguaje determina el hecho al que alude una determinada oración. Los hechos forman parte del mundo y debido a que el mundo no es abarcable por ningún humano o computadora, los mecanismos de razonamiento deben basarse en la representación de los hechos, no en los hechos mismos. La inferencia debe ser un proceso para construir nuevas configuraciones físicas (oraciones) a partir de otras anteriores. Un proceso adecuado deberá garantizar que las nuevas configuraciones representen hechos derivados de aquellos representados por configuraciones anteriores.
2.2.1.
Procedimiento de inferencia A un procedimiento de inferencia que genere sólo oraciones implicadas se le denomina procedimiento fidedigno o protector de la verdad. A un procedimiento de inferencia se le puede describir por las oraciones que pueden derivarse a partir de él. El testimonio de la manera de operar de un procedimiento de inferencia confiable se denomina demostración. Se considera que un procedimiento de inferencia es completo si es capaz de encontrar la demostración respectiva de toda oración implicada. Sin embargo, en muchas BC el conjunto de todas las consecuencias en infinito, y por lo tanto resulta imposible encontrar las demostraciones de todas las oraciones implicadas. Esto implica que la mayoría de los procedimientos de inferencia no son completos. Para contar con una inferencia segura, se debe lograr que los pasos de inferencia respeten la semántica de las oraciones sobre las que se aplican, es decir, que dada una cierta BC, mediante los pasos de inferencia se obtengan solamente nuevas oraciones que representen hechos derivados de los hechos representados por la BC. La teoría de la demostración especifica los pasos de razonamiento que son confiables.
2.2.2.
Tipos de inferencia Deductivas: Dado un conjunto de hechos, un proceso de inferencia deductivo sólo producirá conclusiones que se deriven lógicamente de esos hechos. No deductivas : Las hay de muchas clases. Implican aprendizaje o generalización a partir de ejemplos. Inductivas: Abductivas: Implican inferencia causa-efecto.
2.2.3.
Técnicas de inferencia
Procedural : Como por ejemplo un sistema que utilice los procedimientos aritméticos incorporados en el ordenador para evaluar expresiones aritméticas sin ninguna representación explícita de conocimiento sobre matemáticas. Declarativa: La BC se representa mediante un conjunto de axiomas y se realiza la inferencia utilizando algoritmos deductivos basados en la semántica de dichos axiomas. Muchos sistemas pueden combinar ambas técnicas.
2.3 CONSECUENCIA O IMPLICACIÓN Relación que guardan dos oraciones, y que refleja el hecho de que una es consecuencia o se deriva de la otra. Lo que deseamos es obtener generar nuevas oraciones que necesariamente sean verdaderas, suponiendo que las previas también lo sean.
2.4 NUEVAS ORACIONES Mediante un procedimiento de inferencia se pueden obtener dos cosas: partiendo de una base de conocimiento BC, tal procedimiento permite generar nuevas oraciones X que dan a entender que son implicaciones de BC. O bien, dados una BC y otra oración X, informará si X es consecuencia de la BC o si no lo es.
2.5 REPRESENTACIÓN En un buen lenguaje para representar el conocimiento se combinan las ventajas de los lenguajes naturales y la de los lenguajes formales. Debe ser lo suficientemente expresivo y conciso para que nos permita expresar de manera sucinta todo lo que hay que decir. Debe ser inequívoco (no ambiguo) e independiente del contexto para su interpretación, de manera que lo que se diga hoy siga siendo interpretable el día de mañana. Debe ser eficiente en el sentido de que debe existir un procedimiento de inferencia que permita obtener nuevas inferencias a partir de oraciones en nuestro idioma. Es importante tener en cuenta que independientemente del lenguaje que se emplee se deberá utilizar la notación lógica, por lo que es imprescindible familiarizarse con ella. Semántica: ninguna oración tiene significado por sí misma, quien la escriba tiene que proporcionar su respectiva interpretación; debe aclarar a qué hecho corresponde. Todos los lenguajes de representación exigen una relación sistemática entre oraciones y hechos. Los lenguajes de los que nos ocuparemos son todos compositivos o de composición: el significado de una oración es función del significado de sus partes. Una vez que mediante la semántica se interpreta de una manera determinada una oración, ésta afirma que el mundo es de esta forma y no de otra. La validez de la oración depende tanto su interpretación como del estado actual del mundo.
2.6 RAZONAMIENTO Es el proceso de construir nuevas representaciones, bajo la forma de oraciones, a partir de representaciones anteriores. Son utilizados para referirse a cualquier proceso mediante el que se obtienen conclusiones. La inferencia lógica o deducción es un proceso mediante el que se implanta la relación de implicación que existe entre oraciones.
Validez: Se dice que una oración es válida o necesariamente verdadera si y sólo si es verdadera en todas las posibles interpretaciones de todos los mundos posibles, es decir, con independencia de lo que supuestamente signifique y de lo que esté sucediendo en el universo descrito. También se llaman oraciones analíticas o tautologías.
Satisfacción: Se considera que una oración es satisfactible si y sólo si existe una interpretación en algún mundo para la que es válida. Lo contrario es el caso de las oraciones insatisfactibles.
2.7 LÓGICA Una lógica consta de: Un sistema formal para describir lo que está sucediendo y que consta a su vez de sintaxis y semántica. La teoría de la demostración, un conjunto de reglas para deducir las implicaciones de un conjunto de oraciones.
CAPÍTULO V: LÓGICA PROPOSITIVA 3.1 LÓGICA PROPOSITIVA O BOOLEANA. En la lógica propositiva los símbolos representan proposiciones completas (hechos). Todas las oraciones se forman combinando los signos anteriores mediante las siguientes reglas: Las constantes lógicas Verdadero y Falso constituyen oraciones en si mismas. Un símbolo propositivo tal como P o Q es una oración en si mismo. Encerrar entre paréntesis una oración produce también una oración, por ejemplo (P^Q). Una oración se forma combinando oraciones más sencillas con uno de los cinco conectores lógicos: Tabla Nº 6: Conectores Lógicos ^ CONJUNCIÓN v DISYUNCIÓN => IMPLICACIÓN <=> EQUIVALENCIA ¬ NEGACIÓN
3.2 SEMÁNTICA. La semántica de la lógica propositiva también es bastante directa. Se define especificando la interpretación de los signos de proposición y de las constantes y especificando el significado de los conectores lógicos. El significado de una oración compleja se obtiene del significado de cada una de sus partes, y su validez se puede determinar mediante tablas de verdad.
3.3 SÍMBOLOS DE LA LÓGICA PROPOSITIVA 3.3.1. 3.3.2. 3.3.3.
3.3.4.
Constantes lógicas: Verdadero y Falso. Símbolos de proposiciones: P, Q, etc. Representan proposiciones (oraciones con un valor de verdad) sencillas. Conectivos lógicos : Negación: Conjunción (Y, And): Disyunción (O, Or) Implicación: Equivalencia: Símbolos de agrupamiento: Paréntesis: (,) Se usan las reglas siguientes para formar las proposiciones: 1. Las constantes lógicas verdadero y falso constituyen por sí mismas proposiciones. 2. Un símbolo propositivo como P o Q es en sí una proposición.
3. Una proposición se puede formar combinando proposiciones mas sencillas unidas por conectivos lógicos. ), es una proposición. 4. Una proposición encerrada entre paréntesis, tal como (P Q La semántica de las proposiciones lógicas en las que intervienen los conectores lógicos se define mediante sus tablas de verdad en las cuales se le da una interpretación a cada una de las combinaciones en dependencia de los valores de verdad de cada una de las partes que la integran:
Tabla Nº 7: Tablas de verdad para los conectivos lógicos P V V F F
Q V F V F
P P Q P Q P Q P Q F V V V V F F V F F V F V V F V F F V V
3.4 REGLAS DE INFERENCIA EN LA LÓGICA PROPOSITIVA. El procedimiento que mediante tablas de verdad permite cerciorarse de la confiabilidad de una inferencia podría a clases enteras de inferencias. Existen ciertos patrones de inferencias que se presentan una y otra vez, lo que permite establecer de una vez por toda su confiabilidad. De esta manera se aprehende el patrón respectivo en algo que se conoce como regla de inferencia. Una vez que se establece unas reglas de inferencia se puede simplemente emplear, sin necesidad de construir nuevamente las tablas de verdad, que en muchos casos resulta tedioso. Observe que la proposición se puede presentar en forma de implicación o sea con una premisa y una conclusión de forma que la máquina puede concluir si a partir de una premisa dada se puede afirmar la conclusión que se presenta, ejemplo:
P V V F F
R V F V F
R F V F V
Probar ((P R) R) P ((P R) (P R) R) ((P R) R) P V F V V V V V F V F F V
En este caso se dice que la expresión ((P R)R)P es verdadera para todas sus interpretaciones lo que se denomina una tautología por lo que se concluye que la proposición compuesta es verdadera. El método de usar las tablas de verdad es muy tedioso y, aunque se puede usar para pequeños problemas, no es una forma adecuada para otros. Existen un conjunto de reglas de inferencia en la lógica propositiva, algunas de ellas son las siguientes:
Modus ponens o implicación-Eliminación De: P Q y P Se tiene Q Y eliminación De: P1P2...Pn
Se tiene cualquier P i
3.5
Doble negación De: P Se tiene P Resolución unitaria De: PQ y P Se tiene Q Resolución De: PQ y QR Se tiene PR
LÓGICA DE PRIMER ORDEN 3.5.1.
Concepto: Esta lógica tiene un alcance ontológico más amplio que la lógica propositiva. La lógica de primer orden se preocupa por la representación de los mundos en términos de objetos y predicados sobre objetos (es decir, propiedades de los objetos o relaciones entre los objetos), así como del uso de conectivos y cuantificadores, mediante los cuales se pueden escribir oraciones sobre todo lo que pasa en el universo, a un mismo tiempo.
3.5.2. Sintaxis y semántica. 3.5.2.1. Componentes de la lógica de primer orden Términos: representan objetos Signos que representan constantes, variables y signos de función sirven para construir términos. Los cuantificadores y los signos de predicados sirven para construir oraciones 3.5.2.2.
Explicación de estos componentes: Signos de constantes: (Pedro, A, B,...).En la interpretación respectiva deberá especificarse a qué objeto del mundo se está haciendo referencia mediante el signo. Signos de predicado: (Redondo, Hermano,...) Una interpretación específica que mediante un signo de predicado se hace referencia a una relación particular. Una tupla es un conjunto de objetos clasificados de una manera determinada y en orden fijo. Signos de función: (Coseno, Padre De,...) Algunas relaciones son funcionales, es decir un determinado objeto está relacionado justamente con otro objeto mediante la relación.
3.5.2.3.
Término. Un término es una expresión lógica que se refiere a un objeto. Cuando un término no tiene variable se lo denomina término de base .
3.5.2.4.
Oraciones atómicas
Una oración atómica es una oración mediante la cual se afirman hechos. Está formada por un signo de predicado y por una lista de términos entre paréntesis. Se dice que una oración atómica es verdadera si la relación a la que alude el signo de predicado es válida para los objetos a los que aluden los argumentos. Ejemplo: Hermano (Ricardo, Juan) afirma que Ricardo es hermano de Juan. Es válido que una oración atómica tenga términos complejos como argumentos: Casado (Padre De (Ricardo), Madre De (Juan)) afirma que el padre de Ricardo está casado con la madre de Juan (dentro de una adecuada interpretación).
3.5.2.5.
Oraciones complejas. Mediante los conectores lógicos se pueden construir oraciones más complicadas. La semántica de las oraciones formadas utilizando los conectores lógicos es idéntica a la del caso de las proposiciones. Ejemplo: Mayor (Juan, 50)\/ Menor (Juan, 20) Hermano (Ricardo, Juan)/\ Hermano (Juan, Ricardo) Mayor (Juan, 50) => ¬ Menor (Juan, 20) ¬ Hermano (Roberto, Ricardo)
3.5.2.6.
Cuantificadores. Los cuantificadores permiten expresar propiedades de grupos completos de objetos. La lógica de primer orden consta de dos cuantificadores estándar, denominados: Universales: Equivale a la conjunción de todas las oraciones que se obtienen al sustituir el nombre de un objeto por la variable que aparece en la expresión. Ejemplo:
es el cuantificador universal “para todo”
x Gato (x) => Mamífero (x) equivale a: Gato (Silvestre) => Mamífero (Silvestre) ^ Gato (Tom) => Mamífero (Tom) ^ Gato (Felix) => Mamífero (Felix) ^ .... Existenciales: Sirve para realizar afirmaciones acerca de algún objeto en el universo sin tener que nombrarlo. Equivale a la disyunción de todas las oraciones obtenidas al sustituir el nombre de un objeto por la variable x. Esta oración es verdadera solo cuando una de las disyunciones es verdaderas . Ejemplo:
Es el cuantificador existencial “existe”
x Gato (x) => Mamífero (x) Gato (Silvestre) => Mamífero (Silvestre) v Gato (Tom) => Mamífero (Tom) v Gato (Felix) => Mamífero (Felix) v ......
El orden de los cuantificadores es muy importante. Surge una dificultad que no es grave cuando se utilizan dos cuantificadores que tienen el mismo nombre de variable. La regla es que la variable pertenece al más interno de los cuantificadores que en ella se mencionan. El término fórmula bien configurada se emplea para calificar oraciones en las que todas sus variables se han introducido mediante un cuantificador.
3.5.2.7.
Igualdad Para formular aseveraciones en la que dos términos se refiere a un mismo objeto se utiliza el símbolo de igualdad. Ejemplo: Padre (Juan)=Enrique
Está afirmando que el objeto al que hace referencia Padre (Juan) y al objeto al que alude Enrique son lo mismo.
3.5.3.
Extensiones y variaciones en la notación. Mediante la lógica de orden superior es posible cuantificar relaciones y funciones al igual que objetos. El cuantificador de unicidad sirve para afirmar la existencia de un objeto específico que satisface determinado predicado.
3.5.4.
Uso de una lógica de primer orden. Un dominio es un fragmento del mundo acerca del que deseamos expresar un determinado conocimiento. A las oraciones añadidas al utilizar DECIR se les denomina aseveraciones, y a las preguntas formuladas mediante PREGUNTAR se les conoce como consultas u objetivos.
3.5.5.
Como representar los cambios en el mundo. La manera más fácil de manejar el cambio es simplemente cambiar la base de conocimiento; borrar la oración que afirma y sustituirla por otra. Si lo único que se desea es que la base de conocimiento responda preguntas relaciones con la última situación, no hay problema. Pero quiere decir que se pierde todo el conocimiento obtenido acerca del pasado y prohíbe la especulación en torno a diversos futuros posibles. Otra posibilidad es la exploración por parte del agente, de estados del pasado y posibles estados del futuro, en donde cada uno de ellos se representa mediante una base de conocimiento diferente, pero muchas veces es necesario representar diversas situaciones y acciones en la misma base de conocimientos.
3.5.6.
Cálculo de situaciones. El cálculo de situaciones es el nombre dado para una manera particular de describirle cambio en la lógica de primer orden. Concibe al mundo como una secuencia de situaciones, cada una de las cuales es como una “instantánea” del estado del mundo. Para manejar una relación o propiedad
que cambia con el tiempo se proporciona al predicado correspondiente un argumento de situación adicional. Cuando una relación o una propiedad no están sujetas al cambio, no es necesario el argumento correspondiente a la situación adicional. El cambio del mundo de una situación a otra se representa mediante la función Resultado (acción, situación) Las acciones se describen al especificar sus correspondientes efectos. Especificamos las propiedades de la situación que resulta de efectuar una acción determinada .
3.5.7.
Como deducir Propiedades Ocultas del Mundo A los axiomas que se utilizan para capturar toda la información necesaria a para hacer deducciones se las denomina reglas sincrónicas ya que relacionan las propiedades de un estado del mundo con otras propiedades del mismo estado del mundo. Existen dos tipos principales de reglas sincrónicas: Reglas casuales: reflejan la dirección de causalidad asumida en el mundo: cierta propiedad oculta del mundo provoca la generación de ciertas percepciones. Los sistemas que razonan apoyados en reglas causales se denominan sistema de razonamiento basado en modelos. Reglas de diagnóstico: infieren la presencia de propiedades ocultas directamente desde la información derivada de las percepciones. Si los axiomas describen de manera correcta y total la manera como funciona el mundo y cómo se producen las percepciones, el procedimiento de inferencia obtendrá correctamente la descripción más sólida del estado del mundo a partir de las percepciones disponibles.