Los intentos de diseñar máquinas más inteligentes que los humanos no son nuevos.

Uno de los primeros ataques que la informática hizo a la «inteligencia» humana fue a través del juego del ajedrez. El ajedrez es (¿o deberíamos decir, era?) asumido por muchos como la prueba definitiva del intelecto y la creatividad humanos, y allá por los años 60-70, había diferentes escuelas de pensamiento dentro de la informática.

Algunos sostenían que era sólo cuestión de tiempo que los ordenadores superaran a los humanos en el juego del ajedrez, mientras que otros creían que esto nunca ocurriría.

Kasparov contra Deep Blue

El acontecimiento más sensacional protagonizado por el hombre contra la máquina en la batalla del pensamiento fue la partida de ajedrez de 1996 entre el entonces campeón del mundo Garry Kaspárov (y posiblemente, el mejor ajedrecista de la historia) y Deep Blue, un superordenador que IBM diseñó para este mismo evento.

kasparov-vs.-deep-blue
Crédito de la imagen: Wikipedia

Para abreviar la historia, Kaspárov ganó el encuentro de 1996 de forma convincente (4-2), pero perdió la revancha de 1997 (4,5-3,5) en medio de una gran polémica y de las acusaciones directas de Kaspárov contra IBM por hacer trampas.

En cualquier caso, una era en el ajedrez y la informática había terminado. Los ordenadores tenían derecho a ser más inteligentes que cualquier humano vivo posible. IBM, contenta con la revancha, desmanteló Deep Blue y siguió adelante.

Hoy en día, es imposible para cualquier gran maestro vencer a cualquier motor de ajedrez normal que funcione con hardware básico.

¿Qué no es aprendizaje automático?

Antes de que echemos un vistazo más en profundidad al Aprendizaje Automático, quitemos de en medio algunos conceptos erróneos. El aprendizaje automático no es, ni mucho menos, un intento de replicar el cerebro humano. A pesar de las creencias sensacionalistas sostenidas por gente como Elon Musk, los investigadores de la informática sostienen que no están en busca de ese grano sagrado y, desde luego, ni de lejos se acercan a él.

En pocas palabras, el aprendizaje automático es la práctica de aplicar procesos de aprendizaje por ejemplo a los ordenadores. Esto contrasta con el enfoque tradicional de confiar en un programador humano para que piense en todos los escenarios posibles y codifique las reglas para ellos en un sistema.

Sinceramente, eso es más o menos lo que es el aprendizaje automático: alimentar con toneladas y toneladas y toneladas de datos a un ordenador para que pueda aprender a partir de ejemplos (ensayo → error → comparación → mejora) en lugar de depender del código fuente.

Aplicaciones del aprendizaje automático

Entonces, si el Aprendizaje Automático no es magia negra y tampoco es algo que vaya a engendrar Terminators, ¿para qué es útil?

machine-learning

El Aprendizaje Automático ayuda en los casos en los que la programación tradicional se queda corta, y estos casos generalmente entran en una de las dos categorías.

  • Clasificación
  • Predicción

Como su nombre indica, la Clasificación se refiere a etiquetar cosas correctamente, mientras que la Predicción pretende corregir proyecciones futuras, dado un conjunto de datos suficientemente grande de valores pasados.

Algunas aplicaciones interesantes del aprendizaje automático son

Filtrado de spam

El spam enel correo electrónico es omnipresente, pero intentar detenerlo puede ser una pesadilla. ¿Cómo se define el spam? ¿Es la presencia de palabras clave específicas? ¿O tal vez la forma en que está escrito? Resulta difícil idear un conjunto exhaustivo de reglas, desde el punto de vista programático.

Por eso utilizamos el aprendizaje automático. Mostramos al sistema millones de mensajes spam y mensajes no spam y dejamos que descubra el resto. Este fue el secreto de los excelentes filtros antispam de Gmail, ¡que sacudieron el correo electrónico personal a principios de la década de 2000!

Recomendaciones

Todas las grandes empresas de comercio electrónico disponen hoy de potentes sistemas de recomendación. En ocasiones, su capacidad para recomendar cosas que «podrían» resultarnos útiles es increíblemente precisa, a pesar de que nunca antes hayamos hecho clic en ese artículo.

¿Coincidencia? En absoluto

El aprendizaje automático está trabajando duro aquí, engullendo terabytes tras terabytes de datos e intentando predecir nuestros volátiles estados de ánimo y preferencias.

Chatbots

¿Se ha topado alguna vez con un servicio de atención al cliente de primer nivel que parecía extrañamente robótico y, sin embargo, era capaz de entablar una interesante conversación trivial?

chatbot-illustration

Bueno, ¡entonces le ha ganado el aprendizaje automático!

Aprender de las conversaciones y determinar qué decir y cuándo es un área próxima y emocionante de la aplicación de chatbots.

Eliminación de malas hierbas

En la agricultura, los robots impulsados por el aprendizaje automático se utilizan para rociar las malas hierbas y otras plantas no deseadas entre los cultivos de forma selectiva.

De otro modo, esto tendría que hacerse a mano o supondría un gran despilfarro, ¡ya que el sistema rociaría también el producto con el líquido exterminador!

Búsqueda por voz

Lainteracción por voz con los sistemas informáticos ya no es ciencia ficción. Hoy tenemos asistentes digitales como Alexa, Siri y Google Home que pueden recibir órdenes verbalmente y no meter la pata (bueno, ¡casi!).

google-voice-search

Algunos podrían argumentar que es un invento que es mejor evitar, ya que está haciendo a la raza humana más perezosa que nunca, pero no se puede discutir su eficacia.

Diagnóstico médico

Estamos al borde de una revolución en el diagnóstico médico, ya que los sistemas basados en el aprendizaje automático están empezando a superar a los médicos experimentados en el diagnóstico mediante radiografías, etc.

Tenga en cuenta que esto no significa que pronto dejarán de ser necesarios los médicos, sino que la calidad de la atención médica aumentará drásticamente, mientras que los costes se desplomarán (¡a menos que los cárteles empresariales dicten lo contrario!).

Esto ha sido sólo una muestra de para qué se está utilizando el aprendizaje automático. Coches que se conducen solos, robots que juegan a juegos de estrategia, máquinas que doblan camisetas, que rompen captchas y que colorean fotos en blanco y negro están sucediendo en estos días.

Tipos de aprendizaje automático

Las técnicas de aprendizaje automático son de dos tipos.

El aprendizaje supervisado, en el que el sistema está dirigido por el juicio humano, y el aprendizaje no supervisado, en el que se deja que el sistema aprenda por sí mismo. Otra forma de decir lo mismo sería que en el Aprendizaje Supervisado, tenemos un conjunto de datos que contiene tanto las entradas como la salida esperada, que el sistema utiliza para comparar y autocorregirse. En el aprendizaje no supervisado, sin embargo, no hay ningún resultado existente con el que compararse, por lo que los resultados pueden variar salvajemente.

¿Una aplicación emocionante y escalofriante del aprendizaje automático no supervisado?

Sería la de los robots que juegan a juegos de mesa, en los que se enseña al programa las reglas del juego y las condiciones para ganar y luego se le deja a su aire. A continuación, el programa juega millones de partidas contra sí mismo, aprendiendo de sus errores y reforzando las decisiones ventajosas.

Si se dispone de un ordenador lo suficientemente potente, ¡se puede preparar una IA que gane al mundo en cuestión de horas!

Las siguientes imágenes ilustran estas ideas de forma sucinta(fuente: Medium):

supervised-machine-learning
unsupervised-machine-learning

Herramientas y bibliotecas para el aprendizaje automático

Los profesionales de la ciencia de datos utilizan muchas herramientas y bibliotecas de ML para resolver problemas complejos de aprendizaje automático. He aquí algunas de las mejores plataformas de aprendizaje automático que puede probar:

#1. TensorFlow

TensorFlow es una plataforma de ML de extremo a extremo que es amada por muchos para crear modelos de ML de grado de producción. Puede utilizar directamente sus modelos preentrenados o crear sus propios modelos y entrenarlos.

No importa el nivel de habilidad que posea, puede encontrar soluciones ML fácilmente utilizando esta herramienta. Con TensorFlow en su conjunto de herramientas, le resultará más fácil pasar de la fase de investigación a la de producción. Le ayudará a encontrar soluciones más rápidamente para acelerar sus tareas de ML en cada fase del flujo de trabajo.

tensorflowml

Funciones:

  • Cargue y procese datos, construya potentes modelos ML y preprocese, limpie y consolide datos a escala con herramientas TensorFlow como conjuntos de datos estándar para el entrenamiento inicial de modelos y su validación.
  • El ecosistema TensorFlow se desarrolla sobre el marco Core, que agiliza la creación, el entrenamiento y la exportación de modelos.
  • Soporte para la iteración rápida de modelos, entrenamiento distribuido, depuración sin esfuerzo mediante Keras, etc
  • Seguimiento de la mejora y el desarrollo mediante TensorBoard y el análisis de modelos
  • Ejecución y despliegue de modelos en el dispositivo, en las instalaciones, en la nube, navegador, dispositivos de borde, servidores, móviles, CPUs, GPUs, microcontroladores y FPGAs.

TensorFlow incluso le ayuda a implementar MLOps y las mejores prácticas para el seguimiento de modelos, la automatización de datos, la formación de modelos y la supervisión del rendimiento.

#2. scikit-learn

scikit-learn es una herramienta de ML eficiente pero sencilla que puede utilizar para realizar análisis predictivos de datos. Es accesible para cualquiera y reutilizable en una variedad de contextos diferentes. scikit-learn está construido sobre SciPy, NumPy y matplotlib.

Lo mejor es que scikit-learn es una herramienta de código abierto que se puede utilizar comercialmente y tiene una licencia BSD. La herramienta es útil en:

  • Clasificación: para identificar la categoría de un objeto mediante algoritmos de ML como SVM, bosque aleatorio, vecinos más cercanos, etc. Se utiliza en el reconocimiento de imágenes y la detección de spam.
  • Regresión : para predecir los atributos de valor continuo de un objeto mediante algoritmos como SVR, bosque aleatorio, vecinos más cercanos, etc. Se utiliza en la predicción de precios de acciones y respuestas a fármacos.
  • Clustering: para agrupar objetos similares mediante algoritmos como k-Means, mean-shift, spectral clustering, etc. Se utiliza en la agrupación de resultados de experimentos y en la segmentación de clientes.
  • Reducción de la dimensionalidad: para reducir las variables aleatorias a considerar mediante algoritmos como PCA y la selección de características. Se utiliza para la visualización y la mejora de la eficiencia.
  • Selección de modelos : para comparar, validar y elegir modelos y parámetros mediante la validación cruzada y la búsqueda en cuadrícula. Se utiliza para mejorar la precisión.
  • Preprocesamiento: para realizar la normalización y la extracción de características para transformar los datos de entrada.

#3. MATLAB

MATLAB es una popular plataforma de programación y cálculo numérico que utilizan millones de científicos e ingenieros. Le ayuda a analizar datos, crear modelos y desarrollar algoritmos.

Su entorno de escritorio está ajustado para procesos de diseño y análisis iterativos con un lenguaje de programación que expresa directamente las matemáticas de matrices y arrays.

matlabml

Funciones:

  • Modele, analice, explore y visualice datos
  • Cree clases, funciones y scripts junto con aplicaciones web y de escritorio
  • Live Editor para crear scripts con texto formateado, salida y código en un cuaderno ejecutable
  • Las aplicaciones de MATLAB le permiten ver cómo funcionan los algoritmos con los datos y, a continuación, iterar y generar un programa para automatizar el trabajo
  • Puede ejecutar sus análisis en nubes, GPU y clústeres con pequeños cambios
  • Realice computación paralela
  • Compatible con Azure y AWS

Aprendizaje automático: Recursos de aprendizaje

Así que, ahora que está entusiasmado con el aprendizaje automático y cómo puede ayudarle a conquistar el mundo, ¿por dónde empezar?

A continuación he enumerado algunos recursos fantásticos en la Web que pueden ayudarle a lograr fluidez en el Aprendizaje Automático ¡sin necesidad de obtener un doctorado en informática! Si no es un investigador del Aprendizaje Automático, encontrará el dominio del Aprendizaje Automático tan práctico y agradable como la programación en general.

Así que no se preocupe; no importa cuál sea su nivel actualmente, puede, como un buen programa de Aprendizaje Automático, enseñarse a sí mismo y mejorar. 😛

#1. Programación

El primer requisito para introducirse en el Aprendizaje Automático es aprender a programar. Eso es porque los sistemas de Aprendizaje Automático vienen en forma de librerías para varios lenguajes de programación.

Python es el más recomendado, en parte porque es increíblemente agradable de aprender y en parte porque tiene un ecosistema masivo de bibliotecas y recursos.

python-programming

La Guía oficial para principiantes es un buen punto de partida, incluso si está ligeramente familiarizado con Python. O, tome este curso Bootcamp para convertirse en un héroe desde cero.

#2. Piense en estadísticas

Una vez que haya terminado con los conceptos básicos de Python, mi segunda recomendación sería repasar dos libros excepcionales. Son 100% gratuitos y están disponibles en PDF para su descarga. Think Stats y Think Bayes son dos clásicos modernos que todo aspirante a ingeniero de Aprendizaje Automático debería interiorizar.

#3. Udemy

En este punto, le recomiendo que tome un par de cursos de Udemy. El formato interactivo y a su propio ritmo le ayudará a entrar en el meollo de la cuestión y a ganar confianza.

Asegúrese de echar un vistazo a la vista previa del curso, a las críticas (¡sobre todo a las negativas!) y a la sensación general del curso antes de empezar.

udemy-machine-learning

También puede encontrar tutoriales increíbles en YouTube de forma gratuita. Sentdex es uno de esos canales que puedo recomendar, donde siempre hay toneladas de diversión, pero su enfoque no es apto para principiantes.

#4. Andrew Ng

El curso impartido por Andrew Ng en Coursera es posiblemente el recurso de aprendizaje más popular para los fundamentos del aprendizaje automático.

coursera-machine-learning

Aunque utiliza el lenguaje de programación R, sigue siendo incomparable en su tratamiento del tema y sus lúcidas explicaciones. Gracias a este curso, Andrew Ng ha alcanzado una especie de estatura divina en los círculos de ML, y la gente le admira en busca de la sabiduría suprema (¡no bromeo!).

No es un curso para principiantes, pero si ya se le da bien el manejo de datos y no le importa investigar un poco sobre la marcha, este curso es la mejor recomendación.

#5. Udacity

Conviértase en ingeniero de aprendizaje automático cursando este nano título de Udacity.

udacity-ml-nanodegree

Le llevará aproximadamente 3 meses completarlo y al final del curso, se espera que tenga una idea justa sobre algoritmos de aprendizaje automático, cómo modelarlos y desplegarlos en producción.

Conclusión

Los recursos en Internet son infinitos y es fácil perderse al empezar. La mayoría de los tutoriales y debates que hay por ahí son matemáticamente difíciles o carecen de una estructura y pueden acabar con su confianza incluso antes de empezar.

Así que me gustaría advertirle contra la autodestrucción: mantenga su objetivo modesto y avance en pasos mínimos. El aprendizaje automático no es algo con lo que pueda sentirse cómodo en uno o dos días, pero muy pronto empezará a disfrutar y, quién sabe, ¡quizá hasta cree algo aterrador!

¡Diviértase! 🙂