Blog.

Non-IID ness: Non-independently and identically distributed data


Autore
Andrea Provino
Data
Tempo di lettura
6 minuti
Categoria
Data Science, machine-learning, Privacy Preserving

non-iid-distribution-spiegazione-italiano-non-indipendentemente-distributi

La Non-IID ness è un’espressione usata in modo ampio per indicare il complesso di metodologie, algoritmi e approcci per rappresentare, modellare e capire quelle tipologie di dati che definiamo non-independently and identically distributed data.

Sarò sincero con te: la traduzione italiana qui crea un pasticcio.

Quello che all’apparenza è un post noioso, può rivelarsi di fondamentale importanza nel nostro studio sui sistemi federati e non solo.

Quindi, armiamoci di pazienza e una buona dose di un alcaloide a scheletro purinico: la caffeina andrà bene.

Ora.

Gli inglesi hanno un’espressione per indicare una descrizione priva di senso o resa incomprensibile da un eccessivo uso di termini tecnici: è gobbledygook.

Evitiamo di rendere questo post molto gobbledygook.

Devo però informarti di una pratica comune.

Tendenzialmente, nei progetti di machine learning compiamo un’assunzione sui dati (modelling assumption) trattandoli come se fossero indipendentemente tratti dalla una distribuzione comune.

Tecnicamente, ipotizziamo che i dati siano indipendenti e distribuiti in modo identico (independently and identically distributed, o IID).

Non sono completamente convito che l’ipotesi sia sui dati, anziché sulla loro distribuzione. Prendi quindi queste informazioni con le pinze, anche se si tratta di tecnicismi, e comunque guarda qui per maggiori dettagli.

Il mondo è però diverso dalla tanto perfetta teoria dei libri.

Capita così che i dati all’interno delle aziende siano distribuiti su differenti silos.

Il fatto non costituisce un problema fintantoché le analisi siano compiute sui singoli dataset.

Lo diventa in un contento interaziendale, o quando i dati sono distribuiti e quindi generati in situazioni molto differenti. In questi casi possono esistere variazioni significative nella distribuzione degli stessi sui diversi devices o locations.

I dati sono, ancora una volta tecnicamente, non-IID, e questo può portare a cali di performance per i nostri normali algoritmi, come chiaramente (più o meno) spiegato in questo articolo accademico.

Capiamoci meglio.

Non-IID | Case Study

Riduciamo il problema a un toy example.

Immaginiamo un gruppo di sette amici in visita allo zoo.

Il gruppo decide di creare un modello di machine learning per classificare l’animare ritratto in una foto.

Iniziano quindi a raccogliere i dati per la fase di training, scattando foto a ciascuno dei dici animai presenti, raccogliendo il risultato in un server centrale (dataset centralizzato).

In questo esempio fittizio, i sette amici raccolgono complessivamente 1307 foto dei dieci animali, definendo una media di circa 130 immagini per animale e una deviazione standard di circa 30.

Graficamente:

OpenMined

Gli amici organizzano i dati in una matrice di due colonne:

  1. valori RGB delle immagini
  2. label dell’animale

Attraverso l’ausilio di un pacchetto per Machine Learning open source, mescolano casualmente i dati dividendoli in tre gruppi:

  • 80% per il dataset di training
  • 10% per quello di validation
  • 10% per quello di testing

Allenano quindi un modello usando l’algoritmo di Stochastic Gradient Descent come ottimizzatore e valutano le performance sul validation set per ogni ciclo di allenamento: in poco tempo il loro modello converge.

Gli amici si chiedono ora se sia possibile allenare un modello per lo stesso compito senza dover aggregare i dati raccolti in un unico dataset centralizzato.

Per completare il task, fanno ricorso all’algoritmo di Federated Averaging (FedAvg), decidendo di comparare le perfomance.

In inglese fanno un apple-to-apple comparison.

Anche senza la caffeina, è difficile annoiarsi.

Tornando a noi!

Per ciascun ciclo di allenamento con l’algoritmo di FedAvg, effettuano la loss evaluation sul validation set e immediatamente notano un problema:

OpenMined

Addio convergenza.

Esattamente, il problema è dovuto alla natura dei dati di tipo non-IID.

Sampling Bias!

Esaminiamo con più attenzione i dati raccolti dal gruppo di amici.

Non avendo imposto regole restrittive al processo di raccolta, ognuno ha scattato un diverso numero di foto a ciascuno dei 10 animali, in virtù delle loro preferenze personali: sampling bias!

Possiamo osservare due pattern:

  • Alcuni animali hanno più immagini degli altri nei singoli dataset (distribution skew)
  • Alcuni amici hanno scattato più foto degli altri (quantity skew)

Distribution Skew

Esaminando la percentuale d’immagini ritraenti i singoli animali per ogni amico, notiamo una situazione ben lungi dalla perfezione:

OpenMined

Le variazioni all’interno dei singoli dataset sono significative.

Abdul ad esempio è ossessionato dai piccoli lamantini.

Quantity Skew

La visualizzazione del numero assoluto d’immagini evidenzia poi il problema di quantity skew: la quantità d’imamgini raccolta da ogni amico varia notevolmente.

OpenMined

FedAvg vs non-IID

Possiamo quindi concludere che i dati non sono identicamente distribuiti (identically distributed).

Questo ostacola l’operato del FedAvg.

Il motivo è presto detto.

Per capire meglio quanto segue, ti consiglio di ripassare la spiegazione del funzionamento del Federated Averaging.

Consideriamo il momento del training sul dataset di Prateek: non ha scattato molte foto, pertanto il modello va costantemente in overfitting.

Prendiamo ora in considerazione il training sul dataset di Abdul. A causa dell’elevato numero di lamantini, per alcuni bacthes di allenamento il modello potrebbe ottimizzare unicamente la previsione della label “manatee“.

Il modello di Prateek e quello di Abdul finiscono per divergere su differenti local minima; quando il server coordinatore media gli updates al termine del training round, il risultato è privo di senso.

Questo scenario illustra pertanto come la presenza di non-IID impatti negativamente sulle prestazioni del FedAvg.

Non-IID Taxonomy

Concludiamo questo post proponendo una tassonomia, presentata da Hsieh et Al., per classificare le differenti tipologie di non-IID che possiamo incontrare in scenari reali.

Violazione d’identicità

I dati deviano dalla condizione di essere identicamente distribuiti. Circostanze comuni per cui questo avviene sono:

  • Quantity skew: partizioni diverse contengono un numero di dati altamente differente (i.e. Alcune partizioni collezionano dati da meno device,o da quelli che producono meno dati)
  • Label distribution skew: le partizioni sono legate a particolari regioni geografiche che fanno variare notevolmente le distribuzioni delle labels. (i.e. La faccia di una persona è presente solo in uno stato, così come i canguri sono limitati all’Australia e agli zoo.
  • Same label, different feature: la stessa label può avere due diverse “feature vectors” in altrettanti dataset. L’esempio più significativo è l’immagine di un’auto coperta di sabbia ad Abu Dhabi, e di neve ad Oslo.
  • Same feature, different label: gli stessi “feature vectors” possono essere associati a label differenti, a causa di preferenze personali. Label che riflettono il sentimento o la previsione della parola successiva hanno un forte bias personale o regionale (i.e. Culturale)

Violazione d’indipendenza

I dati deviano dall’essere indipendentemente tratti da una stessa distribuzione. Casi comuni di occorrenza di questo fenomeno:

  • Intra-partition correlation: come due frame consecutivi in un video
  • Inter-partition correlation: i dispositivi condividono una feature comune, come la temperatura.

Per il momento è tutto.

Un caldo abbraccio, Andrea.

Taggeddata sciencedatasetprivacy preserving machine learningteoria


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum