Regolarizzazione per sparsità: regolarizzazione L1

I vettori sparsi spesso contengono molte dimensioni. La creazione di un incrocio di funzionalità si traduce in ancora più dimensioni. Dati tali vettori di caratteristiche ad alta dimensione, le dimensioni del modello possono diventare enormi e richiedere enormi quantità di RAM.

In un vettore sparsi con dimensioni elevate, sarebbe utile incoraggiare i pesi a scendere a 0 esattamente dove possibile. Una ponderazione pari esattamente a 0 rimuove essenzialmente la caratteristica corrispondente dal modello. L'eliminazione delle funzionalità consente di risparmiare RAM e può ridurre il rumore nel modello.

Ad esempio, considera un set di dati sugli alloggi che copre non solo la California, ma l'intero globo. La latitudine globale a livello di minuti (60 minuti per grado) fornisce circa 10.000 dimensioni in una codifica sparsa; la longitudine globale a livello di minuto fornisce circa 20.000 dimensioni. Un incrocio di queste due caratteristiche determina circa 200.000.000 di dimensioni. Molte di queste 200.000.000 dimensioni rappresentano aree con una residenza talmente limitata (ad esempio, il mezzo dell'oceano) che sarebbe difficile utilizzare questi dati per generalizzare efficacemente. Sarebbe sciocco pagare il costo della RAM per archiviare queste dimensioni non necessarie. Pertanto, sarebbe utile incoraggiare le ponderazioni per le dimensioni senza significato a 0 esattamente, il che ci permetterebbe di evitare di pagare il costo di archiviazione di questi coefficienti del modello al momento dell'inferenza.

Potremmo essere in grado di codificare questa idea nel problema di ottimizzazione svolto al momento dell'addestramento, aggiungendo un termine di regolarizzazione scelto in modo appropriato.

La regolarizzazione L2 portare a termine questa attività? Purtroppo no. La regolarizzazione L2 incoraggia le ponderazioni a essere piccole, ma non le costringe a esattamente 0,0.

In alternativa, prova a creare un termine di regolarizzazione che penalizzi il conteggio di valori di coefficienti diversi da zero in un modello. L'aumento di questo conteggio sarebbe giustificato solo se la capacità del modello di adattarsi ai dati fosse sufficiente. Sfortunatamente, anche se questo approccio basato sul conteggio è intuitivamente accattivante, trasformerebbe il nostro problema di ottimizzazione convesso in un problema di ottimizzazione non convesso. Quindi questa idea, nota come regolarizzazione L0, non può essere usata in pratica in modo efficace.

Tuttavia, esiste un termine di regolarizzazione chiamato regolarizzazione L1 che funge da approssimazione a L0, ma ha il vantaggio di essere convesso e quindi efficiente di calcolo. Quindi possiamo utilizzare la regolarizzazione L1 per fare in modo che molti coefficienti non informativi nel nostro modello siano esattamente 0, consentendo di risparmiare RAM al momento dell'inferenza.

Regolarizzazione L1 contro L2.

L2 e L1 penalizzano le ponderazioni in modo diverso:

  • L2 penalizza il valore weight2.
  • L1 penalizza |weight|.

Di conseguenza, L2 e L1 hanno derivate diverse:

  • La derivata di L2 è 2 * peso.
  • La derivata di L1 è k (una costante, il cui valore è indipendente dalla ponderazione).

La derivata di L2 può essere considerata come una forza che rimuove ogni volta il x% del peso. Come Zeno sapeva, anche se rimuovi il x percento di un numero miliardi di volte, il numero ridotto non raggiungerà mai del tutto zero. (Zeno aveva meno familiarità con le limitazioni di precisione in virgola mobile, che potrebbero produrre esattamente zero.) In ogni caso, L2 di solito non porta le ponderazioni a zero.

La derivata di L1 può essere paragonata a una forza che sottrae ogni volta una costante dal peso. Tuttavia, grazie ai valori assoluti, L1 ha una discontinuità pari a 0, il che fa sì che i risultati della sottrazione che attraversano lo 0 vengano azzerati. Ad esempio, se la sottrazione avrebbe forzato una ponderazione da +0,1 a -0,2, L1 la imposterà esattamente 0. Eureka, L1 ha azzerato il peso.

La regolarizzazione L1, che penalizza il valore assoluto di tutte le ponderazioni, si rivela abbastanza efficiente per i modelli ampi.

Tieni presente che questa descrizione è vera per un modello unidimensionale.

Fai clic sul pulsante Riproduci () di seguito per confrontare l'effetto della regolarizzazione L1 e L2 su una rete di ponderazioni.