Ciao! Un nuovo modo per addestrare le reti neurali: basato su un riarrangiamento di vecchie idee di AI mescolate con il "save scumming" dei videogiochi. È un modo per forzare un "kick" che può salvare certi tipi di modelli (soprattutto topologie piccole o esotiche) quando sono bloccati. Cieco. Evolutivo. Pressione.
Lo chiamo "Frustrazione": è come riavviare un videogioco salvato e riprovare la battaglia con il boss. Come? Prendi un'epoca Last Known Good (LKG), POI uccidi un neurone. Poi riaddestri. A differenza del Dropout, il danno non è un rumore transitorio durante i batch. Rompiamo il modello DOPO che è migliorato.
Nella Frustrazione (Ablazione [Stocastica] Persistente), il danno è una buca che deve essere evitata e riempita contemporaneamente durante l'epoca successiva. 2 strategie: uccidere tutti i pesi (come in uno strato nascosto) per un neurone, oppure solo quelli in arrivo (come per un logit di output).
Abbiamo testato con topologie di rete MLP semplici, che vanno da milioni di parametri a centinaia, catalogando la loro "addestrabilità" in base alla larghezza (# di neuroni) rispetto alla profondità (# di strati). PSA ha recuperato alcuni modelli che Dropout e Weight Decay non potevano: un regime caotico (in blu).
Questo funziona anche in design rotti dove il Problema del Gradiente Svanente rende la retropropagazione inutile. (Che, quando non hai connessioni di salto, non sono così tanti strati!) Inoltre, puoi frammentare il danno e addestrare più LKG corrotti contemporaneamente su diverse GPU.
Il documento riflette la prima prova di concetto e sì, l'intera idea ha *molte* limitazioni. Soprattutto per quanto sia computazionalmente dispendioso il meccanismo a cricchetto, o che fosse sul dataset MNIST (un giocattolo) e non su ImageNet. Ma buone notizie! I primi test di ResMLP mostrano risultati promettenti!
Abbiamo cercato di essere esaustivi. Abbiamo testato 98 topologie, molte delle quali con configurazioni di parametri corrispondenti (dimensioni diverse, stesso numero di parametri risultanti). Abbiamo misurato 3 diverse tecniche PSA contro 3 controlli, in oltre 10 prove ciascuna. Un totale di 5.880 prove. Riproducibile.
Anche in condizioni in cui il Problema del Gradiente Svanente avrebbe dovuto rendere impossibile l'addestramento (come in un MLP semplice 18x18), PSA è stato in grado di addestrarsi attaccando i logit di output su MNIST. Non mi credi? Provalo e vedrai!
Ci sono un sacco di piccoli momenti "aha" qui. Tieni presente che nessuna delle idee sottostanti è nuova. Le abbiamo semplicemente disposte in un modo nuovo per provare qualcosa che è davvero fattibile solo ora che le GPU sono così potenti.
Lavori futuri: • Riproduzione dei test originali su ResMLP, CNN e Transformers (ResMLP risolve VGP, ma per topologie patologiche sembra che PSA aiuti ancora) • Provarlo su ImageNet <- costoso, ma questa è la vera prova di cui abbiamo bisogno.
Osservazioni: • Uccidere lo stesso logit di output crea costantemente modelli "anti-esperti", e quando guardi le loro matrici di confusione puoi vedere la dislessia in azione (uccidi 2 e la classificazione trabocca su 5, 7 e 8) • Non dobbiamo attenerci agli attacchi stocastici
Perché è prezioso? • Se funziona su dataset più grandi e architetture di modelli moderni, spero che possa essere uno strumento prezioso per costruire Modelli Linguistici Piccoli (SLM).
GitHub con il documento e il codice qui:
1,52K