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 utilizzando una raccolta di livelli Keras in grado di soddisfare vincoli come monotonicità, convessità e fiducia a coppie. La libreria fornisce anche stimatori predefiniti facili da configurare.

Concetti

Questa sezione è una versione semplificata della descrizione in Monotonic Calibrated Interpolated Look-Up Tables , JMLR 2016.

Reticoli

Un reticolo è una tabella di ricerca interpolata che può approssimare relazioni arbitrarie input-output nei dati. Si sovrappone a una griglia regolare nello 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 all'altezza dei pali posti nel terreno su una griglia regolare, e la funzione risultante è come un panno tirato stretto contro i quattro poli.

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

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è, compreso tra 0 e 20 dollari
  • distanza dall'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 caratteristiche di input nell'intervallo accettato dal reticolo: da 0,0 a 1,0 nel reticolo di esempio sopra. Di seguito vengono mostrati esempi di funzioni di taratura con 10 punti chiave:

Spesso è una buona idea usare i quantili delle caratteristiche come punti chiave di input. Gli stimatori predefiniti di TensorFlow Lattice possono impostare automaticamente i punti chiave di input sui quantili della 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.

Ensemble

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

La libreria fornisce due varianti di questi ensemble:

  • 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 dispone l'insieme 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 del 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ò eguagliare o superare modelli DNN di dimensioni simili.

Vincoli di forma di senso comune

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

Anche se le forme comuni di regolarizzazione possono portare a 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 la precisione del modello.

TF Lattice consente di continuare a utilizzare modelli flessibili, ma fornisce diverse opzioni per iniettare la conoscenza del dominio nel processo di apprendimento attraverso il buon senso semanticamente significativo o vincoli di forma guidati dalla politica:

  • Monotonicità : è possibile specificare che l'uscita debba aumentare / diminuire solo rispetto a un ingresso. Nel nostro esempio, potresti voler specificare che l'aumento della distanza da un bar dovrebbe solo diminuire la preferenza dell'utente prevista.

  • Convessità / Concavità : è possibile specificare che la forma della funzione può essere convessa o concava. Questo, unito alla monotonia, può costringere la funzione a rappresentare rendimenti decrescenti rispetto a una data caratteristica.

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

  • 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 in 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 fornisce una serie di regolarizzatori per controllare la flessibilità e la levigatezza 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 derivata prima dello strato di calibrazione PWL per rendere la funzione più lineare .

  • Regolarizzatore rughe : penalizza la derivata seconda dello strato di calibrazione PWL per evitare repentini cambiamenti di 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 utilizzare i layer TF Lattice in combinazione con altri layer Keras per costruire modelli parzialmente vincolati o regolarizzati. Ad esempio, i livelli di calibrazione reticolo o PWL possono essere utilizzati nell'ultimo livello di reti più profonde che includono incorporamenti o altri livelli 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 utilizzando i livelli TF Lattice Keras o combinarli con altri livelli Keras. Consulta i documenti API completi per i dettagli.