Un pequeño experimento con Deep Learning

(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:
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:
Nombres de personas en euskera (Fuente: http://www.euskaltzaindia.eus/index.php?option=com_content&view=article&id=4161&Itemid=699&lang=es)
Nombres de personas en euskera (Fuente: http://www.euskaltzaindia.eus/index.php?option=com_content&view=article&id=4161&Itemid=699&lang=es)
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!