jueves, 30 de diciembre de 2010

Ciencia y tecnología 2011

Desde el año 1960 las Naciones Unidas se han encargado de promover la aplicación de la ciencia y la tecnología para el desarrollo de sus Estados miembros. Para mejorar la labor en esta esfera, las naciones unidas estableció la Comisión de Ciencia y Tecnología para el Desarrollo, que es una comisión orgánica del Consejo Económico y Social que se dedica a lo siguiente: (1) Examinar las cuestiones relacionadas con la ciencia y la tecnología y sus consecuencias para el desarrollo. (2) Promover el conocimiento de las políticas científicas y tecnológicas respecto a los países en desarrollo. (3) Formular recomendaciones sobre temas científicos y tecnológicos dentro del sistema de las Naciones Unidas. La Comisión fue establecida el año 1992 como una comisión funcional del Consejo Económico y Social y fue reestructurada recientemente. Está compuesta por treinta y tres Estados miembros y se reúne cada dos años, eligiendo un tema para su labor entre períodos de sesiones y sus deliberaciones.

La educación es fundamental en el desarrollo integral de toda sociedad, mediante ésta, se socializan y transforman los seres humanos, tanto en lo individual como en lo colectivo, las instituciones y el Estado mismo. Por tal motivo, resulta indispensable que éste provea a su población de un sistema educativo de calidad, en el cuál, ninguna persona se encuentre excluida por su género, religión, raza o condición social; la educación es un derecho humano esencial. La cultura y la educación son parte indivisible de la formación ciudadana. Son un derecho de todos los mexicanos sin distinción de edades, sexo, origen étnico, condición económica, religión o lugar de residencia”.

Es necesario garantizar a todos los bolivianos, con la concurrencia del Estado y de los particulares, la oportunidad de acceso a la educación en sus distintos niveles; estableciendo una correspondencia entre la educación y las necesidades del país; fortaleciendo el sistema de becas para los mejores estudiantes; estimulando la investigación científica; y, orientando a las nuevas generaciones a participar en las carreras técnicas y tecnológicas. Asimismo, si se parte del entendimiento de que inclusión social es la garantía de las necesidades mínimas de la población a través del buen accionar de un Estado socialmente responsable, la educación viene a formar parte implícita de estas obligaciones, bajo el entendimiento de que el derecho a la educación es un derecho humano básico cuyo cumplimiento es la base de una sociedad más justa y por lo tanto más incluyente. “Existen muchos estudios que demuestran que la educación y el nivel de ingresos están relacionados: entre más alto sea el nivel educativo, las probabilidades de conseguir un empleo y de obtener un mayor nivel de ingresos son más altas”.

De retorno a los términos generales, se vive en un mundo donde la tecnología marca el ritmo del progreso y las pautas de vida. En otras palabras, las personas viven en un mundo modelado por la tecnología; y en el concepto de tecnología están implícitos los de la ciencia y la técnica. Estas tres palabras clave, ciencia, técnica y tecnología, están vinculadas a actividades específicas del hombre y ligadas indisolublemente al desarrollo de la civilización.

La ciencia responde al deseo del hombre de conocer y comprender racionalmente el mundo que lo rodea y los fenómenos con él relacionados, deseo que lo lleva a investigar científicamente. Normalmente, el resultado de las investigaciones científicas incrementa el cuerpo metódicamente formado y sistematizado de conocimientos. Esta actividad humana, denominada investigación científica, y su producto resultante, denominado conocimiento científico, es lo que se llama ciencia. En este campo, la motivación es el ansia de conocimientos, la actividad es la investigación y el producto resultante es el conocimiento científico.

Desde un punto de vista general, la técnica es el procedimiento o conjunto de procedimientos que tienen como objetivo obtener un resultado determinado, en el campo de la ciencia, la tecnología, las artesanías u otra actividad. También se puede decir que se trata del o los procedimientos puestos en práctica al realizar una actividad, así como también la pericia o capacidad que se pone de manifiesto cuando se realiza la actividad. Estos procedimientos no excluyen la creatividad como factor importante de la técnica. La tecnología, por su parte, surge al enfocar determinados problemas técnico-sociales con una concepción científica y dentro de un cierto marco económico y sociocultural. Está íntimamente vinculada con la ciencia, y la complementariedad entre ambas se acrecienta cada vez más. En el pasado, generalmente ciencia y técnica marcharon separadamente sin complementarse. Es posible recordar, por ejemplo, la Grecia clásica donde la ciencia no estuvo vinculada con aplicaciones técnicas, o mencionar la ingeniería romana o del Medioevo, donde había una técnica sin ciencia subyacente. En los primeros años del siglo veintiuno, la tecnología y la ciencia marchan indisolublemente ligadas. La tecnología utiliza el método científico, comprende un saber sistematizado y en su accionar se maneja tanto a nivel práctico como conceptual.

Un pronóstico elaborado por expertos en ciencia y tecnología, medios especializados, universidades y empresas de hardware determinó cuáles serán los diez hitos tecnológicos del año próximo. El informe, difundido por la revista del Instituto Tecnológico de Massachusetts, Technology Review, presenta 10 inventos que si bien parecerían extraídos de una película futurista, pero ya son parte de la cotidianidad de los seres humanos: (1) Grafeno. Llamado “el material del futuro”, este descubrimiento significó el Premio Nobel de Física 2010 para Andre Geim y Kostya Novoselov. Este material, que será utilizado para los procesadores se enrolla y se pliega, es 10 veces más rápido que el silicio y es un buen conductor, que solucionará la cuestión de llamada “conectividad total”. (2) Letreros interactivos. Son pantallas LCD táctiles e interactivas con cristal holográfico que responden a la demanda de los consumidores por experiencias conectadas a redes en el punto de venta. La interfaz es sensible al tacto con video y reconocimiento del rostro. Ofrecen información sobre el producto y su aplicación. (3) Robots enfermeras. Las enfermeras del futuro son humanoides capacitados para realizar análisis de sangre, guiar a los pacientes por el hospital y asistirlos en la sala de espera, además de tomarles la presión y la fiebre. Algunos hospitales de Japón ya las implementaron, con buena recepción por parte de los pacientes, que encontraron la espera más entretenida gracias a los videos que estas enfermeras cibernéticas muestran a través de su pecho. (4) Vehículos inteligentes. Ya se había presentado al primer auto que twittea. Pero, si bien Ford tuvo la primicia en ese aspecto, ya hay varios fabricantes abocados a la creación de vehículos con Internet. Esta combinación permite al usuario, entre otras cosas, conocer el estado de las rutas y disfrutar de contenidos interactivos durante el viaje. (5) Celulares en tres dimensiones. Julien Flack, director de tecnología de Dynamic Digital Depth es el autor de un software que le demandó una década de trabajo, y permite que la imagen en el celular salte de dos dimensiones a tres dimensiones, ofreciendo una experiencia mucho más real. Dicho software fue desarrollado para el Samsung W960, lanzado en Corea del Sur.

La lista continúa luego de esta breve pausa entre párrafos con los siguientes hitos: (6) Redes de sensores inalámbricos. Son redes de nodos o computadoras en miniatura equipadas para una tarea común. Son autoconfigurables, de fácil instalación y capaces de concretar el proceso de emisión y recepción de datos en pocos segundos. Pueden detectar actividad sísmica, el estado del tránsito y movimientos militares. (7) Televisor de LED. Estas pantallas, cuyo costo se espera que descienda al ritmo de su demanda creciente, son amigas de la naturaleza, generan menos calor, no utilizan materiales tóxicos ni generan residuos. Además, brindan una mejor experiencia visual, no deforman la imagen ni cambian el color. (8) Componentes fotovoltaicos. Son células solares de película fina que tienen la particularidad de convertir la luz en electricidad. Este avance, descubierto por la Física Kylie Catchpole, implicaría un gran avance de la energía solar por encima de los combustibles fósiles. (9) Computación ubicua. Se refiere a la integración de la informática en el entorno humano o real, al punto que la computadora no sea percibida como un objeto diferenciado. Se espera que el hombre interactúe con chips informáticos para realizar sus tareas cotidianas dando órdenes sólo con la voz. (10) Implantes cibernéticos. Se trata de prótesis basadas en materiales ópticos y electrónicos capaces de almacenar datos sobre el estado de salud e historial del paciente, además de monitorear sus signos vitales.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 27 de 2010

viernes, 24 de diciembre de 2010

Problemas en bioinformática

Las células son las unidades fundamentales de cualquier ser vivo y todas las instrucciones necesarias para dirigir sus actividades están contenidas en la secuencia de ácido desoxirribonucleico. Este acido en todos los organismos se encuentra compuesto por los mismos componentes físicos y químicos, denominados bases, que se ordenan lado a lado en una estructura de doble hélice. El orden de estas bases contiene las instrucciones para crear un organismo con todas sus particularidades. El genoma de un organismo está formado por el conjunto de moléculas de ácido desoxirribonucleico, y el tamaño del mismo puede variar desde seiscientas mil pares de bases en una bacteria, hasta los tres billones que contienen los genomas humano y de ratón. Salvo algunas excepciones, todas las células humanas contienen una copia del genoma completo.

El ácido desoxirribonucleico en el genoma humano está organizado en cuarenta y seis cromosomas. Cada uno de ellos es una molécula cuya longitud se encuentra entre los cincuenta y doscientos cincuenta millones de pares de bases. Cada cromosoma contiene varios genes: las unidades básicas funcionales de la herencia y cada gen es simplemente una secuencia específica de bases que contiene las instrucciones para construir una proteína. En los primeros años del siglo veintiuno, se sabe que los genes comprenden solamente el dos por ciento del genoma humano; el resto contiene regiones no codificantes cuya función puede incluir la provisión de integridad estructural del cromosoma, la regulación de donde, cuando y en qué cantidad se fabrican las proteínas, etc. Se estima que el genoma humano contiene entre treinta y cuarenta genes y aunque los genes atraen mucho la atención, en realidad son las proteínas las que realizan la mayor parte de las funciones de la vida y generan la mayoría de las estructuras celulares. Las proteínas son moléculas complejas, formadas por subunidades más simples denominadas aminoácidos, de los cuales existen veinte diferentes. La secuencia de aminoácidos y las características químicas de los mismos causan que la proteína se pliegue en una estructura tridimensional que define su funcionalidad en la célula.

El conjunto de todas las proteínas de una célula se denomina proteoma. En contraste con el carácter estático del genoma, el proteoma cambia momento a momento en respuesta a miles de señales intra y extra celulares. La química de una proteína y su comportamiento está especificada por la secuencia de un gen, pero también por el número y la identidad de otras proteínas fabricadas en la célula al mismo tiempo y con las cuales ésta se asocia y reacciona. La proteómica, definida como el área que estudia la estructura de las proteínas y sus actividades y relaciones, es objeto de investigación que ayudará a elucidar las bases moleculares de la salud y la enfermedad. La cantidad de información que genera la investigación genómica es tal que, probablemente, supera la magnitud de información que genera la investigación en otras disciplinas científicas. En este contexto, surge la Bioinformática como un área en la frontera entre la biología y las ciencias de la computación cuyo principal objetivo es el desarrollo y uso de técnicas matemáticas y computacionales para ayudar en el tratamiento masivo de datos y en la resolución de problemas de la biología molecular.

La bioinformática surge como consecuencia de una convergencia multidisciplinar bajo el amparo del proyecto Genoma Humano. Esta disciplina está orientada fundamentalmente a la investigación aplicada, relacionada principalmente con las siguientes áreas: biología molecular, genética, genómica, proteómica, ciencias biomédicas, ciencias de la computación, matemáticas, física y estadística. También constituye un enfoque interdisciplinario, puesto que al menos un científico experto en biología y otro experto en ciencias de la computación, deben colaborar estrechamente para alcanzar un objetivo común, para el cual necesitan un lenguaje común y, además, aprender uno del otro los respectivos conocimientos básicos y fundamentales.

Una definición compendiada de la bioinformática establece que se trata de una disciplina científica y tecnológica en al que interaccionan en armonía los planteamientos investigadores de la biología genética y molecular con los enfoques metodológicos y tecnológicos de la ciencia de la computación y la ingeniería informática, para la obtención y gestión del conocimiento biológico genómico y proteómico. Gracias a la bioinformática, la secuenciación del genoma ha podido finalizar entes de lo previsto inicialmente, y en la denominada era postgenoma, la bioinformática se encuentra dedicada a la traslación de la información genética hacia aplicaciones biomédicas y sociales. Sin embargo, una de las principales limitaciones en la eclosión de esta disciplina ha sido la escasez de profesionales formados en la misma, ya que tradicionalmente las principales disciplinas científicas implicadas han ocupado compartimientos estancos con escasa comunicación entre ellos.

Los problemas que trata la bioinformática en general surgieron en el encuentro de dos formas diferentes de trabajo, una de ellas, la del grupo receptor, consistía en la tradicional biología molecular y la epidemiologia genética, centrada en los procedimientos de laboratorio, fundamentalmente el manejo de muestras, la extracción de ácido desoxirribonucleico, la amplificación de ácido desoxirribonucleico, el genotipado y el análisis estadístico. La otra se encontraba centrada en la ciencia de la computación y los sistemas de información, donde priman los aspectos de tratamiento, almacenamiento recuperación y salvaguarda de la información, así como la aplicación metódica de los procesos y herramientas necesarias para dichas actividades con eficiencia y calidad. En otras palabras los problemas se encuentran en un mismo territorio conformado por la visión científica basada en la muestra biológica, frente a la visión científico-ingenieril basada en la información.

La gama de problemas que abarca la bioinformática es muy amplia y como ejemplos, se pueden citar: la construcción de arboles filogenéticos para detectar antecesores comunes, el alineamiento simple y múltiple de secuencias, la construcción de mapas de genomas, la predicción de estructuras de proteínas, la comparación de moléculas, el agrupamiento y clasificación de estructuras proteicas, el análisis de perfiles de expresión génica, y un largo etcétera. Según los investigadores Meidanis y Setubal, un algoritmo para un problema de biología molecular es un objeto que intenta servir a dos personas: el biólogo molecular, que pretende que el algoritmo sea relevante, es decir que resuelva el problema con todos los errores e incertidumbres que aparecen en la práctica; y el informático, que desea probar que el algoritmo resuelve eficientemente un problema bien definido y que está dispuesto a sacrificar relevancia por eficiencia.

El equilibrio solo puede provenir de una interacción constante, que no es simple, pero que merece la pena. En la misma línea, se puede argumentar “los biólogos querrán que los informáticos les suministren soluciones a sus problemas de gestión de datos, los matemáticos y expertos en computación andarán detrás de problemas intelectualmente llamativos, y los ingenieros pedirán a los dos grupos anteriores que les suministren especificaciones bien concretadas para que ellos puedan desarrollar su trabajo. Los distintos expertos habrán de acostumbrarse a emplear vocabularios y lenguajes comunes y a entender, sin minusvalorar, los problemas de los demás.”

Algunos problemas importantes donde los enfoques basados en inteligencia artificial resultan prometedores incluyendo la predicción y comparación de estructura de proteínas, el diseño semiautomático de drogas, la interpretación de secuencias de nucleótidos y la adquisición de conocimiento de los datos genéticos. Uno de los procedimientos básicos en el área de la bioinformática, consiste en la búsqueda de semejanzas entre un fragmento de ácido desoxirribonucleico recién secuenciado y los segmentos ya disponibles almacenados en grandes bases de datos como GenBank. El hallazgo de emparejamientos aproximados permite predecir el tipo de proteína que especificará tal secuencia y esto no solo proporciona pistas sobre dianas farmacológicas prometedoras en las etapas iniciales de desarrollo de un medicamento, sino también permite eliminar alguna de ellas.

El problema de análisis, comparación y alineamiento de secuencias puede considerarse resuelto. Mejor dicho, en la primera década del presente siglo se dispone de algoritmos para resolver estos problemas razonablemente bien considerando que muchos de los problemas derivados resultan ser NP-Completos. El lector interesado en profundizar sobre problemas basados en secuencias, puede referirse a los trabajos de Meidanis y Setubal además del trabajo realizado por Gusfield. Una visión general sobre los problemas del área también puede encontrarse en la obra de Higgins y Taylor de principios del siglo veintiuno. Los dos métodos clásicos para la búsqueda de secuencias similares en bases de datos son BLAST y FAST, relacionados con herramientas de búsqueda de alineamiento local. Ambas referencias pertenecen a la presentación original de los métodos.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 20 de 2010

jueves, 23 de diciembre de 2010

Operadores genéticos

Los algoritmos genéticos constituyen una de las técnicas de computación evolutiva más difundidas como consecuencia de su versatilidad para resolver un amplio rango de problemas. Al constituir un caso de técnica evolutiva, los algoritmos genéticos basan su operativa en una emulación de la evolución natural de los seres vivos, trabajando sobre una población de soluciones potenciales evoluciona de acuerdo a interacciones y transformaciones únicas. Los individuos que constituyen la población se esfuerzan por sobrevivir: una selección programada en el proceso evolutivo, inclinada hacia los individuos más aptos, determinando aquellos individuos que formarán parte de la siguiente generación. El grado de adaptación de un individuo se evalúa de acuerdo al problema a resolver, mediante la definición de una función de adecuación al problema, la denominada función de adaptabilidad. Bajo ciertas condiciones, el mecanismo definido por los operadores inspirados por la genética natural y la evolución darwiniana lleva a la población a converger hacia una solución aproximada al óptimo del problema, luego de un determinado número de generaciones.

La formulación tradicional de un algoritmo genético fue presentada de excelente manera por el discípulo de Jhon Holland llamado David Goldberg, este último popularizó el uso de los algoritmos genéticos para una variada gama de problemas en las áreas de búsqueda, optimización y aprendizaje automático. En su formulación clásica, los algoritmos genéticos se basan en el esquema genérico de un algoritmo evolutivo. A partir de este esquema, el algoritmo genético define “operadores evolutivos” que implementan la recombinación de individuos, a través del operador de apareamiento, y la variación aleatoria para proporcionar diversidad, el operador de mutación. La característica distintiva de los algoritmos genéticos respecto a las otras técnicas evolutivas consiste en el uso fundamental del apareamiento como operador principal, mientras que la mutación se utiliza como operador secundario tan solo para agregar una nueva fuente de diversidad en el mecanismo de exploración del espacio de soluciones del problema. Inclusive la mutación puede llegar a ser un operador opcional o estar ausente en algunas variantes de algoritmos genéticos que utilizan otros operadores para introducir diversidad. En general, los algoritmos genéticos se han utilizado para trabajar con codificaciones binarias para problemas de búsqueda en espacios de cardinalidad numerable, aunque su alto nivel de aplicabilidad ha llevado a proponer su trabajo con codificaciones reales, e inclusive con codificaciones no tradicionales, dependientes de los problemas a resolver.

La gran mayoría de las variantes de algoritmos genéticos utiliza como principales operadores a la selección, el apareamiento o recombinación y la mutación. El mecanismo de selección determina el modo de perpetuar buenas características, que se asumen son aquellas presentes en los individuos más adaptados. El mecanismo de selección proporcional o selección por ruleta elige aleatoriamente individuos utilizando una ruleta sesgada, en la cual la probabilidad de ser seleccionado es proporcional a la adaptabilidad de cada individuo. Otros mecanismos de selección introducen diferentes grados de elitismo, conservando un cierto número prefijado de los mejores individuos a través de las generaciones. En el caso de la selección por torneo se escogen aleatoriamente un determinado número de individuos de la población, los cuales compiten entre ellos para determinar cuáles se seleccionarán para reproducirse, de acuerdo a sus valores de adaptación. El mecanismo de selección basado en el rango introduce el mayor grado de elitismo posible, al mantener entre generaciones un porcentaje generalmente elevado, de los mejores individuos de la población. Estas diferentes políticas de selección, conjuntamente con políticas similares utilizadas para determinar los individuos reemplazados por los descendientes generados posibilitan el diseño de diferentes modelos evolutivos para los algoritmos genéticos. Los esquemas de codificación binaria de tamaño fijo tienen como ventaja principal que resulta sencillo definir operadores evolutivos simples sobre ellos. En la formulación clásica de un algoritmo genético, denominada por Goldberg como algoritmo genético simple, se propone como operador de recombinación el apareamiento de un punto, que consiste en obtener dos descendientes a partir de dos individuos padres seleccionando un punto al azar, cortando los padres e intercambiando los trozos del cromosoma.

El operador tradicional de mutación introduce diversidad en el mecanismo evolutivo, simplemente modificando de manera aleatoria uno de los valores binarios del cromosoma. Sobre un esquema de codificación binaria la modificación consiste en invertir el valor binario de un alelo, y por ello recibe el nombre de mutación de inversión del valor de un bit. El operador tradicional de mutación introduce diversidad en el mecanismo evolutivo, simplemente modificando aleatoriamente uno de los valores binarios del cromosoma. Sobre un esquema de codificación binaria la modificación consiste en invertir el valor binario de un alelo, y por ello recibe el nombre de mutación de inversión del valor de un bit. Tanto el apareamiento como la mutación son operadores probabilísticos, en el sentido en que se aplican o no, teniendo en cuenta una tasa de aplicación del operador. Generalmente la tasa de aplicación del operador de apareamiento es elevada en un algoritmo genético simple, mientras que la tasa de aplicación del operador de mutación es muy baja, del orden de 0,001 para cada bit en la representación. Algunos operadores evolutivos más complejos han sido propuestos como alternativas para modificar el comportamiento del mecanismo de exploración del espacio de soluciones. Es habitual encontrar operadores de apareamiento multipunto en donde se utilizan dos o más puntos de corte o uniformes en donde para cada posición en el cromosoma se decide intercambiar material genético de acuerdo a una probabilidad prefijada.

El operador de selección juega un importante papel tanto en los algoritmos evolutivos secuenciales como en los paralelos, ya que guía la búsqueda y provoca la convergencia de la población de individuos. Por tanto, representa el tan importante compromiso entre exploración y explotación. De entre los operadores de selección proporcional a la adecuación, la implementación conocida como “ruleta” es la más popular. Sin embargo, también es de mayor complejidad algorítmica y con tendencia a cometer errores estocásticos respecto de la implementación conocida como “muestreo estocástico universal”. De hecho, la selección proporcional a la adecuación puede usarse para seleccionar un conjunto arbitrario de parejas y por tanto puede utilizarse en modelos secuenciales generacionales o de estado estacionario, así como en modelos paralelos distribuidos o celulares. La selección proporcional usa el valor de adecuación para seleccionar parejas o bien el individuo que se desea reemplazar. Algunos mecanismos utilizan una ordenación creciente atendiendo a la adecuación de los individuos para después seleccionar atendiendo a su posición en dicha ordenación. Esto reduce el error estocástico debido a valores de adecuación similares. Existen muchos otros mecanismos de selección interesantes como el torneo, y sobre todo variantes de estos modelos básicos que modifican de alguna forma la probabilidad de selección.

El operador de apareamiento es muy importante en el campo de los algoritmos genéticos. Existen numerosas variantes de él, todas ellas clasificables en tres categorías de alto nivel: (1) Operadores de apareamiento puros. Los cuales pueden ser aplicados en cualquier algoritmo genético. (2) Operadores de apareamiento híbridos: que mezclan un operador puro con una técnica no genética. (3) Operadores de apareamiento dependientes del problema: operadores que realizan operaciones basadas en el conocimiento del problema y por tanto son sólo aplicables a dicho problema. Existen numerosos tipos de apareamiento. El estándar es binario y genera dos hijos. Sin embargo no es raro encontrar aplicaciones que usan un apareamiento que genera un único hijo. También existen operadores de apareamiento típicos de problemas de reordenación y otros campos sobre todo de optimización combinatoria, en los que dicho operador transmite de padres a hijos la admisibilidad como solución al problema. El operador más tradicional genera aleatoriamente el mismo punto de apareamiento en ambos padres e intercambia los cuatro segmentos resultantes dando lugar a dos hijos nuevos. Existen numerosas extensiones a dos puntos y N puntos. Esta familia de operadores de apareamiento es eficiente y de aplicación bastante genérica. El apareamiento aritmético tradicional es un tipo especial de operador aritmético sesgado. El sesgo hacia el mejor padre de los dos últimos operadores permite introducir un componente de explotación en el comportamiento de exploración típico de cualquier apareamiento. Ambos operadores trabajan con independencia de la longitud de la cadena de parámetros, lo que supone una ventaja adicional en ciertos problemas.

El operador de mutación se describe por la instanciación a dos operadores concretos del operador genérico mencionado para un algoritmo genético. En el caso de genotipo binario se utiliza el tradicional operador de complemento de bits, mientras que en el caso de genotipo real se utiliza una definición propia que se encuentra implementada de forma parecida en la literatura asociada a este tipo de codificación. La mutación ha sido tradicionalmente entendida como un operador de segunda fila en los algoritmos genéticos. Sin embargo, numerosos estudios en este campo, así como en otros dominios donde la mutación es determinante, han puesto de manifiesto la gran importancia de este operador en problemas de complejidad real, ya que es el único que introduce nueva información en una población secuencial, permitiendo así escapar de óptimos locales y ampliando la exploración del algoritmo. Tanto el apareamiento como la mutación pueden sufrir un cambio dinámico durante la evolución en su conjunto de parámetros, típicamente en la probabilidad de aplicación. Esta característica ha proporcionado buenos resultados en algunos campos de aplicación aunque aún es un proceso relativamente caro debido a que dichos cambios surgen como consecuencia de una monitorización de la diversidad de la población, menor distancia de Hamming, mayor mutación o de la aportación que hacen a la adecuación de los descendientes generados.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 13 de 2010

viernes, 17 de diciembre de 2010

Neuromodelado

Las redes neuronales tienen su origen en la emulación de un sistema biológico: el sistema nervioso, cuyo elemento fundamental es la neurona. De hecho, el desarrollo de las redes neuronales avanza a la par con la neurobiología. Cada célula nerviosa o neurona consta de una porción central o cuerpo celular, que contiene el núcleo y una o más estructuras denominadas axones y dendritas. Las neuronas tienen la capacidad de comunicarse, el proceso que se lleva a cabo es el siguiente: la señal nerviosa se recibe en las dendritas de las neuronas y recorre el axón. El axón mantiene un equilibrio químico caracterizado por el aumento de la concentración de iones de potasio en su interior y sodio en el exterior. Cuando se transmite una señal, la vaina de mielina que envuelve el axón permite el paso de los distintos iones. Los iones sodio y potasio cambian de sitio y generan así una señal eléctrica que se desplaza a lo largo de la membrana. El espacio entre dos neuronas se llama sinapsis. Cuando el impulso llega a una sinapsis, unas vesículas descargan unos neurotransmisores químicos que llevan impulsos nerviosos hasta la neurona siguiente y así sucesivamente, conformando una amplia red de comunicaciones.

Una neurored artificial es un sistema compuesto de muchos elementos procesadores simples conectados en paralelo, cuya función es determinada por la estructura de la red, la fuerza en las conexiones y el procesamiento realizado por los elementos en los nodos. De esta manera, constituye un potente instrumento para el análisis de comportamientos no lineales. Cada neurona realiza una función matemática. Las neuronas se agrupan en capas constituyendo la red neuronal. Una determinada neurored está confeccionada y entrenada para llevar a cabo una labor específica. Finalmente, una o varias redes, más la interface con el entorno, integran el sistema neuronal artificial. Las neuronas envían señales de entradas a manera de pesos sinápticos en las conexiones de la neurona. Cada peso sináptico multiplica a su entrada correspondiente y así define la importancia relativa de cada entrada. Todas las entradas se suman y así, los pesos definen la intensidad de la conexión. En la práctica, los pesos se determinan a partir de una descripción completa de la problemática a tratar y pueden ser fijos o variables. Las que tienen pesos variables emplean leyes de aprendizaje para ajustar el valor de la fuerza de interconexión con otras neuronas. En cambio, en las que utilizan pesos fijos, éstos deben estar previamente definidos. Entre las neuronas que componen la red existe un conjunto de conexiones que las vinculan, de manera que cada neurona transmite señales a aquellas que están conectadas con su salida. Asociada a cada unidad existe una función de salida que transforma el estado actual de activación en una señal de salida de manera matemática.

Pero una neurona no es simplemente un transmisor de información. Esta célula recibe dicha información, mediante neurotransmisores – señal química, de otras neuronas, la procesa internamente y envía el resultado a las siguientes neuronas a las que está conectada. El procesamiento que realiza la neurona consiste básicamente en medir la cantidad de información que ha recibido y responder de acuerdo con esto. Puede entonces establecerse una analogía entre la actividad sináptica y las redes neuronales artificiales: las señales que llegan a la sinapsis son las entradas a la neurona; éstas son ponderadas, atenuadas o simplificadas, a través de un parámetro, denominado peso asociado a la sinapsis correspondiente. Estas señales de entrada pueden activar a la neurona, sinapsis con peso positivo, o inhibirla, con peso negativo. El efecto total corresponde a la suma de las entradas ponderadas. Las neuronas tienen un umbral de activación que es la cantidad de “entrada” necesario para activar la neurona, así, si la suma es igual o mayor que el umbral de la neurona, entonces ésta se activa, de lo contrario, no se activa. Esta es una situación de todo o nada; cada neurona se activa o no se activa, pero no hay una respuesta intermedia. La facilidad de transmisión de señales se altera mediante la actividad del sistema nervioso. Las sinapsis son susceptibles a la fatiga, deficiencia de oxígeno y la presencia de anestésicos. Esta habilidad de ajustar señales es un mecanismo de aprendizaje.

Un aspecto importante respecto al aprendizaje de las neuroredes artificiales es conocer cómo se modifican estos valores; es decir, cuáles son los criterios seguidos para cambiar los valores asignados a las conexiones cuando se pretende que una red asimile una nueva información. Estos criterios determinan lo que se conoce como regla de aprendizaje. El aprendizaje puede dividirse en dos tipos: (1) Supervisado. Se asigna a la red una entrada y una salida esperada y la misma debe ajustar sus pesos para disminuir los residuos. (2) No supervisado. A la red se le proporcionan únicamente los estímulos y ella ajusta los pesos de sus interconexiones utilizando solamente los estímulos y la salida calculada. Dependiendo de la estructura de la neurored existen diferentes topologías de conexión: Perceptrón, Backpropagation, Hopfield, Kohonen, etc. El usuario debe seleccionar la más apropiada en función del problema a resolver.

La utilización de modelos conexionistas o neurosistemas artificiales, se encuentra justificado en problemas donde se pueda aprovechar su potencial para el análisis no lineal de la información. Su función como memoria asociativa distribuida como forma de evitar las dificultades en la adquisición de conocimiento experto y tolerancia al ruido. Se vincula a la arquitectura inherentemente paralela, y a la adaptabilidad para acomodarse a nuevas manifestaciones de carácter aleatorio.

Las principales características que motivan la utilización de neurosistemas artificiales se sustentan en los siguientes considerandos: (1) Facilidad para el tratamiento no lineal de la información, proporcionado por la interconexión de elementos simples de proceso no lineal. Una neurona es un elemento no lineal, por lo que una interconexión de ellas necesariamente será un dispositivo no lineal. (2) Capacidad de establecer relaciones entrada-salida, a través de procesos de aprendizaje. (3) Aprendizaje adaptativo, que permite llevar a cabo ciertas tareas mediante un entrenamiento con ejemplos ilustrativos. (4) No es necesario especificar funciones de distribución de probabilidad. (5) Robustez y tolerancia a fallas, dado que el almacenamiento de la información aprendida se realiza de manera distribuida en las conexiones. Una neurored, al ser un sistema distribuido, permite el fallo de algunos elementos individuales sin alterar significativamente la respuesta total del sistema. Este hecho, las hace especialmente atractivas frente a los métodos de computación secuencial. (6) Uniformidad de análisis y diseño, proporcionado por teorías conjuntas que describen los diferentes algoritmos y aplicaciones. Como ventaja adicional, los neurosistemas artificiales ocupan un lugar intermedio entre las técnicas estadísticas paramétricas y no paramétricas, es decir que actúan como técnicas semiparamétricas. En consecuencia a lo mencionado, las redes neuronales son capaces de captar los matices que se escapan a los métodos estadísticos más simples. En efecto, hay evidencias de los buenos resultados proporcionados en tareas bien definidas donde las interacciones entre las covariables del problema son significativas.

Para el cierre se presenta el neuromodelado de una red neuronal artificial que cuenta con los siguientes pasos: (1) Selección de la arquitectura de la red. Se refiere al número más conveniente de capas ocultas, número de neuronas y la conectividad entre ellas. Según Kolgomorov, una única capa oculta con un mínimo número de neuronas permite identificar cualquier función continua. Sin embargo otros autores, tales como Hertz recomiendan la utilización de dos capas ocultas, como mínimo, para alcanzar determinado nivel de precisión. (2) Funciones de activación Si bien la función de activación más utilizada es la sigmoidal, en algunos casos es más conveniente la tangente hiperbólica o la función lineal. Se ha comprobado la conveniencia de utilizar una u otras, o aún una combinación de ellas, según sea el grado de no linealidad de la función representada. (3) Definición de pesos iniciales Tradicionalmente, se asignan valores aleatorios a los pesos de una red para iniciar el proceso de entrenamiento, aunque son numerosos los autores que han demostrado su inconveniencia. En efecto, iniciar el proceso de entrenamiento con valores aleatorios en los pesos puede conducir a una situación en la que numerosas neuronas contribuyan muy poco al desempeño de la red, y su actualización durante el proceso de entrenamiento sea inútil. Más aún, esta asignación no permite asegurar que se dispondrá de un número suficiente de unidades para representar una función en todo su dominio de utilización.(4) Proceso de entrenamiento Es indudable que el método de Backpropagation presentado por Rumelhart se convirtió en un clásico, al estimular una verdadera revolución en el campo de las redes neuronales. Sin embargo, es necesario destacar que este algoritmo presenta puntos débiles muy importantes, como son una muy lenta convergencia y la posibilidad de quedar atrapado en los mínimos locales de la función error. Para superar estas dificultades se han propuesto diversas variantes, como son el método Rprop, BPVS y ABP o el denominado Quasi-Newton, que conduce a procesos de entrenamiento más rápidos y seguros.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Diciembre 6 de 2010

jueves, 16 de diciembre de 2010

Sistemas difusos

Desde su aparición en la década de los años 1960 hasta esta primera década del siglo veintiuno, las aplicaciones de la lógica difusa se han ido consolidando, paulatinamente al comienzo, y con un desbordado crecimiento en los últimos años. Se encuentran en soluciones a problemas de control industrial, en predicción de series de tiempo, como metodologías de archivo y búsqueda de bases de datos, en investigación operativa, en estrategias de mantenimiento predictivo y en otros campos más. Las principales razones para tal proliferación de aplicaciones quizás sean la sencillez conceptual de los sistemas basados en lógica difusa, su facilidad para adaptarse a casos particulares con pocas variaciones de parámetros, su habilidad para combinar en forma unificada expresiones lingüísticas con datos numéricos, y el no requerir de algoritmos muy sofisticados para su implementación.

La lógica difusa surge condicionada por una serie de acontecimientos significativos, entre los que se pueden destacar: (1) La crítica de Lukasiewicz (1920) respecto a que las proposiciones contingentes de futuro pueden tomar no sólo dos valores de verdad como consideraba Aristóteles en “De interpretatione”. La proposición "mañana se realizará un golpe de Estado" no es cierta ni falsa, lo cual implicaría una predeterminación, sino que abre el camino a la lógica ternaria o trivalente, añadiendo un tercer valor: la indeterminación. (2) El principio de incertidumbre de Heisenberg (1927). En física no se puede saber de manera simultánea la posición y el impulso de una partícula. Bart Kosko simplifica y explica este principio a partir de la siguiente proposición: “O velocidad o posición”. (3) El redescubrimiento de algunas paradojas griegas por B. Russell: (3a) El mentiroso de Creta. En cierta ocasión, este reconocido mentiroso afirma públicamente: "todos los cretenses son mentirosos". (3b) El montón de arena de Zenón. Este filósofo se plantea en qué momento se deja de tener un montón de arena cuando se va quitando una a una, cada una de las minúsculas partículas de piedra que lo componen. (3c) El barbero de Russell. Según cuenta el filósofo, su barbero afirmaba que: "afeito a todos los que no se afeitan a sí mismos, y sólo a ellos". Pero, ¿quién afeitaba, entonces, al barbero?. (3d) El "conjunto de todos los conjuntos que no son elementos de sí mismo" de Russell. A partir de su definición se plantea la paradójica pregunta de si dicho conjunto pertenece o no a sí mismo. (4) La lógica polivalente o multivalente: El mismo Lukasiewicz y Tarski (1930) generalizaron su lógica trivalente a toda una gama ordenada de valores indeterminados entre lo verdadero (1) y lo falso (0).

Motivado por Zadeh y validado por Mamdani, el uso de los sistemas difusos han sido aplicados en una gran variedad de áreas tales como el control automático, el procesamiento digital de señales, las comunicaciones, los sistemas expertos, la medicina, etc. Sin embargo, las aplicaciones más significativas de los sistemas difusos se han concentrado específicamente en el área del control automático. Esencialmente un sistema difuso, es una estructura basada en conocimiento definida a través de un conjunto de reglas difusas del tipo “si-entonces”, las cuales, contienen una cuantificación lógica difusa de la descripción lingüística del experto de cómo realizar un control adecuado.

El sistema difuso utiliza conjuntos difusos, definidos por la base de reglas difusa, para cuantificar la información en la base de reglas y que el mecanismo de inferencia opera sobre estos conjuntos difusos para producir nuevos conjuntos difusos, por tanto, es necesario especificar como el sistema convertirá las entradas numéricas en conjuntos difusos, un procedimiento llamado codificación difusa, tales que ellos puedan ser utilizados por el sistema difuso. De igual forma, el proceso llamado decodificación difusa describe la correspondencia de un espacio de acciones de control difuso en acciones de control no difuso.

La lógica difusa se adapta mejor al mundo real, e incluso puede comprender y funcionar con expresiones lingüísticas, expresadas en lenguaje natural, 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 del lenguaje, en los ejemplos mencionados "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, 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, por su asociación con el modelo de Gauss son: triangular y trapezoidal.

La lógica difusa en términos operativos 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: (1) Si hace muchísima calor Entonces disminuye drásticamente la temperatura. (2) 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 constituyen un área final, fruto de un conjunto de áreas solapadas entre sí, donde 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.

La estructura de un sistema difuso está constituida por tres bloques principales: el de transformación de los valores numéricos en valores de lógica difusa; el motor de inferencia que emplea las reglas; y el bloque de conversión de los valores de la lógica difusa en valores numéricos. En un sistema basado en lógica difusa se transforman los datos o valores numéricos de la entrada al dominio de las reglas intuitivas y lingüísticas de la lógica difusa para realizar el tratamiento de los mismos y después convertir los resultados en valores numéricos para darles la representación tradicional, puede decirse que un sistema basado en lógica difusa actúa como lo haría una persona que tuviera que reaccionar ante términos tan imprecisos como “caluroso” o “rápido”.

Las etapas principales de los sistemas difusos son: el procedimiento de “codificación difusa” o fusificación y el procedimiento de “decodificación difusa”, también conocido como defusificación. (1) La codificación difusa consiste en la traducción de valores del mundo real al ambiente difuso mediante el uso de funciones de pertenencia. Por ejemplo, si se tiene un paciente con fiebre, es posible plantearse a partir de qué temperatura empieza a tener fiebre. En este contexto es más realista plantear un modelo en el que la situación de fiebre no se restringe sólo a dos valores, hay fiebre o no hay fiebre, sino que se tiene todo un rango de temperaturas posible. Por consiguiente, la primera etapa de tratamiento de un problema para la lógica difusa consiste en modelar cada una de las entradas del sistema con curvas que proporcionen los grados de pertenencia a los diferentes estados identificados anteriormente. Después de realizar la codificación difusa de las variables de entrada y de salida, es necesario establecer reglas que relacionen las entradas con las salidas. Para operar con los conjuntos difusos es necesario definir las operaciones elementales entre ellos. Esto implica definir el modo de calcular las funciones de pertenencia a estos tres conjuntos, intersección o mínimo, unión o máximo y complemento. (2) Después de calcular las reglas difusas y evaluar las variables difusas se necesita trasladar estos valores nuevamente hacia el mundo real. El método más popular de decodificación difusa es el cálculo del centro de gravedad ó centroide, el cual retorna el centro del área bajo la curva.

Los sistemas difusos han demostrado su habilidad para resolver diferentes tipos de problemas tales como control, modelado o clasificación. Asimismo, han sido empleados en un amplio rango de aplicaciones, por ejemplo, procesamiento de señales e imágenes, evaluación de riesgos, recuperación de información, procesos industriales, etc. En muchos de los casos, la clave del éxito era la incorporación del conocimiento experto humano. Sin embargo, muchas de las investigaciones realizadas en el campo durante los años 1990 no contienen capacidad de aprendizaje y adaptación. En la última década, ha existido un gran interés en incluir capacidad de aprendizaje a los sistemas difusos. Esto se ha logrado por medio del desarrollo de técnicas híbridas que incluyen los sistemas difusos junto con técnicas complementarias como lo son las redes neuronales, los algoritmos evolutivos o los métodos probabilísticos.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Noviembre 29 de 2010

viernes, 10 de diciembre de 2010

Sistemas multiagente

Los sistemas de información actuales se encuentran en pleno proceso de cambio, cuyo principal motor de transformación, en esta primera década del siglo veintiuno, ha sido y sigue siendo Internet, desde las primeras páginas Web estáticas hasta los actuales servidores de aplicaciones, integrados en portales corporativos, se ha recorrido un largo camino en el que han nacido numerosas tecnologías de lenguajes y plataformas, cada vez mejor integradas con el resto de los sistemas de información empresariales para ofrecer a las personas nuevos servicios a través de la red. Y la revolución continúa. Todavía una gran parte de los sistemas de información siguen siendo sistemas legados, propietarios, cuyos costos de integración y de mantenimiento son muy elevados. Los factores de cambio derivados de Internet son varios. En primer lugar, los protocolos de Internet se han introducido en las redes dentro de la empresa, y cada vez es más usual la sustitución de aplicaciones cliente-servidor clásicas por aplicaciones Web sobre redes internas o intranets, con el ahorro en costos de integración y mantenimiento que conllevan. En segundo lugar, los estándares recientes relativos a los servicios Web y el Lenguaje de Modelado Extendido, permiten la realización de transacciones entre plataformas tecnológicas heterogéneas a través de Internet. Otro factor importante que impulsará el desarrollo de los futuros sistemas de información es la Web semántica que, apoyada en los lenguajes de descripción de ontologías, impulsarán significativamente el acceso y procesamiento de los contenidos de Internet por las aplicaciones, y su integración en el nivel semántico.

La evolución de los sistemas informáticos para resolver nuevas necesidades, aprovechando la disponibilidad de equipos cada vez más potentes, conlleva el desarrollo de aplicaciones cada vez más complejas. En esta evolución, el esfuerzo de desarrollo no puede aumentar de forma proporcional a la complejidad del software producido. Es por ello que la ingeniería del software se enfrenta al problema de construir software cada vez más complejo con unos recursos productivos limitados, mediante la utilización de paradigmas cada vez más abstractos. De este modo, en la historia de la informática se han sucedido constantemente cambios de paradigmas de programación, desde la electrónica al ensamblador, de aquí a la programación simbólica y la descomposición funcional y más recientemente a la orientación a objetos y servicios. Existe un esfuerzo creciente en la elaboración de estándares que permitan utilizar internet como infraestructura para la comunicación de sistemas ad-hoc. Los lenguajes semánticos, el Lenguaje de Modelado Extendido o los estándares de Servicios Web son algunos ejemplos.

Sistemas complejos, entornos abiertos y una necesidad creciente de abstracción para construir software a un costo razonable son requisitos que el paradigma de orientación a agentes resuelve mediante un modelo donde el control y la información están distribuidos en entidades autónomas, proactivas y deliberativas, capaces de colaborar y de organizarse. Los agentes son, en definitiva, una solución adecuada para aplicaciones descentralizadas, mal estructuradas, cambiantes y complejas.

Al interior de la inteligencia artificial, la inteligencia artificial distribuida se define como “el campo de la inteligencia artificial que se centra en los comportamientos inteligentes colectivos que son producto de la cooperación de diversas entidades denominadas agentes”. Dentro de la inteligencia artificial distribuida se pueden considerar tres ramas: (1) Inteligencia artificial distribuida “clásica”, estudia la conducta colectiva, a diferencia de la inteligencia artificial, que estudia la conducta individual. Se pueden diferenciar dos áreas de investigación: la resolución cooperativa de problemas distribuidos y los sistemas multiagente. La diferencia entre ambas es de flexibilidad, en la resolución de problemas distribuidos las tareas e interacciones están prefijadas según un plan centralizado. Se abordan los temas de: Descripción, descomposición y asignación de tareas; Comunicación; Coordinación; Resolución de conflictos. (2) Inteligencia artificial distribuida “autónoma”, estudia los agentes individuales en un mundo social. Se ocupa de la perspectiva interna del agente y engloba: Teoría de agentes; Propiedades, caracterización, taxonomía; Arquitecturas de agentes; Lenguajes de agentes. (3) Inteligencia artificial distribuida “comercial”, se centra en la aplicación de la inteligencia artificial distribuida clásica y autónoma, desarrollando agentes software que están siendo explotados de forma comercial.

El dominio del sistema multiagente o de inteligencia artificial distribuida es una ciencia y una técnica que trata con los sistemas de inteligencia artificial en red. El bloque fundamental de construcción de un sistema multiagente, como es de esperarse, son los agentes. Los agentes, por lo general, son vistos como entidades inteligentes, equivalentes en términos computacionales a un proceso del sistema operativo, que existen dentro de cierto contexto o ambiente, y que se pueden interrelacionar a través de un mecanismo de comunicación inter-proceso, usualmente un sistema de red, utilizando protocolos de comunicación. En cierto modo, un sistema multiagente es un sistema distribuido en el cual los nodos o elementos son sistemas de inteligencia artificial, o bien un sistema distribuido donde la conducta combinada de dichos elementos produce un resultado en conjunto inteligente.

En el intento de establecer algunas definiciones puntuales se dice que: “Un agente es un sistema de computación que es capaz de una acción independiente en beneficio de su usuario o propietario y que en lugar de que se le esté diciendo constantemente lo que necesita hacerse para satisfacer los objetivos diseñados, lo encuentra por sí mismo”. Del mismo modo: “Un sistema multiagente es uno que consiste de un número de agentes que interactúan entre sí. En la mayoría de los casos, los agentes estarán actuando a favor de usuarios con diferentes metas y motivaciones. Para interactuar con éxito, requieren la capacidad de cooperar, coordinar y negociar entre sí, tal como lo hacen las personas. Las características principales de los sistemas multiagente son las siguientes: (1) Poseen un número de agentes superior a uno. (2) Estos agentes son autónomos, distribuidos, heterogéneos, individualistas o cooperativos. (3) Los agentes tienen información incompleta, o capacidades limitadas para resolver problemas. (4) Son abiertos y sin un diseño centralizado. (5) El sistema no tiene un control global. (6) Los datos son descentralizados. (7) La computación es asíncrona. (8) Su infraestructura posee protocolos de comunicación e interacción.

Se debe notar que los agentes no son necesariamente inteligentes. Existen como en todo el resto del dominio de la inteligencia artificial, dos enfoques para construir sistemas multiagentes: (1) El enfoque formal o clásico, que consiste en dotar de los agentes de la mayor inteligencia posible utilizando descripciones formales del problema a resolver y de hacer reposar el funcionamiento del sistema en tales capacidades cognitivas. Usualmente la inteligencia es definida utilizando un sistema formal, como los sistemas de inferencia lógica, para la descripción, raciocinio, inferencia de nuevo conocimiento y planificación de acciones a realizar en el medio ambiente. (2) El enfoque constructivista, que persigue la idea de brindarle inteligencia al conjunto de todos los agentes, para que a través de mecanismos ingeniosamente elaborados de interacción, el sistema mismo genere comportamiento inteligente que no necesariamente estaba planificado desde un principio o definido al interior de los agentes mismos. Este tipo de conducta es habitualmente denominada comportamiento emergente.

El año 2008, se celebraron los 30 años de investigación en sistemas multiagente en la Universidad de Massachussets Amherst. En un artículo relacionado sobre los aportes de esa universidad a este tema se presentan también las tendencias actuales de investigación que se encuentran centradas principalmente en: (1) Organizaciones / empresas de Agentes virtuales de miles de agentes: cómo se ensamblan ellos; como se determina y evoluciona su estructura; cómo se diseñan e integran las organizaciones; y cómo construir agentes situados organizacionalmente. (2) Comprensión de las relaciones entre la coordinación de agentes cooperadores versus agentes auto-interesados. (3) Cómo pueden interactuar las diferentes representaciones de las actividades del agente para adaptar sus estrategias y políticas a las necesidades de otros niveles. (4) Cómo pueden adaptarse desde una perspectiva de largo plazo, cuáles son los mecanismos de aprendizaje en un contexto multiagente. (5) Cómo se origina la conducta emergente. (6) Cómo desarrollar una visión integrada de satisfacción que tome en cuenta la solución de problemas aproximada, la comunicación parcial y abstracta de los resultados y la coordinación aproximada. (7) Cómo caracterizar las interdependencias entre las actividades de los agentes y relacionar esa caracterización a la satisfacción adecuada del protocolo de coordinación multiagente, tomando en cuenta las limitaciones de recursos y los criterios de utilidad.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Noviembre 22 de 2010

jueves, 9 de diciembre de 2010

Representación del conocimiento

La noción de representación implica la existencia de dos mundos relacionados pero funcionalmente separados: el mundo representado y el mundo de representación. La función del mundo de representación es la de preservar información sobre el mundo representado. Resulta claro que no todos los aspectos del mundo representado necesitan ser modelados en todo momento, y que la cantidad de información necesaria depende de la tarea que se realiza. El concepto de representación incluye un componente operacional, puesto que son los procesos de interpretación, en un sentido amplio, los que determinan, de manera funcional, la utilidad de las relaciones existentes entre los objetos. El investigador Freksa y sus colegas acuñaron la siguiente ecuación para captar la interacción entre los componentes de una estructura de representación: “Conocimiento = Datos + Interpretación”, donde datos refleja el aspecto estático e interpretación el aspecto dinámico de la representación, cuyo efecto es el de transformar los datos en conocimiento. Aquí cabe notar que la noción de interpretación está íntimamente ligada con la de tarea, es decir, la representación que se hace del conocimiento disponible tiene que estar directamente relacionada con el uso que se hace de tal información. Además, debe existir un balance entre el poder expresivo y la computabilidad de estos formalismos de representación.

La naturaleza de la representación es tal, que existe una correspondencia entre objetos en el mundo de representación y el mundo representado, de forma que al menos ciertas relaciones en el mundo representado quedan preservadas estructuralmente en el mundo de la representación. Cualquier sistema de representación del conocimiento debe contemplar cinco aspectos: (1) El mundo representado. (2) El mundo de representación. (3) Los aspectos del mundo representado que son modelados. (4) Los aspectos del mundo de representación que realizan el modelado, y (5) Las correspondencias entre ambos mundos. Las estructuras formadas por ((1), (3)) y ((2), (4)) son denominadas cuerpos de conocimiento. Por consiguiente, el desarrollo de un sistema de representación del conocimiento coincide con la naturaleza de las relaciones que existen entre dos cuerpos de conocimiento, dado que uno es representación del otro. La separación de estas entidades permite su exacta definición y su estudio. Las correspondencias entre estados de pares de objetos, en ambas estructuras, son el conjunto mínimo de relaciones que han de conservarse a pesar de cualquier posible transformación relevante que sufra un cuerpo de conocimiento.

Cualquier modelo de representación del conocimiento incluye de una manera u otra el hecho de que una entidad esté compuesta por distintos elementos de diversos tipos. Este encapsulamiento puede verse como estructuras dentro de otras estructuras, o mediante la jerarquización por medio de relaciones entre distintas estructuras que se contienen unas a otras. En este sentido, la relación es-un ha sido de temprana aparición en los trabajos que utilizan técnicas de inteligencia artificial. Sin embargo, también de manera temprana, surgió la necesidad de otras relaciones, como tiene-un. En los sistemas de representación del conocimiento existen diferencias en función del tipo de conocimiento con el que se esté trabajando. Estas diferencias están íntimamente ligadas a la distinción entre hechos extralingüísticos y hechos lingüísticos, entre lenguaje y pensamiento y entre entidad y evento. Así se puede encontrar modelos de representación que se centran en estructuras de pensamiento, independientemente de la realización lingüística de ese pensamiento y también se puede encontrar sistemas que representan el léxico de una lengua y aunque utilizan herramientas de psicolingüística para la clasificación del léxico, distinguen entre lenguaje y pensamiento y tienden a representar el primero. Aquí subyace la diferencia entre concepto y denotación.

De manera general se pueden distinguir los siguientes modelos dependiendo de la representación del conocimiento de la que se trate: (1) Sistemas de representación de conocimiento general, (1a) de unidades de conceptos, conocimiento de unidades enciclopédicas, (1b) de predicados de conceptos, conocimiento de hechos enciclopédicos, (1c) de guiones o situaciones de conceptos, conocimiento de estructuras enciclopédicas. (2) Sistemas de representación de conocimiento específico, (2a) de unidades de conceptos, sistemas expertos de conceptos, (2b) de predicados de conceptos, sistemas expertos de hechos, (2c) de guiones o situaciones de conceptos, sistemas expertos de estructuras de hechos y conceptos. (3) Sistemas de representación de conocimiento léxico general, (3a) de unidades léxicas, redes semánticas, (3b) de predicados léxicos, redes semánticas y análisis sintáctico-semántico, (3c) de guiones o situaciones léxicas, redes semánticas y análisis sintáctico-semántico y pragmático. (4) Sistemas de representación de conocimiento léxico específico, (4a) de unidades terminológicas, bases terminológicas, (4b) de predicados, sistemas expertos, (4c) de guiones o situaciones, sistemas expertos.

Además, se tiene que distinguir también entre conocimiento y razonamiento, ya que el primero está ligado a los sistemas de representación y almacenamiento de la información y el segundo a la recuperación, conexión e inferencias y cálculos hechos con esa información, creando información nueva. A priori, cualquier sistema de representación del conocimiento ha de servir para realizar tareas de razonamiento.

Un sistema experto se compone de una base de conocimiento del dominio en cuestión, mecanismos de razonamiento para aplicar conocimiento a los problemas que se proponen, mecanismos para explicar a los usuarios el razonamiento utilizado a la hora de ofrecer una respuesta y mecanismos de aprendizaje y adquisición de nuevo conocimiento. Para crear una base de conocimiento es necesario contar con al menos un experto humano del dominio en cuestión. Se puede adquirir conocimiento a partir de entrevistas ó mediante interfaces amigables. Pero también es muy importante un adecuado modelado del conocimiento. Algunos de los mecanismos de representación del conocimiento más utilizados son: lógica, redes, marcos y reglas; no obstante, lo más utilizado es una adecuada combinación de marcos y reglas. Es posible representar el conocimiento mediante hechos o instancias y reglas ó algún otro mecanismo para inferir nuevos hechos. Pero debe plantearse si a partir de los hechos es posible ir aplicando reglas como el encadenamiento hacia adelante, ó si por el contrario interesa responder a una cuestión concreta e ir satisfaciendo sub objetivos hasta llegar a hechos que demuestren la veracidad ó falsedad de la frase, tal como sucede con el encadenamiento hacia atrás.

Para desarrollar un sistema experto primero es necesario abordar un área de interés, dentro de esta área se seleccionan a los expertos, que son los especialistas capaces de resolver los problemas en dicha área. Ahora bien, casi siempre estos especialistas, son expertos en un dominio específico y es sobre este dominio, donde poseen su mayor experiencia, es decir el dominio de experticia. Una vez seleccionado al experto o a los expertos y estos estén de acuerdo en dar sus conocimientos, comienza a jugar su papel el “ingeniero del conocimiento”, que es el encargado de extraer los conocimientos al experto y darle una representación adecuada, ya sea en forma de reglas u otro tipo de representación, conformando así la base de conocimientos del sistema experto. Las formas tradicionales de representación de conocimiento son: (1) Reglas de producción, (2) Redes semánticas, (3) Armazones. La forma de representación más usada es por reglas de producción, también llamadas reglas de inferencias. La mayor parte de los sistemas expertos están basados en este tipo de representación.

Existen muchos esquemas para representar el conocimiento; pero todos ellos tienen dos características en común. La primera es que pueden ser programados en un lenguaje de programación y almacenadas en memoria. La segunda es que están diseñados para ser manipulados por un interface u otro programa. Los sistemas de interface utilizan técnicas de búsqueda y de reconocimiento de patrones para contestar preguntas, deducir conclusiones, realizar argumentaciones y otras funciones de tutoría inteligente. Algunos de los sistemas utilizados para representar el conocimiento son: (1) Lógica. Es la técnica más antigua de representar el conocimiento. Un proceso lógico consiste en realizar inferencias, conclusiones, a partir de unas premisas. Existen dos tipos de razonamiento: razonamiento inductivo y razonamiento deductivo. Para poder representar el conocimiento y realizar razonamiento inductivo o deductivo se usan los métodos conocidos como lógica computacional. (2) Listas y arboles. Son estructuras más simples, usadas para representar de forma jerárquica el conocimiento. Una lista es un conjunto de ítems relacionados. Los ítems se dividen grupos o clases. Los grupos se relacionan entre sí, dando lugar a una jerarquía. Los árboles son una representación gráfica de las listas. (3) Redes semánticas. Una red semántica está hecha de nodos, que representan objetos e información de esos objetos, aunque también pueden ser conceptos, eventos o acciones. Los nodos están conectados por o arcos que describen la relación. (4) Armazones. Son bloques relativamente grandes de conocimiento sobre un objeto, un evento un lugar, una situación u otro elemento. Los armazones se usan normalmente para representar experiencias estereotipadas. Por ejemplo, las características de un coche o las clases de animales. Con armazones es fácil realizar inferencias sobre nuevos objetos. (5) Guiones. Es un esquema de representación del conocimiento similar al armazón, pero en lugar de la descripción del objeto, en el guión se describe una secuencia de eventos. Para describir la secuencia de eventos se utilizan una serie de ranuras que contienen información sobre: personas, objetos y acciones que tienen que ver con el evento. (6) Reglas de producción. Las reglas relacionan el antecedente con el consecuente en expresiones del tipo “Si antecedente entonces consecuente”.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Noviembre 15 de 2010

viernes, 3 de diciembre de 2010

Filosofía de la inteligencia artificial

Thomas Hobbes
Tomando las palabras de John Haugeland, se puede establecer el árbol de familia de la inteligencia artificial mencionando que Hobbes fue el “abuelo”, Turing fue “el padre” y McCarthy “el padrino”. Thomas Hobbes en su libro “Elementos de la Filosofía” menciona explícitamente que: “por razonamiento quiero decir computación”. Y acto seguido caracteriza al razonamiento como discurso mental. Con ambas aseveraciones Hobbes estableció que el razonamiento sigue reglas metódicas, y que el discurso mental es un proceso interno, con lo que se sienta las bases de lo que siglos más tarde serán las ciencias cognitivas, tanto de la psicología cognitiva como de la inteligencia artificial. Por tanto dos ideas básicas de las ciencias cognitivas pueden remontarse a Hobbes: (1) El pensamiento es un discurso mental. Donde pensamiento coincide con razonamiento, en un sentido restringido del término pensamiento, y es concebido como un proceso interno. (2) El razonamiento sigue reglas metódicas o algoritmos. Alan Turing fue el primer autor que teorizó acerca de la computación en máquinas, y fue John McCarthy quien acuñó el término “inteligencia artificial.”

La inteligencia artificial es una rama de la ciencia de la computación que se caracteriza por estudiar el diseño y la construcción de máquinas inteligentes capaces de realizar tareas tales que cuando las realiza un ser humano se las atribuye a su inteligencia, como por ejemplo jugar al ajedrez, demostrar teoremas lógicos o matemáticos y realizar diagnósticos médicos. La inteligencia artificial es un campo interdisciplinar donde trabajan lógicos, matemáticos, físicos e ingenieros del software entre otros. Además la inteligencia artificial rompe todos los esquemas ya que es una ciencia y una tecnología a la vez. Alonso Church, en 1936, publicó “un problema irresoluble de la teoría de números elemental”, artículo en el que quiso demostrar que la aritmética es indecidible, o sea, que no existe ningún algoritmo para saber si una expresión aritmética es verdadera. De pasada, en la tesis de Church, identificó lo efectivamente calculable con lo recursivo. Las funciones que pueden ser computadas mediante un algoritmo finito son efectivamente las funciones recursivas. Lo curioso de la tesis de Church es que aunque no se ha conseguido demostrar nunca, tampoco se ha podido presentar nunca una función calculable que no sea recursiva.

Durante más de dos mil años de tradición en filosofía, han ido surgiendo diversas teorías del razonamiento y del aprendizaje, simultáneamente con el punto de vista de que la mente se reduce al funcionamiento físico. La psicología ofrece herramientas que permiten la investigación de la mente humana, así como un lenguaje científico para expresar las teorías que se van obteniendo. La lingüística ofrece teorías para la estructura y significado del lenguaje, así como la ciencia de la computación, de la que se toman las herramientas que permiten que la inteligencia artificial sea una realidad.

Empezó con el nacimiento de Platón en el año cuatrocientos veintiocho antes de Cristo y con lo que aprendió de Sócrates. La temática de su obra fue muy diversa: política, matemática, física, astronomía y diversas ramas de la filosofía. El filósofo Hubet Dreyfus (1979) afirma que: “Bien podría afirmarse que la historia de la inteligencia artificial comienza en el año cuatrocientos cincuenta antes de Cristo., cuando Platón cita un diálogo en el que Sócrates le pregunta a Eutidemo: Desearía saber cuál es la característica de la piedad que hace que una acción se pueda considerar como pía... y así la observe y me sirva de norma para juzgar tus acciones y las de otros.” Los filósofos delimitaron las más importantes ideas relacionadas con la inteligencia artificial, pero para pasar de allí a una ciencia formal era necesario contar con una formalización matemática en tres áreas principales: la computación, la lógica y la probabilidad. La idea de expresar un cálculo mediante un algoritmo formal se remonta a la época de Jwarizmi, matemático árabe del siglo nueve, con cuyas obras se introdujeron en Europa los números arábigos y el álgebra, entre otras cosas de su nombre al-Jwarizmi deriva la palabra algoritmo.

La inteligencia artificial surge como una reacción ante la cibernética. Los pioneros del nuevo enfoque investigativo, se proponen la creación de una ciencia en sí misma, sustentada sobre sus propias leyes, y se plantean como objetivo principal el desarrollo de programas computacionales capaces de exhibir una conducta inteligente. La inteligencia artificial continuó con los intentos de formalizar sus teorías y con la creación de un aparato matemático propio. A nivel experimental se propuso la utilización de las computadoras como laboratorio donde poder comprobar la eficacia de sus hipótesis. Pero en su afán de convertirse en una ciencia endógena, no dependiente de leyes externas, abandonó la analogía como método de investigación y tuvo inexorablemente que recurrir al reduccionismo que en su versión fuerte fue el intento de reproducir la mente humana en una computadora.

Al principio de los estudios sobre inteligencia artificial, se insistía en la semejanza entre el hardware y el cerebro. De hecho, la realización y el perfeccionamiento de las computadoras numéricas partieron de analogías con el sistema nervioso. John von Neumann solía hablar de “órganos” para referirse a los componentes de la computadora. La idea popular de la computadora como “cerebro electrónico” viene de este tipo de enfoque. Con la llegada de los primeros lenguajes de programación evolucionados y posteriormente con la aparición de la inteligencia artificial, las comparaciones con el hardware empezaron a tener menos aceptación.

La inteligencia artificial se divide en dos grupos: (1) Inteligencia artificial fuerte. Cuyo objetivo es construir programas que emulen el comportamiento inteligente de los humanos como el pensamiento, el aprendizaje, la visión, la resolución de problemas, la creatividad, etc., debido a que estos modos de comportamiento se pueden explicar algorítmicamente en términos de estados mentales. (2) Inteligencia artificial débil. La cual tiene un objetivo que tiene que ver con construir máquinas capaces de resolver problemas que requieran de inteligencia. Para ello se construyen programas computacionales que tengan un comportamiento inteligente sin importar si emula o no a la inteligencia humana. La idea de una inteligencia artificial fuerte ha sido el sueño de casi todos los investigadores de ese campo, pero uno de sus puntos débiles es que aun aceptando que la mente puede ser reproducida en otro medio, ese medio que hace de receptor debe tener un mínimo de equivalencia, no sólo funcional, con el donador. Equivalencia que no parece existir entre la estructura del cerebro y la arquitectura de la computadora, llamada de Von Neumann, que ha sido tildada de ineficiente por muchos, debido a su procesamiento secuencial y al manejo de símbolos numéricos. Lo cual obligó a los programadores a elaborar meta sistemas que se soporten sobre otros sistemas más cercanos a la maquina con el fin de resolver los problemas de la arquitectura de la computadora.

La inteligencia artificial acepta la dualidad cuerpo mente, y también parte de la suposición de un soporte físico: el cerebro, el cual es “funcionalmente” igual a una máquina y el objetivo es reproducir la mente sobre la computadora. Por otra parte se afirma que la inteligencia artificial se fundamenta sobre el materialismo. La inteligencia humana se hace realidad sobre la materia, es decir sobre el cerebro. Si se parte de la base de que los pensamientos se generan en un alma inmaterial y que su relación con el cerebro es incidental, entonces se está negando la posibilidad de lograr alguna forma de inteligencia artificial. Dicho de otra forma el dualismo en filosofía supone que el alma es independiente del cuerpo, cuando muere el cuerpo el alma sigue viva. En el caso de la computadora se puede desechar físicamente la misma pero los programas se pueden usar en otra. Lo cual conduce a la necesidad de considerar que la mente es independiente del cerebro y que la misma puede ser traspasada para otro cerebro o para otro substrato equivalente.

La dificultad radica en que si se acepta el dualismo filosófico se debe también aceptar el idealismo. La pregunta sería: ¿si se acepta el dualismo mente cuerpo se tendría entonces una mente que existe independiente del cerebro o sea el alma? Pero, entonces, los pensamientos se generarían sobre un alma inmaterial, por lo que, no necesitarían de ningún soporte físico, llámese cerebro o llámese computadora. De ahí que la inteligencia artificial tenga que hacer una adaptación y proponer un “dualismo materialista” y afirmar categóricamente que la inteligencia humana se hace realidad sobre la materia. Los que piensan que producto de la crisis filosófica de la inteligencia artificial, ha surgido una segunda línea que se fundamenta en la creación de programas inteligentes, capaces de dar solución a problemas que hasta ahora se consideraban que sólo los humanos podían resolver, sin preocuparse si estos programas simulan o no la forma en que los humanos piensan, se equivocan. Esta línea ya desde los años sesenta fue planteada por muchos investigadores de la inteligencia artificial, los que se dedicaron a desarrollar métodos computacionales que permitieran la resolución de problemas basándose más bien en las posibilidades de la heurística y de los lenguajes de programación.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Noviembre 8 de 2010

jueves, 2 de diciembre de 2010

Gobierno electrónico

El cambio tecnológico que se expande transformando las diversas dimensiones de la actividad humana tiene el potencial de revolucionar también al Estado. La infraestructura moderna de telecomunicaciones y tecnologías de la información y las nuevas teorías de gestión proveen los medios para la cooperación a distancia entre los ciudadanos, las empresas y la administración pública. Mucho se ha hablado acerca de la democratización de la información y el impacto de las nuevas tecnologías, pero poco se ha construido para aprovechar los nuevos recursos técnicos a fin de acercar el Estado al ciudadano, reduciendo drásticamente el tiempo y los espacios que tradicionalmente los han separado. Las nuevas tecnologías, en particular Internet, integradas y complementando a las restantes tecnologías informáticas que por muchos años se vienen utilizando en los organismos del Estado para hacer más eficientes los procesos y brindar mejores servicios, permitirán proporcionar, en un relativo corto plazo, una nueva dimensión a la forma con la cual el Estado se relaciona con la sociedad y la comunidad. La incorporación de estas nuevas tecnologías en el Estado permitirá el quiebre del marco espacial y temporal tradicional, lo que otorgará mayor accesibilidad y rapidez a la información a un menor costo, con mayor seguridad y rigor informativo y por sobre todas las cosas brindará la posibilidad de una mejor y más democrática atención a los ciudadanos. Estos objetivos no se cumplen cuando una pequeña proporción de la población tiene acceso a estas tecnologías, por lo que el éxito del Gobierno Electrónico está íntimamente asociado a las políticas nacionales que buscan asegurar el acceso a estas tecnologías a la mayor cantidad posible de ciudadanos, independientemente de si viven en grandes ciudades o pequeños pueblos y de sus condiciones económicas o políticas.

El e-gobierno o gobierno electrónico consiste en el uso de las tecnologías de la información y el conocimiento en los procesos internos de gobierno y en la entrega de los productos y servicios del Estado tanto a los ciudadanos como a la industria. Muchas de las tecnologías involucradas y sus implementaciones son las mismas o similares a aquéllas correspondientes al sector privado del comercio electrónico, mientras que otras son específicas o únicas en relación con las necesidades del gobierno. Se basa principalmente en la implantación de herramientas como portales, como redes sociales o comunidades virtuales y muchas otras, buscando una mejora en la eficiencia y eficacia de los procesos internos y de vinculación con la sociedad. En este contexto el Banco Mundial define al gobierno electrónico como “los sistemas de información y las tecnologías de información y comunicaciones de los gobiernos, que transforman las relaciones con los ciudadanos, el sector privado y otras agencias estatales para promover el crecimiento del ciudadano, mejorar la entrega de los servicios, consolidar responsabilidades, aumentar la transparencia, y mejorar la eficacia del gobierno".

El gobierno electrónico también fomenta una participación más amplia de los ciudadanos en el proceso y gestión de los gobiernos locales. Además, puesto que se apoya en la transparencia, constituye la herramienta más eficaz en la lucha contra la corrupción. Un elemento estratégico para el desarrollo de los países radica en la eficiencia con que se llevan a cabo los servicios que ofrece el gobierno a los diferentes sectores de la sociedad y su capacidad de interacción con los ciudadanos. Los países desarrollados están resolviendo buena parte de los problemas de funcionamiento de sus gobiernos mediante la incorporación masiva de las nuevas tecnologías de la información y comunicación, para mejorar los procesos internos de toma de decisiones y para mejorar la relación con la ciudadanía. El uso de las tecnologías de la información y comunicación permite que el gobierno torne a ser más eficaz y eficiente, proporciona servicios de más calidad y fácil acceso, estimula la actividad económica, sirve como apoyo en la difusión de programas y rendición de cuentas, sirve como guía de autogestión al ciudadano, incrementa la comunicación tanto al interior como al exterior del gobierno, genera certidumbre y confianza en el gobierno, informa a la población y crea un ambiente que facilita la participación.

El gobierno electrónico se refiere al uso por parte de las agencias gubernamentales de las tecnologías de la información, que tienen la capacidad de transformar las relaciones con el ciudadano, las empresas y otras agencias gubernamentales y engloba por lo menos los siguientes elementos: (1) Está relacionado con la aplicación de las tecnologías de la información y la comunicación. (2) Implica innovación en las relaciones internas y externas del gobierno; otras agencias gubernamentales, sus propios empleados, las empresas y el ciudadano. (3) Afecta la organización y función de gobierno en lo relativo al acceso a la información, la prestación de servicios, la realización de trámites y la participación ciudadana. (4) Busca optimizar el uso de los recursos para el logro de los objetivos gubernamentales. (5) Su implementación implica el paso por una serie de estados, no necesariamente consecutivos. (6) Es un medio, no un fin en sí mismo. Los gobiernos juegan cada vez más un papel principal en demostrar las ventajas de la provisión de servicios electrónicos, es fundamental el mejoramiento del enfoque al cliente y los servicios, concentrando recursos en áreas críticas y esenciales, aumentando la competitividad en el mercado.

El concepto de gobierno electrónico incluye todas aquellas actividades basadas en las modernas tecnologías informáticas, en particular Internet, que el Estado desarrolla para aumentar la eficiencia de la gestión pública, mejorar los servicios ofrecidos a los ciudadanos y proveer a las acciones del gobierno de un marco mucho más transparente que el actual. Estas actividades cubren aspectos internos de la gestión de los organismos públicos, la difusión masiva de la información sobre los actos del gobierno, así como la prestación de más y mejores servicios a los administrados. La “despapelización” de la administración pública, el acceso remoto a los servicios de las oficinas públicas las veinticuatro horas de los trescientos sesenta y cinco días del año o el desarrollo de portales que brinden un mejor y más rápido acceso a la información, son sólo algunos de los ejemplos de actividades asociadas al concepto de gobierno electrónico.

La implementación de las nuevas tecnologías en el marco del gobierno electrónico, requiere necesariamente el reconocimiento de las particularidades de la gestión pública. El Estado es la mayor organización proveedora y receptora de información, sus servicios son monopólicos, no existen incentivos para el desarrollo de estrategias innovadoras que capturen un mayor número de usuarios, estos usuarios son siempre cautivos y los organismos públicos no pueden seleccionar sus “clientes”. Por otro lado, los servicios que prestan deben ser accesibles a toda la población, especialmente a aquellos sectores desfavorecidos y todos sus actos son esencialmente públicos. Asimismo, la seguridad y la confianza deben necesariamente ser una preocupación constante del gobierno, razón por la cual la autenticación, integridad y disponibilidad y, muchas veces, la confidencialidad de la información que maneja el Estado debe estar garantizada. Pero las presiones sobre los organismos públicos para mejorar los servicios y sobre el sector público en general, para aumentar su eficiencia son cada vez mayores y en ese marco, las nuevas tecnologías de la información juegan un rol fundamental. La reinvención del gobierno puede ser hoy una realidad de la mano de Internet y sus tecnologías asociadas.

Los rasgos básicos del gobierno electrónico son los siguientes: (1) Fácil de usar, conectando a la gente a los distintos niveles de gobierno nacional e internacional, de acuerdo a sus preferencias y necesidades. (2) Disponible y de acceso universal, en la casa, el trabajo, los centros educativos, las bibliotecas y otras localidades apropiadas a cada comunidad. (3) Privacidad y seguridad, además de autenticación, que generen confianza. (4) Innovador y enfocado a resultados, enfatizando velocidad y capacidad de absorber o adaptar avances tecnológicos. (5) Colaboración, con soluciones desarrolladas entre aliados públicos, privados, no-gubernamentales y centros de investigación. (6) Optimo en costos y beneficios, a través de una estrategia de inversión que produzca ahorros, ganancias, y beneficios a largo plazo. (7) Transformacional, fomentando tecnología a través de liderazgo personal y organizacional para cambiar la forma de hacer gobierno, y no solo automatizando las prácticas y procesos existentes.

Los gobiernos se encuentran bajo una creciente presión para prestar mejores servicios. La mayoría de los ciudadanos no disfruta hacer “colas” para ser atendido, demandar información sin resultados o concurrir varias veces a la misma dependencia pública. Por otro lado, a medida que se familiariza con la calidad de servicio ofrecida por el sector privado, su enojo ante la “ineficiencia” del Estado aumenta notablemente y su convicción sobre el uso inadecuado de los escasos recursos públicos aumenta. Si las últimas tecnologías están disponibles no solo para el sector privado, sino también para el sector público, la pregunta es porqué no ofrecer también desde este ámbito, servicios veinticuatro horas al día los trescientos sesenta y cinco días del año, trámites ágiles, atención personalizada y focalizada en el pueblo, fácil acceso a trámites, a datos personales, etc.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Noviembre 1 de 2010

viernes, 26 de noviembre de 2010

Tecnología estratificada

El software de la computadora, se ha convertido en el alma mater. Es la máquina que conduce a la toma de decisiones comerciales. Sirve como la base de investigación científica moderna y de resolución de problemas de ingeniería. Es el factor clave que diferencia los productos y servicios modernos. Está inmerso en sistemas de todo tipo: de transportes, médicos, de telecomunicaciones, militares, procesos industriales, entretenimientos, productos de oficina, etc., la lista es casi interminable. A medida que transcurra el siglo veintiuno, será uno de los pilares que conduzca a grandes cambios, desde la educación elemental hasta la ingeniería genética.

Según la definición del Instituto de Ingenieros Eléctricos y Electrónicos, “software es la suma total de los programas de computadora, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo”. Según la misma organización, “un producto software es un producto diseñado para un usuario.” En este contexto, la ingeniería del software es un enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software”, que en palabras más llanas, se considera que “la ingeniería del software es la rama de la ingeniería que aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones costo-efectivas, eficaces en costo o económicas, a los problemas de desarrollo del software”, es decir, “permite elaborar consistentemente productos correctos, utilizables y costo-efectivos”.

El proceso de ingeniería del software se define como “un conjunto de etapas parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la obtención de un producto software de calidad”. El proceso de desarrollo del software “es aquel en que las necesidades del usuario son traducidas en requerimientos del software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo”. Concretamente “define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo”. El proceso de desarrollo del software requiere por un lado un conjunto de conceptos, una metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del software que comprende cuatro grandes fases: concepción, elaboración, construcción y transición.

En la actualidad cada vez son más complejos los problemas que buscan una solución en el software. Dicha complejidad ha sobrepasado la habilidad de desarrollar y mantener el software por parte de las organizaciones que se dedican a esta actividad, por lo que las empresas desarrolladoras de software necesitan lograr una evolución hacia la cultura de excelencia en la ingeniería y la administración del software, para ser capaces de desarrollar y entregar software confiable, a tiempo y apegado al presupuesto acordado con el cliente, además los clientes quieren saber con certeza que todo acuerdo se cumplirá. Por esta razón, ya no sólo basta medir la calidad del producto terminado sino también, medir la calidad del proceso en el que se desarrolla el producto.

Lo anterior conduce a definir el término calidad del software, que para el “Instituto de Ingenieros Eléctricos y Electrónicos” es: “El grado en que un sistema, componente o proceso cumple con los requerimientos especificados y las necesidades del cliente o el usuario”. De acuerdo al investigador Tom DeMarco, en una definición establecida el año 1982, la calidad del software está directamente relacionada con su proceso de desarrollo, considera que un proceso bien conocido y ampliamente utilizado, sustentado en medición y predicción de eventos, permite controlar en buena medida la producción de software y en consecuencia software de calidad. Roger Pressman, el gurú de la ingeniería del software, el año 2005, menciona que: “La calidad del software es el cumplimiento de los requisitos de funcionalidad y desempeño explícitamente establecidos, de los estándares de desarrollo explícitamente documentados y de las características implícitas que se esperan de todo software desarrollado profesionalmente”.

La ingeniería del software es una tecnología estratificada, cualquier enfoque de la ingeniería, incluyendo a la ingeniería del software, debe estar sustentado en un compromiso con la calidad, la base que soporta la ingeniería del software es un enfoque de calidad. La gestión de calidad total, Six Sigma y enfoques similares fomentan una cultura de mejora continua del proceso. Un proceso define quién hace qué, cuándo y cómo para alcanzar cierto objetivo. En general, el éxito de las empresas u organizaciones depende en gran medida de la definición y seguimiento adecuados de sus procesos. En el caso de una empresa que se dedica al desarrollo del software, un proceso de software se define como un conjunto de actividades técnicas y administrativas realizadas durante la adquisición, desarrollo, mantenimiento y retiro de software, en estos procesos de software se requieren procesos especializados que abarquen desde la creación hasta la administración y mantenimiento de software. Un modelo de proceso del software define como solucionar la problemática del desarrollo de sistemas de software, ya que para esta actividad se requiere resolver ciertas fases de su proceso, las cuales se conocen como ciclo de vida del desarrollo de software. Un modelo de proceso debe considerar una variedad de aspectos, como el conjunto de personas, reglas, políticas, actividades, componentes de software, metodologías y herramientas utilizadas.

La ingeniería del software se caracteriza por ser una tecnología estratificada, los diferentes enfoques conducen a las siguientes definiciones. (1) Según Fritz Bauer “La ingeniería del software es el establecimiento y uso de principios robustos de la ingeniería a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre máquinas reales”. (2) Una definición más completa desarrollada por el “Instituto de Ingenieros Eléctricos y Electrónicos” es: “La ingeniería del software es la aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software”. (3) La ingeniería del software se define como la disciplina tecnológica y administrativa dedicada a la producción sistemática de productos de software, que son desarrollados y modificados a tiempo y dentro de un presupuesto definido. (4) Es la disciplina cuyo fin es la producción de software libre de fallas, entregado a tiempo, dentro del presupuesto y que satisfaga las necesidades del cliente. La ingeniería del software es una tecnología multicapa. Los cimientos que son la base de la ingeniería del software están orientados hacia la calidad. La gestión de calidad total y las filosofías similares fomentan una cultura continua de mejora de proceso, y es esta cultura la que conduce últimamente al desarrollo de enfoques cada vez más robustos para la ingeniería del software.

El fundamento de la ingeniería del software es el estrato proceso. El proceso es la unión que mantiene juntas las capas de tecnología y que permite un desarrollo racional y oportuno de la ingeniería del software. Las áreas clave del proceso forman la base del control de gestión de proyectos del software y establecen en contexto en el que se aplican los métodos técnicos, se producen resultados del trabajo, se establecen hitos, se asegura la calidad y se gestiona el cambio de manera adecuada. Los métodos indican cómo construir de manera técnica el software. Los métodos abarcan una gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Los métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas. Las herramientas proporcionan un soporte automático o semi-automático para el proceso y para los métodos. Cuando se integran herramientas para que la información creada por una herramienta la pueda utilizar otra, se establece un sistema de soporte para el desarrollo de software denominada ingeniería del software asistida por computadora.

Los métodos de la ingeniería de software proporcionan las características técnicas para construir el software, por otro lado “un método es un procedimiento que define tareas o acciones a realizar, donde cada tarea incluye condiciones de entrada y salida que se deben satisfacer antes y después de completarse”. Y el estrato más elevado que corresponde a las herramientas proporciona un soporte automatizado o semi-automatizado para el proceso y los métodos. Cuando las herramientas se integran de forma que la información que crea una de estas pueda ser utilizada por otra herramienta, se dice que se ha establecido un sistema para el soporte del desarrollo del software, que con frecuencia se denomina ingeniería del software asistida por computadora. Las herramientas varían en su apoyo a los procesos integrando componentes como editores de texto, generadores de modelos gráficos, generadores de código, compiladores, depuradores, administradores de configuración y administradores del proyecto.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Octubre 25 de 2010.