(Artículo escrito por nuestro profesor Pedro Gómez)
Como muchos ya sabréis, Deep Learning no es sino un conjunto de algoritmos de Machine Learning que se caracterizan por emplear modelos de redes neuronales con muchas capas para lograr el aprendizaje deseado.
Para que funcionen de manera correcta, requieren de muchos ejemplos o datos a partir de los cuales los algoritmos puedan llegar a aprender de manera automática. También requieren de una gran capacidad de computación, por lo que en los últimos años han ido ganando importancia gracias entre otras cosas a la potencia de las GPUs.
La diferencia principal con el resto de técnicas de Machine Learning es que mientras las técnicas tradicionales requieren procesar primero los datos generando características de los mismos antes de aprender, las técnicas de Deep Learning consiguen realizar el aprendizaje deseado sin ese paso previo.
Algunas aplicaciones comunes del Deep Learning son:
- Reconocimiento de imágenes
- Detección de objetos
- Sistemas de recomendación
- Traducción de lenguaje
- etc.
Mientras que otras menos conocidas pueden ser:
- Compresión de imágenes
- Escalado de imágenes http://engineering.flipboard.com/2015/05/scaling-convnets
- Generación de música https://deepjazz.io/
- ¿Qué pasaría si intentáramos que una red neuronal escribiera el guión de una película de ciencia ficción si la entrenamos con guiones de otras películas del género?
Por el lado del software, existen varios frameworks que nos permiten utilizar las técnicas de Deep Learning. Básicamente, cada proveedor de servicios en la nube ha creado su propio framework, como parte de su estrategia para competir por dichos servicios. Uno de los más conocidos es Tensorflow de Google: https://www.tensorflow.org/
Una de las ventajas de Tensorflow, es que tiene conexión con lenguajes de programación populares en el mundo del Machine Learning, como R y Python. En el caso del ejemplo que os voy a comentar, éste ha sido el framework que he utilizado.
Imaginemos que nos quisiéramos inventar nombres de personas nuevos en euskera. Para poder entrenar un modelo que pueda aprender un modelo de lenguaje, necesitamos ejemplos de nombres en euskera ya existentes. En este caso, he descargado la lista de nombres disponibles en Euskera separada por sexos:
Disponemos en este caso de 1529 nombres de hombres y 1669 de mujeres. La verdad es que son pocos, y para hacer un experimento más serio sería conveniente disponer de más datos. Quizás alguien disponga de un listado más completo.
Podemos intentar generar un modelo de Deep Learning que modelice la probabilidad de observar un nombre en euskera como la probabilidad conjunta condicional de cada una de las letras anteriores que aparecen en dicho nombre. Para entrenar este modelo en este caso he optado por una arquitectura de red denominada RNN, Recurrent Neural Network.
¿Será el modelo capaz de inventar nombres nuevos en Euskera a partir de los ya existentes? Os adjunto un listado de algunos de los nombres nuevos que he obtenido, ¿os suenan a nombres en euskera? Os aseguro que no figuran en la lista oficial de Euskaltzaindia:
Hombres | Mujeres |
---|---|
Oñat | Buga |
Elaitz | Abenle |
Aldeka | Hezua |
Molen | Auntzun |
Xapebo | Saiane |
Odrin | Durosi |
Olaxo | Guna |
Etein | Lenine |
Lari | Urparana |
Agotz | Manke |
Enix | Gatzide |
Ereki | Kalunia |
Isteru | Izia |
Ortzo | Emalene |
Hiraso | Niresku |
Jariti | Ozoitza |
Nankin | Irnen |
Leniz | Jenitz |
Ultaz | Erzui |
Benitx | Azkiloga |
A mí al menos sí me parecen bastante euskaldunes!
Muy curioso, sobre todo que uno de los nombres de la lista sea mi cuarto apellido, Leniz! Generado artificialmente como nombre masculino, pero euskaldun a tope!!