Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

TensorFlow Lattice (TFL)

TensorFlow Lattice è una libreria che implementa modelli basati su reticoli flessibili, controllati e interpretabili. La libreria consente di iniettare la conoscenza del dominio nel processo di apprendimento attraverso vincoli di forma basati sul buon senso o sulla politica. Questo viene fatto usando una raccolta di livelli di Keras in grado di soddisfare vincoli come monotonia, convessità e fiducia a coppie. La libreria fornisce anche semplici stimatori predefiniti .

concetti

Questa sezione è una versione semplificata della descrizione in Tabelle di ricerca interpolate calibrate monotoniche , JMLR 2016.

Griglie

Un reticolo è una tabella di ricerca interpolata che può approssimare relazioni di input-output arbitrarie nei dati. Si sovrappone a una griglia regolare sullo spazio di input e apprende i valori per l'output nei vertici della griglia. Per un punto di prova $ x $, $ f (x) $ viene interpolato linearmente dai valori reticolari che circondano $ x $.

Il semplice esempio sopra è una funzione con 2 caratteristiche di input e 4 parametri: $ \ theta = [0, 0.2, 0.4, 1] $, che sono i valori della funzione agli angoli dello spazio di input; il resto della funzione è interpolato da questi parametri.

La funzione $ f (x) $ può catturare interazioni non lineari tra elementi. Puoi pensare ai parametri del reticolo come l'altezza dei poli fissati nel terreno su una griglia regolare, e la funzione risultante è come un tessuto stretto contro i quattro poli.

Con le caratteristiche $ D $ e 2 vertici lungo ciascuna dimensione, un reticolo regolare avrà i parametri $ 2 ^ D $. Per adattare una funzione più flessibile, è possibile specificare un reticolo a grana più fine sullo spazio delle caratteristiche con più vertici lungo ciascuna dimensione. Le funzioni di regressione reticolare sono continue e a tratti infinitamente differenziabili.

Calibrazione

Supponiamo che il reticolo di esempio precedente rappresenti la felicità di un utente appreso con un bar locale suggerito calcolato utilizzando le caratteristiche:

  • prezzo del caffè, nell'intervallo da 0 a 20 dollari
  • distanza per l'utente, nell'intervallo da 0 a 30 chilometri

Vogliamo che il nostro modello apprenda la felicità degli utenti con un suggerimento di una caffetteria locale. I modelli TensorFlow Lattice possono utilizzare funzioni lineari a tratti (con tfl.layers.PWLCalibration ) per calibrare e normalizzare le funzioni di input nell'intervallo accettato dal reticolo: da 0,0 a 1,0 nel reticolo di esempio sopra. I seguenti esempi mostrano tali funzioni di calibrazione con 10 punti chiave:

Spesso è una buona idea usare i quantili delle caratteristiche come punti chiave di input. Gli stimatori predefiniti TensorFlow Lattice possono impostare automaticamente i punti chiave di input sui quantili di funzione.

Per le funzioni categoriali, TensorFlow Lattice fornisce una calibrazione categoriale (con tfl.layers.CategoricalCalibration ) con un limite di output simile da inserire in un reticolo.

Gruppo musicale

Il numero di parametri di uno strato reticolare aumenta in modo esponenziale con il numero di elementi di input, quindi non si adatta bene a dimensioni molto elevate. Per ovviare a questa limitazione, TensorFlow Lattice offre insiemi di reticoli che combinano (media) diversi reticoli piccoli , che consente al modello di crescere linearmente nel numero di funzioni.

La libreria offre due varianti di questi gruppi:

  • Random Tiny Lattices (RTL): ogni sottomodello utilizza un sottoinsieme casuale di caratteristiche (con sostituzione).

  • Crystals : l'algoritmo Crystals addestra prima un modello di prefitting che stima le interazioni delle caratteristiche a coppie. Quindi organizza l'ensemble finale in modo tale che le caratteristiche con più interazioni non lineari siano negli stessi reticoli.

Perché TensorFlow Lattice?

Puoi trovare una breve introduzione a TensorFlow Lattice in questo post sul Blog TF .

interpretabilità

Poiché i parametri di ogni livello sono l'output di quel livello, è facile analizzare, comprendere ed eseguire il debug di ogni parte del modello.

Modelli precisi e flessibili

Utilizzando reticoli a grana fine, è possibile ottenere funzioni arbitrariamente complesse con un singolo strato reticolare. L'utilizzo di più strati di calibratori e reticoli spesso funziona bene nella pratica e può abbinare o superare modelli DNN di dimensioni simili.

Vincoli di forma di senso comune

I dati di allenamento del mondo reale potrebbero non rappresentare sufficientemente i dati di runtime. Le soluzioni ML flessibili come DNN o foreste spesso agiscono in modo imprevisto e persino selvaggiamente in parti dello spazio di input non coperte dai dati di addestramento. Questo comportamento è particolarmente problematico quando possono essere violati i vincoli di policy o di equità.

Anche se le forme comuni di regolarizzazione possono risultare in un'estrapolazione più sensata, i regolarizzatori standard non possono garantire un comportamento ragionevole del modello attraverso l'intero spazio di input, specialmente con input ad alta dimensione. Il passaggio a modelli più semplici con un comportamento più controllato e prevedibile può avere un costo elevato per l'accuratezza del modello.

TF Lattice consente di continuare a utilizzare modelli flessibili, ma offre diverse opzioni per iniettare conoscenza del dominio nel processo di apprendimento attraverso vincoli di forma semanticamente significativi di senso comune o basati su politiche:

  • Monotonicità : è possibile specificare che l'output debba aumentare / diminuire solo rispetto a un input. Nel nostro esempio, potresti voler specificare che una maggiore distanza da un bar dovrebbe solo ridurre le preferenze dell'utente previsto.

  • Convessità / Concavità : è possibile specificare che la forma della funzione può essere convessa o concava. Mescolato con la monotonia, questo può forzare la funzione a rappresentare rendimenti decrescenti rispetto a una determinata caratteristica.

  • Unimodalità : è possibile specificare che la funzione debba avere un picco unico o una valle unica. Ciò consente di rappresentare funzioni che hanno un punto debole rispetto a una funzione.

  • Fiducia a coppie: questo vincolo funziona su una coppia di funzionalità e suggerisce che una funzionalità di input riflette semanticamente la fiducia in un'altra funzionalità. Ad esempio, un numero maggiore di recensioni ti rende più sicuro della valutazione a stelle media di un ristorante. Il modello sarà più sensibile rispetto alla valutazione a stelle (ovvero avrà una pendenza maggiore rispetto alla valutazione) quando il numero di recensioni è maggiore.

Flessibilità controllata con i regolarizzatori

Oltre ai vincoli di forma, il reticolo TensorFlow offre una serie di regolarizzatori per controllare la flessibilità e la scorrevolezza della funzione per ogni strato.

  • Regolarizzatore laplaciano : le uscite del reticolo / vertici / punti chiave di calibrazione vengono regolarizzate rispetto ai valori dei rispettivi vicini. Ciò si traduce in una funzione più piatta .

  • Hessian Regularizer : questo penalizza la prima derivata del livello di calibrazione PWL per rendere la funzione più lineare .

  • Regolatore delle rughe : questo penalizza la seconda derivata del livello di calibrazione PWL per evitare improvvisi cambiamenti nella curvatura. Rende la funzione più fluida.

  • Regolarizzatore di torsione : le uscite del reticolo saranno regolarizzate per prevenire la torsione tra le caratteristiche. In altre parole, il modello sarà regolarizzato verso l'indipendenza tra i contributi delle caratteristiche.

Mescola e abbina con altri strati Keras

Puoi usare i livelli TF Lattice in combinazione con altri livelli Keras per costruire modelli parzialmente vincolati o regolarizzati. Ad esempio, i livelli di calibrazione reticolare o PWL possono essere utilizzati nell'ultimo livello di reti più profonde che includono incorporamenti o altri livelli di Keras.

documenti

Tutorial e documenti API

Per le architetture di modelli comuni, è possibile utilizzare modelli predefiniti di Keras o stimatori predefiniti . Puoi anche creare modelli personalizzati usando i livelli TF Keras reticolare o mescolare e abbinare con altri livelli Keras. Consulta i documenti API completi per i dettagli.