(1/3) El rol del Open Source en el desarrollo de la Inteligencia Artificial y el Deep Learning

Hola todos, por acá les traigo una serie de tres posts en los que abordaremos la importancia del Open Source para el desarrollo de Inteligencia Artificial y el Deep Learning (Aprendizaje profundo en Español).

La inteligencia artificial en especial el deep learning es un tema que está dando bastante que hablar en los últimos añosaplicaciones móviles como FaceAppDeepNudeeditores de fotos como Prisma – AI Photo Editing, Google translate, los carros que se auto dirigen o que incluyen asistencia al conductor, los asistentes digitales de las diferentes compañías (Alexa de Amazon, Cortana de Microsoft, Siri de Apple y Google assistant) y un largo etcétera 

Ustedes me dirán: “todo muy bonito, pero esas no son aplicaciones open source” y mi respuesta es: cierto, pero todas ellas están basadas en inteligencia artificial a través de tecnologías abiertas desarrolladas por la comunidad científica (redes convolucionales, redes generativas adversarias, en un futuro hablaremos más de esto). Además la mayoría de los cores de inteligencia artificial de estas aplicaciones están creados usando frameworks open source que ayudan enormemente en el desarrollo de los mismos. 

“Pues cuéntanos más de estos frameworks open source de inteligencia artificial que estás dando muchas vueltas y no empiezas” me dirán ustedes, y mi respuesta es “pues con gusto, pero primero un poquito de historia” 

Primero tengo que comenzar dando algo de contexto sobre las redes convolucionales que son el tipo de redes neuronales artificiales (RNA) que están implementadas en estos frameworks de deep learning. Este es un tipo de RNA que fue presentada por Kunihiko Fukushima en 1980, la diferencia con las RNA antiguas es que es capaz de extraer de manera automática las características que necesita para clasificar un objeto correctamente y están basadas en el córtex visual de los gatos. Como ustedes comprenderán en los 80 ni siquiera las supercomputadoras de la época tenían suficiente capacidad de cómputo para correr una de estas redes por lo que la idea quedo como un buen artículo científico con una promesa de una gran tecnología que podría ser utilizada en el futuro. Esta idea fue retomada y mejorada por Yann LeCunYoshua Bengio y otros colaboradores en 1998 donde crearon un modelo de RNA convolucional para la identificación de números. En lo adelante estas redes comenzaron a ganar en popularidad, pero los softwares relacionados eran todos cerrados. 

Acá les dejo una imagen que da una idea como estas redes trabajan. El ejemplo está orientado a la detección de marcas de automóviles basadas en una imagen de un auto. En sus primeras capas extraen características sencillas como detección de bordes. En las capas más profundas la red comienza a extraer características relacionadas con los autos como ruedas, puertas y ventanas, parabrisas etc. Ya en las capas finales las características están combinadas y en dependencia de estas características de alto nivel se activará una salida de la red asociada con una marca en específico. 

El primer framework opensource para la creación de redes neuronales convolucionales (CNN por sus siglas en inglés) que obtuvo popularidad se llamó Torch y fue creado en 2002. Torch fue pionero en el uso de tecnologías de procesamiento paralelo como OpenBlas, OpenCL y CUDA. El procesamiento paralelo aceleraba muchísimo el tiempo de entrenamiento donde sobresalía CUDA que en dependencia del GPU podía hacer que los tiempos de entrenamiento disminuyeran de 7 días a 10 horas 

Sin embargo Torch tenía un gran inconveniente para usarlo había que programar en Lua, lenguaje no tan común en la comunidad científica, ni para muchos desarrolladores. Que levante la mano quien trabaja en Lua por aquí 😉 . Además Lua no disponía de un ecosistema poderoso y esto era una limitante. Después de un tiempo los desarrolladores de Lua agregaron soporte para C pero aun así la acogida por parte de la comunidad no fue tan exitosa como se esperaba, esto se debió a que ya habían surgido otras alternativas que presentaban características muy interesantes para la comunidad. 

Por aquí vamos llegando al final de esta primera parte. En el próximo post hablaremos de dos grandes frameworks para deep learning Theano y Caffe. 

Les dejo unas cuantas fuentes por aquí por si les pica el bichito y quieren investigar más al respecto 

https://es.wikipedia.org/wiki/Red_neuronal_artificial 

https://es.wikipedia.org/wiki/Aprendizaje_profundo 

https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software 

https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=726791  

https://github.com/torch/torch7 

¿Te resultó interesante? Compártelo ...



bosito7

Publicado por bosito7

http://gutl.jovenclub.cu » Forma parte de GUTL desde el 19 diciembre, 2012. Soy un investigador apasionado de Machine Learning / Deep Learning. Me encanta aplicar Inteligencia Artificial en áreas que mejoran significativamente la calidad de vida del ser humano, como la salud y la agricultura. Amante de GNU/Linux y el Software Libre en general.

Este artículo tiene 6 comentarios

  1. Inteligencia artificial, Smart Cities, Big Data, Bitcoin, nada de eso es por el progreso humano.
    Solo son «innovaciones» al servicio de las grandes compañías y los gobiernos de los 14 ojos

    • Hombre, un poco de Fe en la humanidad!!!!!!

      Hablando serio, no puedo hablar por los otros ejemplos que mencionas, pero de la inteligencia artificial (IA) si que se un poco pues es lo que me da el pan. Es cierto que muchas empresas hacen mal uso de la IA pero hay muchisimos ejemplos de uso que si estan ayudando al progreso y dan beneficio al ser humano. Por ejemplo en la aplicacion a la medicina que una de las aplicaciones que veo mas a menudo, los beneficions son palpables.

      Si tienes tiempo leete este articulo cientifico que recoge mas de 300 aplicaciones de la inteligencia artificial en el mundo de la medicina que estan sieno utilizadas a dia de hoy, desde deteccion y clasificacion de cancer en el cerebro, higado, riñones, piel, etc hasta deteccion de anomalias en la cornea, deteccion de capacidad pulmonar, capacidad cardiaca, analisis de electrocardiograma etc. Todos modelos open source y disponibles para todo el mundo.
      https://www.sciencedirect.com/science/article/pii/S1361841517301135
      si no puesdes acceder al primer link preba este otro
      https://geertlitjens.nl/publication/litj-17/litj-17.pdf

      Como ejemplo de una herramienta opensource en la medicina esta el Spinal Cord Toolbox https://github.com/neuropoly/spinalcordtoolbox que es usado para el diagnostico de diversas enfermedades de la columna vertebral y la medula espinal. Intenamente contiene varios modulos que utilizan IA, uno de ellos sirve para la deteccion de lesiones en la medula que son muy pequeñas y dificiles de detectar por humanos, Otro modulo se utiliza para segmentacion de la materia gris y branca que es usada para la deteccion de enfermedades que afectan el sistema nervioso central.

      Si buscas encontraras muchas otras aplicaciones que si que ayudan al progreso de la humanidad, la IA es una herramienta piensa en ella como un martillo, algunos lo usaran para destruir otros para construir. Esperemos que sean mas los que construyen

      • Tiene mucha lógica lo que expones.
        De hecho es alucinante que hayan tantos avances en ciencias médicas y como se combina la IA con el análisis riguroso de los órganos.
        Pero el trasfondo a largo plazo (año 2045), se pronostica que la inteligencia artificial reemplazará en más de un 80% la fuerza laboral que mueve la economía mundial.
        Y generará mayores tasas de desempleo y caos social a nivel global.
        Entonces todo avance tiene dos caras de la moneda, por un lado está la innovación que solo puede ser entendida por técnicos competentes y por otro lado está la brecha educativa entre las potencias del primer mundo y las naciones emergentes del resto del planeta que importan las investigaciones extranjeras.
        Lo utópico sería que los cerebros de nuestros países cooperarán y desarrollarán alternativas y soluciones a nuestro contexto social latinoamericano.
        Pero eso pertenece al ámbito político.

        • Pero hombre tu si que estas negativo 😀 😀 😀 .

          Por lo que veo no me vas a dar tiempo a terminar los 2 post que me faltan 😀 😀 😀 , en el comentario anterior te dije una parte y en este va la otra parte jajajajaja.

          Que si la IA va a remplazar el 80% hummmm, lo mismo se dijo en los 80s acerca de los robots y no sucedio, lo mismo cuando la revolucion industrial tambien. Que todo será color de rosas … pues por supuesto que no, pero quiero pensar que va a ser mejor que peor.

          Los modelos de IA son buenos pero no perfectos por lo que siempre se necesitara un humano, sin contar que los modelos actuales al basarse en aprendizaje supervisado solo pueden ser tan buenos como el humano que hizo la tarea que luego el modelo de IA aprendió. Sin contar que los humanos tenemos la habilidad unica de aprender con poca informacion o informacion parcial y eso es una ventaja sobre las IA que necesitan muchisima informacion para dar un resultado medianamente bueno.

          Con respecto a los gobiernos de Latinoamerica pues como dices ya eso entra en la parte politica y no soy un experto en el tema, pero nuestros gobiernos deberian tomar como ejemplo Japon que a pesar de ser destruido despues de la 2da Gerra Mundial en menos de 30 años se convirtio en un gigante tecnologico gracias a que destino fondos reales para la investigacion y desarrollo de tecnologias.

          Es cierto que los cerebros de nuestros paises deberian colaborar más pero existen muchos ejemplos ahi fuera lo que hay que saber buuscarlos y valorarlos. Un ejemplo rapidito que me viene a la cabeza es el laboratorio CETELI de la Universidad Federal del Amazonas en Brasil que estan desarrollando metodos de deteccion y conteo de Basilos de Tuberculosis (enfermedad que afecta solo paises del tercer mundo) en microscopios de campo claro (microscopios mas baratos del mercado), esta solucion no sustituye al humano pero si le ahorra muchas horas de trabajo delante del microscopio al especialista. Tambien están trabajando en la deteccion de la Malaria enfermedad del Tercer mundo tambien.

          Con respecto a la complejidad de progrmar una IA, la verdad que hay que saber un poco pero nada del otro mundo, no hay que ser genio para eso, solo estudiar un poco. Ademas Estos frameworks de los que estaré hablando facilitan mucho el trabajo. Tambien existen los llamados model Zoo que son listas de modelos ya programados listos para usar o para reentrenar en la tarea especifica que quieres. Pero hombre por favor dejame terminar los post que sino los terminare escribiendo el resto de los posts en los comentarios 🙂 🙂 🙂 .

          Gracias por tus comentarios, es siempre bueno saber como otros piensan.

Los comentarios están cerrados.