Los transformadores pueden generar jugadas de la NFL: presentando QB-GPT |  de Samuel Chaineau |  noviembre de 2023

Cerrando la brecha entre GenAI y análisis deportivo

Foto por Zetong Li en desempaquetar

Desde mi primer artículo sobre StratFormer, Recibí una cantidad relativamente grande de comentarios e ideas (¡así que primero, gracias!). Esto me impulsó a profundizar mi trabajo y dar un paso más: Construyendo un generador de jugadas de fútbol.. En este artículo presento QB-GPT, un modelo que puede generar jugadas de fútbol de manera efectiva una vez que se le dotan de algunos elementos. Se puede encontrar un espacio dedicado a HuggingFace. aquí para jugar con ello. Más adelante en el mes compartiré mi trabajo y mis hallazgos sobre cómo predecir mejor las jugadas de la NFL utilizando este tipo de modelos generativos como columna vertebral. La industria también está observando este campo como Investigación de seguridad de DeepMind Actualmente está investigando el fútbol con el Liverpool para comprender cómo se mueven los jugadores en el campo.

Trayectoria generada por QB-GPT
verdadera trayectoria

estratoformador, mi primera idea que comencé en octubre de 2021, fue un modelo solo codificador que tomaba una trayectoria como entrada, intentaba completarla y predecía algunos elementos contextuales asociados con ella (equipo, posiciones y jugadas). Si bien este modelo mostró patrones interesantes (como comprender qué es lo que realmente diferencia a un RB y un WR), se basó en una mirada “a posteriori” de la jugada. Lo que podría ser aún más interesante es comprender en profundidad cómo la configuración de los jugadores, con algunos elementos contextuales, afecta efectivamente los caminos del equipo. En otras palabras, cuando los equipos se enfrentan en la línea de scrimmage, ¿qué va a pasar?

Al construir un algoritmo de este tipo, ahora podemos construir un modelo que “realmente” entiende el juego de fútbol, ​​ya que básicamente intenta recrear jugadas a partir de unos pocos elementos. Este es el objetivo de QB-GPT. GPT está aquí porque se basa en los mismos conceptos de decodificación que utilizan cualquier modelo GPT.

Este artículo cubrirá el modelo y los pocos trucos necesarios que tuve que implementar para que esté “bien”. Hay un espacio adjunto de HuggingFace disponible aquí para generar algunas jugadas si lo deseas, lo mantendré abierto por tiempo limitado dependiendo del costo. Si bien reconocí que es limitada y propensa a una variedad de mejoras, creo que dicha aplicación merece ser compartida con una audiencia más amplia. Si está interesado en comentarlo o profundizar en algunos aspectos, mis contactos están en la aplicación y al final del artículo. Una vez más, hice este trabajo por mi cuenta, con los datos que pude encontrar y las imperfecciones relacionadas (si alguien que trabaja en el equipo NFL/NGS lee esto, los DM están más que abiertos)

Parte 1: Los datos

Los datos necesarios para realizar dicha tarea son muy difíciles de encontrar. Confío en un tipo de datos específico proporcionado únicamente por el Estadísticas de próxima generación (NGS) herramienta de la NFL, donde, para cualquier jugada, puedo rastrear hasta los 22 jugadores presentes en el campo. El problema es que no se puede acceder a estos datos mediante una solicitud API clásica. Sin embargo, desde 2019, la NFL ofrece una amplia gama de competencia de datos en Kaggle, a menudo proporcionada con conjuntos de datos de NGS. Además, algunas personas en GitHub han eliminado en el pasado el navegador NGS. No intenté hacerlo y sólo me basé en los datos disponibles que tenían un formato utilizable.

Se ha dedicado mucho tiempo a fusionar datos entre ellos (alrededor de 200 horas). Las tareas más importantes fueron:

  • Encuentra a los jugadores en el campo usando nflVerse
  • Asociar sus posiciones
  • Defina la línea de scrimmage usando los datos juego por juego de nflVerse
  • Normalizar la trayectoria restando la posición original del jugador a cada instancia de la trayectoria. Por tanto, cada elemento de la trayectoria es una distancia entre el tiempo i y el tiempo 0.
  • Convertir las distancias a índices (como crear un vocabulario para un BERT)
  • Aplicar algunas comprobaciones de cordura (por ejemplo, eliminar jugadores que no están en el campo)
  • Convierta los datos en matrices y formato dict para TensorFlow

solía Polares durante todo el proceso. Recomiendo encarecidamente a cualquier científico de datos, ingeniero de aprendizaje automático, ingeniero de datos o personas que trabajen con un gran volumen de datos tabulares que agreguen rápidamente este impresionante paquete a su conjunto de herramientas. TLDR: Polars es mejor que pandas en conjuntos de datos pequeños y mejor que pypsark en conjuntos grandes.

Considerándolo todo, compilé 47.991 obras diferentes representando 870.559 trayectorias de jugadores diferentes en el campo (una media de 18 jugadores seguidos por jugada, lamentablemente nunca un OL…).

Superviso la posición de cada jugador a una velocidad de fotogramas de 0,2 segundos, lo que representa 28.147.112 posiciones en el campo en total. Limito los datos a los primeros 10 segundos ya que las trayectorias tienden a ser cada vez más caóticas y, por lo tanto, difíciles de modelar desde un punto de vista probabilístico.

Mi conjunto de datos comienza entre 2018 y 2022 y cubre 3.190 jugadores únicos. Los datos no son perfectos, pero dan una buena muestra y pueden ser suficientes para evaluar si los transformadores son útiles.

Para resumir, mis fuentes de datos son:

  • El Big Data Bowl de la NFL de 2021 enlace
  • El Big Data Bowl de la NFL de 2022 enlace
  • El Big Data Bowl de la NFL de 2023 enlace
  • Repositorio público de git Aspectos destacados de NGS enlace

A continuación tiene un esquema que representa la incrustación de entrada para un solo reproductor:

Luego, los once jugadores se concatenan por jugada y luego se truncan por fotogramas para tener siempre un número de tokens igual a 256. Limité el número de fotogramas para un jugador a 21 (max = 21*11 = 231) para asegurarnos de que tenemos consistentemente el mismo número de fotogramas por jugador. Por lo tanto, tuve que crear nuevas trayectorias comenzando directamente en un momento dado de una obra, ya que la mayoría de mis obras tienen más de 21 fotogramas. Creé un paso de relleno de 12 fotogramas, lo que significa que la trayectoria ahora está dividida en subtrayectorias, cada vez desplazada en 12 fotogramas. Este proceso tiende a dificultar la tarea de predicción para los fotogramas 12, 24, 36 y 48 como veremos más adelante.

Se pueden discutir elementos. Por ejemplo, la relevancia de cortar el campo en cubitos con una base de 1 yarda o por qué usar una velocidad de fotogramas de 0,2 segundos. Creo que el modelo (y sus datos de entrenamiento) es un comienzo y quiero reconocer que no todo es perfecto. Comentarios y opiniones son bienvenidos siempre que sean relevantes.

Parte 2: El modelo

El modelo está completamente inspirado en la arquitectura OpenAI GPT. Se basa en una capa de incrustación que agrega diferentes elementos contextuales a los tokens de entrada. Luego, los elementos integrados se alimentan a un único módulo de transformadores mediante un cabezal múltiple con 3 cabezales. En el modelo Grande se aplica un segundo módulo de transformadores. Luego, la salida se introduce en una capa densa con una activación “relu”. Para obtener las predicciones, aplicamos una activación soft-max.

Fueron necesarios dos trucos para adaptar la arquitectura y la formación:

  • Máscaras causales multitemporales : En un GPT clásico, la atención de la incrustación en la posición i solo puede atender los tokens de la posición 0 a i-1. En nuestro caso, mientras estoy decodificando el equipo. completamente Necesito los tokens en el momento i para atender todos los tokens disponibles entre el tiempo 0 y el i-1. En lugar de tener la llamada “máscara triangular inferior”, terminas con una máscara multitriangular.
Máscaras de atención para una secuencia determinada.
Máscaras de atención
Puntuaciones de atención bruta y restas de máscaras de atención posterior
Puntuaciones de atención con diferente escala vmax
  • Normalización previa a la capa: Inspirado por el trabajo de Sik Ho TsangImplementé su módulo Transformers propuesto donde la normalización se realiza antes de la atención de múltiples cabezales y antes de FFN.

El modelo no requiere una gran cantidad de capas de atención ya que los patrones subyacentes a modelar son bastante simples. Entrené arquitecturas de 4 modelos diferentes usando la misma configuración. Los resultados muestran que las dimensiones de las incrustaciones juegan un papel crucial en el nivel de precisión que podemos alcanzar, mientras que el número de módulos de atención no mejora significativamente la precisión:

  • Diminuto : dimensión de incrustación de 64, que representa 1.539.452 parámetros
  • Pequeño : dimensión de incrustación de 128, que representa 3.182.716 parámetros
  • Medio : dimensión de incrustación de 256, que representa 6.813.308 parámetros
  • Grande : dimensión de incrustación de 128 pero con dos módulos de atención, que representan 7.666.556 parámetros

Creo que el grande podría alcanzar un mejor rendimiento con una revisión en profundidad del planificador.

(A modo de comparación, GPT3 tiene 175 mil millones de parámetros)

Los cuadros a continuación muestran una comparación de la precisión y la pérdida durante el entrenamiento entre los diferentes modelos:

Pérdida y precisión en los cuatro modelos.

Parte 3: El entrenamiento

El conjunto de trenes está formado por el 80% de las trayectorias, representando 205.851 ejemplos. El conjunto de prueba está compuesto por el 20% de las trayectorias, lo que representa 51.463 ejemplos.

Los modelos se entrenan utilizando un programador de devolución de llamadas simple en 9 épocas donde la tasa de aprendizaje comienza en 1e-3 y termina en 5e-4, con un tamaño de lote de 32.

La pérdida es una entropía cruzada categórica con ponderaciones de clase diseñadas por umbrales de ocurrencias en el conjunto de trenes (los números enteros que ocurren con mayor frecuencia pesan menos en la pérdida). Las etiquetas establecidas en -100 no cuentan para la pérdida.

Las métricas utilizadas son:

  • Exactitud : ¿El próximo movimiento del equipo predicho es exactamente el mismo que el etiquetado?
  • Precisión de los 3 mejores : ¿Está el próximo movimiento etiquetado entre las 3 principales predicciones?
  • Las 5 mejores precisiones : ¿Está el próximo movimiento etiquetado entre las 5 principales predicciones?
Las 3 y 5 mejores precisiones en los cuatro modelos

Finalmente, se realizó una verificación RMSE en las coordenadas x,y asociadas con cada movimiento. Esta verificación nos permite monitorear que, además de no predecir con precisión, no se aleja demasiado de la verdad (predecir una trayectoria de 1 yarda cuadrada puede ser difícil).

Parte 4: Los resultados

En general, los diferentes modelos aún aprenden patrones dinámicos subyacentes y funcionan relativamente bien en mi conjunto de datos. Podemos ver que el aumento de las dimensiones de las incrustaciones conlleva un aumento en la precisión de los modelos. La tarea de adivinar una yarda cuadrada es definitivamente un desafío ya que los movimientos en un campo de fútbol no se realizan con un rango tan pequeño.

Decidí dividir esas predicciones en 3 categorías: tiempo, tipos de juego y posiciones.

Precisión y RMSE a lo largo del tiempo (fotogramas)

Los primeros 5 fotogramas son relativamente fáciles de predecir para el modelo, ya que a menudo los jugadores comienzan con movimientos similares. Hay una caída en la precisión del 40-50% entre el cuadro 5 y 10. Este es el momento donde las jugadas tienden a ser diferentes y tener sus propios caminos. Entre los cuatro modelos, el pequeño es el que tiene más dificultades, especialmente al final de la trayectoria. El medio muestra un rendimiento muy bueno incluso a largo plazo (más de 20 fotogramas). Los picos están relacionados con los inicios de trayectorias acolchadas, ya que estos se introducen sin ningún conocimiento previo de la trayectoria.

Precisión y RMSE sobre tipos de juego

Las jugadas que son relativamente estáticas son (sin sorpresa) las más fáciles de predecir. Las carreras, los pases, los saques de salida y los despejes son (sin sorpresa) los más difíciles de adivinar, ya que los jugadores se mueven mucho más y con patrones posiblemente caóticos. No se observan diferencias significativas entre los modelos.

Precisión y RMSE sobre posiciones

La posición es un factor muy discriminante, ya que las posiciones tienen una diferencia de precisión de entre el 10 y el 20 %. En general, las posiciones que se mueven mucho son también las más difíciles de predecir. Los modelos diminutos y pequeños suelen ser menos precisos que el resto en general.

Parte 5: Lo que he visto hasta ahora jugando con él

La temperatura ideal del modelo parece estar entre 1,5 y 2,5ºC. Probé una selección de 10, 20 y 50. Cuanto más presionas la temperatura y la selección, más tiende a volverse loco y producir patrones extraños (jugadores saliendo del campo, cambiando de dirección, grandes espacios entre dos fotogramas).

Sin embargo, parece proporcionar patrones interesantes que podrían usarse para simulaciones y reconocimiento de libros de juegos.

Que sigue ?

Este modelo está en bruto. Puede usarse más adelante para explorar la estrategia de los oponentes, definir estrategias nuevas e incluso usarlo para mejorar el sistema de exploración de jugadores.

Sin embargo, la idea central es ver si este modelo puede predecir eficazmente los resultados del juego, es decir, ganancias de yardas. Pronto compartiré mi trabajo sobre un marco de predicción para jugadas de la NFL que se basa en los hallazgos del QBGPT. Al utilizar las capacidades generativas de dicho modelo, puedes dibujar una gran cantidad de escenarios a partir de los cuales predecir jugadas es una tarea más fácil;)

Mientras tanto, puedes jugar con QB-GPT en este espacio de caras abrazadas. Si te gustó este artículo, el trabajo y los hallazgos, ¡no olvides compartirlo y darle me gusta!

(A menos que se indique lo contrario, todas las imágenes son del autor)

Samuel Chaineau: LinkedIn