Machine learning:
¿y eso con qué se come?

A medida que pasan las décadas, surgen nuevos enfoques para resolver problemas que antes no podían solucionarse, o cuya solución era muy limitada.
Eso ocurre con el machine learning o Aprendizaje de Máquina, que ha permitido un nuevo nivel de éxito en el entendimiento del lenguaje natural, el reconocimiento de objetos en imágenes y vídeos, y predicciones el tráfico vehicular, entre otros desafíos.
El Aprendizaje de Máquina se enmarca dentro de la inteligencia artificial, que es la teoría y el desarrollo de sistemas computacionales capaces llevar a cabo tareas que requieren normalmente de inteligencia humana.

Entonces… ¿Qué es Aprendizaje de Máquina? Es el uso de computadoras que usan procedimientos para aprender de los datos, y luego hacer una decisión o predicción acerca de algo en el mundo. Por ejemplo, se puede entrenar un modelo para reconocer gatos con muchas imágenes de gatos, y ese modelo aprenderá a reconocer gatos que no ha visto antes (a esto se le llama generalización). Un modelo es el resultado de un aprendizaje específico. Al ver una imagen, el sistema podrá decidir si es un gato o no. Es lo mismo que hacemos los seres humanos. Si vemos varios arcoíris en distintas oportunidades, aprenderemos a reconocer un arcoíris en general.

Desde el punto de vista de un programador, un modelo de Aprendizaje de Máquina se entrena, en vez se programarlo con reglas. Es decir que, si vamos a reconocer un gato en una imagen, no lo haremos programando con reglas al sistema para que reconozca un ojo, luego otro ojo, una oreja, y una cola de gato. Porque habrá muchas variaciones que sobrepasarán la capacidad de las reglas explícitas para capturar como se ve un gato. Por ejemplo: ¿Qué pasa si solo se ve la parte trasera del gato? ¿Qué pasa si el gato es tuerto? ¿Qué pasa si está envuelto en una frazada y solo se ve la cabeza?
En vez de esto, utilizamos recetas (o en palabras de un programador algoritmos) de Aprendizaje de Máquina para permitir que el computador aprenda de las imágenes por si mismo, aprendiendo un modelo. Y así el computador aprende a hacer algo para cual no ha recibido una programación explícita que le diga que hacer paso a paso.

Aprendizaje supervisado y no supervisado

El aprendizaje supervisado se denomina así porque el proceso de un algoritmo de aprendizaje (una receta para aprender en palabras más coloquiales) se asemeja a un profesor que supervisa el proceso de aprendizaje de un estudiante. El profesor (el humano) conoce las respuestas correctas, el modelo iterativamente hace predicciones con base en los datos de entrenamiento y es corregido por el profesor. El aprendizaje para cuando el algoritmo alcanza un nivel aceptable de éxito. (Por ejemplo, 98% de los resultados producidos por el modelo son correctos).
Por ejemplo, si damos a un algoritmo de Aprendizaje de Máquina 10.000 correos electrónicos clasificados por un humano en spam y no spam para que aprenda a reconocer cada tipo de categoría, estamos hablando de aprendizaje supervisado.
Como lo podrías haber imaginado, en el aprendizaje no supervisado no hay respuestas correctas y no hay un profesor. Los algoritmos de aprendizaje por si mismos buscan descubrir y presentar un resultado. Un ejemplo clásico de aprendizaje no supervisado es encontrar los grupos de clientes que tienen un comportamiento de compra semejante.

¿Qué hemos hecho en Pratech?

Como en Pratech somos tan gomosos con la tecnología ya hemos experimentado con el machine learning.
Entrenamos un modelo para reconocer un objeto específico (una bolsa de compras), en lo que logramos un resultado exitoso.

También usamos estas tecnologías para hacer un prototipo de un sistema para identificar a las personas por su rostro. El éxito de este prototipo en una muestra de 20 personas fue del 90%. Y al acercar más la cámara al rostro de las personas, el éxito fue del 100%.
Y último, pero no menos importante, todo el trabajo que hemos hecho con las tecnologías de IBM Watson (y otras) que hemos usado para ofrecer a nuestros clientes soluciones inteligentes e innovadoras.

¿Dónde empezar?

Si eres gomoso o tan curioso que desbaratas un balín, existen formas de empezar a trabajar con este tipo de soluciones. Muchas de ellas están disponibles para el lenguaje de programación Python y sus librerías. Pero también puedes trabajar con otros lenguajes como C/C++, Java y sus amigos (Scala, Kotlin, Clojure), R, JavaScript, Swift y otros.
Una librería que puedes usar desde varios lenguajes es TensorFlow. Es una librería open source que se puede usar para soluciones de Aprendizaje de Máquina. Fue desarrollada por Google para uso interno en un principio, y fue puesta a disposición de todos con una licencia Apache 2.0 a finales de 2015.
En www.floydhub.com puedes encontrar un plan básico gratuito de cómputo en la nube que te permitirá empezar a experimentar con el Aprendizaje de Máquina, pues los procesos de entrenamiento exigen capacidad de cómputo y no vas a querer esperar demasiadas horas a que se entrene tu modelo.
Espero que podamos continuar con un siguiente artículo para profundizar más en este interesante tema. ¡Hasta luego!