Un paso más de la inteligencia artificial en los videojuegos: AlphaGo (II)

Retomando lo que comentamos en la anterior entrada, nos quedamos discutiendo sobre que uno de los elementos que hacían de Go un juego más complejo que el ajedrez era un mayor branching factor (250 vs 35) además de un mayor número de turnos en la partida (200 vs 40). La mayor profundidad del árbol no es el problema esencial, ya que para el caso del ajedrez ya se usan funciones heurísticas para estimar en qué estado se encuentra una partida. Y es que el segundo elemento que hace de Go un juego más complejo es precisamente dificultad en definir una función heurística para este juego. Así como en el ajedrez tenemos una idea más o menos aproximada sobre como va una partida viendo qué piezas tiene aún en posesión cada jugador, en el Go la cosa no está tan clara. Es por este motivo que el equipo de AlphaGo decidió atacar este problema con una mezcla de técnicas de deep learning y el uso de árboles, tal y como se explicará a continuación. En una primera fase, se recopilaron más de 30 millones de movimientos procedentes de jugadores profesionales para entrenar una red neuronal que permitiera predecir el próximo movimiento a realizar. A partir de partidas reales, se trata de para cada estado de cualquier partida, almacenar el estado de la partida en cuestión y el movimiento que se decidió hacer en esa jugada, dando lugar al siguiente estado de la partida. De esta forma, se tiene una red neuronal cuya entrada de datos es un estado de la partida y cuya salida son los movimientos más probables. Pero...

Un paso más de la inteligencia artificial en los videojuegos: AlphaGo (I)

Cada vez más la inteligencia artificial se está abriendo paso en el mundo de los videojuegos, convertíendose en un elemento clave en el diseño de cualquier videojuego. La evolución de los algoritmos de aprendizaje, tales como las redes neuronales convolucionales, están permitiendo que se mejoren algoritmos clásicos como el reinforcement learning, que se basan en premiar las acciones que han dado un buen resultado, de forma que el jugador controlado por el ordenador se vaya aprendiendo automáticamente qué acciones le son más beneficiosas en el momento de tomar alguna decisión. La integración de las redes neuronales convolucionales con los algoritmos de reinforcement learning ha dado lugar a las técnicas que hoy en día se conocen como deep reinforcement learning. Prueba de la revolución que están suponiendo es la existencia de un equipo de Google llamado Google DeepMind, que tiene como objetivo construir algoritmos que son capaces de aprender por ellos mismos a partir de los datos originales. Una prueba de su éxito ha sido el desarrollo de AlphaGo, el primer programa informático que consigue derrotar un jugador de Go profesional. Lo hizo en Octubre de 2015 derrotando por 5-0 al campeón europeo Fan Hui y, más recientemente, en Marzo de 2016 derrotando por 4-1 a Lee Sedol, quien es considerado el mejor jugador del mundo. Y quizás os preguntaréis: ¿Qué tiene de especial el juego Go respecto otros juegos clásicos como el ajedrez en el que ya se había conseguido que un programa informático derrotara un jugador profesional? Pues bien, hay dos elementos diferenciales que hacen de Go un juego mucho más complejo que el ajedrez. En esta entrada nos...

La segmentación semántica y sus benchmarks

Relacionado con distintos problemas de la visión por computador que se han visto en previas entradas, tales como el reconocimiento de escenas y objetos, también existe el problema conocido como segmentación semántica. El problema de segmentación semántica consiste en otorgar una etiqueta o categoría a cada píxel de una imagen. A diferencia de los sistemas de detección y reconocimiento de objetos, que dan como resultado la ventana rectangular donde se ha detectado un objeto y son evaluados por la precisión de estas ventanas, los sistemas de segmentación semántica tienen como objetivo delimitar precisamente los objeto de las distintas categorías a nivel de píxel, dando como resultado cualquier forma arbitraria. Clasificación de imágenes Localización de objetos Segmentación semántica Dentro del campo de la visión por computador, ha habido un gran auge de las técnicas desarrolladas para solucionar el problema de la segmentación semántica, siendo PASCAL Visual Object Classes (VOC) Challenge [1] uno de los benchmarks más reconocido, contando con más de 2,500 citas. Inicialmente, esta competición únicamente evaluaba sistemas de clasificación y detección de objetos. Los sistemas de clasificación consisten en la predicción sobre la presencia/ausencia de un tipo de objeto en la imagen mientras que los de detección indican donde el objeto está presente en forma de ventana rectangular. Por ejemplo, dado un tipo de objeto o categoría como avión, un sistema de clasificación predice si hay o no algún avión en la imagen, mientras que un sistema de detección indica en qué lugar de la imagen se encuentra el avión en caso que el sistema considere que hay algún avión en la imagen. Fue a partir del 2009 que...