Guía para aprender Inteligencia Artificial sin excusas. Escribe tu primera red neuronal

Para ponerse a programar hay que tirarse a la piscina. Hay que mojarse, ensuciarse y fallar mucho. Con esfuerzo y dedicación, se puede aprender lo más básico en poco tiempo.

Hay mucha gente que ya tiene habilidades decentes en programación, pero que no tiene ni idea de Inteligencia Artificial, Machine Learning u otros conceptos que os acercamos habitualmente en Puentes Digitales. Para todos ellos, un mensaje:

¡No tenéis excusa!

Seguid el consejo de Shival Gupta, que os mostramos a continuación, y ponéos a programar vuestra primera red neuronal. Es el primer paso (y más sencillo) para entrar a explorar el mundo de la Inteligencia Artificial.

0-7MtkJCXGia2tjvre-

Todo el mundo está ocupado en nuestros días. Nuestra vida profesional y personal no nos da para más. No encontramos tiempo para aprender algo nuevo.

Encima, algo nuevo y misterioso comienza a aparecer en todos lados. La Inteligencia Artificial es el nuevo escenario del siglo XXI y te das cuenta de que tus habilidades en programación llevan desfasadas al menos dos años.

La relevancia de un desarrollador full-stack no va a ser suficiente en un escenario tan cambiante. En dos años, un full-stack no será completo si no tiene habilidades en Inteligencia Artificial.

Me di cuenta de ello y decidí pasar a la acción. Hice lo que creía que era la única opción: actualizar mis habilidades como programador, mi manera de pensar para orientarme a producto y mi filosofía como emprendedor para orientarme hacia los datos.

“Si las compañías se apoyan sólo en IA de última generación y en algoritmos de Machine Learning para competir, no les será suficiente. La IA no va a ser una ventaja competitiva, sino un requisito. ¿Conoces a alguien que utilice la electricidad como una ventaja competitiva?” – Spiros Margaris, gurú de IA y fintech

Construyendo mi primera red neuronal

1-k2lJrG5tkSzGSyNgLRIaKA.jpeg

Para adentrarse en el mundo de la IA, el primer consejo suele ser hacer el curso de Andrew Ng de Coursera. Es un gran recurso para aprender, pero a mí me costaba permanecer despierto lo suficiente. No es que el curso sea malo, pero no tengo capacidad de estar atento mucho tiempo.

Mi manera de aprender siempre ha sido practicando, así que pensé “¿por qué no? Vamos a hacer nuestra propia red neuronal”.

Sabía que no debía ir a por complejas redes neuronales, sino familiarizarme con los conceptos. Como mi experiencia en programación es de Javascript y de Nodej, no quería cambiar de lenguaje todavía.

Así que busqué un módulo de red neuronal simple llamado nn y lo usé para implementar una puerta AND con una entrada ficticia. Inspirado por este tutorial, elegí el problema de que para cada una de las tres entradas X, Y y Z, la salida debería ser X e Y.

var nn = require('nn')
var opts = {
    layers: [ 4 ],
    iterations: 300000,
    errorThresh: 0.0000005,
    activation: 'logistic',
    learningRate: 0.4,
    momentum: 0.5,
    log: 100   
}
var net = nn(opts)
net.train([
    { input: [ 0,0,1 ], output: [ 0 ] },
    { input: [ 0,1,1 ], output: [ 0 ] },            
    { input: [ 1,0,1 ], output: [ 0 ] },
    { input: [ 0,1,0 ], output: [ 0 ] },
    { input: [ 1,0,0 ], output: [ 0 ] },
    { input: [ 1,1,1 ], output: [ 1 ] },
    { input: [ 0,0,0 ], output: [ 0 ] }
    ])
// send it a new input to see its trained output
var output = net.send([ 1,1,0]) 
console.log(output); //0.9971279763719718

¡Qué alegría!

Éste fue el primer paso para ganar seguridad. Cuando vi en la salida el número 0.9971, me di cuenta de que la red neuronal había aprendido a hacer una operación AND.

Ésta es la magia del Machine Learning. Le das al programa un conjunto de datos y éste va modificando sus parámetros para dar respuesta correcta ante un nuevo set de datos, reduciendo el error.

Este método se conoce como gradiente descendente.

0-DGVbHESLo_1dMyDH.png

Cebando mi mente para la inteligencia artificial

0-QAi2R3TFMGWRP0Ib-

Una vez que estaba lleno de confianza, después de haber realizado mi primer programa de inteligencia artificial, quise saber qué más podía hacer con el machine learning como desarrollador.

Estos fueron mis pasos:

  • Solucioné un par de problemas de aprendizaje supervisado, como la regresión y la clasificación.
  • Utilicé un conjunto de datos muy limitado para tratar de predecir qué equipo ganaría una competición, usando una regresión lineal multivariante. (Las predicciones fueron terribles, pero fue genial).
  • Jugué con las demos de Google Machine Learning Cloud para comprender qué puede hacer la Inteligencia Artificial a día de hoy (lo suficiente como para que Google lo hiciera como un producto SaaS)
  • Me topé con AI Playbook, un recurso increíble montado por Andreessen-Horowitz. Verdaderamente, uno de los recursos más prácticos para desarrolladores y emprendedores.
  • Comencé a ver el asombroso canal de Siraj Rawal en YouTube que se centra en Deep Learning y Machine Learning.
  • Leí esta increíble publicación Hackernoon sobre cómo los showrunners en Silicon Valley construyeron la aplicación Not Hotdog. Este fue uno de los ejemplos más accesibles de aprendizaje profundo que se puede hacer.
  • Leí los blogs de Andrej Karpathy (Director de IA en Tesla). Aunque no pude entender mucho y me dolía la cabeza, descubrí que, después de intentar un poco más de tiempo, los conceptos realmente comienzan a tener sentido.
  • Con algo de coraje, empecé a implementar textualmente algunos de los tutoriales de aprendizaje profundo (copiar y pegar) e intenté entrenar el modelo y ejecutar el código en mi máquina local. La mayoría de las veces, era una mierda debido al alto tiempo de entrenamiento que toman la mayoría de los modelos y no tenía una GPU.

Gradualmente, cambié mi lenguaje de Javascript a Python e instalé Tensorflow en mi máquina de Windows.

Atrapando el tren ‘chatbot’

0-zx9RSAy_0vt7Oyxv-.jpg

Como soy un gran fan de la película Her, quería construir chatbots. Me lancé al desafío y logré construir uno usando Tensorflow en menos de dos horas. Esbozé este viaje en uno de mis artículos hace unos días.

Afortunadamente, el artículo se volvió viral y apareció en TechInAsia, CodeMentor y KDNuggets. Fue un gran momento para mí, personalmente, porque acabo de comenzar con los blogs tecnológicos. Creo que este artículo ha sido uno de los momentos más importantes en mi viaje de aprendizaje de IA.

Me permitió hacer muchos amigos en Twitter y LinkedIn, con quienes puedo hablar sobre el desarrollo de IA en profundidad e incluso puedo conseguir ayuda si me quedo atascado. Recibí algunas ofertas para hacer proyectos de consultoría y, lo mejor de todo, jóvenes desarrolladores e iniciadores de IA comenzaron a preguntarme cómo comencé con AI.

Lo cual nos lleva a por qué escribí este artículo:

Para ayudar a más personas a tomar pistas de mi propio viaje y que así comiencen el suyo.

Sal y Pimienta

0-q30Dro0sIgtjx89J-

Definitivamente no fue fácil. Cuando empecé a quedarme atascado con Javascript, salté a Python casi de la noche a la mañana y aprendí a codificar en este nuevo lenguaje. Empecé a irritarme cuando mis modelos no conseguían entrenarse en mi máquina i7 o incluso después de horas de entrenamiento, devolvían resultados absurdos, como una probabilidad de 50-50 de que un equipo gane un partido de Cricket. Aprender Inteligencia Artificial no es como aprender a programar una web.

Además, la IA no es sólo un tema. Es un término genérico usado para cualquier cosa, desde simples problemas de regresión hasta robots asesinos que nos van a matar algún día. Al igual que cualquier otra disciplina en la que te metes, es posible que quieras elegir cosas chulas, como la visión artificial o el procesamiento del lenguaje natural, o Dios no lo quiera, la dominación mundial.

En una conversación con Gaurav Sharma de Atlantis Capital, un reputado líder de la industria en IA, Fintech y Crypto, me dijo:

“En la era de la inteligencia artificial, “ser inteligente” significará algo completamente diferente. Necesitamos que las personas sean críticas, creativas y de pensamiento de alto orden; y que los trabajos requieran un alto compromiso emocional.”

Tienes que estar fascinado por cómo las computadoras de repente aprenden a hacer las cosas por su cuenta. La paciencia y la maravilla son los dos principios clave a los que debes aferrarte.

Este es un gran y gran viaje. Muy agotador, muy irritante y excepcionalmente lento.

Pero lo bueno es que, como en cualquier otro viaje en el mundo, éste también comienza con un solo paso.

Fuente: Hackernoon

Un comentario en “Guía para aprender Inteligencia Artificial sin excusas. Escribe tu primera red neuronal

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s