C’è un momento, addestrando una rete abbastanza grande, in cui succede una cosa scoraggiante: la rete comincia a sbagliare di meno sui dati di addestramento e, contemporaneamente, di più su quelli che non ha mai visto. Sta smettendo di imparare e cominciando a memorizzare. Nel 2014 un gruppo dell’Università di Toronto — Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever e Ruslan Salakhutdinov — pubblicò sul Journal of Machine Learning Research una risposta a questo problema tanto efficace quanto controintuitiva: durante l’addestramento, a ogni passo, spegnete a caso metà dei neuroni. Il paper si intitola Dropout: A Simple Way to Prevent Neural Networks from Overfitting, e la parola «simple» nel titolo è una rivendicazione precisa.
Segnale che svanisce o esplode, inizializzazione, batch normalization, dropout e gli ottimizzatori: il capitolo è nel libro.
Il vizio della co-adattamento
Per capire perché sabotare la rete la migliora, bisogna capire come una rete overfitta. Il paper individua un colpevole preciso: la co-adattamento. Quando molti neuroni imparano insieme, tendono a organizzarsi in combriccole fragili. Un neurone sviluppa una risposta un po’ sbagliata, e un altro impara a correggerla; un terzo funziona solo se i primi due sparano insieme in un certo modo. Questi accordi funzionano magnificamente sui dati di addestramento, perché sono cuciti su misura proprio per quelli. Ma sono castelli di carte: su un esempio nuovo, dove le premesse non valgono, l’intera catena di correzioni reciproche crolla.
L’analogia è quella di un lavoro di gruppo mal riuscito. Se ogni membro conta sempre sullo stesso collega per coprire le proprie lacune, il gruppo dà l’impressione di funzionare — finché quel collega non manca. Un gruppo robusto è quello in cui ciascuno sa fare la propria parte anche da solo, senza dipendere da un particolare complice. Dropout costringe la rete a diventare questo secondo tipo di gruppo.
La ricetta: spegnere neuroni a caso
Il meccanismo è meccanicamente banale. A ogni passo di addestramento, ogni neurone di uno strato viene mantenuto con una certa probabilità p e altrimenti azzerato — messo temporaneamente fuori uso insieme a tutte le sue connessioni. Il valore tipico per gli strati nascosti è p = 0,5: una moneta lanciata per ogni neurone, a ogni singolo passo. Per lo strato di ingresso si tiene una probabilità più alta (si spengono meno input, per non buttare via troppa informazione grezza).
La conseguenza è che nessun neurone può più contare sulla presenza di un collega specifico: quel collega, al passo successivo, potrebbe essere spento. L’unica strategia che sopravvive a questo tritacarne è imparare caratteristiche utili di per sé, che abbiano senso in molte combinazioni diverse di colleghi presenti. Le combriccole fragili non si formano perché non c’è nessuno su cui fare affidamento stabile. La rete è spinta verso rappresentazioni ridondanti e robuste, che è esattamente ciò che serve per generalizzare.
2ⁿ reti in una sola
Qui arriva l’interpretazione che dà il titolo a questo articolo. Ogni volta che spegnete un diverso sottoinsieme di neuroni, state addestrando una rete diversa, più magra: una sottorete. Con n neuroni, i modi di accendere e spegnere sono 2ⁿ — un numero astronomico anche per reti piccole. Nell’arco dell’addestramento non state allenando una rete, ma un campione enorme di questa famiglia di 2ⁿ sottoreti, una per ogni mini-batch.
È la stessa logica degli ensemble, la tecnica per cui si addestrano molti modelli diversi e si media la loro opinione: la media di tanti modelli imperfetti e scorrelati è quasi sempre più affidabile del migliore dei singoli. Il problema degli ensemble è il costo: addestrare e far girare cento reti separate è cento volte più caro. Dropout ottiene quasi lo stesso beneficio quasi gratis, perché le sue 2ⁿ sottoreti non sono modelli separati: condividono tutte gli stessi pesi. Ogni neurone che sopravvive porta con sé quello che ha imparato in tutte le altre configurazioni in cui è comparso.
Il paper propone anche un’analogia biologica, e vale la pena riportarla per quello che è — una motivazione suggestiva, non una dimostrazione. Nella riproduzione sessuata un gene non può contare su un corredo genetico fisso: deve funzionare bene in combinazione con metà genoma preso a caso da un altro individuo. Questo, sostengono gli autori, premia i geni robusti e «mescolabili» rispetto a quelli co-adattati. Dropout fa la stessa cosa ai neuroni.
In addestramento (sinistra) a ogni passo alcuni neuroni vengono spenti a caso: si allena una sottorete diversa ogni volta. Nel corso dell’addestramento si campionano tante delle 2ⁿ sottoreti possibili (centro), tutte con pesi condivisi. Al test (destra) si usa la rete intera una sola volta, con i pesi in uscita moltiplicati per la probabilità di ritenzione p — un modo economico di mediare l’intero ensemble.
Il test: una media a basso costo
Resta un problema pratico. Al momento di usare la rete addestrata, non si possono campionare migliaia di sottoreti e mediarne le risposte per ogni singola previsione: sarebbe lentissimo. Il paper propone un’approssimazione elegante. Al test si usa la rete intera, con tutti i neuroni accesi, una sola volta — ma si moltiplicano i pesi in uscita di ogni neurone per la sua probabilità di ritenzione p.
La logica è di conservazione: durante l’addestramento un neurone era presente solo una frazione p delle volte, quindi in media contribuiva a valle con un peso «diluito». Al test è sempre presente, e per non alterare i conti bisogna ridurre proporzionalmente il suo contributo. Con questo semplice riscalamento, una singola passata deterministica sulla rete completa approssima la media dell’intero ensemble di sottoreti. Le librerie moderne fanno la stessa contabilità al contrario — riscalano durante l’addestramento invece che al test — ma l’idea è identica.
Cosa ne è rimasto
All’epoca i risultati furono ampi e trasversali: il paper riportava miglioramenti della capacità di generalizzazione su compiti di visione, riconoscimento del parlato, classificazione di documenti e biologia computazionale. Dropout era anche uno degli ingredienti di AlexNet, la rete che nel 2012 aveva riacceso l’intero campo, dove regolarizzava gli strati completamente connessi.
Da allora il paesaggio è cambiato. Nelle reti convoluzionali il dropout è stato in buona parte scavalcato dalla batch normalization, che regolarizza come effetto collaterale. Ma l’idea non è morta: vive dentro i Transformer, dove piccole dosi di dropout sono applicate ai pesi di attenzione e agli strati feed-forward. Con una sfumatura onesta: i modelli linguistici più grandi, addestrati su quantità enormi di testo, spesso usano dropout ridotto o nullo, perché quando i dati sono così tanti il rischio non è memorizzare ma non riuscire nemmeno a imparare abbastanza. Dropout serve quando i dati scarseggiano rispetto ai parametri — che è la situazione della stragrande maggioranza di chi addestra qualcosa nel mondo reale.
La lezione più generale del dropout è spiazzante: a volte il modo migliore per rendere robusto un sistema è danneggiarlo di proposito, un po’, mentre impara.
Perché riguarda anche voi
Anche senza addestrare mai una rete, dropout lascia un’idea che vale oltre il codice: introdurre rumore e ridondanza durante l’apprendimento produce sistemi che non dipendono da singoli appigli fragili. È il motivo per cui un gruppo dove tutti sanno fare tutto regge meglio di uno di specialisti insostituibili, e per cui un piano che sopravvive solo se ogni tassello va a posto è un piano fragile. Chi addestra o mette a punto modelli, poi, incontrerà dropout come una manopola concreta — un numero tra zero e uno da alzare quando la rete memorizza e da abbassare quando fatica a imparare. Sapere che dietro quella manopola c’è un ensemble di 2ⁿ reti nascoste la rende, di nuovo, una scelta e non un rito.
Il paper
Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov, Dropout: A Simple Way to Prevent Neural Networks from Overfitting, Journal of Machine Learning Research, vol. 15 (2014), pp. 1929–1958. Testo integrale: jmlr.org/papers/v15/srivastava14a.html. L’idea era stata anticipata dal preprint di Hinton e colleghi del 2012, Improving neural networks by preventing co-adaptation of feature detectors.

I commenti sono riservati agli iscritti.
Accedi per commentare