28 de noviembre de 2013

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.