jueves, 19 de octubre de 2017

Sobre el modelo de red neuronal AlphaGo Zero (de Google DeepMind)

Previous versions of AlphaGo initially trained on thousands of human amateur and professional games to learn how to play Go. AlphaGo Zero skips this step and learns to play simply by playing games against itself, starting from completely random play. In doing so, it quickly surpassed human level of play and defeated the previously published champion-defeating version of AlphaGo by 100 games to 0.
If similar techniques can be applied to other structured problems, such as protein folding, reducing energy consumption or searching for revolutionary new materials, the resulting breakthroughs have the potential to positively impact society. 
(Profesor David Silver)

¡Realmente increíble las implicaciones que tiene este descubrimiento de DeepMind! Su modelo neuronal AlphaGo Zero es capaz de aprender SOLO sin necesitar de datos de ningún tipo (ya no necesita siquiera aprender de jugadas de humanos como su versión anterior); simplemente aprende jugando contra sí mismo. Los chicos de Google DeepMind hablan de un entrenamiento de "tabula rasa" mediante un proceso de Reinforce Learning autónomo (auto-sostenido). Este proceso de entrenamiento consiste en partir de una red neuronal profunda (similar a lo que sería un cerebro con sinapsis aleatorias), y mediante una iteración de entrenamiento autónomo mediante ensayo-error y pequeñas mutaciones esa tabula rasa (esa red neuronal con sinapsis aleatorias) poco a poco va ajustando su estructura hasta lograr sin ninguna ayuda algorítmica humana vencer al mejor jugador mundial de Go. Es decir, que a partir de eso que sería el equivalente computacional de neuronas unidas mediante sinapsis aleatorias, este modelo de red neuronal de DeepMind es capaz en pocas semanas de aprender y finalmente emular (y mejorar) la creatividad y la imaginación necesarias para jugar este juego milenario que ha necesitado de millones de años para su implantación cerebral en el hombre.

¡Además esta mejora de AlphaGo Zero supone que el programa ahora es capaz de vencer siempre (al 100%) a su versión predecesora (que ya era ella por cierto capaz de vencer al mejor jugador del mundo)! Es decir, que han conseguido una mejora no ya sobrehumana, sino exponencialmente mejor que su predecesora...¡y además han logrado disminuir (exponencialmente) los requisitos de hardware necesarios para su funcionamiento!



Realmente la IA general está despegando, y todo apunta a que no hace falta más que un modelo neuronal lo suficientemente grande y profundo, suficiente capacidad computacional, y un entrenamiento y modulación similar a la evolución natural.

Implicaciones reales del proyecto sobre el avance hacia una IA general.

Imagina que eres tú el que está jugando a Go: ¿cómo sabes qué movimiento hacer? Recuerda que en el Go la lógica no es fundamental: hay más jugadas disponibles que átomos en el Universo lo que hace que no sea posible racionalizar las jugadas, cosa que convierte en muy importante el proceso de creatividad, imaginación y sobre todo el instinto. De hecho, un gran maestro humano de Go juega  casi exclusivamente guiado por el instinto: mueve donde CREE que es más adecuado, pero NO sabe racionalmente por qué debe mover en cierto lugar concreto en lugar de en cualquier otro (algo que con el ajedrez por ejemplo NO pasa puesto que es mucho más asequible a la planificación racional).

Otro ejemplo: vas por la calle y ves pasar una chica (o un chico) y sientes atracción por ella (o por él): ¿por qué sientes realmente atracción por esa persona? No lo sabes, sólo sabes que sientes atracción por cierto estereotipo de persona y punto. Un ejemplo más: los artistas y su creatividad. Estos trabajos son frutos de ideas que le "salen" de dentro al artista, pero casi siempre de manera instintiva sin saberse bien cómo ni de donde (por eso hablan metafóricamente de la ayuda de su musa, que es en realidad parte de su subconsciente).

El ser humano tiene por lo tanto muchos comportamientos e ideas que son de origen inconscientes e instintivos, los cuales no tienen ni explicación ni soporte racional directo. Y son precisamente este tipo de comportamientos creativos e imaginativos los que DeepMind está logrando de momento simular con mucho éxito; demostrando  por ejemplo que AlphaGo Zero es capaz de adquirir tales habilidades instintivas con una capacidad sobrehumana (y sin soporte algorítmico humano). Se podría decir en cierta manera que; aunque por ahora sólo en el terreno del Go, este modelo neuronal es capaz de actuar con más creatividad, imaginación e instinto que cualquier jugador humano. Y eso es algo muy revelador del futuro que nos espera en IA.

lunes, 17 de julio de 2017

Usando el modelo de red neuronal de traducción de Google (GNMT)...¡para jugar al ajedrez!

Hace unos días, y para mi gran sorpresa, Google nos hizo el enorme regalo de hacer público el código fuente de su motor de traducción de lenguaje natural más moderno (GNMT): https://github.com/tensorflow/nmt

Así que decidí rápidamente hacer uso de esta maravilla, junto con las mejoras con la que la versión 1.2 de TensorFlow viene cargada, para programar las modificaciones necesarias para poder enfocar el modelo de Google a la traducción...¡de jugadas en el juego del ajedrez! Es decir; que el modelo (con modificaciones mínimas), en lugar de aprender a traducir por ejemplo de español a inglés, será capaz de inferir movimientos de ajedrez válidos (usando la notación algebraica) dado un estado de tablero cualquiera.

El resultado final lo podéis ver (y usar) en el siguiente repositorio de mi cuenta personal en GitHub: https://github.com/Zeta36/Using-Google-Neural-Machine-Translation-for-chess-movements-inference-TensorFlow-.

Pero lo realmente importante sin embargo, es sin duda el hecho de comprender la potencia que tiene el modelo de Google para ser generalizado a cualquier tarea de mapeo que pueda ser tratada y representada de la manera adecuada como para servir como pares de entrada source-target en el entrenamiento supervisado. En este sentido se puede decir que el mismo modelo neuronal que es capaz de traducir entre idiomas, es también capaz de aprender a inferir como realizar tareas que en principio parecen poco relacionadas con  la propia traducción de textos. 

Esto me hace pensar que en realidad con este hecho se está demostrando algo significativo pero ya a un nivel neuronal (humano). Es posible que resultados como el que se demuestran con este tipo de generalizaciones de aprendizaje (y memorización) bajo una misma estructura de red neuronal artificial, sean una pista del modo en que nuestro propio cerebro podría ser capaz de reutilizar una misma zona cerebral para realizar muy diversas tareas de procesamiento. En este sentido no es descabellado a la luz de lo observado que por ejemplo partes de nuestro cerebro que se utilicen para entender y traducir lenguaje natural, sea utilizado también para otras tareas de inferencias totalmente distintas de las lingüísticas (como aprender a jugar al ajedrez, o incluso comprender ciertas ideas matemáticas). Os dejo a continuación con un poco de más información técnica sobre el proyecto que he realizado:

Using (Google) Neural Machine Translation for chess movements inference

Somedays ago a free version of the source code of the GNMT (Google Neural Machine Translation) was release in: https://github.com/tensorflow/nmt by Thang Luong, Eugene Brevdo, Rui Zhao
 

Introduction

Sequence-to-sequence (seq2seq) models (Sutskever et al., 2014, Cho et al., 2014) have enjoyed great success in a variety of tasks such as machine translation, speech recognition, and text summarization.
I've used the release of this seq2seq to show the power of the model. Using a vocabulary with just de numbers and letters (the symbols) used for the chess algebraic notation, I was able to train a model to infer the movement a human would do given a table state.
The supervised learning uses then source-target pairs of the form:
Source: rnq1kb1r/pp11ppp1/11p11n11/1111111p/11111111/11111NPb/PPPP1P1P/RNBQR1KB b
Target: Bg4
The source is the state of the board, and the target the movement a human would do in this situation.
In this way the source vocabulary was:
w
/
1
p
r
n
b
q
k
P
R
N
B
Q
K
and the target vocabulary:
p
r
n
b
q
k
P
R
N
B
Q
K
x
+
O
-
1
2
3
4
5
6
7
8
a
c
d
e
f
g
h
=

Results

Using a NMT + GNMT attention (2 layers) the model was able to reach a good result with:
eval dev: perplexity 2.83 eval test: perplexity 3.07 global training step 72100 lr 0.868126 step-time 0.51s wps 9.57K ppl 2.76 bleu 20.64
This means that, given a board state whatever, the model can predict in a seq2seq way a valid (and usually human) chess movement.

miércoles, 12 de julio de 2017

La magnífica mejora en el sistema de traducción de Google (que ha pasado casi desapercibida)

"Alrededor de dos mil quinientos años atrás, un comerciante mesopotámico reunió arcilla, madera y juncos y cambió la humanidad para siempre. Con el tiempo, su ábaco permitiría a los comerciantes hacer un seguimiento de los bienes y reconciliar sus finanzas, permitiendo que la economía florezca.

Pero ese momento de inspiración también ilumina otra asombrosa habilidad humana: nuestra capacidad de recombinar conceptos existentes e imaginar algo completamente nuevo. El inventor desconocido habría tenido que pensar en el problema que querían resolver, el artefacto que podían construir y las materias primas que podían reunir para crearlo. La arcilla se podría moldear en una tableta, un palillo se podría utilizar para rasguñar las columnas y los juncos pueden actuar como contadores. Cada componente era familiar y distinto, pero juntos en esta nueva forma, formaron algo revolucionario.

Esta idea de "composicionalidad" está en el centro de las capacidades humanas como la creatividad, la imaginación y la comunicación basada en el lenguaje. Equipado con sólo un pequeño número de bloques de construcción conceptuales familiares, somos capaces de crear un gran número de nuevos sobre la marcha. Hacemos esto naturalmente colocando conceptos en jerarquías que van de específico a más general y luego recombinando diferentes partes de la jerarquía de maneras novedosas.

Pero lo que viene tan naturalmente a nosotros, sigue siendo un reto en la investigación de la IA.

En nuestro nuevo artículo , proponemos un nuevo enfoque teórico para abordar este problema. También se demuestra un nuevo componente de red neural denominado Symbol-Concept Association Network (SCAN), que puede, por primera vez, aprender una jerarquía de conceptos visuales conectados de manera que imita la visión humana y la adquisición de palabras, permitiéndole imaginar conceptos novedosos guiado por instrucciones de lenguaje.

Nuestro enfoque difiere de los trabajos previos en esta área, ya que está totalmente basado en los datos sensoriales y aprende de muy pocos pares de "imagen-palabra". Mientras que otros enfoques de aprendizaje profundo requieren miles de ejemplos de imágenes para aprender un concepto, SCAN aprende tanto las primitivas visuales como las abstracciones conceptuales principalmente de observaciones sin supervisión y con tan sólo cinco pares de una imagen y una etiqueta por concepto. Una vez entrenado, SCAN puede generar una lista diversa de conceptos que corresponden a una imagen en particular, e imaginar diversos ejemplos visuales que corresponden a un concepto particular, incluso si nunca ha experimentado el concepto antes.

Esta capacidad de aprender nuevos conceptos mediante la recombinación de los existentes a través de instrucciones simbólicas ha dado a los seres humanos capacidades asombrosas, lo que nos permite razonar sobre conceptos abstractos como el universo, el humanismo o - como fue el caso en Mesopotamia - economía. Mientras que nuestros algoritmos tienen un largo camino por recorrer antes de que puedan hacer tales saltos conceptuales, este trabajo demuestra un primer paso hacia tener algoritmos que pueden aprender de una manera en gran medida sin supervisión, y pensar en abstracciones conceptuales como las utilizadas por los seres humanos."

Este texto que acabo de pegar arriba es la asombrosa conclusión de un nuevo trabajo de Google DeepMind (publicado hoy). Se trata de una traducción parcial del siguiente artículo del blog oficial de la propia compañía de Google: https://deepmind.com/blog/imagine-creating-new-visual-concepts-recombining-familiar-ones/

Pero lo más destacado de todo esto no es quizás el trabajo comentado en sí mismo, sino el hecho de que el texto mostrado antes ha sido totalmente traducido de manera autónoma por el actual motor de IA de Google. No he necesitado hacer ni una sola modificación o corrección al texto devuelto, y si acaso lo que yo quizás pondría sería un "la" delante de donde dice "sobre conceptos abstractos como el universo, el humanismo o - como fue el caso en Mesopotamia - LA economía".

En fin, es evidente que rápidamente nos acostumbramos a lo bueno, y que pocos recuerdan ya las críticas hacia la traducción automática que hacíamos del traductor de Google hace apenas un año y pico. Pues bien, desde entonces Google ha mejorado MUCHO el sistema de traducción gracias a una innovación tecnológica que han denominado Neural Machine Translation:
https://research.googleblog.com/2016/09/a-neural-network-for-machine.html
https://research.googleblog.com/2016/11/zero-shot-translation-with-googles.html


El sistema aún no es perfecto (y su implantación tristemente casi ha pasado desapercibida en los medios de comunicación), pero si uno se fija y compara el tipo de traducciones automáticas de las que disponíamos hace apenas 5 años con las que tenemos hoy día, se puede ver claramente una mejora literalmente exponencial. Muy (muy) probablemente Google logrará una traducción con capacidades sobrehumanas en los próximos 5 años, amén de un sistema de reconocimiento de voz igualmente mejor que el del hombre medio. Vale unir a esto la síntesis autónoma de voz "end-to-end" de trabajos como los de WaveNet o Tacotron para poderse asegurar que en no más de un lustro dispondremos de aparatos (igual un simple móvil Android) capaces de oír (y transcribir el contenido de) una voz, detectar el lenguaje, traducir lo escuchado a otra lengua arbitraria, y dictar con una voz sintética indiferenciable de una humana dicho texto ya traducido. Esto de hecho ya hay dispositivos que "pueden" hacerlo, pero la cuestión es que en poco tiempo existirán proyectos capaces de realizar esta tarea siempre MEJOR (y más rápido) que cualquier persona.

Los traductores humanos serán posiblemente el primer gremio (mucho antes incluso que los taxistas y demás transportistas) en perder TODO su trabajo a manos de la automatización.

Un saludo, compañeros.