Apprendimento federato
L’apprendimento federato (conosciuto anche come apprendimento collaborativo) è una tecnica di apprendimento automatico che permette di addestrare un algoritmo attraverso l’utilizzo di dispositivi decentralizzati o server che mantengono i dati, senza la necessità di scambiare i dati stessi. Questo approccio si oppone alle tecniche di apprendimento automatico centralizzate dove i dati vengono caricati su uno stesso server, o ai più tradizionali metodi decentralizzati che assumono che i dati locali sono identicamente distribuiti.
L’apprendimento federato permette ai partecipanti di costruire un modello per l’apprendimento automatico comune e robusto, senza lo scambio di qualsiasi dato. L’impego di questa tecnica consente di affrontare problemi critici come la protezione, la sicurezza, e i diritti di accesso ai dati e l’impiego di dati eterogenei. Le principali applicazioni dell’apprendimento federato comprendono vari campi come la difesa, le telecomunicazioni, l’IoT e la farmaceutica.
Definizione
L’apprendimento federato ha lo scopo di fornire metodi per addestrare un modello di apprendimento automatico, per esempio le deep neural networks, utilizzando i dati locali che sono distribuiti su più nodi senza la necessita dello scambio degli stessi. Il principio generale consiste nell’addestrare modelli locali utilizzando i dati disponibili localmente ai nodi e, attraverso lo scambio dei parametri (per esempio, i pesi e i bias della rete neurale) tra i nodi, generare un modello globale.
La principale differenza che caratterizza l’apprendimento federato rispetto a quello distribuito risiede nelle assunzioni fatte sulle proprietà dei dataset locali [citazione] in quanto l’apprendimento distribuito è nato con l’intento di parallelizzare la potenza computazionale mentre l’approccio federato ha come intento l’addestramento dei modelli su dati eterogenei. Anche se l’approccio distribuito ha come obbiettivo l’apprendimento di un singolo modello su server multipli, i dati memorizzati all’interno dei nodi locali vengono considerati identicamente distribuiti e hanno all’incirca le stesse dimensioni per tutti i nodi. Nessuna di queste ipotesi viene fatta per l’apprendimento federato. Infatti, i dati disponibili ai nodi sono generalmente eterogenei ed hanno dimensioni che possono variare anche di molti ordini di grandezza. Inoltre, i nodi coinvolti nell’apprendimento federato possono subire delle disconnessioni o dei guasti, dovute principalmente al mezzo di comunicazione utilizzato (per esempio il Wi-fi) o alla batteria (per esempio dispositivi smartphones o IoT) mentre i nodi considerati nell’addestramento distribuito sono principalmente datacenters con una capacità computazionale molto elevata e possono utilizzare una connessione dedicata ad alta velocità [citazione].
Apprendimento federato centralizzato
Nei metodi di apprendimento federato centralizzato, un server centrale è incaricato di gestire i differenti passi per gli algoritmi utilizzati e di coordinare i nodi che partecipano al processo di apprendimento. Il server ha la responsabilità di scegliere i nodi all’inizio della procedura e ha il compito di aggregare i modelli ricevuti dai nodi durante la fase di apprendimento. Considerando che tutti i nodi partecipanti devono mandare i modelli ad una singola entità, il server potrebbe costituire una forma di rallentamento per il sistema.
Apprendimento federato decentralizzato
Nei metodi di apprendimento federato decentralizzato, i nodi hanno la capacità di coordinarsi al fine di ottenere il modello globale. Queste tecniche permettono di ovviare al problema degli approcci centralizzati dato che i nodi sono in grado di scambiarsi gli aggiornamenti dei modelli senza il coordinamento di un server centrale.
Caratteristiche principali
Addestramento iterativo
Per garantire una buona esecuzione delle attività al fine di ottenere un modello globale condiviso da tutti i nodi, l’apprendimento federato si basa su un processo iterativo suddiviso in un insieme atomico di interazioni client-server noto come federated round. All’interno di ogni ciclo di questo processo, l’attuale stato del modello viene trasmesso ai nodi partecipanti, i nodi aggiornano il modello utilizzando i dati locali a disposizione e producono una serie di potenziali aggiornamenti del modello. Infine, il modello globale viene aggiornato aggregando gli aggiornamenti pervenuti dai nodi.
Nella metodologia descritta in basso, assumiamo che il processo di apprendimento consideri l’interazione di un server centrale che fornisce i comandi ai nodi sulle operazioni da effettuare. Ciononostante, l’impiego di metodologie che non richiedono l’utilizzo di un’entità centrale forniscono gli stessi risultati attraverso l’impiego di tecniche gossip[citazione] o di consenso[citazione].
Assumendo che un federated round sia composto da una iterazione del processo di apprendimento, la procedura per l’addestramento federato può essere descritta come segue:
- Inizializzazione: in base agli input forniti dal server, un modello di apprendimento automatico, per esempio una regressione lineare, una rete neurale o un boosting, viene scelto per essere appreso ai nodi locali e vieni inizializzato. Una volta completata la scelta del modello e l’inizializzazione dello stesso, i nodi vengono attivati e rimangono in attesa dei per ulteriori istruzioni dal server.
- Selezione dei nodi: una frazione dei nodi disponibili viene scelta, in base alla policy del server, per iniziare la fase di apprendimento sui dati locali. I nodi scelti acquisiscono il modello corrente dal server mentre gli altri aspettano il prossimo round.
- Configurazione: Il server comunica ai nodi selezionati di iniziare l’apprendimento utilizzando i propri dati locali con una modalità predefinita (per esempio utilizzando delle mini-batch per il calcolo del gradiente).
- Comunicazione: I nodi selezionati inviano al server i loro modelli per l’aggregazione. Il server aggrega i modelli ricevuti in base all’algoritmo selezionato all’inizio e restituisci il risultato dell’aggregazione ai nodi. Inoltre, il server gestisce eventuali errori o nodi disconnessi. A questo punto il prossimo round viene fatto iniziare.
- Terminazione: quando il criterio di terminazione viene raggiunto, per esempio quando il numero massimo di iterazioni viene superato o l’accuratezza del modello è maggiore di una certa soglia, il server aggrega gli ultimi aggiornamenti forniti dai nodi e costruisce il modello globale.
La procedura considerata precedentemente assume che i modelli vengano aggiornati in modo sincrono. Sviluppi recenti nell’apprendimento federato hanno iniziato ad introdurre meccanismi per l’aggiornamento asincrono. Rispetto agli approcci sincroni, in cui i modelli locali vengono scambiati una volta che i calcoli sono stati eseguiti su tutti i layer della rete neurale, quelli asincroni sfruttano le proprietà delle reti neurali per inviare gli aggiornamenti non appena i calcoli su un certo layer vengono completati.