Machine Learning y Deep Learning comenzaron su andadura en el siglo pasado y están de moda últimamente gracias a una mayor capacidad de cómputo en nuestras máquinas. En un futuro cercano, las aplicaciones de dicha tecnología aumentarán exponencialmente y acabarán siendo de uso cotidiano para cualquier programador. Podemos darle muchos usos al Machine Learning y a Deep Learning. En éste artículo me centraré en Deep Learning. En Deep Learning se utilizan Redes Neuronales ya sean Convolutional Neural Networks, Recurrent Neural Networks, Sequence Models… cada una de ellas tiene un uso específico pero nos centraremos más en los usos que se dan a dichas redes. Algunos usos son muy conocidos, pero solo el futuro podrá darnos la sorpresa de aplicaciones novedosas y poco conocidas hasta ahora.

Entre las aplicaciones más conocidas, sobresalen las siguientes:

Reconocimiento de Imágen

Mediante el uso de Convolutional Neural Networks podemos identificar objetos y patrones en cualquier imágen.
Son famosos los controles de acceso basados en reconocimiento facial, que asociados a una base de datos nos permite asociar dicha característica a un sujeto en concreto.
De igual manera se puede detectar cualquier objeto en una imágen, por ejemplo un árbol o una papelera, una farola…
También es muy común el reconocimiento óptico de caracteres en una imágen (OCR), con cierta andadura de un tiempo a esta parte, que nos permite transformar el texto de una imágen en texto plano, reconocible por la máquina como caracteres. De igual manera se puede reconocer cualquier marca en una imágen permitiendo su clasificación.
También podemos encuadrar dichas detecciones en la imágen y etiquetarlas convenientemente mediante técnicas como sliding windows, yolo, etc…
Otro uso del reconocimiento de imágen es la sanidad. Podemos identificar tumores, roturas de huesos, enfermedades o malformaciones mediante una red neuronal adecuadamente entrenada. Su rendimiento es incluso mejor que lo haría un médico.
También podemos entrenar una red neuronal alimentada por una secuencia de imágenes o un vídeo para la conducción autónoma (Self Driving Cars). Esto último, combinaría algún algoritmo de IA aparte de nuestra red neuronal, pero eso se sale de nuestro objetivo inicial.

Reconocimiento de audio

Podemos usar Sequence Models para identificar patrones o traducir a texto dicho audio. Esto tiene utilidad en domótica por ejemplo. Véase Amazón Echo, Google Home, etc… que permiten dentro de un grupo de órdenes cada vez mayor, realizar tareas de forma automática como encender y apagar luces, poner cierto tipo de música, llamar un taxi de Uber, encargar una hamburguesa o lo que se nos ocurra podríamos programarlo con un plugin en el caso de Amazon Echo.
O bien los llamados Speech to Text (voice recognition), que directamente permiten pasar de audio a texto (carateres).
O Text to Speech que realiza la función contraria.
También podemos entrenar Sequence Models para reconocer la forma de hablar de una persona en concreto. Como vereis, el uso es un nexo entre personas y máquinas o programas ya que podemos ordenar a la máquina lo que esté programado sirviendo de interfaz la voz.

Resolución de problemas o como oponente en juegos

Tras la aparición de AlphaGo Zero, se demuestra que una máquina correctamente entrenada puede superar la inteligencia humana, como se demostró en el último campeonato de Go.
AlphaGo Zero es un programa python, que usa librerías Keras y utiliza una RNN y el algoritmo Monte Carlo Tree Search. Dicho programa parte de tábula rasa, es decir, aprende jugando contra si mismo y tras 40 días jugando ha sido capáz de superar al campeón del mundo en el juego Go.
El desarrollador de dicho programa liberó el código y puede ser adaptado a cualquier juego, incluyendo problemas de otro tipo que puedan representarse con un algoritmo.

El código: https://github.com/AppliedDataSciencePartners/DeepReinforcementLearning
Más información : https://medium.com/applied-data-science/how-to-build-your-own-alphazero-ai-using-python-and-keras-7f664945c188

Predicciones, estimaciones o clasificaciones de: precios, cantidades, en base a datos…

Para que una red neuronal funcione deberemos entrenarla con datos correctos del ámbito que nos ocupe. Por ejemplo, podemos predecir el precio de una casa en base a las características de dicha casa y su correlación con otras parecidas. Podemos también predecir stock con antelación, predecir terremotos, clasificar texto como spam o no, clasificar artículos según temática de forma automática, clasificar el tipo de anuncios que pueden interesar a un usuario en concreto, recomendar música, noticias, artículos… Como traductor automático a otros idiomas...
Las aplicaciones son innumerables. Podeis ver en Google Dataset Search https://toolbox.google.com/datasetsearch , la gran cantidad de datasets disponibles para entrenar redes neuronales que manejen dicha información.
Otro recurso donde podemos buscar datasets para nuestras redes neuronales es kaggle https://www.kaggle.com/datasets . Kaggle también organiza competiciones para Data Sciencists. Un buen recurso.

Otros usos serían generadores de arte: cuadros, música, incluso poesía o prosa...

Espero que esta introducción a deep learning os haya despertado la curiosidad con respecto a este mundillo. Gracias por la lectura. Saludos desde Madrid.

Currently unrated
  • Share

Comments

There are currently no comments

New Comment

* Please fill all required form field, thanks!