29 de noviembre de 2013

¿Qué son las redes neuronales?

Las redes neuronales son sistemas ideados como abstracciones de las estructuras neurobiológicas (cerebros) encontradas en la naturaleza y tienen la característica de ser sistemas desordenados capaces de guardar información.

La forma en que desarrollan su trabajo es esencialmente distinta de la utilizada por las computadoras convencionales. Los procesadores microscópicos del cerebro (neuronas) operan en paralelo y presentan cualitativamente más ruido que los elementos que forman a las computadoras. No ejecutan un programa fijo con base en un conjunto previamente especificado
de datos, sino que comunican señales a través de etransmisores que llamamos sinápsis, que llegan a centros de conjunción llamados los cuerpos de las neuronas y desde los cuales surgen señales eléctricas a través de canales conocidos con el nombre de axones.
La importancia de cada sinápsis en el proceso de retransmisión se actualiza contínuamente y lo mismo ocurre con algunas propiedades intrínsecas de las neuronas, proporcionando un sistema de autoprogramación y adaptación que sustituye a la programación externa de los sistemas de cómputo comunes. Existe así una dinámica de las sinápsis y de las neuronas en el cual los programas y los datos cambian todo el tiempo.



Una neurona típica recibe del orden de 6 000 a 10 000 señales provenientes de
otras neuronas y trasmitidas a través de las sinápsis.
Añadir leyenda



Los cerebros no tienen una arquitectura o mapa de conexiones específico, por ejemplo, presentan estructuras relativamente ordenadas en centros receptores de información, pero estructuras amorfas, prácticamente aleatorias, en las regiones procesadoras de alto nivel como el neocórtex. Operando en paralelo los cerebros dedican grandes cantidades de neuronas a una actividad determinada, lo cual da por resultado actividades posibles muy diferentes y complejas. Pueden adaptarse a circunstancias cambiantes, reconocer objetos deformados, borrosos, o parcialmente visibles. En síntesis, las redes neuronales son esencialmente diferentes de los sistemas de cómputo de la vida cotidiana.
Los distintos modelos de redes neuronales han planteado importantes e interesantes retos a los físicos teóricos y a los matemáticos, pues exhiben conductas muy ricas y nada triviales. Se trata de sistemas sumamente complejos de analizar por el gran número de elementos interactuantes, por el carácter no lineal de los elementos individuales que operan en ellas, porque las interacciones entre ellos no son idénticas ni simétricas y porque la magnitud de las interacciones, así como los umbrales internos de cada neurona, pueden cambiar en el tiempo.

Desde el punto de vista biológico el funcionamiento detallado de las neuronas es extremadamente complicado, de hecho, gran cantidad de aspectos fisiológicos y químicos de éstas es aún materia de investigación científica, de modo que para iniciar la búsqueda de un tratamiento formal de grupos de ellas se requiere introducir un conjunto de hipótesis simplificadoras que nos llevan a diferenciar entre una neurona biológica y una neurona formal. Nuestro propósito ahora es aclarar esta diferencia.
           
En los intentos por sistematizar la comprensión del cerebro pueden distinguirse dos caminos:
1º El primero es el seguido por los neurofisiólogos, quienes generalmente confrontan una abundancia de datos tan vasta que dificulta el examen sistemático dentro de un marco de trabajo experimental. Los datos están perturbados por una cantidad muy grande de influencias que no pueden ser fácilmente eliminadas por el experimentador.
2º El segundo es el que han abierto los constructores de modelos sobre la base de un conjunto también grande de suposiciones acerca del sistema que se busca explicar, con la esperanza de que el enfoque ayude al surgimiento de nuevas hipótesis, susceptibles de ser verificadas con la diversidad de datos disponibles.
           
Dentro del segundo de los caminos antes mencionados hay dos opciones para los creadores de modelos:
1.     La primera opción consiste en tratar de modelar al sistema real tanto como sea posible. Sin embargo, suele suceder que se introducen tantos parámetros que en realidad no se alcanza ningún entendimiento profundo; de donde se llega al resultado paradójico de que, buscando tanta fidelidad al sistema real, resulta una copia tan mala que la comprensión del fenómeno se desvanece.
2.     El otro enfoque consiste en descartar, a priori, todos aquellos parámetros que a primera vista parecen no ser esenciales, a fin de simplificar el análisis matemático. Estos no constituyen representaciones realistas del cerebro, sino que su inspiración neuronal puede contribuir a comprender algunas de las propiedades que los caracterizan en el procesamiento de información}.
           
La combinación de estas dos últimas opciones va acompañada y motivada por la experiencia, la intuición y el deseo de cuantificar el problema. La calidad del enfoque puede respaldarse en los resultados obtenidos en años recientes, que han mostrado progresos en el proceso de incorporación de más detalles biológicos a los modelos analíticamente solubles.
           
Sobre la base de las consideraciones anteriores, podemos enumerar las simplificaciones más importantes que nos llevan de la neurona biológica a la neurona formal:




No ponemos atención a los detalles de las avalanchas de señales electroquímicas que el cuerpo de la neurona envía a través de su axón. Solamente atendemos la existencia o la ausencia de una señal y le asignamos un "1" o un "0" a cada caso, o equivalentemente "1" y "-1".
Dejamos de lado los aspectos químicos del proceso de conversión con el cual una sinápsis modifica las señales eléctricas que recibe para liberar sobre la membrana de la neurona los neurotransmisores que aumentan o disminuyen el potencial eléctrico de esta última. Únicamente atendemos al carácter excitador o inhibidor de la sinápsis y le asignamos un número real Jij que es positivo si la señal recibida excita y negativo si inhibe al potencial de la neurona receptora. No consideramos la distribución espacial de las dendritas y las tomamos como si fueran cables pasivos de transmisión.
El éxito o el fracaso de cada sinápsis para retransmitir una señal lo consideramos azaroso, con una cierta probabilidad, tal que asociamos variables aleatorias independientes a cada dendrita.
Cada neurona tiene un umbral de respuesta al potencial eléctrico de su cuerpo principal, que al ser rebasado transmite una señal a través del axón. Nosotros lo consideramos como una variable aleatoria que se conduce conforme a una distribución gaussiana en torno a un promedio dado.

            

28 de noviembre de 2013

Sistemas expertos en medicina

La comprensión de la actividad de los médicos en su ámbito profesional se convierte en elemento de suma importancia para la inteligencia artificial médica. Las tareas capaces de ser resueltas por aquellos, se pueden agrupar en dos tipos: (1) Las tareas reproductivas que se ejecutan cuando las condiciones existentes, las vías y procedimientos de solución y los medios de los cuales se dispone son suficientes para dar cumplimiento a los objetivos, son recurrentes y se realizan de acuerdo con cierto esquema, patrón o pautas establecidas. (2) Las tareas creativas se caracterizan, porque al plantearse el cumplimiento de estas, las condiciones existentes, los medios y métodos de solución que tiene a su disposición o forman parte de su experiencia, son insuficientes para resolverlas, de manera que los eslabones faltantes en el camino hacia la solución se hallan en la interacción con el medio en el que desarrolla su actividad, a partir del despliegue de toda su experiencia pasada, de sus habilidades y del acervo de conocimientos acumulados. Cualquier tarea generada por situaciones problemáticas contiene elementos reproductivos y de creación del pensamiento. La división en uno u otro tipo de tarea depende, por consiguiente, de cuál de las dos predomina. Si se considera este punto de vista, el intelecto natural es “la capacidad de resolver las tareas que incluyen en sí elementos reproductivos y de creación” y cuyas propiedades notables residen en la capacidad para la comprensión y la adopción de decisiones; así como en la construcción de textos en lenguajes naturales y el conocimiento de las leyes del mundo exterior. En cambio el intelecto artificial se presenta en esta interpretación como la simulación por las máquinas de las tareas reproductivas y de creación, definiciones poco sustanciosas, porque sigue en pie en ellas la cuestión de los atributos.
Los sistemas expertos son una clase particular derivada de los sistemas basados en conocimiento y se han venido utilizando desde el año 1977, de hecho una generalización del estudio de los sistemas expertos es lo que ha dado lugar a los sistemas basados en conocimiento. Uno de los primeros sistemas expertos diseñados es MYCIN, reportado en el libro del año 1988 de Szolovitz relacionado con la “inteligencia artificial en la medicina”, que está orientado al diagnóstico y tratamiento de enfermedades infecciosas y cuya principal característica es la forma de representar y procesar la incertidumbre mediante los ahora conocidos “factores de confianza”, que son entendidos como medidas subjetivas del experto para calificar y procesar, de manera bastante elemental, la incertidumbre.
En la Conferencia Mundial de Inteligencia Artificial realizada el año 1977 en la ciudad de Tokio, Japón, el investigador Feigenbaum presentó la siguiente definición de sistema experto: “Es un programa inteligente que utiliza conocimiento y procedimientos de inferencia para resolver problemas difíciles que requieren por sí solos de la participación de expertos humanos para su resolución”. Según los investigadores Giarratano y Riley en el libro “sistemas expertos, principios y programación” publicado el año 2001, la propiedad más relevante de los sistemas expertos es que separan los conocimientos almacenados, en una base de conocimiento, del programa que los controla, que hace las veces de una máquina de inferencias. Los datos propios de un determinado problema se almacenan en una base de datos, conocida también como base de reglas. La base de conocimiento contiene el conocimiento altamente especializado extraído de los expertos en el dominio. Es decir, contiene conocimiento general sobre el dominio en el que se trabaja. El método más común para representar el conocimiento es mediante reglas de producción. El dominio de conocimiento representado se divide, pues, en pequeñas fracciones de conocimiento o reglas heurísticas. Cada regla consta de una parte denominada condición y de otra parte denominada conclusión o acción.
Para los investigadores Friedman y Gustafson, en el artículo del año 1997 titulado “computadoras en la clínica medica, la tecnología de la computación ha tenido una gran influencia en la medicina y ésta sigue aumentando cada vez más. Algunos de los usos de las computadoras en este campo son las pruebas para detectar e identificar alteraciones, como por ejemplo, la tomografía axial computarizada, los análisis de electrocardiogramas por computadora, los monitores de procesos fisiológicos, la automatización de las líneas en laboratorios clínicos, el control de los resultados entrega de medicamentos, y otros. Los profesionales de la salud utilizan también las computadoras para controlar y planificar sus servicios.
En el ámbito de los sistemas expertos para las ciencias médicas, se puede hablar de paquetes de diagnóstico médico. Se han desarrollado varios sistemas expertos para diagnosticar enfermedades y recomendar tratamientos. Uno de estos es el sistema experto llamado HELP que se emplea para diagnosticar los problemas de pacientes enfermos del corazón, desarrollo reportado el año 1983 por sus creadores Pryor, Gardner, Clayton y Warner. HELP acumula datos sobre pacientes proporcionados por médicos, enfermeras y otros profesionales de la salud y sugiere posibles diagnósticos y tratamientos. Otro sistema de tratamiento incluye a PUFF, escrito el año 1983 por los investigadores Aikins, Kuns y Shortliffe, que se encarga de medir funciones pulmonares. CADUCEUS fue un sistema experto médico programado para realizar diagnósticos en medicina interna. Fue terminado a mediados de la década de 1980, si bien el inicio de su desarrollo se remonta a la década de 1970 habiendo sido programado por Harry Pople, de la Universidad de Pittsburgh, partiendo para el sistema de las entrevistas de Pople al Dr. Jack Meyers. CADUCEUS es un paquete más generalizado, programado para evaluar más de cuatro mil síntomas y otros datos con el propósito de reconocer más de seiscientas enfermedades. Por medio de una terminal, un médico proporciona a CADUCEUS datos iníciales sobre un paciente. Después de analizar esos datos, el programa comienza a hacer preguntas sobre el paciente. Durante este interrogatorio, CADUCEUS dice al médico cuál es el diagnóstico que está considerando y le indica los datos que no está tomando en cuenta por el momento. Pueden bastar unos minutos para que el programa proporcione un diagnóstico. A fin de evitar análisis clínicos innecesarios, CADUCEUS está programado para considerar primero las enfermedades más probables. MYCIN es un sistema experto desarrollado a principios de los años 1970 por Edgar ShortLiffe, en la Universidad de Stanford. Fue escrito en Lisp, e inicialmente estaba inspirado en DENDRAL, otro sistema experto que tuvo cierto éxito a finales de los años 1960. Su principal función consistía en el diagnóstico de enfermedades infecciosas de la sangre; además, MYCIN era capaz de “razonar” el proceso seguido para llegar a estos diagnósticos, y de recetar medicaciones personalizadas a cada paciente.
Según los investigadores Bemmel, Hasman, Sollet y Veth, en el artículo del año 1983, titulado “entrenamiento en información médica”, los profesionales en ciencias médicas saben lo importante que es la relación médico-paciente y la responsabilidad que esto significa. Los adelantos tecnológicos han tenido mucha influencia en esta relación. Por desgracia, esta influencia no ha sido siempre beneficiosa para este tipo de relación, sino más bien, la ha deteriorado. La automatización de los procesos de diagnóstico y tratamiento ha deshumanizado la relación médico-paciente, al límite de casi hacerla desaparecer. Estos adelantos cuando refuerzan esta relación son convenientes, pero las técnicas o procedimientos que la deterioren son perjudiciales. La responsabilidad del médico y el personal profesional en salud se basa en los conocimientos y capacidad que éstos tengan en la práctica diaria. La computación debe dirigir sus esfuerzos para mejorar la prestación del servicio médico manteniendo los cánones de la ética y servicio de la medicina.
Finalmente para el investigador Sierra y sus colegas del año 1995, en el libro “sistemas expertos en contabilidad y administración de empresas”, los sistemas expertos se han venido aplicando a muchos campos del quehacer humano y en muy diversos escenarios tales como diagnóstico médico, contaduría, administración de empresas, planeación, monitoreo, capacitación y otros. Generalmente un sistema experto administrativo o médico hecho para un determinado país no puede ser útil en otro lugar si no se cuenta con idénticas condiciones. Por ejemplo, la cultura expresada en los hábitos cotidianos de las personas y la sociedad influyen directamente en la definición del conocimiento a ser utilizado.

Sistema experto

Los sistemas expertos son llamados así porque emulan el razonamiento de un experto en un dominio concreto y en ocasiones son usados por éstos. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto.
Es una aplicación informática capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee información de uno o más expertos en un área específica. Se puede entender como una rama de la inteligencia artificial, donde el poder de resolución de un problema en un programa de computadora viene del conocimiento de un dominio específico. Estos sistemas imitan las actividades de un humano para resolver problemas de distinta índole (no necesariamente tiene que ser de inteligencia artificial). También se dice que un SE se basa en el conocimiento declarativo (hechos sobre objetos, situaciones) y el conocimiento de control (información sobre el seguimiento de una acción).
Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo dos capacidades para poder cumplirlo:
  1. Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicación para cada una de estas reglas, que a la vez se basan en hechos.
  2. Adquisición de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Sobre la base de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza.
Debido a esto en la actualidad se están mezclando diferentes técnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas más seguras. Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en línea; y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos.

Joone

Es un framework desarrollado en Java, que permite ejecutar aplicaciones de Inteligencia Artificial basadas en redes neuronales artificiales. Tiene muchas características como el trabajo con aprendizaje supervisado, no supervisado y otras más.

Posee un editor gráfico en donde se pueden crear y probar las redes neuronales y un entorno de entrenamiento distribuido para el entrenamiento en paralelo de muchas redes neuronales. Permite entrenar un conjunto de redes en paralelo, posee arquitectura modular, y cada uno de sus componentes puede ser reutilizado y modificado por sus desarrolladores.

JavaVis

Librería de visión artificial escrita en Java y desarrollada en el Departamento de Ciencia de la Computación e Inteligencia Artificial de la Universidad de Alicante. Esta librería presenta una serie de ventajas: portabilidad, fácil ampliación, interfaz gráfico y formato de imagen especial que permite almacenar secuencias de imágenes y datos de tipo geométrico.
Se usa en universidades para el desarrollo de algoritmos de visión. Trabaja con secuencia de imágenes y manejo de  datos geométricos en 3D.

Cuenta con Librería de procesamiento de imágenes/visión computacional. Es de Libre uso y Código abierto. Incorpora más de 60 algoritmos de visión (p.e. Canny, Nitsberg, operadores morfológicos, etc.)


OpenAI

Con OpenAI lo que se busca es crear un punto de encuentro entre aficionados a la inteligencia artificial, en el cual se pueda debatir en foros, descargar herramientas, y cooperar en el desarrollo de un modelo genérico de IA, que pueda luego ser adaptado a diferentes usos. Y siempre basado en la filosofía del software libre.

El proyecto se basa en Java y C++ como lenguajes de programación para su desarrollo, y utiliza XML y CORBA para la configuración, comunicación entre procesos y persistencia de objetos.

Tipos de agentes inteligentes



Tipos de agentes inteligentes según su funcionamiento básico

-Cooperativos: Se coordinan con otros agentes para conocer el entorno de información en el que se mueven.
-Móviles: Realizan las búsquedas basándose en la programación remota, de manera que se desplazan a través de los servidores, y ejecutan programas en éstos por orden de los usuarios.
Los agentes móviles son supervisados, para evitar la ejecución de programas que puedan ser malware, mediante pasillos de seguridad que controlan el flujo de agentes móviles y la ejecución de tareas.
Un ejemplo de agente móvil es Genmagic.com.

Tipos de agentes inteligentes según sus prestaciones

-Agentes de búsqueda: Son agentes especializados en la búsqueda de datos, que realizan búsquedas conceptuales en base a los términos solicitados por los usuarios y las expanden añadiendo sinónimos o términos relacionados. Es el caso deAlexa.com.
-Agentes de consulta: Realizan las consultas originando más agentes como respuesta las peticiones del usuario. Éstos recogen información de las bases de datos, y si no consiguen la información solicitada, generarán nuevos agentes que ampliarán la búsqueda hasta obtener lo que busca el usuario.
Un buen ejemplo es Mata Hari, que es un agente de consulta y también un agente inteligente de búsqueda.
-Agentes de bases de datos: son agentes especializados en hacer consultas en una base de datos concreta, que conocen la información almacenada en ella.
Es el caso de Clientelle.net, que concretamente es un gestor de billetes de avión, que busca en las bases de datos de las compañías aéreas los viajes que por su precio o por sus características puedan interesar más al consumidor.
-Agentes de consulta de bases de datos: Son el resultado de la interacción de los dos anteriores. Un ejemplo es Seidam.
-Agentes mediadores de consulta de bases de datos:Equivalen al anterior, aunque además cuentan con un sistema mediador entre el agente de consulta y el de base de datos. Es el caso de Macron.
-Agentes de usuario: Son agentes asociados a un individuo, a quien aportan información sobre las búsquedas de los usuarios.
-Interfaces web: Son gestores de consulta capaces de almacenar conocimientos y procesar información incompleta o de alto nivel. El más importante es Softbot.
-Compradores web o ShopBots: Son agentes que buscan información sobre productos en venta y comparan características y precios entre ellos para ofrecer al usuario los productos más adecuados a sus necesidades. Los más conocidos son Shopbot y Botspot.com.