TensorFlow Lattice (TFL)

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

TensorFlow Lattice è una libreria che implementa modelli basati su reticolo 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 basati su criteri. 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 preconfezionati facili da configurare.

Concetti

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

Reticoli

Un reticolo è una tabella di ricerca interpolata che può approssimare le relazioni input-output arbitrarie nei dati. Si sovrappone a una griglia normale sul tuo 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 del reticolo che circondano \(x\).

Il semplice esempio sopra è una funzione con 2 funzioni 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 viene interpolato da questi parametri.

La funzione \(f(x)\) può acquisire interazioni non lineari tra le funzioni. Puoi pensare ai parametri del reticolo come all'altezza dei pali fissati nel terreno su una griglia regolare, e la funzione risultante è come un panno teso 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 delle caratteristiche con più vertici lungo ciascuna dimensione. Le funzioni di regressione reticolare sono continue e infinitamente differenziabili a tratti.

Calibrazione

Diciamo che il reticolo di esempio precedente rappresenta una felicità dell'utente appresa con una caffetteria locale suggerita calcolata utilizzando le funzionalità:

  • prezzo del caffè, compreso tra 0 e 20 dollari
  • distanza dall'utente, compresa tra 0 e 30 chilometri

Vogliamo che il nostro modello impari la felicità dell'utente 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 tali funzioni di calibrazione con 10 punti chiave:

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

Per le caratteristiche categoriali, TensorFlow Lattice fornisce una calibrazione categoriale (con tfl.layers.CategoricalCalibration ) con delimitazione dell'output simile da inserire in un reticolo.

Ensemble

Il numero di parametri di uno strato reticolare aumenta esponenzialmente con il numero di funzioni di input, quindi non scala 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 funzionalità (con sostituzione).

  • Cristalli : l'algoritmo Cristalli prima addestra un modello di prefitting che stima le interazioni delle caratteristiche a coppie. Quindi organizza 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 di 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 accurati e flessibili

Usando reticoli a grana fine, puoi ottenere funzioni arbitrariamente complesse con un singolo strato reticolare. L'uso di più livelli 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 allenamento del mondo reale potrebbero non rappresentare sufficientemente i dati di runtime. Le soluzioni di machine learning flessibili come DNN o foreste spesso agiscono in modo imprevisto e persino selvaggio in parti dello spazio di input non coperte dai dati di addestramento. Questo comportamento è particolarmente problematico quando è possibile violare i vincoli di policy o equità.

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

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

  • Monotonicità : è possibile specificare che l'output deve solo aumentare/diminuire rispetto a un input. Nel nostro esempio, potresti voler specificare che una maggiore 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. Mescolato con la monotonia, questo può costringere la funzione a rappresentare rendimenti decrescenti rispetto a una data caratteristica.

  • Unimodalità : è possibile specificare che la funzione deve avere un picco o una valle univoci. Ciò ti consente di rappresentare le 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 media a stelle 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 regolatori

Oltre ai vincoli di forma, il reticolo TensorFlow fornisce una serie di regolatori per controllare la flessibilità e l'uniformità della funzione per ogni livello.

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

  • Regolarizzazione dell'Assia : penalizza la derivata prima del livello di calibrazione PWL per rendere la funzione più lineare .

  • Regolarizzazione rughe : penalizza la derivata seconda dello strato di calibrazione PWL per evitare sbalzi di curvatura. Rende la funzione più fluida.

  • Regolatore di torsione : le uscite del reticolo verranno 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

È possibile 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, puoi utilizzare i modelli premade di Keras o gli stimatori predefiniti . Puoi anche creare modelli personalizzati utilizzando i livelli TF Lattice Keras o combinarli con altri livelli Keras. Consulta la documentazione completa dell'API per i dettagli.