Nota aclaratoria: en este artículo abuso de la expresión “una máquina aprende”. Con esto me refiero a aprender en el sentido de los algoritmos llamados “de aprendizaje de máquina” (o sea, realizar una tarea cada vez mejor según algún criterio), no a cómo los humanos aprenden. Cualquier semejanza es pura coincidencia. O no.
Como esto es el Gato, ésta no puede ser otra nota de esas que tienen mucho humo futurista grandilocuente. Igual me aventuro a tratar de argumentar por qué creo que estamos justo en medio de una revolución tecnológica y científica sin precedentes. Vos aferrate a los hechos, el resto es charlable.
Quisiera empezar esta historia en el año 1997, que fue cuando el ajedrecista y ex-campeón del mundo Garry Kasparov perdió un duelo de seis partidas (tres y media, a dos y media) contra una supercomputadora (Deep Blue), desarrollada por IBM específicamente para jugar al ajedrez. Los métodos que usó Deep Blue para ganarle a Kasparov se basaban en la fuerza bruta, es decir, en la capacidad de la computadora de analizar 200 millones de jugadas por segundo (y algún ayudín manual que todavía se discute). Por otro lado, pongámosle que Kasparov puede analizar de a 5 jugadas por segundo. Si bien la computadora le ganó, es evidente que hay algo sobre el aprendizaje y entendimiento humano de la realidad que supera ampliamente al de una computadora: Kasparov no pierde el tiempo analizando jugadas absurdas, porque entiende algo sobre el juego que las máquinas no.
Para contrarrestar esta pequeña ineficiencia de necesitar 200 millones a 5 para ganar, hace varios años se viene desarrollando un método de programación de computadoras que se llama Deep Learning (Aprendizaje Profundo), una rama de Machine Learning (Aprendizaje de Máquina). Está basado en un tipo de inteligencia artificial que lo que hace es simular una situación de aprendizaje modelando distintas capas de redes neuronales. Lo que se hace en deep learning es someter a la computadora con su red neuronal a una situación de aprendizaje (por ejemplo, se la hace jugar al ajedrez) y esta red se va remodelando a medida que ‘adquiere experiencias nuevas’ (puse las comillas mitad para ser correcto, mitad porque me abruma la idea de que un algoritmo adquiera experiencia sin comillas). La evidencia nos muestra que el desempeño de este algoritmo en distintas tareas va mejorando a medida que aprende. Por ejemplo, podemos mencionar que el año pasado una computadora con un algoritmo de Deep Learning (a la cual se le cargaron las reglas de ajedrez y partidas de entrenamiento) y se la dejó jugar continuamente consigo misma, logró, en 72 horas, llegar al nivel de un jugador máster internacional de ajedrez. Nivel. Máster. Internacional. En. 72. Horas. Imaginate si le das un balero. Qué fiesta.
Un tipo de algoritmo de aprendizaje (el que no requiere de datos o partidas pre-cargadas para empezar a aprender) se llama aprendizaje no supervisado. En contraposición, también existe un tipo de aprendizaje de máquina, llamado (para sorpresa de NADIE) aprendizaje supervisado, el cual sí requiere datos iniciales de entrenamiento para empezar a jugar. Luego, mientras juega, la máquina va aprendiendo, es decir, va remodelando las redes neuronales a su favor. Otro tipo de aprendizaje automático es el llamado aprendizaje por refuerzo, en el cual se trabaja con una noción de recompensa que se desea maximizar. Es como sobornar a la computadora para que juegue mejor.
Acá es cuando nos caemos todos de culo
Por otro lado, con algoritmos similares, la inteligencia artificial de Google es capaz de reconocer patrones en imágenes. Sabemos que el ser humano tiene ciertos canales de entrada de imágenes y sonidos (ojos y oídos). Esta información llega al cerebro y es procesada de alguna forma, de tal manera que cuando vemos a un perro, no importa que nunca lo hayamos visto antes o que sea de una raza completamente nueva para nosotros: sabemos que estamos viendo un perro. Bueno, este algoritmo de aprendizaje de Google ahora puede hacer lo mismo. Es decir, vos le cargás muchas fotos a la aplicación Google Photos, buscás “dog”, y te aparecen todas las fotos que tienen un perro, incluso si las fotos tienen nombres raros. O sea que, de alguna manera, el algoritmo al analizar la imagen entiende (discusión filosófica pendiente; si hay Russell, que hable ahora) cuándo está viendo a un perro y cuándo no.
Pero bancá, que esto no es nada. Para el paso siguiente, primero necesitamos entender qué tan difícil es esto que yo digo que es difícil pero que bueh, hasta que no lo fundamente con evidencia y lógica que una la evidencia, es nada. Para empezar, analicemos un poco una situación totalmente anti-intuitiva para el humano: el crecimiento exponencial. Tomate un segundo para auto-contestarte esta pregunta: ¿qué altura crees que tendría una hoja de papel común en grosor (pero grande) después de doblarla por la mitad 50 veces?
El crecimiento exponencial aparece cuando querés multiplicar algo por sí mismo una cierta cantidad de veces. Por ejemplo, el número 2 multiplicado 10 veces por sí mismo es 1024; esto se escribe 2¹⁰ y se le llama “dos a la 10” (dos, por dos, por dos,… diez veces). El tema del crecimiento exponencial es que la cosa crece a velocidades re locas. Si agarrás una hoja de papel de 0,1 milímetros de espesor (las comunes), y la doblás por la mitad, el espesor que queda es de 0,2 mm, si lo hacés de nuevo queda de 0,4 mm, y así sucesivamente. Si esa hoja la doblás 10 veces por la mitad, entonces la cuenta es 0,1 milímetros multiplicados 10 veces por 2, o sea: 0,1 * 2¹⁰, que son 10 centímetros. Pero, si esa misma hoja la doblás por la mitad 50 veces, lo que te queda tiene una altura que es del 75% de la distancia de la Tierra al Sol. Tu intuición te dice “eso es imposible” pero, hechas las cuentas, ves que sí. El espesor de 0,1 mm multiplicado por “dos a la cincuenta” (2⁵⁰), da como resultado 112 millones 600 mil kilómetros, más o menos. Lo loco es que si la doblás sólo 33 veces más, es decir, 83 veces en total, llegás a cubrir la longitud de nuestra galaxia de punta a punta (100 mil años luz), y si la doblás 103 veces en total (20 veces más), llegás a cubrir la longitud del universo observable (0,1 mm * 2¹⁰³ = 93 mil millones de años luz).
Un juego muy interesante es preguntarle a una persona que no haya leído esta nota qué altura cree que tiene una hoja al doblarla 50 o 100 veces por la mitad. Las respuestas intuitivas son sorprendentes, casi siempre erradísimas, y muestran lo desacostumbrados que estamos a pensar en el crecimiento exponencial, hecho que nos toca de cerca cuando reparamos en que ésta es la manera en la que crecen los intereses al usar el pago mínimo de la tarjeta de crédito a fin de mes.
En la vida hay eventos exponenciales sobre los que nos resulta muy difícil hacer estimaciones, para todo lo demás, existe Mastercard.
Ahora que sabemos que lo exponencial trepa más rápido que ese compañero de trabajo que se ríe de los chistes de tu jefe, tratemos de estimar qué tan difícil sería para una computadora poder almacenar todas las partidas de ajedrez posibles. Pongámosle que, en promedio, un jugador de ajedrez tiene alrededor de 30 movidas posibles para hacer en cada turno, y cada partido típico de ajedrez puede tener 40 movimientos por jugador (o sea 80 en total). Es decir, todos los juegos posibles de ajedrez salen de pensar que yo tengo 30 movidas posibles, después vos tenés 30 movidas distintas por cada una de las 30 mías (30*30), y después yo lo mismo (30*30*30), y así sucesivamente. O sea, hay un total de 30⁸⁰ partidas de ajedrez posibles (el orden de las movidas es importante). O, lo que es lo mismo, 10¹¹⁸ (un uno seguido de 118 ceros). Para bajar este número a tierra, acordémonos que una buena estimación de la cantidad de átomos que hay en el universo es 10⁸¹. Como vemos, la frase usual que dice “hay más partidas posibles de ajedrez que átomos en el Universo” es cierta, hay muchas más, 10³⁷ veces más, y sólo contando las partidas típicas. Esto quiere decir además que si yo pudiera almacenar toda la información de una partida de ajedrez dentro de un átomo, necesitaría 10³⁷ universos (un uno seguido de 37 ceros) sólo para almacenar todas las partidas típicas de ajedrez posibles, y estamos hablando de la hipotética posibilidad de almacenar toda la información de una partida en un simple átomo. Es decir que, Laplace que nos pese, no hay manera de almacenar esta cantidad de partidas. Ni hablar del tiempo que tardaría en recorrerlas todas para ver qué partida es mejor que otra, o cuál me serviría más en una situación particular contra Kasparov.
Bueno, todo esto hasta acá me sirvió de entrada para contar lo que pasó hace unas semanas. Va.
A mediados de marzo de 2016 la inteligencia artificial de Google programada con Deep Learning le ganó 4 de 5 partidas al campeón del mundo de un juego de mesa milenario llamado Go. Para el que no lo conoce, este es un juego muy simple en reglas (casi no tiene) pero muy complicado de jugar bien; el tablero usual es cuadrado de 19 por 19 casilleros (361 en total), y se juega uno contra uno, con piedras blancas y negras (se les dice piedras a las piezas, que son todas iguales). El juego simplemente consiste en ir poniendo piedras en el lugar que se te cante. El objetivo es tratar de encerrar las piedras del contrincante, o bien tratar de controlar o encerrar terrenos vacíos. No voy a decir mucho más sobre Go, a excepción del hecho de que se juega muy intuitivamente y la mayoría de las estrategias usadas son bien subjetivas, es decir, no hay recetas excepto en casos particulares, y no hay aperturas ni finales establecidos como en el ajedrez. Es un juego cuyos movimientos se vienen aprendiendo y perfeccionando desde hace 2500 años. Las posibilidades de juego, como vamos a ver, son infinitas (bah, finitas pero inabarcables, you know). No hay maneras simples tampoco de medir ventaja material a lo largo del juego, al ajedrez en cambio se le asignan distintos valores a las piezas y a su posición.
Además, si el tablero tiene 361 casilleros, sabiendo que cualquier jugador puede poner piedras en cualquiera de esos lugares y que una partida típica de Go consta de unas 250 movidas en total, entonces la cantidad de partidas posibles de Go es de (aproximadamente) 220²⁵⁰, es decir 10⁵⁸⁵. Puse 220 en vez de 361 porque a medida que los jugadores van poniendo piedras, quedan cada vez menos lugares libres por llenar (si se hacen las cuentas bien da eso, considerando que el orden en que se hacen las movidas es importante). Sabiendo esto, si la máquina quisiera predecir qué va a pasar 50 movidas más adelante (25 por jugador), la cantidad de desenlaces posibles son 220⁵⁰, que es 10¹¹⁷ (casi todas las partidas de ajedrez posibles). Pero el crecimiento es exponencial, o sea, si quiero predecir qué va a pasar en la jugada 51, tengo que analizar 220 veces todas las partidas de ajedrez posibles (220⁵¹). Es decir, la colocación de una sola piedra en la fase inicial puede afectar el juego de una manera impredecible unos 100 movimientos después. La cuestión es que, de nuevo, si quisiéramos almacenar toda la información de una partida de Go en un átomo, necesitaríamos alrededor de 10⁵⁰⁴ universos para poder almacenar todas las partidas posibles (si el orden de las jugadas importa). Si este número te parece abrumador, bienvenido al club, porque nadie en el Universo tiene ni la más remota idea de qué es tener 10⁵⁰⁴ cosas de algo, pensá que 10⁸¹ es la cantidad de átomos que hay en este universo hermoso y grande en el que vivimos. Además, el crecimiento es exponencial, 10⁸² ¡son la cantidad de átomos que hay en 10 universos! O sea que si imaginamos tantos universos como los necesarios para almacenar todas las partidas de Go, seguro que en uno Julieta Cardinali sí responde a nuestras repetidas referencias con un tweet, un WhatsApp, una foto paseando al perro, algo, Julieta, algo que nos haga sentir vivos, un instante fugaz en el que nos iluminen tus ojos color sosiego y atardecer.
La inteligencia artificial que juega Go (llamada AlphaGo), fue desarrollada por una empresa adquirida por Google en 2014, DeepMind (empresa creada con un único objetivo: resolver la inteligencia), y cargada con algoritmos de Deep Learning de aprendizaje supervisado y por refuerzo, algoritmos de búsqueda eficiente, y las reglas de Go. Me parece importante además puntualizar sobre el hecho que Deep Learning no es un algoritmo diseñado para jugar Go, sino un algoritmo de aprendizaje automático de propósito general, que como vimos, puede ser usado para entrenar a una máquina y que pueda realizar diversidad de tareas. En particular, AlphaGo usa dos conjuntos de redes neuronales bien diferenciadas: redes tácticas (las que eligen heurísticamente qué movimientos pueden ser buenos, para no tener que analizar movimientos absurdos), y redes de valor (que evalúan el valor relativo de las distintas posiciones del tablero). Después de esto, AlphaGo entrenó contra sí misma durante un año aproximadamente, porque si vamos a crear un Skynet, le vamos a meter la actitud de Goku y la música de entrenamiento de Rocky.
Acá, AlphaGo entrenando en la nieve antes de una pelea con Ivan Drago (bueh, es el robot de Boston Dynamics, pero lo compró Google así que medio que cuenta).
En octubre de 2015 AlphaGo le ganó 5 partidos seguidos al campeón europeo (aunque el mejor europeo no le llega ni a los talones al mejor asiático), y ahora le ganó 4 de 5 partidos al campeón del mundo (el surcoreano Lee Sedol, un héroe nacional en su país). Nadie se esperaba esto; aún después de ganarle al campeón europeo, las apuestas de los expertos a favor del campeón del mundo eran contundentes.
Creo que ya es razonable empezar a pensar que las máquinas están lo suficientemente avanzadas para aprender capacidades que hasta ahora asumimos netamente humanas, como reconocer imágenes, sonidos, textos escritos a mano, u otras. Incluso capacidades de las más difíciles: aprender a jugar Go mejor que el mejor humano. Vemos además que cada vez se invierten más y más recursos para alcanzar estos objetivos. Es indescriptible con palabras el impacto que pueden llegar a tener estas tecnologías, y lo que representan para la raza humana. Como aprendimos del Tío Ben, este es un gran poder que no hay que dar por sentado, ya que las aplicaciones también pueden ser negativas. Las implicancias prácticas para el día a día de las personas puede ser brutal, incluso en el corto plazo. Millones de trabajos podrían ser reemplazados por máquinas, y no sólo trabajos mecánicos, como se creía hace unas décadas. Sólo falta que el robot Atlas, también de Google, aprenda a jugar al fútbol al nivel de Messi y listo, y parece re gracioso hasta que te das cuenta de que empezó a ser cuestión de cuándos y no de sis.
Por otro lado, desde el punto de vista científico, es imposible no coquetear con la idea de que quizás sea posible reproducir cómo es que un humano genera conceptos sobre algo en particular, a partir de simples conexiones e impulsos eléctricos en el cerebro. Independientemente de los obstáculos filosóficos que cada persona tenga para pensar que la ciencia podría explicar la conciencia humana, estos hechos tangibles nos muestran que aparentemente estamos cada día más cerca de entendernos a nosotros mismos. Es asombroso pensar en lo increíble de la naturaleza, que (hasta donde sabemos) partiendo de unas cuantas partículas y unas cuantas reglas sea posible evolucionar hacia una especie que es capaz de entenderse y recrearse a sí misma. Increíble la posibilidad de que nosotros (y acá hablo como especie) logremos reproducir y recrear en una máquina, durante tan sólo unos miles de años, eso que nos distingue del resto de la naturaleza y del resto de las especies: la capacidad de entender y aprender algo (aunque todavía estemos masticando si esa diferencia es cualitativa o cuantitativa).
Perder con AlphaGo es ganar. Es una muestra clara de la efectividad del método que llamamos ‘ciencia’ para descubrir cosas acerca del funcionamiento del universo que nos rodea, y también acerca del pedacito que nos constituye. Estamos atravesando tiempos excitantes de la historia, momentos ideales para soltarle las riendas a nuestra curiosidad, faltarle el respeto a lo más profundo de la naturaleza humana y empezar a desnudarla, aunque sea de a pasitos, hasta que el próximo salto nos saque del centro de la Creación, llevándonos a re-entender nuestra posición especial y privilegiada como centro de todo lo inteligente en el Universo con un sacudón copernicano que nos empuja a, por lo menos, dudar.