Publicado hace 9 años por malditascully a curiosidades.batanga.com

Hace ya casi 20 años que el software Deep Blue, de IBM, venció al campeón mundial de ajedrez, Garry Kasparov. ¿Cómo es posible que una computadora le gane a una de las mentes más brillantes del planeta? Bueno, eso fue una gran novedad en 1997, pero hoy en día las computadoras pueden vencer a cualquier oponente que enfrenten, en todos los juegos del mundo... Menos uno: Go, el juego tradicional chino, inventado hace más de 2500 años.

Comentarios

skaworld

#4 Hombreeee si y no, cuando modelizas un sistema (el juego del ajedrez o el go o lo que quieras) estás implementando un algoritmo matemático para definir el árbol de decisión que calculará el ordenador, la cosa es cuantas variables tendrás en cuenta (cada variable en el sistema implica una incógnita a valorar por la cpu)

En el ajedrez tienes 52 piezas móviles con sus respectivos modelos de comportamiento definido (el peon avanza uno arriba, o en diagonal si come, la torre las que quiera en vertical y horizontal... etc) y cada movimiento modifica el árbol de decisión variando las condiciones de contorno, la cpu analiza tooodos los posibles movimientos de las piezas y obtiene tooodos los escenarios plausibles del juego así como un numero X de evoluciones posibles del escenario (aquí entra la potencia de cálculo), en base a estrategias conocidas (y supongo que un índice de preferencia hacia estrategias mas seguras) selecciona de entre esas evoluciones posibles más ventajosas.

Vamos nunca he creado una IA para ajedrez pero me imagino que va así (y me juego contigo lo que quieras a que no voy desencaminado) y si que bebe muchísimo de la matemática (Algebra, probabilidad etc).

Con respecto al articulo jugué un par de veces al Go hace un porrón de años y no recuerdo bien las reglas, pero me da que es más un problema del número de variables a tratar en el sistema, el ajedrez es un juego cerrado (hay una posición inicial y las fichas solo tienen una manera de moverse por lo que el modelo es relativamente sencillo de calcular (Ejemplo, un peón solo tendrá 3 opciones en un turno, quedarse donde está, moverse hacia adelante o (si puede) moverse en lateral comiendo una figura) sin embargo en el Go de lo que recuerdo en cada turno puedes poner tu lentejita (no se como se llaman las fichas mea culpa lol ) donde te de la puta gana, eso implica que cada movimiento puede lanzarse en 19X19 combinaciones (luego se van reduciendo pero al principio el mapeo de combinaciones es brutal) cada ficha ya puesta hace que tengas que implementar reconocimiento de áreas de preferencia para crear cadenas de fichas, cada ficha de tu contrario representa a la vez amenaza y oportunidad que tendrás q valorar etc etc... La potencia de calculo para cada turno requerida pues igual se está yendo de marras

Crul

#10 No es así, no hay un algoritmo que calcule todas las ramificaciones a partir un punto. La potencia de cálculo no da para tanto todavía. El ajedrez, hasta donde yo sé, no tiene solución por fuerza bruta.

El enfoque es a través de aprendizaje automático (redes neuronales, bosques y junglas de decisión, etc.) donde lo que se programa es un sistema (¿algoritmo?) que es capaz de aprender a partir de muchos ejemplos evaluados por un maestro; ya sean maestros humanos valorando posiciones u otro algoritmo que las evalúe. El "algoritmo" que programa el humano se ejecuta durante el entrenamiento para obtener el "algoritmo" que se ejecutará cuando juegue de verdad.

Por lo tanto el "algoritmo" que se ejecuta al jugar una partida no lo ha diseñado directamente un humano, sino que es el resultado del entrenamiento de la red.

Este enfoque se utiliza allá donde es más fácil evaluar si una predicción (una vez hecha) es buena que encontrar una fórmula directa que lo prediga. Por ejemplo, con la predicción del clima pasa lo mismo. Encontrar la "fórmula que prediga el clima" es imposible (pregúntale a Lorentz), pero teniendo muchas mediciones del clima puedes entrenar un algoritmo que aprenda a predecir lo que ya ha pasado y así utilizarlo para predecir el futuro.

skaworld

#11 Hummmm pues hasta donde tengo entendido no es así, creo que confundes los caminos que puede tomar la partida, con el cálculo que realiza la máquina.

Redes neuronales es la manera de evaluar los arboles de decisión, no digo que haya una fórmula matemática simple que diga exactamente como se gana al ajedrez si no que la máquina calcula los posibles movimientos y decide cual es el correcto (eso es IA) en base a ponderación de los mismos. El concepto de aprendizaje aquí es que si tuviese que calcular todos los movimientos todo el rato se puede echar la vida, así que simplemente si las condiciones de entorno son iguales para X pieza que ha jugado ya la partida anterior ya no lo calcula a manija si no q simplemente accede a la bbdd donde tiene guardada la solución a ese calculo que ya ha hecho y le devuelve el resultado. Si no se ha dado nunca antes la condición si que la calcula (entendamos que las posibilidades de movimientos y condiciones en un tablero de ajedrez son a cascoporro, muchas veces tendrá que volver a calcular todo porque nunca ha visto una partida igual jamás)

Y con respecto a calculo climático te voy a sorprender (de eso si q puedo hablar con algo mas de autoridad, curre durante un tiempo en modelización de demanda electrica para una gasista y teníamos departamento de predicción de tiempo, si hace frío la gente tira de calefa) de lo más utilizado no son ni algoritmos ni pollas, simplemente tienes una base de datos descomunal de temperatura, presion atmosférica, precipitaciones, viento, humedad... etc desde el año de maricastaña, si tu quieres saber que tiempo hará mañana te vas a la bbdd con las variables q tienes y buscas un día igual en el pasado, igual igual no saldrá (o si pero lo normal es q tengas varias aproximaciones, tenían muchas variables de contorno) coges los N mas parecidos y haces una media del dia siguiente a esos N días. El resultado es una prediccion bastante bastante fiable de lo que vas a tener al día siguiente. Tan sencillo como eso

Crul

#12 https://www.kaggle.com/competitions
Si echas un vistazo a los foros verás que las estrategias utilizadas no se basan en una BBDD que se consulta durante la ejecución. Los sets de datos se utilizan para entrenar las redes que interiorizan los patrones, pero no los datos en crudo.

En Azure Machine Learning tienen muchos ejemplos y tutoriales:
http://azure.microsoft.com/es-es/services/machine-learning/

skaworld

#13 Curioso, pues siempre habría apostado a q guardarían datos en crudo gracias por el enlace.

Antes me dedicaba a esto pero hace ya tiempo que cambié de sector (mas o menos) y tengo todo esto bastante oxidado lol Supongo que tiene que ver con el requisito de velocidad de respuesta, en mi campo de estudio (predicción de demanda eléctrica) teníamos todo el día para calcular el comportamiento del siguiente y la evolución de la curva por lo que no es que fuese un requisito indispensable la velocidad de respuesta (para que te hagas una idea la carga de variables recuerdo que tardaba unas 2 horitas yo ponía a funcionar el programa y me bajaba a desayunar con calma y hacer otras movidas mientras lol) aquí supongo que tienen este tipo de restricciones y han de trabajar de forma distinta, la verdad es que no lo había pensado.

Gracias por la info shurmano

Crul

#14 Yo llevo trasteando con estas cosas desde hace solo 2 o 3 años. Alucino con lo que se puede hacer, y todavía alucino más con la divulgación (MOOCs, blogs); son capaces de explicar de forma asequible muchas de las ideas que hay detrás.

No tengo perspectiva histórica para comparar, pero supongo que esto avanza a toda leche. Con lo poco que llevo mirando estos temas y ya empiezan a salir conceptos que no había visto en los primeros cursos.

D

#12 bueno, lo que hacen las computadoras es una búsqueda no exhaustiva. Con aprendizaje o sin él, habrá de ambas clases. Es decir que #11 tiene razón (o yo estoy igual de equivocado que él). Calcula si quieres la explosión combinatoria de las posibles variantes de ajedrez y los miles de millones de años que tardaría en calcularse una partida completa en un superordenador actual cualquiera.
El artículo, como se dice en #4 , es malo. Hay fórmula matemática o algoritmo perfecto que dice qué movimiento hacer. Lo puede demostrar cualquier estudiante de matemáticas, física, ingeniería... Es una cuestión tan fácil que ni siquiera sale en los exámenes. Esto es simplemente alguien que no sabe del tema, que le debe parecer que es magia y que habla como si se tratase de cosas mágicas, pero de concreto no tiene nada y de onírico, mucho.

ikipol

#6 pues Pinocho es mejor todavía

ElPerroDeLosCinco

#6 No creo que hagan una tercera, porque a partir de Pi 2, la cosa se repite cíclicamente.

sotanez

pero hoy en día las computadoras pueden vencer a cualquier oponente que enfrenten, en todos los juegos del mundo... Menos uno

Menuda chorrada. Ahora mismo los de Carnegie Mellon están bastante avanzados con el Texas Hold'em sin límite de apuesta, y como mucho han conseguido empatar con los mejores del mundo (que no es poca cosa) https://www.cs.cmu.edu/brains-vs-ai.

También está el Arimaa, diseñado específicamente para ser difícil de batir por un ordenador. Y seguro que hay muchos ejemplos más.

Snow7

Pi, fe en el caos.

Waskachu

#2 puta mierda de peli, por cierto.

D

#2 Pi, 1998.