Reticolo TensorFlow (TFL)

TensorFlow Lattice è una libreria che implementa modelli basati su reticoli flessibili, controllabili e interpretabili. La libreria consente di integrare la conoscenza del dominio nel processo di apprendimento tramite vincoli di forma basati sul senso comune o su politiche predefinite. Ciò avviene utilizzando una raccolta di layer Keras in grado di soddisfare vincoli come monotonicità, convessità e fiducia a coppie. La libreria fornisce anche modelli predefiniti di facile configurazione.

Concetti

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

Reticoli

Un reticolo è una tabella di consultazione interpolata che può approssimare relazioni input-output arbitrarie nei dati. Sovrappone una griglia regolare allo spazio di input e apprende i valori per l'output nei vertici della griglia. Per un punto di test \(x\), \(f(x)\) viene interpolato linearmente dai valori del reticolo circostante \(x\).

L'esempio semplice qui sopra è una funzione con 2 caratteristiche di input e 4 parametri:\(\theta=[0, 0.2, 0.4, 1]\), che rappresentano i valori della funzione agli angoli dello spazio di input; il resto della funzione viene interpolato a partire da questi parametri.

La funzione \(f(x)\) può catturare le interazioni non lineari tra le caratteristiche. Si possono immaginare i parametri del reticolo come l'altezza dei pali piantati nel terreno su una griglia regolare, e la funzione risultante è come un tessuto teso contro i quattro pali.

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

Calibrazione

Supponiamo che il precedente reticolo di esempio rappresenti un livello di soddisfazione dell'utente appreso rispetto a una caffetteria locale suggerita, calcolato utilizzando le caratteristiche:

  • prezzo del caffè, in un intervallo da 0 a 20 dollari
  • distanza dall'utente, compresa tra 0 e 30 chilometri

Vogliamo che il nostro modello apprenda il livello di soddisfazione dell'utente con il 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 nell'esempio di reticolo sopra riportato. Di seguito vengono mostrati esempi di tali funzioni di calibrazione con 10 punti chiave:

Spesso è una buona idea utilizzare i quantili delle caratteristiche come punti chiave di input. I modelli predefiniti di TensorFlow Lattice possono impostare automaticamente i punti chiave di input sui quantili delle caratteristiche.

Per le caratteristiche categoriali, TensorFlow Lattice fornisce la calibrazione categoriale (con tfl.layers.CategoricalCalibration ) con limiti di output simili da inserire in un reticolo.

Gruppi musicali

Il numero di parametri di un livello di reticolo aumenta esponenzialmente con il numero di caratteristiche di input, pertanto non si adatta bene a dimensioni molto elevate. Per superare questa limitazione, TensorFlow Lattice offre insiemi di reticoli che combinano (mediando) diversi piccoli reticoli, consentendo al modello di crescere linearmente nel numero di caratteristiche.

La biblioteca offre due varianti di questi ensemble:

  • Reticoli minuscoli casuali (RTL): ogni sottomodello utilizza un sottoinsieme casuale di caratteristiche (con reimmissione).

  • Crystals : L'algoritmo Crystals addestra innanzitutto un modello di pre-adattamento che stima le interazioni a coppie tra le caratteristiche. Successivamente, organizza l'insieme finale in modo che le caratteristiche con più interazioni non lineari si trovino negli stessi reticoli.

Perché TensorFlow Lattice?

In questo post del blog di TensorFlow puoi trovare una breve introduzione a TensorFlow Lattice.

Interpretazione

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

Utilizzando reticoli a grana fine, è possibile ottenere funzioni di complessità arbitraria con un singolo strato di reticolo. L'utilizzo di più strati di calibratori e reticoli spesso funziona bene nella pratica e può eguagliare o superare le prestazioni dei modelli DNN di dimensioni simili.

Vincoli di forma di buon senso

I dati di addestramento reali potrebbero non rappresentare in modo sufficiente i dati di esecuzione. Le soluzioni di apprendimento automatico flessibili, come le reti neurali profonde (DNN) o le foreste di alberi decisionali (forest), spesso si comportano in modo inaspettato e persino imprevedibile in parti dello spazio di input non coperte dai dati di addestramento. Questo comportamento è particolarmente problematico quando possono essere violati vincoli di policy o di equità.

Sebbene le forme comuni di regolarizzazione possano portare a estrapolazioni più sensate, i regolarizzatori standard non possono garantire un comportamento ragionevole del modello nell'intero spazio di input, soprattutto con input ad alta dimensionalità. Il passaggio a modelli più semplici con un comportamento più controllato e prevedibile può comportare un grave costo in termini di accuratezza del modello.

TF Lattice permette di continuare a utilizzare modelli flessibili, ma offre diverse opzioni per integrare la conoscenza del dominio nel processo di apprendimento attraverso vincoli di forma semanticamente significativi, basati sul buon senso o su politiche predefinite:

  • Monotonicità : è possibile specificare che l'output debba solo aumentare/diminuire rispetto a un input. Nel nostro esempio, si potrebbe voler specificare che una maggiore distanza da una caffetteria debba solo diminuire la preferenza prevista dell'utente.

  • Convessità/Concavità : È possibile specificare che la forma della funzione può essere convessa o concava. Combinata con la monotonicità, questa caratteristica può imporre alla funzione di 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 presentano un punto ottimale rispetto a una determinata caratteristica.

  • Fiducia a coppie : questo vincolo funziona su una coppia di caratteristiche e suggerisce che una caratteristica di input riflette semanticamente la fiducia in un'altra caratteristica. Ad esempio, un numero maggiore di recensioni aumenta la fiducia nella valutazione media in 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 è più elevato.

Flessibilità controllata con i regolarizzatori

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

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

  • Regolarizzatore Hessiano : questo strumento penalizza la derivata prima del livello di calibrazione PWL per rendere la funzione più lineare .

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

  • Regolarizzatore di torsione : gli output del reticolo verranno regolarizzati per prevenire la torsione tra le caratteristiche. In altre parole, il modello verrà regolarizzato in modo da garantire l'indipendenza tra i contributi delle caratteristiche.

Combina e abbina con altri livelli di Keras

È possibile utilizzare i layer TF Lattice in combinazione con altri layer Keras per costruire modelli parzialmente vincolati o regolarizzati. Ad esempio, i layer di calibrazione Lattice o PWL possono essere utilizzati nell'ultimo layer di reti più profonde che includono embedding o altri layer Keras.

Documenti

Tutorial e documentazione API

Per le architetture di modelli più comuni, puoi utilizzare i modelli predefiniti di Keras . Puoi anche creare modelli personalizzati utilizzando i layer TF Lattice di Keras o combinarli con altri layer di Keras. Consulta la documentazione API completa per maggiori dettagli.