Utente:Luca Barbieri94/Apprendimento federato

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

L'apprendimento federato (noto 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 tradizionali tecniche di apprendimento automatico centralizzate dove i dati vengono caricati su un server, o ai più tradizionali metodi decentralizzati che assumono che i dati locali sono distribuiti in modo identico .

L’apprendimento federato permette ai diversi partecipanti di costruire un modello per l’apprendimento automatico comune e robusto, senza lo scambio di qualsiasi dato. L'utilizzo 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[modifica | modifica wikitesto]

L’apprendimento federato ha lo scopo di fornire metodi per addestrare un modello di apprendimento automatico, per esempio le reti neurali profonde, 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 (ad esempio i pesi di una rete neurale profonda) generare un modello globale.

Federated learning general process in central orchestrator setup
Processo generale di apprendimento federato nella configurazione centralizzata

La principale differenza tra l'apprendimento federato e l'apprendimento distribuito risiede nelle ipotesi formulate sulle proprietà dei set di dati locali [1] poiché l'apprendimento distribuito è nato con l'intento diparallelizzare la potenza di calcolo 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 centri di elaborazione dati 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. Ciononostante, la specifica configurazione della topologia di rete può influenzare le

Caratteristiche principali[modifica | modifica wikitesto]

Apprendimento iterativo[modifica | modifica wikitesto]

Per garantire la buona esecuzione delle attività di un modello finale e centrale di machine learning, l'apprendimento federato si basa su un processo iterativo suddiviso in un insieme atomico di interazioni client-server noto come round di apprendimento federato. Ogni ciclo di questo processo consiste nel trasmettere l'attuale stato del modello globale ai nodi partecipanti, addestrare i modelli locali su questi nodi locali per produrre una serie di potenziali aggiornamenti del modello su ciascun nodo e quindi aggregare ed elaborare questi aggiornamenti locali in un singolo aggiornamento globale e applicandolo al modello globale.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 seguente, si assume che il processo di apprendimento consideri l’interazione di un server centrale che fornisce i comandi ai nodi sulle operazioni da effettuare. Tuttavia, l’impiego di metodologie che non richiedono l’utilizzo di un’entità centrale, come per esempio gli approcci peer-to-peer, forniscono gli stessi risultati attraverso l'utilizzo di metodologie gossip [2] o di consenso. [citazione]

Assumendo che un federated round sia composto da una del processo di apprendimento, la procedura per l’addestramento federato può essere descritta come segue [citazione]:

  1. 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.
  2. 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.
  3. 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).
  4. 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 restituisce il risultato dell’aggregazione ai nodi. Inoltre, il server gestisce eventuali errori o nodi disconnessi. A questo punto il prossimo round viene fatto iniziare e il processo riparte dalla fase della selezione dei nodi.
  5. 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.

Iperparametri algoritmici[modifica | modifica wikitesto]

Topologia di rete[modifica | modifica wikitesto]

Il modo in cui gli output statistici locali sono raggruppati e il modo in cui i nodi comunicano tra di loro possono cambiare rispetto al modello centralizzato spiegato nella sezione precedente. Ciò porta a una varietà di approcci di apprendimento federati: ad esempio il caso in cui il server centrale non è presente o quello della comunicazione stocastica. [3]

In particolare, le reti distribuite senza coordinatore centrale rappresentano un'importante variante. In questo caso, non vi è alcun server centrale che invia le query ai nodi locali e aggrega i modelli ricevuti dai nodi. Ogni nodo locale invia i propri output a diversi nodi selezionati casualmente, [4] che aggregano i risultati localmente. Questo limita il numero di transazioni, riducendo a volte i tempi di apprendimento e i costi di elaborazione.

Parametri per l'apprendimento federato[modifica | modifica wikitesto]

Una volta scelta la topologia della rete dei nodi, è possibile controllare diversi parametri del processo di apprendimento federato (in opposizione agli iperparametri del modello di apprendimento automatico) per ottimizzare l'apprendimento:

  • Numero di cicli per l'apprendimento federato:
  • Numero totale di nodi utilizzati nel processo:
  • Frazione di nodi utilizzati ad ogni iterazione per ciascun nodo:
  • Dimensione del numero di esempi locali utilizzati ad ogni iterazione nel processo di apprendimento:

Altri parametri che dipendono dal modello utilizzato possono essere modificati, come ad esempio:

  • Numero di iterazioni per l'apprendimento locale al nodo:
  • Learning rate locale:

Tali parametri devono essere ottimizzati in base ai vincoli dell'applicazione di apprendimento automatico (ad esempio, potenza di calcolo disponibile, memoria disponibile, larghezza di banda ). Ad esempio, scegliendo stocasticamente una frazione limitata di nodi per ciascuna iterazione si riducono i costi di elaborazione e si può impedire l'eccessivo adattamento del modello, allo stesso modo in cui la discesa del gradiente stocastica può ridurre l' eccessivo adattamento.

Metodi per l'apprendimento federato[modifica | modifica wikitesto]

In questa sezione, seguiamo l'esposizione dell'articolo Communication-Efficient Learning of Deep Networks from Decentralized Data, H. Brendan McMahan and al. 2017.

Per descrivere i diversi metodi di apprendimento federato, le seguenti notazioni sono introdotte:

  •  : numero totale di clienti;
  •  : indice dei clienti;
  •  : numero di esempi disponibili durante l'addestramento per il cliente  ;
  •  : vettore di peso del modello di apprendimento automatico al nodo , all'iterazione  ;
  •  : funzione di perdita considerata per i pesi e batch  ;
  •  : numero di epoche locali;

Federated Stochastic Gradient Descent (FedSGD)[modifica | modifica wikitesto]

L'addestramento per l'apprendimento profondo si basa principalmente sulle varianti della discesa stocastica del gradiente, in cui i gradienti vengono calcolati su un sottoinsieme casuale dei dati disponibili e successivamente utilizzati per eseguire un passaggio nell'algoritmo della discesa del gradiente.

Il federated stochastic gradient descent [5] è la trasposizione diretta di questo algoritmo all'impostazione federata, ma usando una frazione casuale dei nodi e utilizzando tutti i dati su questo nodo. I gradienti sono mediati dal server in modo proporzionale al numero di campioni presenti su ciascun nodo e utilizzati per eseguire uno step per la discesa del gradiente.

Federated averaging[modifica | modifica wikitesto]

Il federated averaging (FedAvg) [6] è una generalizzazione del FedSGD, che consente ai nodi locali di eseguire più di un aggiornamento sui dati locali e scambia i pesi aggiornati anziché i gradienti. La logica alla base di questa generalizzazione è che in FedSGD, se tutti i nodi locali iniziano dalla stessa inizializzazione, la media dei gradienti è strettamente equivalente alla media dei pesi stessi. Inoltre, la media dei pesi sintonizzati provenienti dalla stessa inizializzazione non danneggia necessariamente le prestazioni del modello medio risultante. [[Categoria:Apprendimento]] [[Categoria:Apprendimento automatico]]

  1. ^ Federated Optimization: Distributed Optimization Beyond the Datacenter, Jakub Konecny, H. Brendan McMahan, Daniel Ramage, 2015
  2. ^ Decentralized Collaborative Learning of Personalized Models over Networks Paul Vanhaesebrouck, Aurélien Bellet, Marc Tommasi, 2017
  3. ^ Collaborative Deep Learning in Fixed Topology Networks, Zhanhong Jiang, Aditya Balu, Chinmay Hegde, Soumik Sarkar, 2017
  4. ^ GossipGraD: Scalable Deep Learning using Gossip Communication based Asynchronous Gradient Descent, Jeff Daily, Abhinav Vishnu, Charles Siegel, Thomas Warfel, Vinay Amatya, 2018
  5. ^ Privacy Preserving Deep Learning, R. Shokri and V. Shmatikov, 2015
  6. ^ Communication-Efficient Learning of Deep Networks from Decentralized Data, H. Brendan McMahan and al. 2017