« Monte Carlo Tree Sear… « || Inicio || » Brevísima historia de… »

Breve Historia de la Inteligencia Artificial

Última modificación: 12 de Septiembre de 2019, y ha tenido 93 vistas

Etiquetas utilizadas: || || ||

La Inteligencia Artificial (en adelante, IA) es el nuevo término de moda en ciencia, tecnología y empresa, llegando a superar en muy poco tiempo a otros términos que estaban ocupando las portadas e interés público, como Big Data o Ingeniería Genética. Hoy en día no hay nueva tecnología, servicio digital o investigación puntera que no vaya asociada al (pretendido) uso de técnicas provenientes de la IA. Aunque en muchos casos son evidentes los beneficios que esta disciplina ofrece, es necesario analizar con detalle estas asociaciones para saber hasta qué punto son reales o solo son reclamos comerciales que no ofrecen un verdadero valor añadido.

En esta entrada, y con el fin de ayudar a reconocer ante qué situación nos encontramos, se propone un recorrido histórico por los hitos principales de la IA, destacando sus objetivos fundamentales y aquellas aportaciones que delimitan la importancia de los avances realizados.

Aunque habitualmente el nacimiento de la IA como rama de la Computación se suele asociar a avances concretos que tienen lugar durante la primera mitad del S.XX, podemos encontrar trazas de su existencia mucho antes y no podemos desligar su desarrollo de la evolución histórica que han tenido los fundamentos de las Matemáticas.

Antecedentes

Al igual que la Computación comienza su andadura como respuesta a la pregunta sobre las posibilidades de automatización de los procedimientos matemáticos, la IA surge de forma natural al plantear hasta qué punto aquellos procesos que consideramos propios de una inteligencia natural (en particular, la humana) podrían ser automatizables en mecanismos artificiales, tengan éstos un componente físico concreto o sólo conceptual.

Así, podemos situar la formalización aristotélica de la deducción lógica del ser humano como un primer intento de automatización –en su momento únicamente conceptual– que, si bien no puede considerarse el nacimiento de la IA, sin duda supone un punto de referencia obligada para su posterior desarrollo, así como, por supuesto, el de las Matemáticas y el resto de Ciencias en general. Estos inicios de la automatización (ceonceptual) estuvieron acompañados también de un conjunto de automatismos mecánicos reales que, aunque no intentaban replicar el razonamiento humano, sí hacían uso de sistemas de control automático racional, como las máquinas hidráulicas creadas por Ctesibio o los autómatas de Heron de Alejandría.

Bastante tiempo después, pero todavía lejos del nacimiento de la IA, en el S.XIV, Ramón Llul propone la «Ars generalis ultima», una máquina lógica de carácter completamente mecánico que podía probar la veracidad o falsedad de determinadas afirmaciones lógicas. Sus trabajos influyeron decisivamente en numerosos científicos posteriores, como Leibnitz, quien se inspiraría en ellos para enunciar la existencia de un lenguaje y máquina universales que automatizarían todo el mecanismo matemático de razonamiento y, en consecuencia, del razonamiento humano. Este lenguaje universal será el objeto que usarán matemáticos posteriores, como Boole y Frege, para completar el lenguaje lógico que se usa hoy en día en las ciencias formales, y el mismo Leibnitz mejorará las máquinas de cálculo de inventores anteriores, como Pascal o Reckoner, en su búsqueda de la máquina universal.

Posteriormente, ya en la primera mitad del S.XIX, destacan nombres como Charles Babbage y Ada Lovelace por añadir a las máquinas de calcular la capacidad de ser programables, o Bolzano, como responsable del primer intento de formalizar la semántica de la matemática moderna y no sólo su sintaxis.

A principios del S.XX, y como consecuencia de la investigación acerca de la automatización efectiva de las matemáticas, se produce una explosión de resultados teóricos que establecen las bases de lo que hoy conocemos como Ciencias de la Computación. Entre los protagonistas de estos sucesos destaca A. Turing, al que debemos la máquina conceptual que lleva su nombre. La máquina de Turing, enunciada alrededor de 1936, es un dispositivo que no está diseñado para ser implementado desde un punto de vista práctico, sino que representa una máquina de computación abstracta y minimalista que persigue estudiar y entender los límites de la automatización. Esta máquina tiene la capacidad de simular cualquier algoritmo que pueda ser implementado en cualquier otro sistema automático de cálculo –lo que se conoce como Tesis de Church-Turing– e incluso se puede crear una máquina de Turing concreta, a la que se denomina Universal, que es capaz de simular cualquier otra máquina de Turing, lo que demuestra la posibilidad de crear máquinas de cálculo de carácter general, que se convertirán posteriormente en las actuales computadoras, y lleva al propio Turing a crear en 1940 la primera computadora electromecánica. Un año después, Zuse crea la primera computadora programable junto con el primer lenguaje de programación de alto nivel para programarla.

A partir de estos avances la progresión de resultados se dispara en el ámbito de la Computación y poco después empiezan a aparecer los primeros rasgos de lo que sería una IA bien definida. Pero antes de dar paso a esa primera etapa puede ser interesante fijar nuestra atención en otros resultados que aparecieron simultáneamente y que, aunque a menudo se pasan por alto en la historia general de la IA, jugarán un papel fundamental en su desarrollo posterior.

Simultáneamente a los resultados obtenidos por Turing, Alonzo Church proporcionó una aproximación más matemática para resolver el mismo problema de computabilidad universal por medio del Cálculo Lambda que, aunque más alejado de una implementación en dispositivos mecánicos reales, tendrá una influencia decisiva en la creación de posteriores paradigmas de programación fundamentales para la IA.

En estos mismos años, generalmente asociados a la literatura de ciencia ficción, se usan por primera vez términos como robot, robótica, o cibernética que, aunque inspirados en otras ficciones anteriores, constituyen los antecedentes no formales de la IA.

Con unos objetivos iniciales completamente distintos, es necesario destacar también la fecha de 1943, cuando W. McCulloch y W. Pitts presentan un modelo abstracto de neuronas artificiales que muchos años más tarde será el responsable del resurgir del área, como veremos en secciones posteriores.

Nacimiento de la IA

Las aportaciones de Turing no solo se relacionan con el inicio de la computación. Poco después de publicar sus resultados sobre los fundamentos de Computación, publica en 1950 un trabajo (titulado «Máquinas Computacionales e Inteligencia») donde propone un mecanismo, conocido desde entonces como Test de Turing, para determinar cuándo una máquina puede ser considerada inteligente, lo que supone la primera aproximación a uno de los problemas generales que aborda actualmente la IA y, en consecuencia, el disparo de salida de lo que será el área. A pesar de las posibles objeciones que puedan atribuirse a su propuesta, y más importante que el test en sí mismo, lo que destaca es la relación directa que el mismo explicita entre inteligencia y mecanización de forma general.

No nos llevemos a engaño por las fechas, aunque la referencia publicada es de 1950, ya desde 1946 Turing había publicado ensayos similares proponiendo y analizando la conexión existente entre la recién nacida Computación y la capacidad de crear respuestas inteligentes por métodos mecánicos. Y no era el único, podemos encontrar trabajos muy elaborados que establecían esta relación –aunque quizás sin proporcionar aproximaciones tan globales– como el que en 1949 propone Claude Shannon (el mismo que se considera padre de la Teoría de la Información) para la creación de un jugador automático de ajedrez.

Aunque pueda parecer anecdótico, ya que hubo varios trabajos relacionando diversos juegos de estrategia con la recién nacida computación, el trabajo de Shannon presenta una particularidad que lo sitúa como uno de los trabajos esenciales en la historia de la IA, y es que propone un algoritmo nuevo basado en un trabajo de otra figura fundamental de la computación, John Vonn Neuman, que llamó Minimax, para buscar la respuesta más adecuada que debería dar la máquina por medio de una representación de las posibles respuestas como un espacio de estados a la vez que intenta dar un método uniforme de resolución para todos los casos. Este trabajo se convertirá en la metodología estándar de los trabajos futuros y, hoy en día, la combinación de representar adecuadamente el problema, y proporcionar mecanismos para buscar una solución en la nueva representación, sigue siendo la piedra angular de las metodologías que se siguen desarrollando y depurando para alcanzar los objetivos de la IA.

En estos mismos años, A. Samuel, ingeniero de la recién nacida IBM, propone un jugador automático de damas que presenta una particularidad que adelanta cuál será una de las líneas más fructíferas del futuro de la IA, y es que sobre el algoritmo Minimax de Shannon, Samuel añade un proceso de aprendizaje que permite a su programa mejorar a medida que va jugando con seres humanos, ayudándole a decidir qué movimiento es el más adecuado en función de los resultados obtenidos de partidas anteriores. Los resultados fueron tan buenos que se obtuvo un jugador artificial que suponía un contrincante interesante –quizás no contra jugadores expertos–, y que pudo implementarse en la primera máquina comercial de IBM, el IBM 701, de 1956. Este mecanismo de aprendizaje, que el propio Samuel llamó machine-learning, será el detonante de una de las técnicas de IA que más frutos proporcionará en un futuro lejano.

Ese mismo año A. Newell, J.C. Shaw y H. Simon presentan Logic Theorist, un programa que simulaba el razonamiento seguido por un matemático para demostrar algunos de los teoremas del «Principia Mathematica» de Whitehead y Russel, llegando a encontrar algunas demostraciones nuevas y más elegantes que las que se daban en la obra original. Más adelante, en 1958, ampliarían sus objetivos creando el programa General Problem Solver con la intención de proporcionar un programa que resolviera cualquier tipo de problema que pudiera expresarse por medio de un lenguaje formal. Pese a que la idea era correcta, la explosión combinatoria que se producía en la búsqueda de soluciones de muchos problemas evitaba que el programa proporcionara soluciones con un ordenador de la época, algo que permitió en su momento destacar la importancia de la complejidad computacional en la resolución de problemas de manera efectiva, y no solo centrar el foco en la búsqueda de métodos de resolución formalmente válidos.

Como vemos, el terreno estaba ya abonado para el nacimiento oficial de la disciplina y, tal y como se recoge en todas las referencias habituales sobre IA, en la Conferencia de Dartmouth de 1956, una especie de sesión de trabajo de un mes convocada por McCarthy, se acuña oficialmente el término de Inteligencia Artificial. Los asistentes a esta conferencia serán las figuras fundamentales de la disciplina en los siguientes años, y que ya hemos encontrado en nuestro recorrido –Shannon, Minsky, Newell, Simon, Rochester y Samuel, entre otros. Durante la reunión, el grupo intenta definir claramente las bases y líneas de trabajo que deben ser prioritarias para la maduración de la disciplina, así como predecir los avances que podrían esperarse en los diez años siguientes.

El exceso de optimismo reinante en la conferencia, alimentado por los buenos resultados sobre los que la IA nacía, será responsable parcial de la sensación de desilusión que llevará, finalmente, a lo que se conoce como el invierno de la IA, una etapa de falta de resultados y abandono por parte de los centros de investigación que durará muchos más años de lo esperado.

IA y juegos

En los años posteriores, dentro de la década de los cincuenta, y llevados por el éxito obtenido en las damas, se vuelve a atacar el problema de ajedrez, mucho más complejo en cuanto a variedad y número de movimientos, haciendo uso esencialmente de la misma metodología Minimax comentada, pero introduciendo métodos de poda en el árbol de juego y heurísticas para decidir entre el elevado número de movimientos a elegir. Estos mecanismos para reducir el número de jugadas a explorar se convertirán en otro de los ejes de soporte de la mayoría de los algoritmos posteriores. Para poder comparar la dificultad de los dos juegos elegidos, damas y ajedrez, indicaremos que, mientras el mejor programa de ajedrez de la época perdía ante jugadores de nivel inicial, el de damas era capaz de ganar a humanos con un nivel de juego alto.

Además de hacer avanzar las metodologías que se convertirán en estándares para abordar muchos problemas con IA es importante el uso que se hace de los juegos de estrategia como representantes de la inteligencia humana, y que responde a dos razones principalmente: proporcionan un marco muy bien definido en el que comparar la capacidad de la IA y la humana, y permiten una representación del problema directa, formal, y sencilla.

En relación a los juegos de estrategia, las décadas posteriores no suponen avances significativos, solo una paulatina mejora en el rendimiento de los métodos, lo que lleva a tener jugadores artificiales cada vez más fuertes. Mucho tiempo después, en 1994, un programa consigue ganar al campeón mundial de damas, el mismo año en el que se crea un programa para jugar backgammon que hace uso de aprendizaje por refuerzo para jugar contra versiones de sí mismo con el fin de adquirir una destreza que no sería posible enfrentándolo a seres humanos, ya que las partidas entre máquinas son miles de veces más rápidas. Entre los avances metodológicos destaca la introducción del algoritmo de Montecarlo para simular procesos estocásticos y así optimizar aún más la elección de la jugada siguiente dentro el árbol de juego de Minimax.

Esta evolución de técnicas de juego culmina en 1997 con la derrota de Kasparov, campeón del mundo de ajedrez, frente a Deeper Blue –sucesor de Deep Blue–, una máquina de carácter específico de IBM para jugar al ajedrez.

En estos momentos, la IA era capaz de producir jugadores superiores a los humanos en juegos de reconocida dificultad intelectual como las damas, backgammon, blackjack, ajedrez, … pero quedaba un juego de tablero que se consideraba superior en complejidad y al que no se acercaban ni al nivel de un jugador medio usando las mismas técnicas, el Go, un antiguo juego de tablero oriental que se convertiría durante años en el nuevo objetivo de la IA. Las características de este juego y la experiencia acumulada hacían prever que se necesitarían otros cincuenta años para conseguir un jugador artificial de nivel elevado.

El frío invierno

Según hemos visto, los avances en jugadores artificiales se producen en un plazo de casi cuarenta años. Sin embargo, en 1956, cuando se bautiza formalmente el área, apenas habían pasado unos años desde el artículo de Turing y se habían conseguido resultados espectaculares: se pasa de un problema matemático puramente teórico –¿es posible mecanizar los procesos matemáticos de razonamiento?– a la respuesta de este problema –negativa, por cierto–, se crea una rama matemática que comprende el conjunto de técnicas y resultados relacionados con esta respuesta –la Computación–, se generan los primeros ordenadores digitales que materializan el fundamento de esta nueva rama –con la consecuente aparición de la Informática como nueva ingeniería–, incluso se llegan a comercializar ordenadores con lenguajes de programación –con la aparición de marcas como IBM–, y se obtienen los primeros resultados que confirman que se pueden dar automatismos que resuelven problemas propios de la inteligencia humana.

Sin embargo, a esa acelerada evolución inicial le sigue una lenta progresión de avances que hace que el interés por el área decaiga de forma continuada y provoca un paulatino abandono por parte de departamentos de investigación en universidades y empresas. Durante las décadas sesenta a noventa los departamentos de IA se convierten en pequeños representantes de lo que pudo haber sido y no fue, muchas veces sustituidos o arrinconados por otros departamentos que sacan provecho de las capacidades de cálculo de las computadoras en problemas menos ambiciosos, y reemplazando la Computación por una Ingeniería Informática que no tiene a la IA como inspiración.

Pero no debemos llevarnos la impresión de que no se hizo nada más durante este largo periodo invernal, ya que el auge –quizás desmedido y algo mediatizado por el fortalecido sector tecnológico– que se vive hoy en día es un descendiente de lo que calladamente se desarrolló durante esas décadas.

Por ejemplo, en este largo periodo hay avances que se relacionan con el origen de nuestro relato. Junto con la evolución computacional de los ordenadores –quizás insuficiente para atacar directamente juegos como el Go, pero capaz de resolver muchos otros problemas– y la mejora en el diseño de lenguajes de programación más fieles al espíritu matemático –como LISP o Prolog–, se potencia el uso de la computación para la demostración matemática de teoremas, y aparecen demostradores automáticos que intentan cubrir, ahora con una matematización correcta, el objetivo que Ramón Llul persiguió con su primitiva máquina lógica. Aunque inmersas en el frío del invierno, en los años ochenta y noventa se viven breves primaveras gracias a herramientas como los Sistemas Expertos que, a partir de sistemas basados en reglas lógicas y por medio de algoritmos de búsqueda y heurísticas similares a los desarrollados para juegos, proporcionan gran capacidad de toma de decisiones en entornos complejos. Estos sistemas no tienen carácter de inteligencia general y trabajan en un solo dominio de aplicación –por ejemplo, la diagnosis médica–, pero ocasionalmente ofrecen resultados que superan con creces los obtenidos por un experto humano.

A finales de los ochenta surge el concepto de agente inteligente –entes artificiales con cierta capacidad de percepción, razonamiento y acción– y con él la Inteligencia Artificial Distribuida, en la que un conjunto de estos agentes interactúan entre sí y con el entorno con el fin de resolver un determinado problema. Junto a esta nueva IA surgen conceptos que han demostrado ser de una importancia fundamental para la resolución inteligente de problemas y que nos acerca a la forma en que el ser humano resuelve problemas de forma social: capacidad de comunicación entre los agentes, planificación, cooperación, percepción, modificación del entorno, competitividad, evolución, confianza, aprendizaje, adaptación, etc.

Es también al final del S. XX cuando las redes neuronales artificiales comienzan a tomar el papel protagonista del que gozan hoy en día. A pesar de que la neurona artificial aparece en los primeros años de la IA, la capacidad computacional de los ordenadores de las primeras décadas no permitía hacer uso de un número de neuronas artificiales que proporcionase resultados interesantes. Además, no se disponía de ningún mecanismo para obtener redes de neuronas que resolviesen problemas concretos, aunque había resultados teóricos que avalasen esta posibilidad. Tras la creación del algoritmo de propagación hacia atrás por Werbos en 1974 se empezaría a extender su uso en problemas concretos de optimización y aproximación de funciones, pero incluso en los noventa todavía no se consideran importantes para la IA, y tienen un uso limitado a la aproximación de ciertos conjuntos de datos de no demasiada complejidad en el mundo de la Ingeniería.

¿Una nueva primavera?

La primera década del S.XXI destaca por un cambio de aplicación de la IA. Frente a los juegos, en lenta pero constante progresión, y la aplicabilidad de los Sistemas Expertos, las necesidades industriales exigen un cambio de orientación, pidiendo que la IA se acerque a uno de los problemas que, pese a ser reconocido como importante desde hacía tiempo, era inabarcable desde el punto de vista práctico por su elevada complejidad: si queremos una máquina que se comporte inteligentemente, es necesario que pueda comunicarse con el ser humano con sus mismos medios, usando para ello el lenguaje natural que usa el humano. Para atacar este problema aparece una nueva disciplina dentro de la IA que se denomina Procesamiento de Lenguaje Natural, y que aúna técnicas clásicas de IA con otras de ramas tan dispares como son la Neurociencia, Lingüística, Anatomía, Psicología, etc.

Durante esta primera década esta área evoluciona constantemente y vive uno de sus hitos en 2011 con la victoria del sistema Watson, desarrollado por IBM, en el concurso televisivo «Jeopardy!» de preguntas y respuestas en las que el ordenador tenía que entender la pregunta –muchas veces interpretando el doble sentido inherente al concurso– y buscar la respuesta adecuada en un tiempo reducido y contra adversarios humanos.

Los buenos resultados obtenidos se deben a una múltiple vía de ataque. Por una parte, la creación de ontologías generales de conocimiento que reorganizan dominios cada vez más grandes del saber humano, y estructurados de forma que es posible mezclar dominios diferentes añadiendo relaciones semánticas transversales. Por otra parte, el uso de técnicas cada vez más depuradas para estructurar la información de forma relacional como una gran red de conocimientos. Además, no debemos olvidar el uso de algoritmos cada vez más eficientes para la búsqueda en grandes bases de información. Y, por último, el uso de algoritmos de optimización y aproximación que permiten considerar un número muy elevado de parámetros en menor tiempo, lo que se traduce en mayor capacidad para aproximar datos complejos.

Pero, sin duda, la mayor transformación sufrida por la IA en el S.XXI ha sido el peso que ha tomado el Machine Learning (ML), y que acapara la casi totalidad de nuevas técnicas que están desarrollándose.

Hasta el momento la vía más común con la que se abordaban problemas de IA era con la construcción de algoritmos, más o menos generales, para encontrar la solución del problema recorriendo el espacio de posibles soluciones, como hacen algoritmos como el mencionado Minimax.

La aproximación que propone ML es muy distinta, y pasa por utilizar datos reales del comportamiento deseado para construir una máquina que sea capaz de reconocerlos y simularlos. En este sentido, el problema se traduce en utilizar una correcta representación de los datos junto a algún mecanismo de optimización para poder ajustar la máquina al comportamiento observado –que es lo que se conoce como entrenamiento. Al igual que en la vía tradicional se crean algoritmos genéricos de búsqueda en el espacio de soluciones, en ML también se crean algoritmos de optimización generales que, trabajando sobre representaciones adecuadas, sean capaces de ajustar correctamente la máquina al comportamiento observado en los datos, independientemente del dominio del problema.

Es aquí donde ML se confunde con otras disciplinas con fines similares, como el Aprendizaje Estadístico o la Minería de Datos, pero marcando la diferencia en los objetivos que persigue y en los procedimientos computacionales en los que se basa. Por ello, podemos encontrar muestras de este tipo de nuevos algoritmos desde hace muchos años, usando simples regresiones y correlaciones estadísticas, Árboles de Decisión –1979–, Máquinas de Soporte Vectorial –1963–, o Bosques Aleatorios –2001.

Pero sin duda, los algoritmos y modelos de ML más famosos son las nuevas variantes derivadas de las redes neuronales artificiales. Se sabía que la capacidad de adaptación de las redes neuronales depende de la estructura que tenga la red y que, cuanto más compleja es su estructura, más costoso es dar con el ajuste óptimo para asegurar que la máquina se ajuste al comportamiento de los datos hasta el punto de que el algoritmo de entrenamiento de propagación hacia atrás clásico se vuelve incapaz de devolver una buena red. Durante la segunda década del S.XXI la tipología de las redes y los algoritmos de entrenamiento desarrollados han dado un salto cualitativo en su capacidad de ajuste, proporcionando redes capaces de aprender comportamientos a partir de datos cada vez más complejos (imágenes, textos, audio, video, etc.).

Estas mejoras vienen apoyadas por dos realidades tecnológicas. Por una parte, las nuevas tecnologías de la comunicación y almacenamiento han hecho posible disponer de una gran cantidad de datos de todo tipo de procesos de forma sencilla. Por otra parte, la aparición de máquinas de procesamiento paralelo a un precio asequible permite realizar cálculos que hasta hace poco eran computacionalmente inviables o estaban reservados a grandes centros tecnológicos.

Como muestra de los avances que el uso de ML ha proporcionado a los problemas clásicos de IA tenemos uno de los resultados más llamativos del equipo Google DeepMind, que ha creado en un tiempo record un programa, AlphaGo, capaz de ganar a los campeones mundiales de Go varias décadas antes de lo que los mejores pronósticos vaticinaban. Para su creación, este equipo ha hecho uso de técnicas clásicas –Minimax, Montecarlo, heurísticas– junto con procesos de aprendizaje en los que, tal y como vimos en el pasado, la máquina se enfrenta a versiones de sí misma para poder aprender de millones de partidas en un tiempo mínimo –apoyado en la inmensa capacidad computacional de Google, claro.

Pero las aplicaciones de ML para la IA no se restringen al Go y cada día aparecen nuevos resultados que mejoran soluciones anteriores. Por ejemplo: el mismo equipo de Google ha generalizado su método para que la misma máquina pueda aprender a jugar a otros juegos adquiriendo niveles de maestro tras pocas horas de entrenamiento; el Procesamiento de Lenguaje Natural ha avanzado más en los últimos tres años que en los veinte años anteriores; los algoritmos de reconocimiento de imágenes son capaces de alcanzar ya cotas de fiabilidad similares a las de un ser humano y, mezcladas con técnicas de lenguaje, incluso son capaces de describir textualmente el contenido y acciones presentes en una imagen; la diagnosis de enfermedades y la generación de nuevos fármacos se ha visto potenciada de forma espectacular gracias al análisis de datos acumulados durante décadas por las empresas farmacéuticas y grupos de investigación médica, proponiendo nuevas vías en la creación de fármacos y en la detección de enfermedades; conseguir vehículos que se conducen solos y toman decisiones complejas en tiempo real para aumentar la seguridad de los viajeros está a la vuelta de la esquina; etc.

Si estamos viviendo una nueva primavera de exaltación a la que siga un nuevo invierno de desilusión es algo que solo el tiempo dirá, pero el conjunto de aplicaciones por desarrollar con los conocimientos actuales hace prever que la primavera puede ser larga, y falta por comprender qué otros tipos de problemas podremos resolver en el futuro. Que su uso sea más o menos ético no depende, como siempre, de la disciplina científica que se ha desarrollado a lo largo de estos años, sino del uso que se haga de ella. Lo que sí es seguro es que su uso va a cambiar radicalmente la forma en que enfrentamos y resolvemos algunos problemas.

« Monte Carlo Tree Sear… « || Inicio || » Brevísima historia de… »