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.

Si por otro lado habéis llegado hasta aquí con conocimientos en inteligencia artificial, aprendizaje supervisado y no supervisado y os gustaría profundizar más, os recomendamos nuestro artículo sobre las GAN, las Redes Generativas Antagónicas:

Todo lo que necesitas saber sobre las GAN: Redes Generativas Antagónicas

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

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

  1. sin mas q decir, el articulo me hizo pensar, sentir, emocionarme y motivarme a mas, no soy un desarrollador o un informatico con buena base como ustedes, estudio informática y soy a mi parecer el mas lento de todos para aprender pero desde niño me llamo la atencion la inteligencia artificial y esto me ayudo mucho a motivarme nuevamente, saludos a todos, leanlo entero y si tienen algun buen material compartan por mail j.oviedo00@gmail.com

    1. Nos emociona a nosotros saber que el artículo te ha gustado tanto y esperamos que te inspire a seguir aprendiendo! Ánimo con tus estudios, no pienses en negativo. Gracias por tu comentario. Puedes suscribirte a la web con tu correo para recibir notificaciones de nuevas publicaciones. Un saludo de parte de todo el equipo de Puentes Digitales!

    1. Perdona mi ignorancia, pero si a los datos 1,1,0 el resultado es 0,997, eso para mi es un 1. Yo creo que el resultado es incorrecto. ¿Que valor esperabas como erroneo? Creo que para que el sistema funcionara debia dar de 0 a 0, 49. Cualquier valor superior no lo daria por bueno.

  2. Qué buen artículo. Tengo más de 10 años en IT pero 0 en programación. Estoy dando mis primeros pasos con python (un mundo que me está gustando) y pensé en apuntar al full stack. Javascript y react son los siguientes pasos.
    No obstante la IA me tiene atraído y sin lugar a dudas es el futuro. Espero poder tener tiempo de desarrollarla.

  3. Me eh interesado bastante en la inteligencia artificial, actualmente diseño y vendo maquinas, soy un aficionado, siempre eh querido aprender a programar inteligencia artificial, al leer esta experiencia me eh animado a empezar a aprender desde lo básico pero poco a poco al igual que como comentaste, yo se que aprenderé. Gracias por compartir tu experiencia.

  4. Hace muchos años que vengo viendo el tema de machine learning y de IA sin meterme en él.
    Tengo una duda existencial.
    Diseño la red, codifico en el lenguaje que sea, la entreno, la pongo a prueba.
    Cuando detengo el programa o le quito la alimentación al hardware que le da soporte físico.. A donde va a parar todo lo aprendido? Como se preserva para que no tenga que re aprender todo otra vez cuando se ponga en línea nuevamente?
    Siento como que yo mismo deba rever todo lo que aprendí en la escuela cada vez que despierto después de una noche de sueño reparador y eso me frustra.

    1. Hablamos de “aprender” en redes neuronales artificiales, cuando la explicación es más sencilla. La red neuronal toma unos valores de entrada para dar unos valores de salida. Para hacer esto asigna unos pesos o valores a ciertos parámetros, que son los que definen esta transformación. Durante el extrenamiento, lo que se hace es buscar el valor idóneo de estos parámetros. De este modo, tras haber sido entrenada, la red ha asignado unos valores fijos a estos parámetros. Así, igual que guardas un documento de word o de excel y luego puedes abrirlo donde lo dejaste, una vez “cierres” la red neuronal estos valores serán los mismos que se asignaron en el entrenamiento.

  5. Cuando le metes por código la siguiente entrada ([1,1,0]) , y obtienes un 0.9971279763719718, en teoría equivalente a un 1. Realmente no esta operando bien , pues la respuesta debería ser un valor bajo cercano a cero , pues el resultado de una operación AND de (1 1 0) seria 0.

    Un saludo.

  6. Wow.El articulo me hizo reflexionar sobre lo que las maquinas pueden hacer.
    Soy un joven interesado en este campo,. Y ojala puedan leer esto, recientemente participanos en una competencia de robotica en la que presentamos como proyecto un machine learning capaz de predecir ciertas enfermedades.
    Tratando de traer a la vida mi proyecto me encontre con esto y vi que es mas dificil de lo que parece.

Deja un comentario