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.

Agente Inteligente

Un agente inteligente es un programa especialmente concebido para realizar ciertas tareas de manera autónoma en una red por encargo de un usuario. Esta herramienta permite ganar tiempo en la vigilancia y la colecta de información de interés para la empresa. El usuario define los parámetros de la tarea que realizará de manera autónoma el agente, luego el agente informa de los resultados al usuario. 
Todas las fuentes de información accesibles en una red (por lo general Internet) pueden ser vigiladas por un agente inteligente: archivos, páginas web, bases de datos, foros, newsletters, etc. 



Cómo trabaja un agente inteligente

Tres características fundamentales de los agentes inteligentes:

Tres características fundamentales de los agentes inteligentes:
  • 1. La inteligencia: el agente sabe razonar y aprende a partir de la información que recoge
  • 2. La interactividad: el agente puede interactuar con su entorno y otros agentes con el propósito de realizar una tarea
  • 3. La autonomía: el agente puede tomar decisiones de manera autónoma.

A tener en cuenta:
A tener en cuenta:

  • Un simple comparador de precios no es un agente inteligente ya que únicamente cumple las funciones para lo que ha sido programado.
  • Un agente inteligente se caracteriza por su autonomía en el proceso y el análisis de la información que maneja
  • Un agente inteligente puede ser controlado por una persona o por otro agente del mismo tipo

Aplicaciones de los agentes inteligentes

  • La e-Reputación
  • La gestión de riesgos
  • La inteligencia territorial
  • El lanzamiento de productos
  • La vigilancia de la competencia
  • La vigilancia de líderes de opinión y del lobbying
  • La vigilancia de las tendencias


Por ejemplo, en el sector de la banca, del turismo o del trasporte aéreo, las empresas recurren a agentes inteligentes para rellenar formularios en línea en lugar del cliente. 

Un agente inteligente también puede ofrecer una solución para detectar con anticipación fallas en el funcionamiento de una máquina o de un parque de máquinas. Esto lo puede realizar analizando una gran cantidad de información en un periodo determinado. 

La configuración del agente requiere de buenos conocimientos informáticos. Los prestatarios de soluciones suelen incluir la formación en la venta de sus productos. 
Por ejemplo, en el sector de la banca, del turismo o del trasporte aéreo, las empresas recurren a agentes inteligentes para rellenar formularios en línea en lugar del cliente. 
Un agente inteligente también puede ofrecer una solución para detectar con anticipación fallas en el funcionamiento de una máquina o de un parque de máquinas. Esto lo puede realizar analizando una gran cantidad de información en un periodo determinado. 

La configuración del agente requiere de buenos conocimientos informáticos. Los prestatarios de soluciones suelen incluir la formación en la venta de sus productos. 
Un agente inteligente también puede ofrecer una solución para detectar con anticipación fallas en el funcionamiento de una máquina o de un parque de máquinas. Esto lo puede realizar analizando una gran cantidad de información en un periodo determinado. 
La configuración del agente requiere de buenos conocimientos informáticos. Los prestatarios de soluciones suelen incluir la formación en la venta de sus productos. 
La configuración del agente requiere de buenos conocimientos informáticos. Los prestatarios de soluciones suelen incluir la formación en la venta de sus productos. 
Las dos grandes familias de agentes inteligentes
Los agentes de vigilancia
Consultar:


Los agentes conversacionales

¿Por qué utilizar un agente inteligente al servicio de la empresa?
Los agentes inteligentes ayudan a la empresa a darse a conocer en Internet, mejor que cualquier posicionamiento hecho manualmente. Por ejemplo para posicionar la página web de la empresa, promover el último producto desarrollado, etc. 

Un agente inteligente es más que un simple sistema de búsqueda de información. El agente puede operar sin la intervención del usuario aun si éste está desconectado. Los agentes inteligentes incorporan funciones procedentes de la inteligencia artificial. 

Los agentes inteligentes pueden ser utilizados por las empresas en numerosos dominios, entre estos:

En el marco de la vigilancia de la competencia, una empresa puede utilizar un agente inteligente para hacer un seguimiento y analizar las estrategias y tácticas desarrolladas por la competencia. El agente indagará sobre los recursos, los tipos de desarrollo, las acciones y los resultados de sus competidores. 

Un agente conversacional es una agente inteligente que puede dialogar directamente con su interlocutor (en inglés, chatterbot). Los agentes conversacionales comerciales responden a las preguntas del usuario: estos efectúan el trabajo de varios consejeros comerciales. Una ventaja para la CRM (Customer Relationship Management): solo las preguntas complejas son derivadas al soporte telefónico. 
Prever y anticipar la evolución de los mercados son dos condiciones para la supervivencia de una empresa. De aquí que los agentes inteligentes para la vigilancia sean tan apreciados por las PYMES y las microempresas que no disponen de los recursos necesarios para la elaboración tecnológica de un agente inteligente. 

27 de noviembre de 2013

ELEMENTOS BÁSICOS DE UNA RED NEURONAL ARTIFICIAL

ENTRADAS. Estas capas reciben la información desde el exterior como son: Entradas Wj a la neurona.

PESOS Normalmente una neurona recibe muchas y múltiples entradas simultáneas. Cada entrada tiene su propio peso relativo el cual proporciona la importancia de la entrada dentro de la función de agregación de la neurona. Estos pesos realizan la misma función que realizan las fuerzas sinápticas de las neuronas biológicas. En ambos casos, algunas entradas son más importantes que otras de manera que tienen mayor efecto sobre el procesamiento de la neurona al combinarse para producir la respuesta neuronal.

Los pesos son coeficientes que pueden adaptarse dentro de la red que determinan la intensidad de la señal de entrada registrada por la neurona artificial. Ellos son la medida de la fuerza de una conexión de entrada. Estas fuerzas pueden ser modificadas en respuesta de los ejemplos de entrenamiento de acuerdo a la topología específica o debido a las reglas de entrenamiento.

SALIDAS: Cada elemento de procesamiento tiene permitido una única salida yi(t) que puede estar asociada con un número elevado de otras neuronas. Normalmente, la salida es directamente equivalente al valor resultante de la función de activación.

yi(t)=Fi(ai(t))=ai(t)
Algunas topologías de redes neuronales, sin embargo, modifican el valor de la función de transferencia para incorporar un factor de competitividad entre neuronas que sean vecinas. Las neuronas tienen permitidas competir entre ellas, inhibiendo a otras neuronas a menos que tengan una gran fortaleza.

En el siguiente post se describiran las funciones que forman parte de los Elementos de la Red Neuronal: La Función de Propagación, Función de Activación y la Función de Salida.

Red Neuronal Artificial en GNU/Linux gracias a Mono

 Hoy es un gran día! y es que gracias a la fantástica nueva versión de Mono 2.0 es posible desarrollar aplicaciones en .net que se compilen y ejecuten correctamente tanto en GNU/Linux, en Mac OS X y otras plataformas.

Una muestra de ello es el software de redes neuronales artificiales que programé en Visual Studio .net y del que os estuve hablando brevemente hace un año (cómo pasa el tiempo) y también hace unos meses para su uso en previsión de series temporales. He estado haciendo pruebas, y puedo deciros que el software funciona perfectamente (100%) en GNU/Linux y sin pérdida aparente de rendimiento. Lo más impresionante de todo, es que todo ello sin cambiar una línea de código fuente original de Visual Studio.net 2008.

EDLUT: Simulador de redes de neuronas GNU

EDLUT es una herramienta que permite simular redes de neuronas de integración y disparo.



Realiza las simulaciones en dos etapas:
Caracterización del comportamiento. A partir de las ecuaciones diferenciales que modelan el comportamiento de un determinado tipo de célula, hace una simulación intensiva y almacena su comportamiento en tablas.
Simulación de la red. Gracias a la caracterización previa de cada tipo de célula puede realizar simulaciones masivas con un coste computacional reducido.
El simulador ha sido desarrollado por el grupo de investigación CASIP de la Universidad de Granada. Podéis encontrar el código bajo licencia GNU aquí.



Las Redes Neuronales


Las Redes Neuronales

Las Redes Neuronales Artificiales (ANNs de Artificial Neural Networks) fueron originalmente una simulación abstracta de los sistemas nerviosos biológicos, formados por un conjunto de unidades llamadas "neuronas" o "nodos" conectadas unas con otras. Estas conexiones tienen una gran semejanza con las dendrítas y los axones en los sistemas nerviosos biológicos.
El Primer modelo de red neuronal fue propuesto en 1943 por McCulloch y Pitts en términos de un modelo computacional de "actividad nerviosa". El modelo de McCulloch-Pitts es un modelo binario, y cada neurona tiene un escalón o umbral prefijado. Este primer modelo sirvió de ejemplo para los modelos posteriores de Jhon Von Neumann, Marvin Minsky, Frank Rosenblatt, y muchos otros.

Una primera clasificación de los modelos de ANNs podría ser, atendiendo a su similitud con la realidad biológica:

Los modelos de tipo biológico. Este comprende las redes que tratan de simular los sistemas neuronales biológicos así como las funciones auditivas o algunas funciones básicas de la visión.
El modelo dirigido a aplicación. Estos modelos no tienen porque guardar similitud con los sistemas biológicos. Sus arquitecturas están fuertemente ligadas a las necesidades de las aplicaciones para las que son diseñados.
Redes Neuronales de tipo Biológico

Se estima que el cerebro humano contiene más de cien mil millones () de neuronas y sinápsis en el sistema nervioso humano. Estudios sobre la anatomía del cerebro humano concluyen que hay más de 1000 sinápsis a la entrada y a la salida de cada neurona. Es importante notar que aunque el tiempo de conmutación de la neurona ( unos pocos milisegundos) es casi un millón de veces menor que en las actuales elementos de las computadoras, ellas tienen una conectividad miles de veces superior que las actuales supercomputadoras.

Redes Neuronales

Las redes de neuronas artificiales (denominadas habitualmente como RNA o en inglés como: "ANN"1 ) son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexión de neuronas que colaboran entre sí para producir un estímulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales.

¿Inteligencia Artificial Libre?

El término Inteligencia Artificial fué acuñado en 1956 en una conferencia en Dartmouth, EEUU, por el Prof. John McCarthy1, para definir un proyecto sobre "la conjetura de que todo aspecto del aprendizaje o cualquier otra característica de la inteligencia puede, en principio, ser tan precisamente descrito que se puede construir una máquina para simularlo"(.ibid).

Ese proyecto voló de las manos de McCarthy y de otros profesores para convertirse en un enorme esfuerzo tecnológico global que, en mi humilde opinión, suele caracterizarse de 2 maneras: 

1. Es un proyecto de ingeniería dirigido a diseñar (y construir) un dispositivo (artificial) tan inteligente como (alg)un humano.

2. Es el proyecto insignia de las ciencias cognitivas, dirigido a explorar y caracterizar a la inteligencia (de cualquier tipo). 

Esta es una caracterización bastante simple (inocente) del proyecto científico-tecnológico que ha ocupado a una comunidad de decenas de miles de investigadores en todo el mundo durante más de 50 años, con una enorme inversión económica. Un proyecto, además, que evidencia fracaso, pues no existe (aparentemente) el ansiado dispositivo tan inteligente como nosotros. 

Mi intención en las siguiente líneas es doble, 1) me atreveré a plantear que el objetivo de la Inteligencia Artificial, IA, es otro y 2) que es, y continuará siendo por un buen rato, sumamente exitosa en esa otra dirección, sin renunciar nunca a la posibilidad de producir ese dispositivo inteligente. 

El objetivo de la IA es la creación del esclavo perfecto. 

Un esclavo (o esclava) sabe obedecer y obedece a su amo. No puede hacer otra cosa o no sería esclavo (o esclava). Pero es un esclavo perfecto cuando obedece sin cometer (muchos) errores y cuando se le puede confiar cualquier tarea razonablemente compleja (respecto, claro, a lo que es razonablemente complejo para los humanos). 

Los esclavos naturales, por muy sabiondos y obedientes que puedan ser, siempre terminan demandando atenciones: comida, abrigo y algún tipo de protección. Se podría decir que los asalariados modernos no son sino otra clase de esclavos, ligeramente más costosa que las anteriores, "por culpa de" las reivindicaciones obtenidas a base de inteligencia (y sacrificios) por esclavos precursores. 

La esclavitud artificial podría ser vista como una forma de reinstalar la esclavitud de costo mínimo, pues una máquina trabajaría sin descanso (excesivo), sin ambiciones desmedidas, sin enfermarse (a propósito) y sin todas esas inteligentes estrategias desplegadas por los humanos para sacarle el máximo provecho a su empleador. 

No obstante, no existe, todavía, ningún dispositivo, artificial o no, capaz de realizar una tarea cualquiera con la eficacia y versatilidad humana. Dicho eso, hay que admitir ya que las máquinas nos ganan en eficiencia en tareas específicas y son cada vez más efectivas resolviendo problemas que normalmente asociamos con inteligencia humana, como comunicación, planificación y control de procesos (este último es, cada vez más, asunto de máquinas). 

Además, son ya bastante más efectivas que la mayoría de los humanos en tareas esenciales en el mundo moderno como reconocimiento de patrones2, manipulación de expresiones simbólicas3 y búsqueda de claves en volúmenes enormes de datos4. 

Es importante notar que sólo he mencionado "actividades del intelecto". Si se concede que un computador puede controlar un robot dotado con ciertos "actuadores" sobrehumanos, la lista es mucho más larga. Los robots pueden operar en condiciones ambientales que no resistimos los humanos, cada vez con mayor autonomía y confiabilidad (bajo el agua5, la superficie de Marte6, zonas radioactivas7). 



Hay, sin embargo, una dimensión en la que los dispositivos inteligentes (que no tienen que ser robots propiamente) son ya sumamente exitosos: la gestión del conocimiento. Estamos hablando, claro está, de aquel conocimiento que ha sido representado dentro o en el dispositivo. Una vez en esa forma, las posibilidades parecen infinitas para beneficio de los amos: Ese conocimiento se puede duplicar casi sin esfuerzo. No importa si es la base de datos con la información de un yacimiento o un algoritmo para predecir los movimientos del mercado o el controlador de una caja registradora o un cajero automático. Para "dotar" a otro esclavo sólo hace falta conseguir un cuerpo "similar", el hardware, y copiarle ese conocimiento, el software, sin incurrir en mayores gastos o esfuerzos, comparados con los de construir el hardware y la primera copia del software. Es definitivamente menos costoso que el entrenamiento requerido por los esclavos que no usan hardware sino "bioware". ¿Acaso no es eso un gran logro? (respecto a la nueva meta del proyecto). 

Pero es todavía mejor. Según cierta interpretación "audaz", ese conocimiento dentro del dispositivo adquiere el estatus también de dispositivo. Por decirlo en el viejo lenguaje, el amo es el dueño del cuerpo y del alma de sus esclavos. Así, el amo reclama que debe ser dueño también de cualquier copia del software que se "transplante" en otro esclavo. De esta manera se obtiene la fábrica perfecta de esclavos, con costos mínimos de reproducción. 

Esa interpretación favorece a los amos de varias otras maneras. Por ejemplo, la forma en que ese conocimiento es representado en el dispositivo es tan compleja que es muy difícil descifrarla sin el código fuente original (normalmente escrito por un humano experto, en un lenguaje comprensible para otros humanos expertos. Aunque ya hay esfuerzos en IA para que las máquinas se encarguen de eso también). Así que el amo sólo tiene que guardar ese código fuente (que no tiene que estar en el esclavo) y nadie más sabrá como hacerse de un esclavo igual (sin su permiso). 

Aún si alguien descubriera como "decompilar"lo (restaurar el código fuente a partir del que está en el dispositivo, usando lo que se conoce como "ingeniería inversa"), el amo, dueño o dueña original tiene todavía a su favor un fantástico aparato legal (ese otro "software" que controla a los grupos humanos) para proteger su propiedad (de la curiosidad de otros humanos). 

Cabe preguntar, ¿ese esfuerzo intelectual y tecnológico, que se perfila de esa manera como muy exitoso, podrá ser de libre acceso para todos?. 

Todo esfuerzo de automatización supone un aporte de conocimiento, normalmente de humanos que antes hacian ese trabajo "a mano". Eso explica el rechazo que se observa en los empleados no técnicos, frente a la automatización que los desplaza (y les quita su medio de sustento). Un empleado que sepa y entienda que puede convertirse en el amo de ese conocimiento, probablemente no querrá otra cosa que demandar sus "derechos de autor" ("Está bien. Que la máquina haga el trabajo, pero ese conocimiento es mío") con la intención de asegurar su subsistencia por medio de la renta de ese conocimiento. Y si ese conocimiento es "crítico" de alguna manera, ¿tendría la renta que ser mejor?. 

Si esa tendencia al "rentismo intelectual" resulta inherente a la condición humana, entonces el sistema que mejor la soporte será privilegiado por esa misma condición humana. En ese caso, nos inclinaremos colectivamente a preservar la privacidad de ese conocimiento que gestiona conocimientos. Nada de permitir la Inteligencia Artificial Libre y genuina. 

¿Estará ocurriendo así? 

La realidad es como un cuadro de DaVinci: siempre te sorprende. A partir de ese esfuerzo de medio siglo caracterizando la inteligencia, lo mejor que se puede decir es que los humanos nos comportamos (¿algunas veces?, ¿normalmente?) como dispositivos que sirven ciertos propósitos (que pueden ser más o menos complejos). Todos somos agentes8. 

¿A cuáles de esos agentes humanos les convendría que ese conocimiento en IA sea libre?. 

Quizás como parte de un auténtico ejercicio de cuestionamiento de la condición humana. Algún esfuerzo para explorar si podemos vernos a nosotros mismos y a cada cosa que nos rodea como algo distinto de un dispositivo. 

Un ejercicio subversivo contra el proyecto esclavista no podría realizar mejor jugada que la liberación de esos conocimientos. El libre acceso a esa tecnología significaría que cualquiera podría ordenar esos medios para sus fines. Aún si el proyecto degenerara en muchos individuos tratando de proveerse de sus propios esclavos, ellos mismos mejorarían su eficacia profesional y no podrían impedir que otros también los imitaran y mejoraran. 

En algún momento habría que preguntarse que ocurrirá cuando esos dispositivos esclavos comiencen a reclamar sus derechos (como ha venido ocurriendo con los esclavos naturales). Quizás debamos esperar que, como sugiere McCarthy9, mientras las máquinas no posean sentimientos humanos, eso no será mayor problema. 


Virtual Microscope

Un proyecto auspiciado por la NASA ha logrado crear una base de datos de fotografías multidimensionales de alta resolución que incluyen microorganismos, cuerpos celestes, minerales, circuitos eléctricos y muchos otros seres, materias y artefactos.

Virtual Microscope nos coloca enfrente de un microscopio para que agrandemos las imágenes hasta lo casi imposible, alternemos las vistas y, en general, analicemos hasta el detalle objetos de la morfología terrestre, seres microscópicos, etc.



Y si te quedas falto de especímenes, descarga algunos más, aunque su elevado peso te dará tiempo para un café o lo que se tercie.

26 de noviembre de 2013

ROS

Sistema Operativo Robótico (en inglés Robot Operating System, ROS) es un framework para el desarrollo de software para robots que provee la funcionalidad de un sistema operativo en un clúster heterogéneo. ROS se desarrolló originalmente en 2007 bajo el nombre de switchyard por el Laboratorio de Inteligencia Artificial de Stanford para dar soporte al proyecto del Robot con Inteligencia Artificial de Stanford (STAIR2 ). Desde 2008, el desarrollo continua primordialmente en Willow Garage, un instituto de investigación robótico con más de veinte instituciones colaborando en un modelo de desarrollo federado.3 4
ROS provee los servicios estándar de un sistema operativo tales como abstracción del hardware, control de dispositivos de bajo nivel, implementación de funcionalidad de uso común, paso de mensajes entre procesos y mantenimiento de paquetes. Está basado en una arquitectura de grafos donde el procesamiento toma lugar en los nodos que pueden recibir, mandar y multiplexar mensajes de sensores, control, estados, planificaciones y actuadores, entre otros. La librería está orientada para un sistema UNIX (Ubuntu (Linux) es el sistema soportado aunque también se está adaptando a otros sistemas operativos como Fedora, Mac OS X, Arch, Gentoo, OpenSUSE, Slackware, Debian o Microsoft Windows considerados como 'experimentales').
ROS tiene dos partes básicas: la parte del sistema operativo, ros, como se ha descrito anteriormente y ros-pkg, una suite de paquetes aportados por la contribución de usuarios (organizados en conjuntos llamados pilas o en inglés stacks) que implementan la funcionalidades tales como localización y mapeo simultáneo, planificación, percepción, simulación, etc.
ROS es software libre bajo términos de licencia BSD. Esta licencia permite libertad para uso comercial e investigador. Las contribuciones de los paquetes en ros-pkg están bajo una gran variedad de licencias diferentes.

AForge.NET



AForge.NET Framework es un framework C # diseñado para desarrolladores e investigadores en el campo de la Visión por Computador e Inteligencia Artificial - procesamiento de imágenes, redes neuronales, algoritmos genéticos, aprendizaje automático, robótica, etc se compone el marco del conjunto de las bibliotecas y de la muestra aplicaciones que muestran sus características.