viernes, 19 de febrero de 2010

Ciencia y tecnología 2010

Uno de los tópicos en el debate actual sobre la ciencia y la tecnología consiste en determinar que tanto han servido para configurar a las sociedades modernas y trasformar a las tradicionales. Los progresos científicos como también los tecnológicos han modificado radicalmente la relación del hombre con la naturaleza y la interacción entre los seres vivos. La ciencia y la tecnología no se pueden estudiar fuera del contexto social en el que se manifiestan. Entre la ciencia y la tecnología existe un claro estado de simbiosis; en otras palabras, conviven en beneficio mutuo. Aunque el efecto de ambas actuando conjuntamente es infinitamente superior a la suma de los efectos de cada una actuando por separado. Sin embargo, ante estos progresos que no podían ni siquiera imaginarse en el pasado, empiezan a surgir preguntas cada vez más serias sobre el lugar que corresponde a la ciencia y la tecnología en la sociedad; y además con una constancia de que no se pueden ignorar tales problemas.

El gran escritor Carl Sagan, en un artículo publicado meses antes de su muerte señalaba que “el siglo veinte será recordado por tres grandes innovaciones: unos medios de salvar, prolongar y mejorar la vida sin precedentes; unos medios, también sin precedentes, para destruir esas vidas que se trata de salvaguardar, que incluyen, por primera vez el riesgo de desaparición de toda la civilización mundial; y un conocimiento, igualmente sin precedentes, del ser humano como tal y del universo que lo rodea. Estos tres formidables desarrollos han sido posibles por la ciencia y la tecnología, una espada con dos filos. Con diez años recorridos en el siglo veintiuno, la tecnología es parte del sistema de vida de todas las sociedades, especialmente aquella que se desprende de la ciencia de la computación. La ciencia y la tecnología se están sumando a la voluntad social y política de las sociedades de controlar sus propios destinos, sus medios y el poder de hacerlo. La ciencia y la tecnología están proporcionando a la sociedad una amplia variedad de opciones en cuanto a lo que podría ser el destino de la humanidad.

Para ingresar en contexto se observa que los avances en ciencia y tecnología no se detienen y caminan raudos en el tiempo, llegando en muchas ocasiones a sorprender a personas bastante avezadas; a lo largo del año 2009 se ha visto increíbles avances como los chips con moléculas de ADN, el telescopio óptico infrarrojo, el avión solar, el mayor láser del mundo, bluetooth 3.0, entre otros y, para el incremento en el ego del profesional en ciencias de la computación, un buen porcentaje en el avance de la ciencia cuenta con la computadora y la ciencia que la sustenta como elementos fundamentales, además, como es previsible en el mundo científico, ya se tiene elaborado una lista con lo mejor que se está desarrollando para el año 2010.

Para involucrar al lector interesado en los avances de la ciencia y la tecnología para el año que se avecina es necesario hacer una remembranza, a modo de antecedente de los principales avances científicos de este año, de los trescientos sesenta y cinco días que se fueron de una manera veloz, similar al suspiro descuidado del programador computacional cuando observa el funcionamiento de un producto software de su creación. Este año que aún languidece, dejo como resultados relevantes los que a continuación se mencionan: (1) Chips con moléculas de ácido desoxirribonucleico. Científicos de la compañía IBM y el Instituto Tecnológico de California han anunciado el descubrimiento de un nuevo sistema para fabricar chips computacionales más pequeños usando moléculas de ácido desoxirribonucleico, en el que se podrán disponer estructuras de ácido desoxirribonucleico en superficies compatibles con los actuales equipos de producción de semiconductores. Este avance tecnológico permitirá producir microprocesadores más pequeños y potentes con costos de producción más bajos. (2) Telescopio óptico infrarrojo. El Gran Telescopio Canarias (GTC), presentado como el mayor telescopio óptico-infrarrojo del mundo, fue inaugurado oficialmente, a fines del 2009, por el rey Juan Carlos en la isla de La Palma, en el archipiélago canario. Este telescopio ultramoderno, situado en el observatorio “Roque de los Muchachos”, a 2400 metros de altura, dispone de un espejo circular de 10.4 metros, que le permitirá observar lejanas galaxias o buscar planetas desconocidos en el universo. (3) El mayor laser del mundo. Se oficializó la creación de la “Facilidad de Ignición Nacional”, un rayo láser capaz de generar sesenta veces más energía que cualquier otro láser, y ha sido considerado como uno de los avances tecnológicos más impresionantes en lo que va del año 2009. El láser fue desarrollado por el “Laboratorio Nacional Lawrence Livermore” de California y cuenta con una gigantesca infraestructura de 192 láseres independientes, los cuales se distribuyen sobre una enorme superficie del tamaño de tres campos de fútbol. Los rayos láser son parte fundamental de la investigación científica en numerosos campos y una de las herramientas clave para alcanzar los logros de la humanidad del siglo XXI. (4) Bluetooth 3.0. La empresa Bluetooth es el grupo que está detrás del desarrollo del estándar Bluetooth, liderado por Ericsson, Entre sus novedades más destacadas se encuentran la compatibilidad con WiFi, su mayor velocidad, siendo hasta 18 veces más rápido, y su alcance mejorado. Bluetooth, el protocolo de intercambio de datos inalámbricos, llega a su tercera generación con especificaciones que podrían significar un gran avance a las comunicaciones entre dispositivos móviles. (5) Robot que investiga y realiza descubrimientos. En la Universidad de Aberystwyth, en Gales-Reino Unido, un equipo de científicos ha fabricado un robot que, según afirman sus miembros, es la primera máquina capaz de hacer descubrimientos científicos. El robot se llama Adán y es un sistema informático diseñado por científicos del Consejo de Investigación Biotecnológica y Biológica del Reino Unido. Adán es capaz, sin ninguna ayuda humana, de formular hipótesis, crear y conducir experimentos, interpretar los resultados y realizar nuevos hallazgos científicos. La clave reside en su inteligencia artificial, que le permite adquirir conocimientos por sí mismo. Para demostrarlo, Adán trabajó en soledad en el análisis de una levadura que los científicos utilizan para modelar formas de vida más complejas y el resultado fue, que tanto los investigadores como el robot, llegaron a las mismas conclusiones, trabajando paralelamente.

Una palabra quizá podría utilizarse como calificativo a los avances del año 2009, descritos en el párrafo precedente: “Sorprendente”. Para el año que se acerca, los miembros de la “Sociedad Americana de Química” han seleccionando los 10 avances más prometedores para el 2010 de entre unos 34000 informes y 18000 documentos técnicos revisados y dados a conocer a lo largo del año 2009. El top 10 en avances científicos para el año 2010 es el siguiente: (1) Vacuna por inhalación, sin agujas, contra el sarampión. Esta vacuna pasará a ensayo clínico el próximo año en la India, donde el sarampión afecta a millones de lactantes y niños. Los especialistas creen que esta vacuna es perfecta para su uso en países en desarrollo. (2) Hogar con energía solar personalizada. Los nuevos descubrimientos científicos apuestan por una energía solar personalizada, a la medida de cada consumidor. Este método permitirá convertir a los consumidores en productores e incluso recargar automóviles en el garaje de casa. Este representa una gran ventaja para el medio ambiente y que implica menores gastos. (3) Esponja de aerogel para limpiar las mareas negras. Científicos de Arizona y Nueva Jersey han diseñado un aerogel, un sólido súper ligero al que también llaman “humo congelado”, que puede servir como esponja para capturar el petróleo vertido por accidente o en catástrofes al medio ambiente. El aerogel absorbe hasta siete veces su peso y elimina el petróleo de forma mucho más eficaz que los materiales convencionales. (4) Nanogenerador para recargar el iPod y el móvil con un gesto de la mano. Este podría ser el fin de los cargadores actuales. Científicos de Georgia trabajan en una técnica que convierte la energía mecánica de los movimientos del cuerpo o incluso del flujo de la sangre en energía eléctrica que puede alimentar una amplia gama de dispositivos electrónicos sin necesidad de baterías. (5) Pintura que mata los microbios. Investigadores de Dakota del Sur trabajan en el desarrollo de una pintura anti-microbiana. No sólo mata bacterias causantes de enfermedades, sino que actúa contra el moho, los hongos y los virus. Según el estudio, se trata de la pintura más poderosa hasta la fecha. Ideal para hospitales. (6) Vacuna producida con planta de tabaco. Esta nueva vacuna, puede ser utilizada contra el “virus de los cruceros”, causante de diarreas y vómitos. (7) Píldora mensual anti-pulgas. Con una píldora al mes, las mascotas podrán estar libres de pulgas y garrapatas. La pastilla, desarrollada por científicos de Nueva Jersey, podría ser cien por ciento eficaz y sin señales de efectos tóxicos para los animales. (8) Molécula que mide el calentamiento global. Una nueva técnica molecular podrá predecir qué materiales, que van desde productos químicos utilizados en alfombras a productos electrónicos, contribuyen al calentamiento global. (9) Combustible de cáscaras de camarón. Científicos chinos trabajan en un catalizador fabricado a partir de cáscaras de camarón que podría transformar la producción de biodiesel en un proceso mucho más rápido, barato y beneficioso para el medio ambiente. (10) Nariz electrónica para detectar la enfermedad renal. Expertos israelíes han creado una nariz electrónica capaz de identificar en el aliento veintisiete sustancias clave que revelan que el paciente sufre una enfermedad del riñón.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 28 de 2009

viernes, 12 de febrero de 2010

Sistema difuso dinámico

La teoría de conjuntos difusos fue concebida teóricamente a mediados de la década de los años 1960 por el profesor Lotfi A. Zadeh, que a la sazón trabajaba en la Universidad de Berkeley, California. La primera publicación aparecida sobre este tema data precisamente de 1965, en la revista “Information and Control”. La motivación principal que indujo al Prof. Zadeh a proponer esta teoría fue la necesidad de contar con una herramienta capaz de tratar analíticamente cierto tipo de incertidumbre que, por sus características, no puede manejarse correctamente en el marco de la teoría de probabilidades. A esta categoría pertenecen por ejemplo todas aquellas situaciones en las que los distintos parámetros se describen utilizando expresiones lingüísticas. En estos casos, todo el arsenal de técnicas matemáticas tradicionales poco puede hacer para razonar en base a estas expresiones, cosa que contrasta fuertemente con la facilidad con que los seres humanos las utilizan para evaluaciones y toma de decisiones complejas, en ambientes a menudo hostiles. En resumen, la teoría de conjuntos difusos, tal como fue concebida y posteriormente desarrollada, pretende ser el entorno adecuado para realizar razonamientos exitosos en condiciones de incertidumbre parecidas a las que afrontan los seres humanos.

Un sistema dinámico tradicional es un sistema complejo que presenta un cambio o evolución de su estado en un tiempo, el comportamiento en dicho estado se puede caracterizar determinando los límites del sistema, los elementos y sus relaciones; de esta forma se puede elaborar modelos que buscan representar la estructura del mismo sistema. Al definir los límites del sistema se hace, en primer lugar, una selección de aquellos componentes que contribuyan a generar los modos de comportamiento, y luego se determina el espacio donde se llevará a cabo el estudio, omitiendo toda clase de aspectos irrelevantes. En cuanto a la elaboración de los modelos, los elementos y sus relaciones, se debe tener en cuenta lo siguiente: (1) Un sistema está formado por un conjunto de elementos en interacción. (2) El comportamiento del sistema se puede mostrar a través de diagramas causales. (3) Hay varios tipos de variables, por una parte las variables exógenas, que son aquellas que afectan al sistema sin que éste las provoque y, por otra, las variables endógenas, aquellas que afectan al sistema pero sí éste las provoca.

En el ámbito de la ingeniería, el núcleo de cualquier solución difusa actual es un sistema lógico difuso, encargado de obtener las salidas a partir de las entradas en un proceso de tres etapas: codificación difusa, inferencia y decodificación difusa. Hasta la fecha, la totalidad de sistemas difusos efectúan sus razonamientos basándose solamente en los valores actuales de las entradas. Ello ha dado como resultado que los sistemas de inferencia difusa sean, desde el punto de vista matemático, sistemas no lineales algebraicos. Este hecho contrasta fuertemente con el entorno en que dichos sistemas suelen emplearse. En efecto, la mayoría de aplicaciones se construyen y utilizan en entornos dinámicos, los cuales son capaces de presentar comportamientos mucho más complejos que los sistemas estáticos. Cabe entonces preguntarse si el uso de sistemas difusos dinámicos, es decir, aquellos en que sus salidas dependan no sólo de los valores presentes de las entradas sino también de los pasados, aportaría mejoras respecto a las soluciones difusas actuales.

Los sistemas difusos dinámicos fueron propuestos originalmente por Chang y Zadeh en el año 1972, con el objetivo inicial de construir con ellos una teoría de control difuso. La formulación utilizada se basaba en la codificación difusa de las ecuaciones de estado de los sistemas dinámicos tradicionales discretos, permitiendo que los valores de la entrada, el estado y la salida pudiesen ser difusos. Al igual que en un sistema dinámico tradicional el nuevo estado se expresa como una función del antiguo. Esta formulación daba lugar a sistemas dinámicos no lineales, cuyo análisis y diseño planteaban numerosos problemas. La principal cuestión a resolver era el desarrollo de métodos no heurísticos que fuesen capaces de predecir la dinámica del sistema controlado o bien aspectos importantes de la misma, como la estabilidad, controlabilidad o la posible aparición de ciclos límite.

Basándose en el modelo de Chang y Zadeh, el investigador Tong estudia posteriormente el comportamiento asintótico de los sistemas de control difusos y el problema del control, es decir, si mediante el uso de un sistema difuso adecuado se puede obtener la relación entrada-salida deseable para un sistema de control. Su análisis muestra que bajo ciertas condiciones se puede resolver la versión difusa del clásico problema de la retroacción de las variables de estado. La solución pasa por resolver una ecuación relacional difusa, problema cuya utilidad ya había sido destacada anteriormente por Elie Sánchez. Cumani muestra más tarde refinamientos al método de Tong reformulando la noción de sistema difuso desde un punto de vista de la teoría de las posibilidades.

El problema de la estabilidad de los sistemas difusos dinámicos es tratado por varios autores, usando puntos de vista distintos. Así, Kickert y Mamdani, en el año 1978, hacen uso de la función descriptiva para evaluar la estabilidad. Braae y Rutherford, el año 1979, proponen el uso de las trayectorias en un plano de fase lingüístico para analizar y mejorar la estabilidad intercambiando las reglas de control. De Glas estudia el mismo problema aplicando una generalización del teorema de Lyapunov. Kiszka y sus colaboradores, ya en el año 1985, partiendo de la idea intuitiva de que un sistema dinámico es estable si su energía total almacenada decrece de forma monótona hasta un cierto equilibrio, definen los conceptos de energía de un conjunto difuso y energía de una relación difusa, construyendo a partir de ellos su método para determinar la estabilidad. A todos estos métodos, Chen y Tsao el año 1989, objetan que el uso de la composición max-min, que es no lineal, no permite obtener el comportamiento del sistema a largo plazo. Según ellos, cuando un sistema dinámico se describe de forma recursiva, como sucede en la representación de estado, la acumulación de composiciones max-min hace virtualmente imposible la observación de la dinámica del sistema porque deforma excesivamente la distribución inicial de funciones de pertenencia. En su trabajo proponen un método totalmente distinto para describir el comportamiento dinámico de los sistemas difusos. El método utilizado se basa en la correspondencia celda a celda propuesto en el año 1980 por el investigador Hsu, y consiste básicamente en discretizar el espacio de fase dividiéndolo reticularmente en celdas contiguas, y asignar a cada punto de una celda la dinámica correspondiente al punto central. Así se dividen las celdas en tres categorías: celdas pertenecientes a movimientos periódicos, celdas pertenecientes al dominio de atracción de un movimiento periódico y celdas inestables. De esta forma queda caracterizada de forma somera la evolución de la dinámica partiendo de un estado determinado.

En otro orden de cosas, Patrick Grim en el año 1993, muestra que los sistemas difusos retroalimentados pueden presentar fenómenos propios de la dinámica no lineal, tal como sucede con el caos. Para ello, calcula el grado de verdad de expresiones paradójicas desde un punto de vista clásico, como: “Esta afirmación es falsa”. Si bien Grim no trabaja explícitamente con sistemas difusos dinámicos en el sentido de Chang y Zadeh, la dinámica aparece de forma implícita debido al proceso de discretización y retroalimentación.

Sin embargo, a pesar del indudable valor teórico de todas estas aportaciones, ninguna de ellas ha propiciado la aparición de aplicaciones fundamentadas en este tipo de sistemas difusos dinámicos. En opinión de los investigadores del área, ello se debe a los siguientes motivos: (1) La relación entrada-salida de estos sistemas se describe con base en una relación difusa, y no con base en un conjunto de reglas “si-entonces”. Si bien se muestra que estas dos formulaciones son equivalentes, lo cierto es que puede ser difícil, sino imposible, establecer el conjunto de reglas que permitan encontrar el nuevo estado a partir del antiguo, dado que en la mayoría de ocasiones la información que se tiene sobre el proceso es incompleta. A lo sumo se llega a expresar de forma lingüística la relación entre entrada y salida, y no se dispone de elementos para determinar parámetros esenciales del sistema, como por ejemplo el número de estados que debe poseer. (2) Aunque se llegaran a determinar completamente las ecuaciones de estado difuso que describen al sistema, cada nuevo estado debe determinarse recursivamente en función de los anteriores, dado que no ha sido posible determinar una solución analítica del mismo en forma de expresión cerrada. Ello conlleva a que las únicas implementaciones posibles del método son forzosamente discretas.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 21 de 2009

viernes, 5 de febrero de 2010

Agentes distribuidos

Con el desarrollo que ha alcanzado Internet a nivel mundial, se han observado tres problemas principales que han generado preocupación para toda la comunidad de la red, y para los desarrolladores de aplicaciones, que son: la cantidad de información disponible en diferentes portales Web por todo el mundo, el tráfico de datos por la red y la poca experiencia computacional de muchos usuarios. Una posible solución para tales problemas consiste en el uso de agentes. Estos pueden desplazarse para la aplicación Web donde los datos se encuentran almacenados para seleccionar la información que el usuario requiere. Con esto, la cantidad total de datos de las diferentes fuentes no es transferida, lo que se refleja en un ahorro de ancho de banda, tiempo y dinero. Los agentes también colaboran con los usuarios que tienen poca experiencia computacional, actúan como interfaces “expertas” con el usuario para detectar y resolver problemas, así como aprender las preferencias y hábitos cotidianos del usuario, con el propósito de automatizarlas.

En la última década ha cobrado fuerza la hipótesis de que si los programas que componen los sistemas computacionales distribuidos fueran inteligentes, si pudiesen reorganizar sus funciones para corregir o tolerar los fallos y si su coordinación pudiese estructurarse en términos intuitivos, el diseño y el mantenimiento de dichos sistemas sería más fácil de elaborar, más adaptable y más fiable. En la construcción de estos programas se está aplicando una tecnología íntimamente relacionada con la inteligencia artificial. Se trata de los agentes que, de momento, se entenderán como programas autónomos e inteligentes. Bajo el punto de vista de esta tecnología, los sistemas distribuidos pasan a ser “sistemas multiagente”. Los sistemas multiagente se desarrollan sobre middleware, que es un tipo especial de software cuyo cometido es unir o mediar entre varios programas aislados y proporcionar un nuevo nivel de abstracción más intuitivo.

El término “agente” describe una abstracción del software, una idea, o un concepto, similar a la programación orientada a objetos términos tales como métodos, funciones, y objetos. El concepto de un agente proporciona una manera conveniente y de gran alcance de describir una entidad compleja del software que sea capaz de actuar con cierto grado de autonomía para lograr tareas a nombre de su usuario. Pero de manera semejante a los objetos, en términos de los cuales se definen métodos y cualidades, un agente se define en términos de su comportamiento. Puesto que los agentes están bien adaptados incluir sus recursos requeridos en su descripción, pueden ser diseñados para estar muy débilmente acoplados y llega a ser fácil para hacerlos ejecutar en procesadores distribuidos. Así se convierten agentes distribuidos y se aplican las consideraciones del cálculo distribuido. El código del agente es particularmente fácil de poner en ejecución en una manera distribuida y suele escalar bastante bien.

Dentro del paradigma de agentes, uno de los conceptos más atrayentes es la resolución de problemas mediante la utilización de sistemas multiagente. La mayor complejidad en los sistemas multiagente se encuentra centrada en la resolución de la comunicación y la coordinación de los agentes que componen el sistema. Existe una gran cantidad de ventajas para la elección de una arquitectura multiagente, como posibles motivos se tienen: (1) La facilidad de diseño o implementación. (2) La información y los sistemas se encuentran distribuidos y no pueden ser accedidos de forma centralizada. La complejidad de los sistemas participantes requiere un enfoque distribuido, por algunas de las siguientes razones: (1) Los sistemas se encuentran geográficamente distribuidos. (2) Los sistemas poseen muchos componentes. (3) Los sistemas son fuertemente heterogéneos. (4) Existe la necesidad de soportar un contenido masivo, tanto en cantidad de conceptos, como en la información almacenada acerca de estos. (5) El dominio de la aplicación que debe ser cubierto por el sistema puede ser bastante amplio. Dado que el sistema se compone de más de un agente, es sumamente necesario establecer un sistema de comunicación entre los mismos. Esta comunicación permite además la cooperación entre todos los agentes para lograr los objetivos globales del sistema, más allá de que cada agente posea sus propios objetivos individuales, los cuales pueden ser conocidos por los demás agentes del sistema o no.

El diseño de sistemas multiagente, generalmente, se aborda pensando en los agentes como entes con motivación. En lugar de modelar un sistema con componentes que ejecutan métodos, el desarrollador tiene que pensar en los objetivos que los componentes deben alcanzar y en las tareas necesarias para que lo consigan. Al desarrollar los componentes así, se espera que el proceso sea más intuitivo ya que esta forma de modelar y de razonar se halla más cerca del pensamiento humano que los paradigmas de programación tradicionales. La construcción de sistemas multiagente integra tecnologías de distintas áreas del conocimiento: técnicas de ingeniería del software para estructurar el proceso de desarrollo; técnicas de inteligencia artificial para dotar a los programas de capacidad para tratar situaciones imprevistas y tomar decisiones, y programación concurrente y distribuida para tratar la coordinación de tareas ejecutadas en diferentes máquinas bajo diferentes políticas de planificación.

Existen plataformas de desarrollo que dan soluciones parciales al modelado del comportamiento y a la coordinación de agentes. El rango de estas soluciones va desde proporcionar servicios básicos, tales como la gestión de agentes, bibliotecas de algoritmos, localización de agentes o movilidad, como sucede con JADE o ABLE, hasta entornos de desarrollo donde se parametrizan armazones de software, como ZEUS o AgenTool. Aunque facilitan el proceso, las plataformas de desarrollo quedan incompletas sin un proceso de desarrollo de software especializado para agentes que haga similar la creación de sistemas multiagente a la producción de software convencional. Las técnicas convencionales de ingeniería tales como el Proceso Unificado y CommonKADS, no tienen en cuenta las necesidades de especificación de los sistemas multiagente, tales como la especificación de planificación de tareas, intercambio de información con lenguajes de comunicación orientados a agentes, movilidad del código o motivación de los componentes del sistema. Por lo mencionado, se plantean nuevas metodologías basadas en agentes, tales como BDI, Vowel Engineering, MAS-CommonKADS y GAIA entre otros. Estas metodologías parten de un modelo, informal en la mayoría de casos, de cómo debe ser un sistema multiagente y dan guías para su construcción. En las primeras metodologías, las guías consistían en una lista breve de pasos a seguir. Las más modernas, aunque han progresado en la integración con la ingeniería del software clásica, aún no muestran la madurez que se puede encontrar en metodologías convencionales como el Proceso Unificado. El motivo principal es que siguen faltando herramientas de soporte y un lenguaje para la especificación del sistema multiagente que permitan trabajar de forma similar a como se trabaja en Rational Rose, TogetherJ o Paradigm+.

De entre las metodologías existentes, es posible seleccionar un conjunto utilizando tres criterios: utilización de diferentes vistas para la especificación del sistema, incorporar la idea de proceso de desarrollo, e integrar técnicas de ingeniería y teoría de agentes. De acuerdo con estos criterios, se han identificado siete metodologías. La primera es la ingeniería de vocales que fue una de las primeras en considerar diferentes aspectos, tales como agentes, entorno, interacciones y organización, en el desarrollo de los sistemas multiagente. La segunda es MAS-CommonKADS que, debido a su origen, se trata de una metodología orientada al desarrollo utilizando experiencia en sistemas expertos. A continuación el diseño basado en BDI que ha influido notablemente en la forma de concebir el control de los agentes. Después, se encuentran dos metodologías soportadas por herramientas: ZEUS y MaSE. Seguidamente, se estudia GAIA, de gran influencia, que comprende la definición de vistas en una metodología y trata de integrarse en un ciclo de vida de software tipo cascada. Por último, INGENIAS, creada a partir del trabajo de MESSAGE.

A momento de elegir un método se debe recordar que cada una se especializa en áreas concretas. Si se está acostumbrado a trabajar con sistemas basados en conocimiento con la metodología CommonKADS, lo lógico es que se elija MASCommonKADS. Si la experiencia del usuario está en el área de los objetos, la recomendación sería de MaSE. Si por el contrario está interesado en un enfoque más orientado a agentes, puede seleccionar ZEUS, INGENIAS, BDI o GAIA. Y si lo que se quiere es contar con un soporte de herramientas, la lista de metodologías válidas se reduce considerablemente: ZEUS, MaSE, INGENIAS. En los casos en que se requiera un proceso de desarrollo robusto, detallado y ensayado en desarrollos reales, la recomendación sería MASCommonKADS o INGENIAS. Si solo interesa una visión superficial del sistema, sin entrar en detalles de diseño e implementación, se recomendaría GAIA. Si se busca una metodología desarrollada a partir de modelos formales, entonces la elección sería BDI. Otra opción que tienen los desarrolladores es quedarse con lo que más les interese de cada metodología. Una recomendación sería utilizar la técnica de modelado de INGENIAS junto con su herramienta de especificación e implementarla con ZEUS.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 14 de 2009

jueves, 4 de febrero de 2010

Sistemas expertos conexionistas

En el ámbito de la inteligencia artificial, aun se dan confrontaciones entre dos tendencias, por una parte las tendencias simbólicas o simbolistas, entre las cuales se encuentran los sistemas expertos, y las tendencias no simbolistas o conexionistas, de las cuales forma parte las redes neuronales. Debido al carácter eminentemente tecnológico de la inteligencia artificial, donde el espíritu que predomina es el de resolver problemas, por sobre aquél de la búsqueda de verdades, es de esperar que en su quehacer emerjan soluciones eclécticas más fácilmente que en el dominio de las ciencias. En este dominio, por lo tanto, es de esperar que un proceso de selección, en búsqueda de los métodos más eficaces, dé lugar a soluciones híbridas, con aspectos simbólicos y no simbólicos. Tal el caso de la temática abordada, que se relaciona con un sistema experto que utiliza redes neuronales, mejor conocido como sistema experto conexionista.

El conexionismo se establece como un paradigma que permite modelar el funcionamiento del sistema nervioso a partir de formas simplificadas del funcionamiento de las neuronas que lo constituyen y de las conexiones que entre ellas se establecen. Por una parte, el funcionamiento de las neuronas de los diferentes modelos conexionistas actualmente en uso se basa en variaciones del modelo de la neurona formal establecida por McCulloch y Pitts en la década de los años 1940. En dicho formulismo se rescatan tanto las nociones de suma espacial y temporal de la fisiología celular, como la noción de activación de la neurona a partir de la resultante de potenciales post-sinápticos activadores como inhibitorios. Por otra parte, la forma en que se establecen las conexiones sinápticas de los modelos conexionistas replica la forma en que ellas se establecen en sus contrapartes biológicas. Estas conexiones pueden ser estáticas, en cuyo caso permanecen invariantes en el tiempo, o plásticas, de suerte que cambien en el curso del tiempo de acuerdo a instrucciones externas a la red, o de acuerdo a la relación de actividades entre neuronas pre y post-sinápticas.

Se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos, sino que ayuda a efectuar con mayor rapidez y eficacia todas las tareas que realiza. En términos genéricos un sistema experto es una aplicación informática capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimiento, posee información de uno o más expertos en un área específica. Estos sistemas imitan las actividades de un humano para resolver problemas de distinta índole, en diferentes dominios de acción en los cuales predomina de algún modo la inteligencia artificial. También se dice que un sistema experto se basa en el conocimiento declarativo, es decir en conocimiento sobre hechos acerca de objetos, situaciones, etc. además del conocimiento de control referido como la información sobre el seguimiento de una acción. Para que un sistema experto sea una herramienta efectiva, los usuarios deben interactuar de una manera fácil, reuniendo dos capacidades para poder cumplir esta característica: (1) Explicar su razonamiento o base del conocimiento. Los sistemas expertos se deben construir siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicación para cada una de estas reglas, las mismas que a la vez se basan en hechos. (2) Adquisición de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores.

La fusión de redes neuronales y sistemas expertos es uno de los campos abiertos más amplios de la investigación actual en inteligencia artificial. Su conjunción está soportada, de forma teórica, por la forma de procesar la información de los humanos, donde se aprecian, ante determinadas situaciones, una respuesta rápida, no consciente, gobernada por el simple reconocimiento de patrones y, complementándose con lo anterior se requiere otro proceso de la información que puede precisar de más datos y tiempo, pero que es consciente y proporciona una mayor “calidad” en la respuesta. Las redes neuronales pueden ser una buena interfaz entre un mundo real difuso y los sistemas expertos en cuanto a la adquisición de conocimientos o a la captación de datos e información se refiere. La aproximación inversa sería que: (1) El sistema experto toma los datos del exterior, haciendo preguntas a los usuarios, conectándose a una base de datos, introduciendo heurísticas, etc.; (2) La red neuronal, una vez entrenada, analiza los datos de forma completa, rápida y masiva y (3) los resultados de la evaluación de los datos, utilidad y consistencia de los resultados o conclusiones de la red neuronal, la realiza el sistema experto, analizando y validando las salidas de la red neuronal.

Otra posible utilización compuesta de los sistemas expertos conexionistas es que: la red neuronal genera proposiciones y restricciones para los sistemas expertos, deduciendo el conocimiento que no es capaz de explicitar el experto. Además pueden completar, gracias a la capacidad de las redes neuronales de restaurar patrones incompletos, los antecedentes o consecuentes incompletos de las reglas de producción de la base de conocimiento del sistema experto. Además, las redes neuronales pueden usarse para validar los sistemas expertos, para actualizar parámetros estadísticos en módulos de sistemas expertos, etc. Finalmente, la red neuronal puede realizar un refinamiento del sistema experto a través del siguiente procedimiento: (1) Insertar en la red neuronal el conocimiento del sistema experto; (2) Entrenar la red neuronal con ejemplos clasificatorios; y (3) Extraer el conocimiento de la red neuronal en forma de reglas de producción “si… entonces” y proceder a la adición de dichas reglas en la base de conocimiento del sistema experto.

Es posible desarrollar sistemas expertos conexionistas a partir de la combinación de los sistemas basados en reglas, propio de los sistemas expertos clásicos, con las redes neuronales artificiales. Esta combinación ofrece beneficios potenciales debido a que ambos modelos computacionales se complementan de manera mutua, a partir del siguiente razonamiento: (1) Los sistemas basados en reglas poseen buenas capacidades de explicación mientras que las redes neuronales no la tienen. (2) Los sistemas basados en reglas requieren de expertos que articulen su conocimiento y las redes neuronales solamente muchos ejemplos. (3) El tiempo promedio de desarrollo de un sistema basado en reglas es de doce a dieciocho meses mientras que el de una red neuronal son pocas semanas o meses.

Esta combinación, entre sistemas basados en reglas y redes neuronales, puede lograrse a través del siguiente procedimiento detallado: (1) División de los problemas. Se tiene una máquina de inferencia con dos partes bien delimitadas, una es un sistema de producción y la otra un procedimiento para el trabajo con una red neuronal. El conocimiento sobre el dominio de aplicación en el cual trabajará el sistema experto se divide, una parte se almacena en forma de reglas de producción y la otra se codifica en los pesos de la red neuronal. Cuando se presenta un problema este se divide en subproblemas los cuales son presentados al sistema de producción o a la red, y finalmente se integran los resultados para dar la respuesta al usuario. (2) Insertar la red neuronal en el sistema basado en reglas. Una manera es usar la red neuronal para implementar la parte de la máquina de inferencia que selecciona la regla a usar, esto puede mejorar sustancialmente el tiempo de ejecución debido al paralelismo inherente a la red neuronal. Otra forma es usar una red entrenada como una subrutina que se activa cuando se cumple alguna regla. (3) Expertos artificiales. Cuando se desea utilizar un sistema basado en reglas pero no se tiene un experto humano con todas las condiciones necesarias, se puede emplear una red neuronal como un medio para obtener las reglas de producción de la base de conocimiento del sistema experto. Se entrena la red usando los ejemplos existentes y luego se analiza esta para extraer las reglas. A pesar del doble trabajo esta variante resulta más económica tanto en tiempo como en costo pues el tiempo requerido para entrenar la red es de pocas semanas o meses, y este tiempo más el de extracción de las reglas nunca llegará al tiempo de doce a dieciocho meses requerido para la ingeniería de conocimiento tradicional. Además, este experto artificial resulta más barato que el empleo de uno humano.

El empleo de las redes neuronales en el desarrollo de sistemas expertos ofrece entre sus ventajas principales el hecho de no necesitar un experto humano al cual extraerle el conocimiento. Esta es una tarea lenta, que consume mucho tiempo, se necesita que exista disposición por parte del experto y concordancia entre él y el ingeniero de conocimiento, posibilidades de que el experto pueda explicar sus métodos de solución de problemas, etc. Las redes neuronales son una alternativa pues ellas adquieren su conocimiento a partir de ejemplos. No obstante tienen también desventajas, entre las que se encuentran el hecho de necesitar una gran cantidad de ejemplos y no poder explicar cómo se alcanzan los resultados.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 7 de 2009