Numeri casuali nell’apprendimento automatico

Numeri casuali nell'apprendimento automatico un approfondimento

Tutto sui numeri pseudo-casuali, il seeding e la riproducibilità

Foto di Riho Kroll su Unsplash

L’apprendimento automatico si basa sulle statistiche e i numeri casuali sono importanti per le prestazioni di molti passaggi nella pipeline di elaborazione dati e allenamento del modello. I moderni framework di apprendimento automatico forniscono astrazioni e funzioni che implementano casualità internamente e per noi, come scienziati dei dati e ingegneri dell’apprendimento automatico, i dettagli sulla generazione di numeri casuali rimangono spesso oscuri.

In questo articolo, voglio fare chiarezza sui numeri casuali nell’apprendimento automatico. Leggerai di:

  • 3 esempi dell’uso di numeri casuali nell’apprendimento automatico
  • Generazione di numeri (pseudo-)casuali
  • Risolvere i numeri casuali tramite seeding
  • Apprendimento automatico riproducibile: linee di codice necessarie per scikit-learn, tensorflow e pytorch.

Alla fine di questo articolo, saprai cosa succede quando usi numeri casuali nella tua pipeline di apprendimento automatico e imparerai le linee di codice necessarie per garantire la riproducibilità dei tuoi algoritmi di apprendimento automatico.

3 Esempi dell’uso di numeri casuali nell’apprendimento automatico

Per illustrare l’importanza dei numeri casuali, discuteremo tre esempi in cui sono rilevanti lungo la pipeline di apprendimento automatico.

  1. Creazione di divisioni train/test di un dataset
  2. Inizializzazione dei pesi in una rete neurale
  3. Scegliere minibatch durante l’allenamento

Divisione train/testDividere il tuo dataset in dati di training e di test è uno dei passaggi più importanti per valutare le prestazioni di un algoritmo di apprendimento automatico. Siamo interessati a creare modelli che generalizzino bene su dati non utilizzati durante l’allenamento. A questo scopo, una collezione di campioni di dati viene divisa in almeno due insiemi disgiunti.

I dati di training vengono utilizzati per allenare l’algoritmo, cioè per fissare iterativamente i parametri del modello. I dati di test vengono utilizzati per convalidare l’algoritmo applicando un modello allenato ai dati di test e riportando le metriche appropriate.