Mostrando entradas con la etiqueta computación. Mostrar todas las entradas
Mostrando entradas con la etiqueta computación. Mostrar todas las entradas

jueves, 27 de diciembre de 2018

Hipótesis de la simulación (realidad simulada computacionalmente)


"The belief that there is a significant chance that we will one day become posthumans who run ancestor-simulations is false, unless we are currently living in a simulation." (Nick Bostrom)

El argumento de que nuestra realidad podría ser una simulación trascendental de la cual los entes simulados (entre ellos nosotros) no podemos ser conscientes viene de lejos (nada menos que del filósofo René Descartes), pero fue realmente en el año 2003, tras este magnífico paper (debes leerlo) de Nick Bostrom, cuando la hipótesis llamó realmente la atención de la comunidad especializada (muchos físicos de renombre, por ejemplo; aceptan hoy día su posibilidad sin ambages). De hecho, el razonamiento de Nick se está viendo reforzado en los últimos años gracias al enorme avance vivido en el campo de la computación cuántica.
Vamos a ver de qué trata el asunto:
Grosso modo, la propuesta es la siguiente (más detalles en el paper). Se parte de la premisa de que una de las tres proposiciones siguientes es cierta:
  1. La fracción de civilizaciones inteligentes que alcanzan un estado posthumano es muy cercana a cero (~0%); ó
  2. La fracción de civilizaciones posthumanas interesadas en ejecutar simulaciones de su propio mundo es muy cercana a cero (~0%); ó
  3. La fracción de todos los seres inteligentes (en estado posthumano o no) que viven y experimentan, lo hacen dentro de una simulación con una probabilidad muy cercana a uno (~99.9999...%).
Nota: Se entiende como estado posthumano, a aquel en el cual una entidad inteligente (humana o no, eso no importa) es capaz de construir un computador capaz de ejecutar simulaciones de su propia realidad con una alta fidelidad.
Si (1.) es verdadera, entonces es casi seguro que nos extinguiremos como entes (junto con el resto de posibles civilizaciones, presentes y futuras, esparcidas por el Universo) antes de alcanzar el estado posthumano. Si (2.) es cierta, entonces debe existir una fuerte convergencia en el comportamiento entre civilizaciones (una especie de esencia común que determine por completo el comportamiento de todos los miembros de cientos de civilizaciones -en gran parte incomunicadas dadas las distancias que las separan-). De este modo, en ninguna de estas civilizaciones avanzadas llegarían a aparecer nunca individuos con la libertad y/o la capacidad para ejecutar simulaciones de su mundo (a pesar de poseer la tecnología necesaria para ello). Por último, si (3.) es verdadera, entonces es casi seguro que vivimos en una simulación: es decir, que tiende a cero la probabilidad de que estemos por casualidad en el "primer mundo" donde (1.) y (2.) son falsas (es decir, que el estado posthumano sea posible y abundante, y donde todos estén además deseando recrear computacionalmente su propio mundo, pero que sin embargo no formemos parte de una simulación previa a pesar de la recursividad del proceso).
Finalmente, y a modo de corolario de lo anteriormente expuesto, Nick Bostrom propone que: "a menos de que ahora mismo estemos viviendo en una simulación, es casi una certeza que nuestros descendientes nunca llegarán a ejecutar una simulación de nuestro mundo". Es decir, que o bien el estado posthumano es inviable, o bien hay "algo" en nuestra esencia natural (compartida con el resto de posibles entes inteligentes que pueblan o poblarán el Universo) que impide que nunca jamás un individuo con los recursos suficientes llegue a simular computacionalmente la realidad -de manera que (1.) ó (2.) serían ciertas-.

La computación cuántica.

Cuando en el 2003 se propuso esta hipótesis, el campo de la computación cuántica estaba en pañales. Pero eso ha cambiado recientemente. Cada año se bate un nuevo récord en el número de qubits que los científicos son capaces de manejar de manera eficiente (con cada vez más bajos niveles de error), y muy pronto se espera que empezarán a aparecer las primeras computadoras cuánticas capaces de superar en poder de cálculo a los supercomputadores clásicos. De hecho, si el número de qubits continúa creciendo al mismo ritmo de los últimos años, ¡llegará en cuestión de décadas el momento en que será posible simular computacionalmente el estado de los miles de billones de partículas que pueblan nuestro Universo (dentro del horizonte cosmológico)!
Y esto es así precisamente gracias al fundamento cuántico de nuestra realidad. El estado de superposición de los qubits (los cuales no "almacenan" como valor un 0 ó 1, sino o y 1 al mismo tiempo; ponderados y normalizados por dos parámetros alpha y beta) hacen que la capacidad de cómputo aumente siguiendo una progresión exponencial con cada qubit que se añade al proceso, lo cual implica que únicamente con unos pocos cientos de qubits trabajando juntos -500, por ejemplo- , es posible procesar en paralelo nada menos que 2500 estados...¡un número mucho mayor que el de partículas que pueblan nuestro Universo (visible)!
Valga notar que actualmente Google va en busca de la supremacía en la computación cuántica con un futurible procesador de 49 qubits, lo cual da una idea de lo "poco" que falta para que ese estado posthumano del que hablamos antes sea viable.

En resumen.

Que si las promesas teóricas del computador cuántico se hacen realidad (y todo apunta en ese sentido), y si en el Universo existen (o existirán) suficientes civilizaciones inteligentes capaces de alcanzar dicha tecnología (la cual al ser humano parece que le llevará algo así como 10.000 años -momento en que se asentaron nuestros inicios culturales como civilización-), entonces la premisa (1.) de Bostrom casi la podemos descartar. Dado lo vasto del Universo es complicado que seamos la única civilización existente, y dada la "facilidad" con la que hemos dominado la tecnología cuántica es difícil creer que otros entes inteligentes no harán lo propio en un periodo de tiempo similar al nuestro. El estado posthumano parece en este sentido que es bastante viable y abundante (es decir, que lo es ya en el presente por entre las galaxias, o que lo será en el futuro, dependiendo de cómo de "rápido" haya actuado -cognitivamente- la evolución en la Tierra en relación a la "evolución" en otros planetas habitables).
Por otra parte, la premisa (2.) es, siguiendo un razonamiento antrópico, bastante poco plausible. De hecho, una de las primeras cosas que hizo el ser humano en cuanto adquirimos el poder de procesar la información (clásicamente) tras la segunda guerra mundial fue crear pequeñas "simulaciones" de nuestro mundo (valga de ejemplo el mítico juego del Pong). Más aún, cada nueva generación de videoconsolas (y procesadores gráficos GPU) no tienen más aliciente que el de permitir mejorar la fidelidad con la que podemos recrear simulaciones del mundo. Así pues parece que nuestra esencia natural tiende más bien en sentido contrario de lo que dice (2.): instintivamente parece que estamos ávidos de mejorar nuestra capacidad de procesar información para generar cada vez realidades más complejas y fieles a la nuestra. Por tanto, es bastante plausible rechazar también esta segunda premisa. De esta manera, una vez rechazados los puntos (1.) y (2.) gracias al aceptable soporte empírico del que disponemos (nuestro cercano dominio de la computación cuántica generalizada y nuestro instintivo comportamiento en favor de simular la realidad), nos queda elegir entre aceptar (3.): vivimos en una realidad simulada computacionalmente dentro de un proceso recursivo, o aceptar que da la astronómica casualidad de que vivimos en el "origen" o "primer mundo"; aquel en donde (1.) y (2.) son falsos, pero donde (3.) tampoco se cumple.
En concreto, de ser cierto el último caso, nuestro mundo sería entonces algo así como la "raíz" de un proceso computacional iterativo que algún ente (humano o no) de nuestro Universo echará a andar tarde o temprano: una primera generación de computadores cuánticos simularán con una fidelidad asombrosa una copia idéntica de nuestra realidad, y los seres simulados dentro de esa primera generación harán lo propio, puesto que su "mundo", aunque simulado, también poseerá el fundamento cuántico capaz de permitir una segunda generación simulada. Y de este modo el proceso continuará siguiendo un curso recursivo en principio sin fin.
Sin embargo, cuesta creer que por pura casualidad vayamos a estar en la cúspide o en el "origen" de la gigantesca pirámide que conforma posiblemente esta anidación de simulaciones cuánticas, por lo que sí; posiblemente (3.) sea cierto y nos encontremos casi con toda certeza (~99.9999...%) formando parte de una realidad simulada externamente (esto es, de manera trascendente).
Y es cierto que todo esto suena a ciencia ficción, pero es que la cercana realidad de la computación cuántica, junto con nuestro comportamiento instintivo natural parecen que no dejan mucho espacio para no aceptar esta posibilidad como cierta (o probablemente cierta). De hecho, pensad en lo siguiente: el día en que alcancemos la capacidad de cómputo necesaria, ¿cuál será la mejor manera que tendremos a mano para justificar la viabilidad de la realidad simulada? ¡Exacto! ¡Generando experimentalmente una!

viernes, 8 de diciembre de 2017

¡Más potencia!

«¡Es la guerra! ¡Traed madera! ¡Más madera!» 
(Los hermanos Marx)

Introducción.

El mundo de las ciencias de la computación están estos días de enhorabuena, un nievo hito histórico acaba de acontecer: hablamos por supuesto del casi milagroso desarrollo de Google DeepMind denominado AlphaZero, un modelo neuronal capaz de aprender de manera autónoma no supervisada (sin apoyo de datos etiquetados ofrecidos por el hombre) a jugar con capacidades sobrehumanas a varios juegos milenarios como el Go y el ajedrez (aquí podéis descargar el paper de este proyecto).

DeepMind acaba de demostrar así que la metodología que utilizaron para que un modelo neuronal aprendiera (con capacidades sobrehumanas) por sí misma sin apoyo de datos humanos el juego de Go, es generalizable a cualquier otro tipo de juego o situación. En el arriba comentado paper nos explican por ejemplo como en 4 horas (sí, sólo 4 horas), la red neuronal fue capaz de aprender a jugar al ajedrez (entre otros juegos) con una capacidad no sólo sobrehumana, sino superior a cualquier inteligencia artificial "clásica" creada por el hombre en estos juegos (con reglas de juego programadas y dictadas a mano con respaldo de una fuerza bruta computacional). Es decir, que la metodología que utilizaron hace unos meses en AlphaGo Zero ahora han demostrado que es fácilmente extensible a cualquier otra situación o juego (de ahí que al modelo mejorado ahora lo llamen AlphaZero a secas). De ahora en adelante ya sabemos que un modelo neuronal es capaz de aprender solo y sin supervisión humana alguna con sólo recibir de entrada el estado actual del juego y nada más (ya no hay que "explicar" ni programar a mano absolutamente nada para que una red neuronal pueda aprender y superar nuestras habilidades). Se puede decir que el ser humano ya sobra para conseguir que un modelo neuronal aprenda a ejecutar con éxito una gran variedad de situaciones.

Y por si esto no fuese suficiente para convencer al lector más escéptico, también hay que remarcar otro avance de Google realizado el mes pasado: AutoML (https://research.googleblog.com/2017/11/automl-for-large-scale-image.html). Se trata ni más ni menos que de un modelo neuronal capaz de generar (crear) por sí sólo otro modelo neuronal "hijo" orientado en la resolución de una tarea específica independiente. Y hay que remarcar dos cosas de AutoML: 1º) Es un modelo neuronal que es capaz de generar y crear de manera autónoma sin apoyo humano otro modelo neuronal, y 2º) El modelo neuronal "hijo" creado de esta manera autónoma es superior a cualquier modelo que haya sido capaz un ser humano de crear hasta la fecha a mano ajustando los parámetros de una red neuronal (al menos en la tarea de clasificar imágenes donde han comenzado a probar este prodigio). Google DeepMind también está estudiando esta aproximación en recientes publicaciones como en el trabajo "Population Based Training of Neural Networks", donde estudian un modo de mejorar la eficiencia de los desarrollos de machine learning eliminando la necesidad de que un ingeniero humano ajuste los parámetros de la red neuronal...y realmente consiguen resultados prometedores. De hecho superan el estado del arte en varias tareas gracias al simple hecho de borrar al hombre de la ecuación.

Todos estos casos (especialmente el de AlphaZero) suponen un innegable paso adelante hacia la consecución de una inteligencia artificial general, y demuestran además que la única limitación en este sentido ha sido (y será por un tiempo) la potencia de cálculo. Estos hitos históricos que venimos presenciando los últimos 5 años sólo han sido posible de hecho gracias al uso de enormes recursos de computación por parte de grandes compañías privadas. En cierto sentido los avances teóricos palidecen en comparación al avance que la ley de Moore nos ofrece en potencia computacional (Hardware).

Valga en este sentido comentar que Google DeepMind sólo ha podido alcanzar sus hitos más actuales gracias a las nuevas tarjetas gráficas dedicadas y especializadas al machine learning (las TPU). Tarjetas que son propiedad exclusiva de Google y que de momento nadie más puede adquirir en el mercado.

Un poco de humildad.

El factor que más peso tiene en aquellas personas que no creen que la inteligencia artificial general vaya a llegar (por no hablar de una consciencia artificial) es la falta de humildad. Pensar a priori y sin base empírica que nuestras capacidades humanas son diferentes o se basan en sustratos o principios no materiales, o materiales pero difícilmente replicables. Se trata de una evidente falacia que se puede rastrear como poco hasta tiempos de Descartes.

La ciencia ha demostrado que ningún sustrato no material da soporte a nuestra mente, y también desde Darwin que todo en el hombre; desde el dedo del pié hasta su cerebro, es producto de un gradual, acumulativo y lento proceso evolutivo. Ya no hay pues cabida para nada inmaterial ni tampoco para la aparición fisiológica o conductual de estructuras que no sean explicables por la mera evolución. Esto implica pues que nuestra mente y la consciencia deben ser productos materiales y evolucionados durante millones de años. En este sentido es de perogrullo concluir que es el cerebro y el sistema nervioso en general el responsable de toda nuestra conducta y subjetividad.

En este sentido me gustaría que vieseis conmigo a continuación esta breve sesión de neuroanatomía impartida por el profesor Leonard E. White (este vídeo forma parte de un completo curso que puedes seguir de manera gratuita en Coursera):



El sistema nervioso central es el encargado de procesar la información. Los nervios le llevan información desde los sentidos y también transmiten la salida del procesado a los músculos. Y este procesado de información de entrada y salida, junto con cierta retroalimentación interna de varias zonas y subredes neuronales, es todo lo necesario para explicar nuestra mente. No hay ni se requiere de ninguna res cogitans ni tampoco es admisible ningún agente o explicación que no quepa dentro de los límites evolutivos.

El algoritmo humano.

Uno de los fragmentos que más me han gustado del último libro de Yuval Noah Harari, "Homo Deus: Breve historia del mañana" ha sido el siguiente:


La conducta humana, toda ella; como bien indica Yuval Noah Harari, se reduce a complejos cálculos de probabilidades acontecidos en el sistema nervioso central. Un órgano evolucionado gradualmente durante millones de años. Todo en nosotros se reduce pues a la ejecución de intricados algoritmos ejecutados en el cerebro.

El poderío de la red neuronal biológica.

Pero, ¿cómo pudo la Naturaleza lograr semejante procesador de cálculos capaz de tener en cuenta tanta información externa y de manera simultánea? ¿Cómo es posible acaparar y filtrar tanta información y aún así ser capaz de generalizar y obtener patrones de entre todo ese caos sensorial? ¿Y cómo aplica con éxito luego esos necesarios cómputos probabilisticos capaces de lograr con éxito los fines evolutivos de supervivencia y reproducción? La respuesta son las redes neuronales biológicas.


La capacidad de cálculo que estas redes neuronales poseen son realmente asombrosas. Pueden aproximar funciones no-lineales y actuar de manera paralela con información llegada de muy diversas fuentes. El flujo de información eléctrica que recorren los billones de neuronas por entre el trillón de sinapsis en el cerebro del hombre suponen la explicación evidente de toda nuestra capacidad. No hay nada más a parte de este sustrato material evolutivo, tampoco hace falta introducir nada más en la ecuación. Las redes neuronales poseen el poder computacional necesario y suficiente para dar cuenta de nuestra conducta y subjetividad, y aunque aún nos quede mucho por aprender de este órgano, es de necios aprovechar este desconocimiento temporal para introducir postulados metafísicos, místicos o seudocientíficos (como eso de querer introducir a la mecánica cuántica como parte del fenómeno de la consciencia con calzador y sin evidencia ni soporte empírico alguno).

El poderío de la red neuronal artificial.

El poderío y la capacidad de cálculo no lineal de la red neuronal biológica es fácilmente replicable en un ordenador cualquiera. Es posible simular este comportamiento biológico, y es de hecho esta imitación la que está posibilitando TODOS y cada uno de los avances tecnológicos acontecidos en la última década en el terreno de la inteligencia artificial.



Si coges tu móvil y cuando le hablas es capaz de reconocer tu voz y transcribir lo que dices casi sin errores, debes saber que lo que tu móvil está haciendo es ejecutar una red neuronal artificial que simula el funcionamiento de parte de la red neuronal de nuestro propio cerebro encargado de esta tarea. Y esto mismo ocurre con los sistemas de traducción entre lenguas, con la voz sintética que nos habla, e incluso con las simpáticas aplicaciones que detectan nuestra cara en la cámara del móvil para pintarnos encima sombreros y otras cosas graciosas. Lo mismo que cuando nuestro coche es capaz de ayudarnos con los modernos sistemas de soporte que evitan que nos salgamos del carril en la carretera. En estos vehículos, una cámara recibe señales del asfalto, y una red neuronal artificial es la que decide si vamos bien o si nos vamos a salir del carril (corrigiendo en tal caso la trayectoria moviendo automáticamente el volante). Los ejemplos son ya en realidad innumerables.

La ley de Moore y la actual explosión de avances en inteligencia artificial.

Teóricamente hace ya varias décadas que se conoce el poder de la red neuronal artificial, pero hasta hace bien poco no se dispuso del Hardware necesario para dar soporte práctico a dicho potencial de simulación. Pero esto está cambiando gracias a la ley de Moore y al exponencial aumento de potencial de cálculo disponible cada año (la ley de Moore original se refería a la duplicación en el tiempo del número de transistores pero hoy en día muchos la entienden ya simplemente como la duplicación en la potencia disponible). Cada año el potencial de cálculo al alcance de los investigadores casi se duplica, y precisamente ahora estamos alcanzando el umbral que permite esta explotación práctica artificial del poder biológico oculto en las redes neuronales. Hoy en día por ejemplo, un dispositivo móvil puede poseer más capacidad de cómputo que algunos supercomputadores de hace 15 años.

Y es que, como ya dijimos al principio, el gigantesco avance en IA de estos últimos 5 años no se deben tanto a los avances teóricos sino a los avances en el hardware. Esto significa que el limitante no ha sido nunca la base teórica (bien establecida desde hace muchos años), sino la ineficacia de nuestras máquinas a la hora de poder simular con la fidelidad suficiente la base natural biológica que da forma a nuestras habilidades mentales.

Al mismo tiempo este hecho supone que los logros que conseguiremos en años venideros seguirán creciendo a cada vez mejor ritmo conforme la ley de Moore (entendida o reformulada como la duplicidad en la capacidad de cómputo disponible cada poco tiempo) siga mejorando exponencialmente nuestra potencia de cálculo. Las tarjetas TPU de segunda generación Google son el doble de potentes que las de primera generación (un avance que ha necesitado de menos de un año), y nada impide que en 5 años tengamos un hardware tan potente que haga palidecer a nuestros desarrollos actuales.

Conclusión.

Si Google DeepMind ha necesitado esperar a la aparición de las TPU de 2ª generación para lograr el gran hito que ha supuesto AlphaZero, nada parece indicar que el ritmo de logros importantes y transcendentales en el mundo de la inteligencia artificial no continúe su curso conforme nuevo y más avanzado hardware llegue a manos de los investigadores en las ciencias de la computación.

En última instancia, es perfectamente viable (e incluso probable), que conforme el poder de computación avance así ocurra con nuestra habilidad para simular e imitar nuestra propia red neuronal biológica hasta el punto de que finalmente el proceso acabe convergiendo en una inteligencia artificial general e incluso consciente (poseyendo nuestra misma subjetividad). Valga recalcar el hecho de que no existe ninguna evidencia física teórica o experimental capaz de negar formalmente la posibilidad de esta convergencia.

Bien parece que en el fondo el "Hard problem" de la consciencia se reduce simplemente a una limitación temporal de potencia. Así pues no desesperemos y estemos atento a que los avances tecnológicos nos sigan ofreciendo cada año el doble de potencia. De eso parece que se trata todo, de ¡mas madera!

jueves, 23 de noviembre de 2017

Replicando el desarrollo de Google DeepMind: AlphaGo Zero

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)

Hace unos meses Google DeepMind hizo público uno de sus resultados más asombrosos: una versión del modelo neuronal que fue capaz de derrotar al campeón del mundo de Go, solo que esta vez no necesitaron hacer uso de ningún aprendizaje supervisado de juegos entre humanos (hablé en este mismo blog en esta otra entrada con más profundidad sobre el asunto).

El modelo era capaz de aprender a jugar cual tabula rasa a partir exclusivamente de su propia experiencia jugando contra sí mismo una y otra vez. Pues bien, siguiendo esta línea de pensamiento he realizado por mi cuenta dos versiones de estas ideas para demostrar su validez (utilizando la librería Keras para Python). En primer lugar realicé una versión con un modelo neuronal capaz de aprender a jugar por sí solo al juego Conecta 4. El resultado ha sido espectacular (abajo encontrarás más información). En pocas horas una red neuronal aleatoria fue capaz de alcanzar un nivel de juego similar al de cualquier programa de IA tradicional...¡sólo que yo no tuve que explicarle ni indicarle ninguna estrategia de juego! La red neuronal se ajustó gradualmente conforme jugaba ella sola hasta el punto de superar mi propia capacidad de juego en muy poco tiempo.

El código fuente lo puedes descargar desde aquí: https://github.com/Zeta36/connect4-alpha-zero También he realizado una versión de esta propuesta orientado al juego del ajedrez (https://github.com/Zeta36/chess-alpha-zero), aunque por motivos de falta de un Hardware lo suficientemente potente no he sido capaz de entrenar esta versión aún y no sé su capacidad real. Os dejo a continuación más información técnica sobre estos dos proyectos:

About

Connect4 reinforcement learning by AlphaGo Zero methods.
This project is based in two main resources:
  1. DeepMind's Oct19th publication: Mastering the Game of Go without Human Knowledge.
  2. The great Reversi development of the DeepMind ideas that @mokemokechicken did in his repo: https://github.com/mokemokechicken/reversi-alpha-zero

Environment

  • Python 3.6.3
  • tensorflow-gpu: 1.3.0
  • Keras: 2.0.8

Modules

Reinforcement Learning

This AlphaGo Zero implementation consists of three worker selfopt and eval.
  • self is Self-Play to generate training data by self-play using BestModel.
  • opt is Trainer to train model, and generate next-generation models.
  • eval is Evaluator to evaluate whether the next-generation model is better than BestModel. If better, replace BestModel.

Evaluation

For evaluation, you can play chess with the BestModel.
  • play_gui is Play Game vs BestModel using ASCII character encoding.

Data

  • data/model/model_best_*: BestModel.
  • data/model/next_generation/*: next-generation models.
  • data/play_data/play_*.json: generated training data.
  • logs/main.log: log file.
If you want to train the model from the beginning, delete the above directories.

How to use

Setup

install libraries

pip install -r requirements.txt
If you want use GPU,
pip install tensorflow-gpu

set environment variables

Create .env file and write this.
KERAS_BACKEND=tensorflow

Basic Usages

For training model, execute Self-PlayTrainer and Evaluator.

Self-Play

python src/connect4_zero/run.py self
When executed, Self-Play will start using BestModel. If the BestModel does not exist, new random model will be created and become BestModel.

options

  • --new: create new BestModel
  • --type mini: use mini config for testing, (see src/connect4_zero/configs/mini.py)

Trainer

python src/connect4_zero/run.py opt
When executed, Training will start. A base model will be loaded from latest saved next-generation model. If not existed, BestModel is used. Trained model will be saved every 2000 steps(mini-batch) after epoch.

options

  • --type mini: use mini config for testing, (see src/connect4_zero/configs/mini.py)
  • --total-step: specify total step(mini-batch) numbers. The total step affects learning rate of training.

Evaluator

python src/connect4_zero/run.py eval
When executed, Evaluation will start. It evaluates BestModel and the latest next-generation model by playing about 200 games. If next-generation model wins, it becomes BestModel.

options

  • --type mini: use mini config for testing, (see src/connect4_zero/configs/mini.py)

Play Game

python src/connect4_zero/run.py play_gui
When executed, ordinary chess board will be displayed in ASCII code and you can play against BestModel.

Tips and Memo

GPU Memory

Usually the lack of memory cause warnings, not error. If error happens, try to change per_process_gpu_memory_fraction in src/worker/{evaluate.py,optimize.py,self_play.py},
tf_util.set_session_config(per_process_gpu_memory_fraction=0.2)
Less batch_size will reduce memory usage of opt. Try to change TrainerConfig#batch_size in NormalConfig.

Model Performance

The following table is records of the best models.
best model generationwinning percentage to best modelTime Spent(hours)note
1-- 
2100%1
384,6%1
478,6%2This model is good enough to avoid naive losing movements
5100%1The NN learns to play always in the center when it moves first
6100%4The model now is able to win any online Connect4 game with classic AI I've found

domingo, 23 de octubre de 2016

Inteligencia exponencial

"La única predicción de la futurología indudablemente cierta es que, en el futuro, los futurólogos de hoy en día parecerán necios. Si bien desconocemos cuáles serán los logros últimos a los que llegará la inteligencia artificial, lo cierto es que dependerán de un sinfín de vicisitudes prácticas, que se irán descubriendo sólo sobre la marcha. Con todo, es un hecho indiscutible que las máquinas dedicadas a la computación son inteligentes." (Steven Pinker)

Debido a la complejidad técnica, pocos son conscientes de que vivimos actualmente una revolución (exponencial) en cuanto a avances en el terreno de la inteligencia artificial. Como digo, esto se debe en parte a lo complicado de la teoría subyacente y en parte a que ya varias veces en la historia se pecó de optimismo y finalmente la IA no avanzó ni la mitad de lo prometido...esta vez es distinto.

El aumento (exponencial) en la potencia de cálculo disponible (gracias al continuo cumplimiento de la ley de Moore y al surgimiento de las tarjetas GPU), al aumento (también exponencial) de datos (datasets) disponibles para entrenar fácilmente y de manera barata las modernas redes neuronales (gracias en gran parte a Internet y al Bigdata), y fundamentalmente gracias a modernos y recientes (y sí, también exponenciales) avances teóricos en cuanto a cómo construir y ajustar ("entrenar") estas redes neuronales (como ha sido el caso por ejemplo, del reciente uso intensivo de redes neuronales profundas -deep networks-, el advenimiento de la convolución -algo similar a lo que nuestro cerebro hace en Cortex visual primario y secundario V1, V2,...-, el descubrimiento de redes neuronales recurrentes y eficientes RRN's -fundamentalmente la propuesta de modelo llamada LTSM: "Long short-term memory"-, el muy reciente uso del concepto de "atención", etc.), hacen que sin duda esta vez las cosas sean realmente muy distinta: y los resultados están comenzando a ser evidentes.

Demis Hassabis
No hay día ya que las noticias (especializadas y no especializadas) no muestren algo nuevo relacionado con el campo de la investigación y la innovación en IA, y el progreso en la búsqueda de una inteligencia artificial general parece literalmente haber explotado exponencialmente. Y a este ritmo (y sobre todo si la ley de Moore se sigue cumpliendo), no pasarán ni 30 años antes de que se logre simular computacionalmente una inteligencia artificial general e incluso una completa conciencia artificial muy similar a la nuestra. Vivimos de hecho en estos momentos el inicio de este cercano hito tecnológico; y es una lástima que no todos puedan seguir en vivo el transcurso de los acontecimientos. En este sentido, me siento un privilegiado. De hecho, si no fuese por cuestiones personales, es bastante probable que pudiese incluso participar aunque fuese muy modestamente en todo este proceso. Actualmente conozco el estado del arte completo de la disciplina (puedo seguir cualquier paper sin problemas), y dada la escasez de profesionales en este terreno y el aumento actual en la demanda de este tipo de trabajadores, sinceramente creo que habría tenido alguna oportunidad para terminar trabajando de manera más o menos directa en alguna compañía dedicada a la investigación en este campo. Pero bueno, no creo que esto llegue a pasar, y muy posiblemente me jubile, con suerte, como un "simple" analista-programador de páginas web. Tampoco pasa nada ;).

Llegar a alcanzar el estado del arte en esta disciplina tan multidisciplinar es algo duro y lleva años de duro trabajo y esfuerzo; pero de todas formas creo que es posible, incluso para el menos preparado, atisbar al menos por encima de qué va toda esta revolución que está aconteciendo hoy día y que ha llevado en poco tiempo a que un ordenador supere en cuanto a intuición (al menos, intuición focalizada en el juego) a cualquier jugador humano de Go, o a que el ordenador de un coche sea capaz de ir él sólo por la ciudad reconociendo todo el entorno, y siendo capaz de abstraer y generalizar tan bien como nosotros en muchas tareas indispensables para la conducción eficiente y segura (Artículo en el diario El País: "Arranca la revolución de los coches sin conductor").

En relación a todo esto, y ya especulando un poco, es muy interesante observar como el hombre está logrando en pocas décadas simular y emular habilidades tan complejas que le llevó al propio proceso evolutivo cientos de millones de años alcanzar. Ese es precisamente el poder del crecimiento exponencial. Bien parece incluso el caso de que la raza humana sea una especie de catalizador de la inteligencia. Y si fuera ese el caso, posiblemente el hombre no sería más que un eslabón intermedio natural necesario para, llegado el momento, lograr que el fenómeno de la inteligencia comience a mejorar de modo exponencial. Es decir, que el hombre estaría limitado biológicamente en cuanto a su capacidad personal, pero tendría el potencial necesario para lograr "fabricar" algo (no biológico) capaz de superar su propia limitación intrínseca. Posiblemente llegue el día que no quede ninguna inteligencia biológica sobre el plantea, y que lo que reste sea este nuevo prototipo catalizado por nosotros mismos como parte del proceso evolutivo natural en busca de maximizar el consumo de energía libre (maximizar la entropía). Pero ya eso es otra historia. Si queréis profundizar un poco más sobre este asunto podéis estudiar mi artículo: El acertado miedo de Stephen Hawking.

En fin. En un intento por ayudar a quien tenga al menos la curiosidad de saber de qué va todo lo tratado, os dejo un par de referencias muy claras y gráficas que quizás os pueda servir de trampolín:

http://colah.github.io/posts/2015-08-Understanding-LSTMs/ ("Understanding LSTM Networks")
- http://distill.pub/2016/augmented-rnns/ ("Attention and Augmented Recurrent Neural Networks")

Evidentemente estos dos artículos no son ni la punta del iceberg de lo que sería necesario conocer de esta disciplina, pero creo que es un buen comienzo (al menos como introducción a las redes neuronales recurrentes). Y para todo aquel que tenga ya cierto nivel, os dejo dos enlaces imprescindibles que mirar cada mañana en busca de novedades:

https://deepmind.com/research/publications/ (Web actualizada con enlaces a todas las publicaciones del equipo de investigación de la filial de Google, DeepMind).
https://research.google.com/pubs/papers.html (Web actualziada con enlaces a todas las publicaciones del equipo de investigación de Google Brain).

También os puede merecer la pena invertir unos minutos en escuchar esta interesante charla impartida por Demis Hassabis, co-fundador de DeepMind: una de las personas que más saben hoy día sobre inteligencia artificial y su potencial futuro al corto-medio plazo. En esta conferencia se centra especialmente en la posibilidad de una Inteligencia Artificial General que precisamente su empresa (filial de Google) tiene en el punto de mira.


Para finalizar, os dejo con un vídeo que muestra en directo lo que hasta hace muy poco era ciencia ficción: un coche totalmente autónomo. Estamos hablando, por supuesto, de la nueva actualización de software para los coches de la marca Tesla.



miércoles, 3 de febrero de 2016

Decodificando la mente

"Tradicionalmente los científicos han examinado las neuronas individuales, nuestro estudio da una visión más global, a nivel de grandes redes de neuronas, de cómo una persona que está despierta y presta atención percibe un objeto visual complejo." (Rajesh P. N. Rao)

A finales del año pasado ocurrió un hito en neurociencia del cual los medios de comunicación no se han hecho el debido eco. En concreto, un equipo multidisciplinario de participantes de muy diversas universidades estadounidenses (además de otros miembros de centros públicos como la NASA), ¡consiguieron literalmente decodificar  parte de la información contenida en los impulsos eléctricos que recibían desde varios electrodos implantados en pacientes voluntarios!

Llegué a este trabajo que os comento gracias a que soy un fiel seguidor del trabajo de Rajesh P. N. Rao, un neurocientífico computacional de renombre que formó parte del equipo de desarrollo de este experimento. El paper original se puede leer de forma gratuita desde este enlace: http://www.ploscompbiol.org/article/fetchObject.action?uri=info:doi/10.1371/journal.pcbi.1004660&representation=PDF y su título es el siguiente: "Spontaneous Decoding of the Timing and Content of Human Object Perception from Cortical Surface Recordings Reveals Complementary Information in the EventRelated Potential and Broadband Spectral Change".

¿En qué consistió el experimento?

El desarrollo técnico es un poco complejo y no voy a entrar en mucho detalle por aquí (aunque tenéis el paper para saber más), por lo que voy a limitarme a divulgar qué es concretamente lo que este equipo de investigación ha hecho de un modo que se pueda entender con claridad:

Comenzaron implantando mediante cirugía varios electrodos dentro de ciertas zonas concretas del cerebro de 7 sujetos voluntarios (los cuales iban a ser operados de todas maneras por otros motivos), de modo que pudieron ir recopilando mediante diversas técnicas los datos eléctricos que esos electrodos recogía.

Una vez implantado los electrodos (de 4 mm de diámetro) en los lóbulos temporales, se comenzó una serie de 3 rondas en las que se le mostraban a estas personas imágenes de cientos de rostros (de caras) y de cientos de casas (imágenes que el paciente no había visto antes). Cada 400 milisegundos la figura que se le mostraba cambiaba por otra imagen aleatoria hasta llegar a las 100 imágenes (por tres series = 300 imágenes).

Durante todo ese tiempo en que se le hacía el pase de imágenes de diferentes objetos al individuo, se iban almacenando digitalmente los valores eléctricos que los diversos electrodos implantados sentían en cada momento del experimento. De este modo consiguieron una base de datos de los valores eléctricos registrados por los 7 participantes durante el pase de las 300 imágenes mostradas. Esa base de datos, por cierto, la han hecho pública y la podéis descargar vosotros mismos desde este enlace: https://purl.stanford.edu/xd109qh3109 (junto con el algoritmo de Matlab desarrollado para la decodificación de las propias señales).

Y ahora viene lo interesante. Una vez con este enorme conjunto de datos, el equipo de investigación se propuso demostrar si esos impulsos eléctricos registrados por los electrodos contenían suficiente información (o incluso alguna información) correlacionada con el estímulo concreto presentado al paciente (y percibido por éste) en cada instante. Es decir; había que estudiar si todos esos datos contenían algún tipo de información oculta detrás de algún patrón de codificación neuronal no conocido a priori.

Estudio de los datos.

Hay que tener en cuenta, que lo que los electrodos recopilan es simplemente un valor escalar que representa el voltaje aproximado que hay en sus proximidades en cada momento, lo cual nos permite en un primer momento simplemente formar gráficas de voltaje por unidad de tiempo de este estilo:


En esta imagen se puede ver, por ejemplo; los valores registrados por cuatro electrodos durante la exposición de 400ms a un imagen conteniendo un objeto determinado (una casa, una cara, etc.). En concreto, la línea rosa representa los valores de voltaje recogidos cuando el objeto del estímulo contuvo la imagen de una casa, mientras que la línea azul representa los valores eléctricos tomados cuando el estímulo fue el de una faz. Estos valores no son siempre los mismos (la gráfica no es siempre igual aunque se presente de nuevo una casa o una cara), por lo que había que descubrir si detrás de todos esos datos había un patrón oculto utilizado por el cerebro a modo de codificación. Y puestos a que fuera ese el caso, se propuso intentar decodificar el mensaje eléctrico para poder prever el objeto de la percepción de un individuo de un modo continuo y sincronizado: es decir; que se pretendía encontrar un algoritmo capaz de decodificar en tiempo real los impulsos que llegaban desde los electrodos del cerebro para poder "adivinar" (sin ninguna otra información), qué tipo o clase de objeto era el que estaba percibiendo el paciente (el cual se encontraba incomunicado del experimentador).

El proceso de decodificación.

Con este fin en  mente, se desarrolló un algoritmo utilizando técnicas de computación mediante aprendizaje automático ("Machine learning"), haciendo uso concretamente de una técnica estadística que se conoce como LDA ("Fisher linear discriminant analysis"). Para lograrlo, dividieron la enrome muestra de datos en 3 partes, y asignaron dos partes al proceso de entrenamiento del modelo ("training"), dejando la parte restante para las pruebas de fidelidad del clasificador ("testing"). Como ya he dicho, este algoritmo escrito en Matlab (junto con los datos recogidos del voltaje de los electrodos), lo han hecho público y lo podéis descargar desde aquí.

Resultados.

Siguiendo este procedimiento, y gracias al algoritmo desarrollado con estas técnicas computacionales de inteligencia artificial, se consiguió detectar ciertos patrones clasificadores detrás de toda esa información eléctrica, lo cual ha permitió el enorme logró que supone el hecho de poder, literalmente, decodificar la suficiente información transportada por estos impulsos neuronales conjuntos como para poder prever (clasificar) en tiempo real lo que los sujetos van percibiendo con una precisión superior al 96% de aciertos.

Es decir; que únicamente a partir del estado eléctrico del cerebro en cierto momento, se pudo detectar (sin ninguna otra información por parte del sujeto) el contenido visual abstracto que el paciente estaba percibiendo en cada momento. Todo esto sugiere que el hecho de que de que un sujeto perciba un tipo de objeto u otro (y lo relacione con un concepto abstracto concreto: "veo una casa, o veo una cara"), se refleja principalmente en un patrón eléctrico determinado el cual codifica dicha información, demostrándose de este modo que cualquier información abstracta del ser humano se puede reducir, en principio, exclusivamente a un estado físico-químico (eléctrico) del cerebro.

Por cierto, que toda esta compleja codificación habría sido evolutiva y gradualmente ajustada por un largo proceso de selección natural actuando sobre la estructura material del cerebro.

Futuros desarrollos.

Esta técnica desarrollada, y que está dando sus primeros pasos, es realmente un trampolín hacía un futuro mapeo cerebral completo, lo cual podrá utilizarse para identificar en tiempo real qué lugares del cerebro son sensibles a los distintos tipos de información. En otras palabras; una mejora de esta técnica podrá llevar, con toda probabilidad, a que podamos finalmente lograr una decodificación completa del cerebro, pudiéndose prever no sólo estímulos visuales abstractos (casas, caras, etc.), sino también cualquier otro producto de un proceso cognitivo. La metodología sería básicamente la misma: tomar datos de la actividad eléctrica neuronal ante una conducta o estímulo de estudio, y proceder a continuación a decodificar esos datos usando técnicas computacionales ante esas señales eléctricas. Posteriormente, simplemente con medir el estado cerebral de un individuo cualquiera se podría prever cualquier proceso cognitivo que haya detrás de dicho estado eléctrico.

Discusión.

A parte de las grandes utilidades prácticas de este estudio (como la de ayudar a "adivinar" qué piensan los pacientes con grave parálisis motora o que han tenido un derrame cerebral y están completamente bloqueados), hay que resaltar un hecho muy importante: este estudio demuestra que la percepción sensorial y la posterior objetivación abstracta (conceptual) del mundo percibido, es un proceso que se produce exclusivamente de un modo material en la red neuronal evolutiva del cerebro (si no fuese este el caso, este experimento no habría podido tener éxito puesto que basa todas sus premisas en el estudio material -eléctrico- del cerebro).

El acto de percibir estímulos, y el acto de transformar esas percepciones en ideas de objetos o conceptos relacionales, se ha demostrado ser un complejo proceso eléctrico disperso entre la red neuronal del cerebro, el cual literalmente codifica un patrón de voltaje distinto para cada concepto, idea, sensación, etc. Tanto es así, que en este estudio se ha conseguido la decodificación de varios de estos patrones "objetivizadores" que permite a un paciente diferenciar en su mente cuando ve, por ejemplo, una casa cualquiera (no una casa concreta, sino cualquier casa, aunque sea la primera vez que la ve), de cuando ve, por ejemplo, una cara cualquiera (aunque sea la de alguien que ve por primera vez). En otras palabras, el acto de ver y reflexionar sobre un objeto concreto, se traduce en distintos patrones eléctricos que van recorriendo las diferentes partes del cerebro transmitiendo la información de un modo codificado. Y es ese patrón constituido por miles de impulsos eléctricos, que hasta no hace mucho parecían caóticos, los que estamos ya empezando a comprender.

Siguiendo este proceso, llegará un momento en que un algoritmo de este tipo será capaz de detectar cualquier clase de percepción y proceso cognitivo únicamente a partir de la información eléctrica que corre entre las sinapsis de nuestra red de neuronas. Es decir; que bastante pronto (relativamente hablando), se conseguirá decodificar (mapear) el patrón del estado eléctrico completo que origina cualquier acto cognitivo en el hombre.

Se puede decir por tanto, a modo de resumen, que el verdadero hito histórico de este trabajo consiste en ser el primero en demostrar con la suficiente fuerza (con aciertos cercanos al 100% y sincronizado en tiempo real) el hecho de que toda la mente humana puede no ser más que la emergencia ocurrida tras el procesado eléctrico conjunto de cientos de millones de neuronas; las cuales utilizan un complejo conjunto de patrones eléctricos (evolutivamente determinados) para comunicar información entre las distintas zonas cerebrales y posteriormente hacia el exterior (mediante la comunicación verbal, por ejemplo).

Si quedaban pocas esperanzas para algún tipo de dualismo en la explicación de nuestra mente, este estudio acaba de dar al traste con ellas: no sólo se ha visto que no es necesario nada a parte del estado material del conjunto del cerebro, sino que incluso ya vamos siendo capaces de decodificar dicho estado material para prever ciertas propiedades emergentes de la mente. En un futuro no demasiado lejano, literalmente podremos usar el estado eléctrico global de un sujeto para adelantar (sin más información) cualquier idea, pensamiento, estimulo sensible, o proceso cognitivo en general que tenga esa persona.

Referencias.

Kai J. Miller, Gerwin Schalk, Dora Hermes, Jeffrey G. Ojemann, Rajesh P. N. Rao: Spontaneous Decoding of the Timing and Content of Human Object Perception from Cortical Surface Recordings Reveals Complementary Information in the Event-Related Potential and Broadband Spectral ChangePLOS Computational Biology (2016). DOI: 10.1371/journal.pcbi.1004660.