El Aprendizaje Automático supone un cambio de mentalidad importante frente al mundo de la programación, la disciplina tradicional de la Informática que tan importante resulta para el desarrollo de videojuegos. En este área del Aprendizaje Automático se trabaja principalmente con datos, entornos y restricciones, pero no se especifica el comportamiento final del sistema que se desea desarrollar sino que este se va «cultivando» gracias al entrenamiento. En el mundo del videojuego cada vez se usan más técnicas de Aprendizaje Automático para guiar los procesos industriales de diseño y producción.
Cambio de mentalidad
En la programación imperativa, la que conocemos, un desarrollador programa código, escribe reglas o representa diagramas de flujo con el propósito de convertir eventos o datos de entrada en acciones o datos de salida. Puede establecer ciertas condiciones (ej. curarte si tu salud es menos de 20), pero siempre dando «órdenes» al sistema o a un agente inteligente sobre lo que tiene que hacer en cada momento.
En cierto sentido, el Aprendizaje Automático invierte esta idea. Ahora el desarrollador es el que introduce previamente en el sistema los eventos o datos de entrada (y a veces también información relativa a las acciones o datos de salida deseados) con la intención de que el propio sistema descubra, infiera (es decir, aprenda) por sí mismo -automáticamente- esa relación existente entre la entrada y la salida. De esta manera, una vez concluido el aprendizaje, el sistema sabe cómo comportarse sin haber recibido órdenes explícitas del desarrollador.
Historia
Aunque hoy día es una revolución, el Aprendizaje Automático (o Machine Learning) es muy antiguo. Comenzó a desarrollarse como disciplina en la década de 1950, cuando los investigadores exploraban formas de que las máquinas aprendieran de la experiencia. Uno de los primeros hitos fue el trabajo de Arthur Samuel, quien en 1959 definió el campo de estudio como aquel en el que se buscan computadoras capaces de realizar funciones para las que no han sido programadas explícitamente, desarrollando un sistema capaz de mejorar su rendimiento jugando a las damas. Durante las décadas de 1960 y 1970 surgieron los primeros métodos de aprendizaje simbólico, como los árboles de decisión y los sistemas basados en reglas, que buscaban representar el conocimiento mediante expresiones lógicas fáciles de interpretar por los seres humanos.
A partir de las décadas de 1980 y 1990, el campo experimentó un importante avance gracias al desarrollo de algoritmos estadísticos y al resurgimiento de las redes neuronales artificiales (planteadas originalmente en 1943), impulsado por la popularización del algoritmo de retropropagación (que Rumelhart, Hinton y Williams empezaron a aplicar para entrenar redes multicapa en 1986).
Posteriormente, el aumento de la capacidad de cómputo, la disponibilidad de grandes volúmenes de datos y el uso de procesadores gráficos (GPU) que permiten paralelizar los cálculos, dieron lugar al auge del aprendizaje profundo que vivimos en la década de 2010. Actualmente, el Aprendizaje Automático es un área importantísima dentro de la Inteligencia Artificial con aplicaciones en prácticamente todos los sectores económicos y sociales.
Tipos de aprendizaje
Dentro del Aprendizaje Automático hay distintos «paradigmas» o maneras de enfocar el asunto. Estos son los más habituales, y también los que estudiaremos en este curso:
- Aprendizaje supervisado. Cuando el sistema recibe las entradas acompañadas de las salidas correctas, se dice que los datos de los que parte «están etiquetados» (la etiqueta es esa respuesta correcta que nos ha proporcionado el supervisor humano del sistema), y el objetivo del aprendizaje es ser capaz de predecir la «etiqueta» que le correspondería a cada nueva entrada que se reciba. Este es el paradigma más apropiado cuando contamos con muchos datos etiquetados (ej. comportamiento analizado de muchos jugadores de videojuegos para los que ya se ha comprobado en el pasado si hacían o no hacían trampas –cheats-).
- Aprendizaje no supervisado. Por el contrario, cuando el sistema recibe datos de entrada «no etiquetados» tiene que aprender, sin ayuda de nadie, a agruparlos, identificar anomalías… y en definitiva extraer patrones ocultos a simple vista que se pueden reconocer gracias a la naturaleza y distribución de los propios datos.
- Aprendizaje por refuerzo. Si lo que tenemos se parece más a un agente inteligente que interactúa con su entorno que a un sistema de procesamiento de datos, y dicho agente es capaz de recibir refuerzos (positivos o negativos) según su desempeño en el entorno, el paradigma de aprendizaje por refuerzo es el más adecuado. Repitiendo el proceso muchas veces, el agente tratará de maximizar la recompensa a largo plazo, aprendiendo a jugar cada vez un poco mejor, aplicando incluso «tácticas emergentes» que van más allá de lo que el desarrollador esperaba que el agente aprendiese.
En realidad hay más tipos, siendo el aprendizaje auto-supervisado, el semi-supervisado y el débilmente supervisado algunos de ellos, aunque no son tan populares como los anteriores. E incluso existe muchas formas de Aprendizaje Automático simbólico, donde se aprenden reglas o casos, y no tanto patrones abstractos asociados a datos. Aquí se incluirían enfoques como los propios árboles de decisión -algoritmos ID3, C4.5, etc.- que veremos, la programación lógica inductiva (Inductive Logic Programming ó ILP), IA neuro-simbólica y muchos otros.
La idea central es que para cada problema al que nos enfrentemos puede que exista un paradigma de Aprendizaje Automático que resulte más útil que los demás y por eso es importante conocerlos todos en la medida de lo posible.
Es importante distinguir entre «aprendizaje» y «memorización». Cuando decimos que un modelo captura lo que se ha aprendido, está implícito el concepto de generalización… es decir, en el modelo no han quedado grabadas las soluciones a todos los problemas del entrenamiento, sino una relación entre dichos problemas y soluciones que permite resolver la mayoría de casos de entrenamiento… y muchos más. Los problemas de los que hablaremos después como el sobreajuste (overfitting) y el infraajuste (underfitting), sin entrar en matemáticas ni métricas formales, hacen referencia a perder esa capacidad de generalizar o, en el caso contrario, a no llegar a adquirirla suficientemente durante el proceso de aprendizaje. Por ejemplo, en aprendizaje supervisado el modelo puede memorizar todo el conjunto de datos (dataset) de entrenamiento pero fallar en la prueba final; en no supervisado el agrupamiento (clustering) puede adaptarse tanto al ruido que genere grupos artificiales inexistentes; y en aprendizaje por refuerzo el agente puede memorizar rutas exactas de un entorno simulado, pero si se modifica ligeramente el entorno (ej. moviendo un obstáculo), puede fallar estrepitosamente por falta de generalización.
Herramientas
Las herramientas más utilizadas en este área comprenden un conjunto de algoritmos, bibliotecas software y entornos de desarrollo que facilitan la creación de sistemas capaces de aprender a partir de datos. Estas herramientas permiten realizar tareas como la preparación y el preprocesamiento de los datos, el entrenamiento y la validación de modelos, la evaluación de su rendimiento y su posterior despliegue en aplicaciones reales.
El lenguaje de programación estrella para desarrollar y trabajar con estas herramientas (y muchas otras) actualmente es Python. A día de hoy se hace necesario instalar todo un ecosistema de trabajo que puede consistir en un gestor de entornos como Anaconda y luego algún editor moderno de Python como Jupyter Notebooks (o Google Colab, que funciona online) para programar, ejecutar y documentar -todo a la vez- el trabajo que hagamos (lo que se conoce como cuaderno interactivo). También es importante conocer los fundamentos de la sintaxis orientada a datos, que es como vamos a usar Python principalmente, recurriendo a los marcos de datos (DataFrames) que, gracias a una biblioteca como Pandas, son como hojas de cálculo virtuales en las que organizar la información.
Más información
Para complementar es recomendable consultar otros documentos.
- …
Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.