Inteligencia Artificial

La IA (inteligencia artificial) es una simulación abstracta de un sistema nervioso biológico, se basa en la suposición de que el proceso del pensamiento humano puede ser mecanizado. De otra forma, es la simulación de inteligencia humana por parte de máquinas. Los procesos primarios que la configuran son:

 

  • Aprendizaje. Adquieren información y reglas para su aplicación en el área en la cual trabajan.
  • Razonamiento. Usando las reglas aprendidas llegan a conclusiones aproximadas o definitivas al problema expuesto.
  • Autocorrección. Reconocen errores y modifican su conducta.
Todo ello parte de nuestra propia identidad, dediquemos unos párrafos para ver cómo funciona una neurona biológica:

 

Neurona biológica:

Mediante sucesos electroquímicos (neurotransmisores) la neurona se estimula a través de las dendritas desde los botones sinápticos de otra neurona, cuando el núcleo alcanza una cierta carga se activa pasando una señal hacia el axón y a los botones sinápticos y de estos a otras neuronas. Una neurona por sí sola no pose inteligencia, la inteligencia radica en el número de conexiones entre ellas y se localiza en los botones sinápticos. La influencia que una neurona ejerce sobre las demás está en función de la distancia entre ellas, mayor influencia cuanto más cerca.

 

Para hacernos una idea sobre la cantidad de neuronas y conexiones en un cerebro humano: Puede tener ochenta mil millones de neuronas y cada neurona 7.000 conexiones sinápticas, en números redondos 560 billones de sinapsis. Con los números anteriores cualquiera que le guste la ciencia ficción debería replantearse las fechas para conseguir algo que piense como nosotros.

 

La teoría neuronal representa los principios fundamentales de la organización y función del sistema nervioso animal, las neuronas son las unidades anatómicas, fisiológicas, genéticas y metabólicas del sistema nervioso y Santiago Ramón y Cajal fue el científico que más datos aportó para su demostración y aceptación por la mayoría de la comunidad científica. Por ello se le considera el padre de la neurociencia moderna. En 1.887 demuestra que el sistema nervioso está compuesto por una red de neuronas ampliamente interconectadas entre sí.

 

Ramón y Cajal (Corteza cerebral 1.904) Células gliales de un niño, Neurona piramidal
 
Equiparación de:
Red Neuronal Biológica Red neuronal artificial (RNA)
Dendritas Entrada
Soma Nodo
Sinapsis Pesos o interconexiones
Axón + botones sinápticos Salida

 

Flujo de información eléctrica en la neurona biológica.

Ya dijimos que las neuronas responden a pequeños estímulos electroquímicos, para transmitir información producen variaciones rápidas de la diferencia de potencial eléctrico a través de las membranas neuronales, estas alteraciones de potencial se producen gracias a los canales iónicos. Los canales iónicos son aberturas de distintos tipos en la membrana en las cuales el equilibrio eléctrico favorece el movimiento de los iones.

 

Los canales iónicos:

  • Conducen los iones a alta velocidad (hasta 100 millones de iones por segundo).
  • Cada tipo de canal solo permite el paso de un ion o de unos pocos tipos de iones.
  • La mayoría están regulados. Se abren y cierran en respuesta a diversos estímulos, eléctricos, químicos y/o mecánicos.
Estímulos electroquímicos, canales iónicos
Estímulos electroquímicos, canales iónicos

 

La neurona, en ausencia de actividad, tiene los iones separados a través de la membrana celular. Comparativamente tiene un exceso de cargas positivas en la parte externa y un exceso de cargas negativas en la parte interna. La separación de carga da lugar a una diferencia de potencial eléctrico denominado potencial de membrana que es la idea que subyace en las redes SNN. Las señales que llegan y salen de la neurona pueden transportarse a grandes distancias debido a la capacidad regenerativa de la señal que no se atenúa.

El primer modelo matemático basado en la transferencia eléctrica de las neuronas fue dado por Alan L.Hodgkin y Andrew Huxley en 1.949 a través de cuatro ecuaciones diferenciales

 

 

Todo tiene un tiempo pasado y el de la IA se basa en los trabajos dentro de la electromecánica sobre autómatas

 

Autómatas.

Un autómata es un instrumento o aparato que encierra dentro de sí el mecanismo que le imprime determinados movimientos (Diccionario de la lengua española). Algunos diseñadores de los primeros autómatas, aunque no son similares al concepto actual, son los creados por:

  • Ctesibio de Alejandría construye relojes de agua. Siglo III ane.
  • Al-Jazari construye la “Orquesta autómata”, que también funcionaba con agua. 1.206
  • Jacques de Vaucanson construye “El flautista”, “El pato digestor” y otros. 1.738

Inicialmente los intentos para conseguir y definir las líneas fundamentales de obtención de máquinas inteligentes estuvieron dirigidos al desarrollo de autómatas que replicasen funciones de los seres humanos. La primera toma de contacto de la ingeniería con el mundo de la inteligencia artificial fue a través de Leonardo Torres Quevedo. En 1.901 funda el laboratorio de Automática en la Universidad Politécnica de Madrid y sus publicaciones “Automática” y “El Aritmómetro electromecánico”, son la antesala de lo que hoy llamamos robots con funciones de realimentación. Torres Quevedo dice que son máquinas a las que considera “dotadas de vida”, con relación al medio en el que se encuentran. La explicación la encontramos en una de sus frases:

Leonardo Torres Quevedo
Torres Quevedo

 

“Se necesita que los autómatas tengan discernimiento, que puedan en cada momento, teniendo en cuenta las impresiones que reciben, y también, a veces, las que han recibido anteriormente, ordenar la operación deseada. Es necesario que los autómatas imiten a los seres vivos, ejecutando sus actos con arreglo a las impresiones que reciban y adaptando su conducta a las circunstancias”.

 

 

 

Autómatas Celulares.

A partir de la década de 1.950 John Von Neumann trató de diseñar una máquina capaz de reproducirse. La idea de la auto-reproducción desencadenó lo que se denomina teoría de Autómatas Celulares, descrita en su libro “Theory of Self-reproducing Automata” de 1.966 . Estos autómatas no son inteligentes, sino que tratan de imitar procesos y comportamientos característicos de los seres vivos. Neumann se basó en los trabajos de Stanisław Ulam y Konrad Zuse de la década de 1.940.

Stanisław Ulam
Ulam
J. Von Neumann
Neumann
Konrad Zuse
Zuse

 

Los autómatas celulares son modelos matemáticos que tienen dos componentes:

  1. Un espacio celular o red de n celdas de estado finito, con un patrón de conexiones con otras celdas y condiciones de límite sí es finita.
  2. Reglas de transición que definen los estados de cada celda.

Estos dos componentes juntos dan origen al concepto de vecindad, que se define como el conjunto de células que son adyacentes y tienen una posición relativa respecto a una dada. Hay dos definiciones de vecindad:

  1. Von Neumann. Es una matriz unidimensional que incluye sólo a las celdas vertical y horizontalmente vecinas y no a las diagonales, cada celda tiene 4 vecinos.
  2. Edward F. Moore. Es una matriz que incluye a todas las celdas de alrededor, tiene 8 vecinos

Además, todo autómata celular pose una configuración inicial a un estado en cada una de las células que lo componen. Un ejemplo muy conocido es el patrón geométrico que se corresponde con una figura fractal, el triángulo de Sierpinski

Sierpinski
Sierpinski
Triángulo de Sierpinski en Java
Triángulo de Sierpinski en Java

 

 

 

 

 

 

 

 

 

 

 

 

Evolución.

La IA en su evolución sigue dos tendencias:

  • La convencional (simbólico-deductiva o escuela débil). Fue el modelo dominante de investigación desde mediados del siglo XX hasta finales del mismo. Utiliza el análisis del comportamiento humano ante diferentes problemas:
    • Razonamiento basado en casos

      IA Inteligencia Artificial
      IA

    • Sistemas Expertos
    • Redes Bayesianas
    • Inteligencia basada en comportamientos
  • La computacional (sub-simbólica-inductiva o escuela fuerte).

 

Decencia ética.

Algunas apreciaciones antes de meternos en harina: Desde este año (2.017), Google está colaborando con el “Pentágono de Estados Unidos” para perfeccionar la inteligencia artificial de sus sistemas dentro del proyecto “Maven”. Su colaboración se enfoca en utilizar la inteligencia artificial y el “machine learning” aprendizaje automático, para interpretar imágenes de vídeo con el objetivo de “mejorar la orientación de los ataques por drones”. Esta no es la única experiencia en utilizar la inteligencia artificial para acciones de control sobre la población, control por no decir destrucción, existen otros muchos más proyectos y no somos conscientes de los errores que pueden cometer. En 1.984 “Terminator” avanzaba al gran público lo qué podía ocurrir, y seguimos sin aprender.

 

Afortunadamente algunos personajes bien conocidos están avisando de lo que nos puede pasar, curiosamente uno de ellos es Bill Gates. Stephen Hawkins también avisaba y decía, “La humanidad está en riesgo y muchos de esos peligros los hemos creado nosotros mismos”. Elon Musk fundó en 2.015 “OPENAI”, fundación para la creación de una inteligencia artificial “amigable”, en sus palabras:

 

“…garantizar que la inteligencia artificial, es decir, sistemas altamente autónomos que superan a los humanos en el trabajo económico más valioso, beneficie a toda la humanidad”.

 

en febrero de este año (2.018), han publicado junto con otras entidades “Preparing for Malicious Uses of AI”, (Preparación para los usos maliciosos de la IA) de lectura altamente recomendable.

 

Desde un punto de vista positivo y cercano a la sociedad, nos debemos fijar en Japón, la interpretación que hacen de la IA es completamente distinta a la de EE.UU. y otros, la sociedad japonesa tiene interiorizado que la IA está al servicio del humano, los distintos humanoides que han presentado al público así lo indican y el resto de autómatas están dedicados a facilitar la vida cotidiana. Por ejemplo, los exoesqueletos como los que aparece en las películas de Alien, están incorporados desde hace años en distintas líneas de suministro apoyando a los trabajadores con más edad en el levantamiento y transporte de cargas pesadas. La sociedad japonesa considera a los autómatas como entes integrados en la sociedad, como un compañero/a que convive en armonía, se pueden ver en los geriátricos, en cementerios automatizados junto con los monjes y sus rezos.

 

Es doloroso tener una revolución económica y social tan cerca de nuestras manos y dejarla escapar. El corazón de la IA es programación computacional, software que lo puedes realizar con un computador en casa, en el parque, donde quieras y puedas. ¿Es tan difícil que los políticos que hablan español no se den cuenta de las oportunidades que se están desperdiciando?, el capital humano está disponible, los medios tecnológicos no son tan caros, quizás lo menos accesible sean los dispositivos que “visten” a los autómatas, vale, estos los podemos comprar ó al revés, vendámosles el software.

 

Recursos para la Inteligencia Artificial.

Recursos para IA
Nombre Comentario
aiParts Biblioteca y programas fuentes en C++
Apache cTAKES Herramienta de análisis de texto clínico y extracción de conocimiento. Es un sistema de procesamiento de lenguaje natural de código abierto.
BNJ Biblioteca de redes bayesianas para investigación y desarrollo que utiliza modelos gráficos de probabilidad. Desarrollado en Java.
BSVM Biblioteca que resuelve máquinas SVM . Utiliza clasificación multiclase, formulación de Crammer y Singer, etc. Se basa en la estructura de libsvm y los fuentes están disponibles en C.
C4.5 y C5 Herramienta para árboles de decisión desarrollada en lenguaje C.
Caffe Biblioteca en Python y C++ para desarrollos en ML.
Chordalysis Herramienta en Java que utiliza un método estadístico para capturar las relaciones de múltiples vías entre las variables para big data. Los fuentes están disponibles en JAVA.
ClearNLP Proyecto que proporciona software y recursos para el procesamiento de lenguaje natural, está bajo licencia Apache 2.
ClearTK Herramienta  que proporciona un marco para el desarrollo de componentes de procesamiento estadístico de lenguaje natural (NLP) en Java y está construido sobre Apache UIMA.
CMU Sphinx Herramienta de código abierto para el reconocimiento de voz basado en la biblioteca de reconocimiento de voz de Java.
CoDi Cellular Automata (CA) Herramienta simulador basado en Xlib con fuentes en Java.
DE Herramientas para la optimización de la Evolución Diferencial con fuentes en Java
Deeplearning4j Biblioteca enfocada al aprendizaje profundo en Scala o Java.
e1071 R package Proyecto que incluye funciones como: transformada de Fourier, clustering difuso, SVM, cálculo de ruta más corta, clasificador de Bayes, etc. Está dentro de un proyecto más amplio denominado Cran. Fuentes en R y C.
ELKI Herramienta de minería de datos escrita en Java y especializada en métodos no supervisados.
Emergent Herramienta que simula RNA en lenguaje C++
FANN (Fast Artificial Neural Network Library) Biblioteca con herramientas para RNA y soporte para más de 20 lenguajes de programación
Flexible Bayesian Modelling Herramientas para RNA modelos Bayesianos, cadenas de Markov, procesos Gaussianos. Fuentes en C.
FFN (Feed Forward Neural Network) Biblioteca y programas fuentes Implementando con Back-Propagation (BP) y Momentum en C++
H2O  Biblioteca basada en Java con soporte de API en Java, Python, R y Spark.
JavaBayes Herramienta que maneja redes bayesianas: calcula probabilidades marginales y expectativas, produce explicaciones, realiza análisis de robustez y permite al usuario importar, crear, modificar y exportar redes. Los fuentes están disponibles en JAVA.
jBNC
Herramientas Java para entrenar, probar y aplicar clasificadores de redes bayesianas.  Los fuentes están disponibles.
JCLAL
Biblioteca de clases de Java para el aprendizaje activo y de modelos predictivos.
JNCC2
Herramienta que implementa Java del Naive Credal Classifier 2 (NCC2). Aborda los problemas de la clasificación estadística, siendo una extensión del clasificador Naive Bayes (NBC). Los fuentes están disponibles en JAVA.
Joone Herramienta en Java que permite crear, entrenar y probar redes neuronales artificiales e incluir nuevos algoritmos o arquitecturas a partir del componente base.
Julius – Julian Herramienta para el reconocimiento de voz, inicialmente en japonés.
Kaldi Herramientas para reconocimiento de voz en C++
KEEL Herramienta escrita en Java para diseñar experimentos de técnicas de aprendizaje evolutivo y minería de datos.
KNIME Herramienta para minería de datos escrita en Java. Su nombre es Konstanz Information Miner.
Kernel-Machine Library Biblioteca con fuentes en C ++ para promover el uso y mejora de las máquinas kernel. Se basa en bibliotecas como Aumentar, ATLAS, Blas, etc.
LBJav Lenguaje de modelado para el desarrollo rápido de sistemas de software, ofrece una sintaxis declarativa conveniente para la definición de clasificador y restricción directamente en términos de los objetos en la aplicación del programador.
Lens Biblioteca para simular redes neuronales escrito en lenguaje C
libsvm Biblioteca para máquinas de soporte vectorial SVM con innumerable cantidad de opciones y juegos de datos para clasificación, regresión, etiquetas múltiples, etc. Algunas opciones necesitan Python y gnuplot.
LingPipe Herramienta para procesar texto usando lingüística computacional.
LSTM Recurrent Neural Network (RNN) Biblioteca y programas fuentes ofrecido por Felix Gers en C y C++
ML-Flex Herramienta diseñada para permitir el procesamiento de conjuntos de datos dispares para el aprendizaje automático (clasificación).
MLC ++ Biblioteca en C ++ para el aprendizaje automático supervisado, que incluye algoritmos de clasificación múltiple.
MALLET Herramienta para el aprendizaje de lenguaje escrita en Java.
mlpack Biblioteca en C/C++ para aprendizaje
NARX-NarxSim Biblioteca para simular una NARX en U++
Neo4j Base de datos no SQL implementada en Java y Scala con capacidad de análisis gráfico y soporte transacciones ACID.
Neon Biblioteca en Python para aprendizaje
Neuroph Biblioteca en lenguaje Java
NLTK Herramienta para desarrollo de programas en Python enfocada al lenguaje.
NuPIC Biblioteca para  análisis de cadenas en Java, Python, Clojure, JavaScript, C++ y Go. Para aprendizaje.
OpenMarkov Herramienta para editar y evaluar modelos gráficos probabilísticos y aprendizaje interactivo.
OpenNLP Herramienta basada en aprendizaje automático para el procesamiento de texto en lenguaje natural.
OpenNN Biblioteca escrita en lenguaje C++
PC4.5 Herramienta que convierte la versión de C4.5 (actual C5) en procesos paralelos.
PNC2 Herramienta de aprendizaje automático que induce las reglas de sus datos, permite el ajuste de parámetros para cambiar el comportamiento del algoritmo.
PNL Biblioteca de redes probabilísticas para trabajar con modelos gráficos. Admite modelos dirigidos y no dirigidos, variables discretas y continuas, diversos algoritmos de inferencia y aprendizaje.
RapidMiner Herramienta para análisis y minería de datos que se origina a partir de YALE (Yet Another Learning Environment). Permite la comunicación con los algoritmos de Weka.
RBF – NBN Herramienta escrita en C++ para entrenamiento de redes y neuronas individuales.
Sciengy RPF Herramienta para minería de datos con redes neuronales auto organizadas en MS Windows.
Sharky Neural Network Herramienta para practicar con la clasificación en redes neuronales.
Shogun Herramienta de desarrollo para aplicaciones de aprendizaje orientada a C#, Java, Lua, Octave, Python, R y Ruby.
SIPINA-W Herramienta que genera gráficos de árboles de decisión con varios métodos de clasificación.
SMILES Biblioteca para aprendizaje automático basado en árboles de decisión para minería de datos y/o cualquier otra tarea en la cual los árboles de decisión puedan ser útiles. Los fuentes están en lenguaje C.
SNNS (Stuttgart Neural Network Simulator) Herramienta para simular redes neuronales en sistemas operativos Unix
Spark-MLlib Biblioteca de aprendizaje automático escrita en Scala y Java. Se puede acceder directamente desde Java, Python, R y Scala. Incluye soporte para procesos analíticos, incluidos métodos estadísticos, algoritmos de clasificación y regresión, agrupamiento, etc.
Sphinx 4 Herramientas para la investigación del modelo de Markov (HMM)
Theano Biblioteca en Python para aprendizaje
UnBBayes Biblioteca de código abierto en Java para modelar, aprender y razonar sobre redes probabilísticas BN, FOL,etc.
WEKA Herramienta de apoyo a RNA, tiene algoritmos de aprendizaje automático, preparación de datos, clasificación, regresión, etc. Los fuentes están disponibles en JAVA.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *