I trasformatori possono generare riproduzioni NFL: introduzione di QB-GPT |  di Samuel Chaineau |  Novembre 2023

 | Intelligenza-Artificiale

Colmare il divario tra GenAI e analisi sportiva

fotografato da Zetong Li SU Unsplash

Dal mio primo articolo su StratFormerHo ricevuto una quantità relativamente grande di feedback e idee (quindi innanzitutto grazie!). Questo mi ha spinto ad approfondire il mio lavoro e provare un passo in più: realizzazione di un generatore di partite di calcio. In questo articolo presento QB-GPTun modello in grado di generare efficacemente giocate calcistiche una volta dotato di alcuni elementi. È possibile trovare uno spazio HuggingFace dedicato Qui per giocare con esso. Nel corso del mese condividerò il mio lavoro e le mie scoperte su come prevedere meglio le giocate della NFL utilizzando questo tipo di modelli generativi come spina dorsale. Anche l’industria sta guardando questo campo Ricerca sulla sicurezza DeepMind sta attualmente facendo ricerche sul calcio con il Liverpool per capire come i giocatori si muovono sul campo.

Traiettoria generata da QB-GPT
Vera traiettoria

Stratformatorela mia prima idea, che ho iniziato nell’ottobre 2021, era un modello esclusivamente codificatore che prendeva una traiettoria come input, cercava di completarla e prevedeva alcuni elementi contestuali ad essa associati (squadra, posizioni e giocate). Sebbene questo modello mostrasse modelli interessanti (come capire cosa rende veramente diverso un RB e un WR), si basava su uno sguardo “a posteriori” del gioco. Ciò che potrebbe essere ancora più interessante è comprendere a fondo come lo schieramento dei giocatori, con alcuni elementi contestuali, influenzi effettivamente i percorsi della squadra. In altre parole, quando le squadre si affronteranno sulla scrimmage line, cosa succederà?

Costruendo un simile algoritmo, siamo ora in grado di costruire un modello che comprende “realmente” il gioco del calcio, poiché fondamentalmente cerca di ricreare le giocate partendo da pochi elementi. Questo è l’obiettivo di QB-GPT. GPT è qui perché si basa sugli stessi concetti di decodifica che utilizzano qualsiasi modello GPT.

Questo articolo riguarderà il modello e i pochi trucchi necessari che ho dovuto implementare per renderlo “ok”. È disponibile uno spazio HuggingFace annesso Qui per generare qualche giocata se lo desideri, lo terrò aperto per un tempo limitato a seconda del costo. Anche se ho riconosciuto che è limitato e soggetto a una serie di miglioramenti, penso che tale applicazione meriti di essere condivisa con un pubblico più ampio. Se interessato a discuterne o approfondire alcuni aspetti, i miei contatti sono sull’app e a fine articolo. Ancora una volta, ho fatto questo lavoro da solo, con i dati che ho trovato e le imperfezioni ad esso correlate (se qualcuno che lavora nel team NFL/NGS legge questo, i messaggi sono più che aperti)

Parte 1: I dati

I dati richiesti per eseguire tale attività sono molto difficili da trovare. Mi baso su un tipo di dati specifico fornito solo da Statistiche di prossima generazione (NGS) strumento della NFL, dove, per ogni giocata, posso tracciare fino a 22 giocatori presenti in campo. Il problema è che questi dati non sono accessibili tramite una classica richiesta API. Tuttavia, dal 2019, la NFL offre un’ampia gamma di dati competitivi su Kaggle, spesso forniti con set di dati dell’NGS. Inoltre, alcune persone su GitHub hanno eliminato il browser NGS. Non ho provato a farlo e mi sono basato solo sui dati disponibili che avevano un formato utilizzabile.

È stato dedicato molto tempo all’unione dei dati tra loro (circa 200 ore). I compiti più importanti erano:

  • Trova i giocatori in campo utilizzando nflVerse
  • Associa le loro posizioni
  • Definisci la scrimmage line utilizzando i dati play by play di nflVerse
  • Normalizzare la traiettoria sottraendo la posizione originale del giocatore a ciascuna istanza della traiettoria. Quindi ogni elemento della traiettoria è una distanza tra il tempo i e il tempo 0.
  • Convertire le distanze in indici (come costruire un vocabolario per un BERT)
  • Applicare alcuni controlli di integrità (ad esempio rimuovendo giocatori che non sono in campo)
  • Converti i dati in array e formato dict per TensorFlow

ero solito Polari durante tutto il processo. Consiglio vivamente a qualsiasi scienziato dei dati, ingegnere di machine learning, ingegnere dei dati o a chi lavora con grandi volumi di dati tabulari di aggiungere rapidamente questo straordinario pacchetto al proprio toolkit. TLDR: Polars è migliore dei panda su set di dati di piccole dimensioni e migliore di pypsark su quelli di grandi dimensioni.

Tutto sommato, ho compilato 47.991 giochi diversi che rappresentano 870.559 traiettorie di giocatori diversi in campo (18 giocatori monitorati in media per partita, purtroppo mai un OL…).

Controllo la posizione di ciascun giocatore con un frame rate di 0,2 secondi, che rappresenta 28.147.112 posizioni in campo in totale. Limito i dati ai primi 10 secondi poiché dopo le traiettorie tendono ad essere sempre più caotiche e quindi difficili da modellare da un punto di vista probabilistico.

Il mio set di dati inizia dal 2018 al 2022 e copre 3.190 giocatori unici. I dati non sono perfetti ma forniscono un buon campione e potrebbero essere sufficienti per valutare se i trasformatori sono utili.

Per riassumere, le mie fonti di dati sono:

Qui sotto hai uno schema che rappresenta l’incorporamento dell’input per un singolo player:

Quindi gli undici giocatori vengono concatenati per giocata e poi troncati per frame per avere sempre un numero di token pari a 256. Ho limitato il numero di frame per un giocatore a 21 (max = 21*11 = 231) per assicurarmi di avere costantemente lo stesso numero di fotogrammi per giocatore. Quindi, ho dovuto creare nuove traiettorie partendo direttamente da un dato momento di un’opera, poiché la maggior parte delle mie opere hanno più di 21 fotogrammi. Ho creato un passo di riempimento di 12 fotogrammi, il che significa che la traiettoria è ora divisa in sottotraiettorie, ogni volta spostate di 12 fotogrammi. Questo processo tende a rendere più difficile il compito di previsione per i fotogrammi 12, 24, 36 e 48 come vedremo in seguito.

Gli elementi possono essere discussi. Ad esempio, l’importanza di tagliare il campo con una base di 1 iarda o il motivo per cui utilizzare un frame rate di 0,2 secondi. Penso che il modello (quindi i suoi dati di addestramento) sia un inizio e voglio riconoscere che non tutto è perfetto. Feedback e opinioni sono benvenuti purché pertinenti.

Parte 2: Il modello

Il modello è completamente ispirato all’architettura OpenAI GPT. Si basa su un livello di incorporamento che aggiunge diversi elementi contestuali ai token di input. Gli inglobamenti vengono poi alimentati ad un unico modulo trasformatori utilizzando l’attenzione multitesta a 3 teste. Nel modello Large viene applicato un secondo modulo trasformatori. L’uscita viene quindi immessa in uno strato denso con un’attivazione “relu”. Per ottenere le previsioni, applichiamo un’attivazione soft-max.

Sono stati necessari due accorgimenti per adattare l’architettura e la formazione:

  • Maschere causali multitemporali : In un GPT classico, l’attenzione dell’incorporamento nella posizione i può occuparsi solo dei token dalla posizione 0 a i-1. Nel nostro caso, mentre sto decodificando la squadra completamente Ho bisogno dei token al momento i per occuparmi di tutti i token disponibili tra il tempo 0 e i-1. Invece di avere la cosiddetta “maschera triangolare inferiore”, ci si ritrova con una maschera multi triangolare.
Maschere di attenzione per una determinata sequenza
Maschere di attenzione
Punteggi di attenzione grezza e sottrazioni mascherate dopo l’attenzione
Punteggi di attenzione con scala vmax diversa
  • Normalizzazione pre-strato: Ispirato dal lavoro di Sik-Ho TsangHo implementato il modulo Transformers proposto in cui la normalizzazione viene eseguita prima dell’attenzione multi-testa e prima di FFN.

Il modello non richiede un numero elevato di livelli di attenzione poiché i modelli sottostanti al modello sono piuttosto semplici. Ho addestrato 4 architetture di modelli diversi utilizzando le stesse impostazioni. I risultati mostrano che le dimensioni degli incorporamenti svolgono un ruolo cruciale nel livello di accuratezza che possiamo raggiungere mentre il numero di moduli di attenzione non migliora significativamente l’accuratezza:

  • Minuscolo : dimensione di incorporamento di 64, che rappresenta 1.539.452 parametri
  • Piccolo : dimensione di incorporamento di 128, che rappresenta 3.182.716 parametri
  • medio : dimensione di incorporamento di 256, che rappresenta 6.813.308 parametri
  • Grande : dimensione di inclusione di 128 ma con due moduli di attenzione, che rappresentano 7.666.556 parametri

Penso che quello grande potrebbe raggiungere prestazioni migliori con una revisione approfondita dello scheduler.

(Per confronto, GPT3 ha 175 miliardi di parametri)

I grafici qui sotto mostrano un confronto tra precisione e perdita durante l’allenamento tra i diversi modelli:

Perdita e accuratezza nei quattro modelli

Parte 3: La formazione

Il convoglio è composto dall’80% delle traiettorie, che rappresentano 205.851 esempi. Il set di prova è composto dal 20% delle traiettorie, che rappresentano 51.463 esempi.

I modelli vengono addestrati utilizzando un semplice pianificatore di callback su 9 epoche in cui la velocità di apprendimento inizia a 1e-3 e termina a 5e-4, con una dimensione batch di 32.

La perdita è un’entropia incrociata categoriale con pesi di classe progettati dalle soglie degli eventi sul convoglio (gli interi che si verificano più spesso pesano meno nella perdita). Le etichette impostate su -100 non contano nella perdita.

Le metriche utilizzate sono:

  • Precisione : Il prossimo movimento della squadra previsto è esattamente lo stesso di quello etichettato ?
  • Le prime 3 precisione : Il prossimo movimento etichettato è tra le prime 3 previsioni?
  • Le 5 migliori precisione : Il prossimo movimento etichettato è tra le prime 5 previsioni?
Le prime 3 e le prime 5 accuratezze nei quattro modelli

Infine, è stato effettuato un controllo RMSE sulle coordinate x,y associate ad ogni movimento. Questo controllo ci permette di monitorare che oltre a non prevedere con precisione, non si allontana troppo dalla realtà (prevedere una traiettoria di 1 metro quadrato potrebbe essere difficile).

Parte 4: I risultati

Nel complesso, i diversi modelli apprendono ancora i modelli dinamici sottostanti e funzionano relativamente bene sul mio set di dati. Possiamo vedere che l’aumento delle dimensioni degli incastri comporta un aumento dell’accuratezza dei modelli. Il compito di indovinare il quadrato di 1 iarda è decisamente impegnativo poiché i movimenti su un campo di calcio non sono guidati con un raggio così ridotto.

Ho deciso di suddividere queste previsioni in 3 categorie: tempo, tipi di gioco e posizioni.

Precisione e RMSE nel tempo (frame)

I primi 5 fotogrammi sono relativamente facili da prevedere per il modello poiché spesso i giocatori iniziano con movimenti simili. C’è un calo di precisione del 40–50% tra i fotogrammi 5 e 10. Questo è il momento in cui le riproduzioni tendono ad essere diverse e ad avere i propri percorsi. Tra i quattro modelli, quello minuscolo fatica di più soprattutto alla fine della traiettoria. Quello medio mostra prestazioni molto buone anche a lungo termine (più di 20 fotogrammi). I picchi sono relativi agli inizi delle traiettorie imbottite poiché queste vengono immesse senza alcuna conoscenza pregressa della traiettoria.

Precisione e RMSE sui tipi di gioco

Le giocate relativamente statiche sono (senza sorpresa) le più facili da prevedere. Run, passaggi, kick-off e punt sono (senza sorpresa) i più difficili da indovinare poiché i giocatori si muovono molto di più e con schemi possibilmente caotici. Non si osservano differenze significative tra i modelli.

Precisione e RMSE sulle posizioni

La posizione è un fattore molto discriminante con posizioni che hanno una differenza tra il 10 e il 20% in termini di precisione. Nel complesso, le posizioni che si muovono molto sono anche le più difficili da prevedere. I modelli minuscoli e piccoli tendono ad essere meno accurati degli altri in generale.

Parte 5: Cosa ho visto finora giocandoci

La temperatura ideale del modello sembra essere compresa tra 1,5 e 2,5. Ho testato una selezione di 10, 20 e 50. Più spingi la temperatura e la selezione, più tende a impazzire e a produrre schemi strani (i giocatori escono dal campo, cambiano direzione, grandi spazi tra due fotogrammi).

Tuttavia, sembra fornire modelli interessanti che potrebbero essere utilizzati per simulazioni e riconoscimento di libri di gioco.

Qual è il prossimo ?

Questo modello è grezzo. Può essere utilizzato in seguito per esplorare la strategia degli avversari, definirne di nuove e persino usarlo per migliorare il sistema di osservazione dei giocatori.

Tuttavia, l’idea centrale è vedere se questo modello può prevedere efficacemente i risultati del gioco, ovvero i guadagni in yard. Presto condividerò il mio lavoro su un quadro di previsione per le giocate della NFL basato sui risultati di QBGPT. Utilizzando le capacità generative di tale modello, puoi disegnare un gran numero di scenari da cui prevedere le giocate diventa un compito più semplice 😉

Nel frattempo puoi giocare con QB-GPT in questo spazio che abbraccia il viso, se ti è piaciuto questo articolo, il lavoro e i risultati non dimenticare di condividere e mettere mi piace!

(Se non diversamente specificato, tutte le immagini sono dell’autore)

Samuel Chaineau: Linkedin

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *