Merci de vous être connecté à Google I/O. Voir toutes les sessions à la demande Regarder à la demande

Réseau TensorFlow (TFL)

TensorFlow Lattice est une bibliothèque qui implémente des modèles basés sur des réseaux flexibles, contrôlés et interprétables. La bibliothèque vous permet d'injecter des connaissances du domaine dans le processus d'apprentissage par le biais de contraintes de forme basées sur le bon sens ou sur des politiques . Ceci est fait en utilisant une collection de couches Keras qui peuvent satisfaire des contraintes telles que la monotonie, la convexité et la confiance par paires. La bibliothèque fournit également des estimateurs prédéfinis faciles à configurer.

Notions

Cette section est une version simplifiée de la description dans les tableaux de consultation interpolés calibrés monotones , JMLR 2016.

Treillis

Un treillis est une table de recherche interpolée qui peut approximer des relations entrée-sortie arbitraires dans vos données. Il chevauche une grille régulière sur votre espace d'entrée et apprend les valeurs de la sortie dans les sommets de la grille. Pour un point de test \(x\), \(f(x)\) est interpolé linéairement à partir des valeurs de réseau entourant \(x\).

L'exemple simple ci-dessus est une fonction avec 2 caractéristiques d'entrée et 4 paramètres :\(\theta=[0, 0.2, 0.4, 1]\), qui sont les valeurs de la fonction aux coins de l'espace d'entrée ; le reste de la fonction est interpolé à partir de ces paramètres.

La fonction \(f(x)\) peut capturer les interactions non linéaires entre les entités. Vous pouvez considérer les paramètres de réseau comme la hauteur des poteaux fixés dans le sol sur une grille régulière, et la fonction résultante est comme un tissu serré contre les quatre poteaux.

Avec des fonctionnalités \(D\) et 2 sommets le long de chaque dimension, un réseau régulier aura des paramètres \(2^D\) . Pour adapter une fonction plus flexible, vous pouvez spécifier un treillis à grain plus fin sur l'espace des caractéristiques avec plus de sommets le long de chaque dimension. Les fonctions de régression de réseau sont continues et infiniment différentiables par morceaux.

Étalonnage

Supposons que l'exemple de réseau précédent représente le bonheur d'un utilisateur appris avec un café local suggéré calculé à l'aide de caractéristiques :

  • prix du café, dans une fourchette de 0 à 20 dollars
  • distance à l'utilisateur, dans une plage de 0 à 30 kilomètres

Nous voulons que notre modèle apprenne le bonheur des utilisateurs avec une suggestion de café local. Les modèles de treillis TensorFlow peuvent utiliser des fonctions linéaires par morceaux (avec tfl.layers.PWLCalibration ) pour calibrer et normaliser les caractéristiques d'entrée dans la plage acceptée par le treillis : 0,0 à 1,0 dans l'exemple de treillis ci-dessus. Les exemples suivants montrent des exemples de telles fonctions d'étalonnage avec 10 points clés :

C'est souvent une bonne idée d'utiliser les quantiles des caractéristiques comme points clés d'entrée. Les estimateurs prédéfinis de TensorFlow Lattice peuvent définir automatiquement les points clés d'entrée sur les quantiles de caractéristiques.

Pour les fonctionnalités catégorielles, TensorFlow Lattice fournit un étalonnage catégoriel (avec tfl.layers.CategoricalCalibration ) avec une limite de sortie similaire pour alimenter un treillis.

Ensembles

Le nombre de paramètres d'une couche de réseau augmente de manière exponentielle avec le nombre d'entités d'entrée, donc ne s'adapte pas bien à des dimensions très élevées. Pour surmonter cette limitation, TensorFlow Lattice propose des ensembles de treillis qui combinent (en moyenne) plusieurs petits treillis, ce qui permet au modèle de croître de manière linéaire en nombre de caractéristiques.

La bibliothèque propose deux variantes de ces ensembles :

  • Random Tiny Lattices (RTL) : chaque sous-modèle utilise un sous-ensemble aléatoire de fonctionnalités (avec remplacement).

  • Cristaux : L'algorithme Crystals forme d'abord un modèle de pré -ajustement qui estime les interactions de caractéristiques par paires. Il organise ensuite l'ensemble final de telle sorte que les caractéristiques avec plus d'interactions non linéaires se trouvent dans les mêmes réseaux.

Pourquoi TensorFlow Lattice ?

Vous pouvez trouver une brève introduction à TensorFlow Lattice dans cet article du blog TF .

Interprétabilité

Étant donné que les paramètres de chaque couche sont la sortie de cette couche, il est facile d'analyser, de comprendre et de déboguer chaque partie du modèle.

Modèles précis et flexibles

En utilisant des réseaux à grain fin, vous pouvez obtenir des fonctions arbitrairement complexes avec une seule couche de réseau. L'utilisation de plusieurs couches de calibrateurs et de réseaux fonctionne souvent bien dans la pratique et peut égaler ou surpasser les modèles DNN de tailles similaires.

Contraintes de forme de sens commun

Les données d'entraînement du monde réel peuvent ne pas représenter suffisamment les données d'exécution. Les solutions ML flexibles telles que les DNN ou les forêts agissent souvent de manière inattendue et même sauvagement dans des parties de l'espace d'entrée non couvertes par les données d'apprentissage. Ce comportement est particulièrement problématique lorsque les contraintes de politique ou d'équité peuvent être violées.

Même si les formes courantes de régularisation peuvent entraîner une extrapolation plus sensible, les régularisateurs standard ne peuvent pas garantir un comportement raisonnable du modèle sur l'ensemble de l'espace d'entrée, en particulier avec des entrées de grande dimension. Le passage à des modèles plus simples avec un comportement plus contrôlé et prévisible peut avoir un coût important pour la précision du modèle.

TF Lattice permet de continuer à utiliser des modèles flexibles, mais fournit plusieurs options pour injecter des connaissances du domaine dans le processus d'apprentissage via des contraintes de forme sémantiquement significatives ou basées sur des politiques :

  • Monotonie : Vous pouvez spécifier que la sortie ne doit augmenter/diminuer que par rapport à une entrée. Dans notre exemple, vous pouvez spécifier que l'augmentation de la distance jusqu'à un café ne devrait diminuer que la préférence prédite de l'utilisateur.

  • Convexité/Concavité : Vous pouvez spécifier que la forme de la fonction peut être convexe ou concave. Mélangé à la monotonie, cela peut forcer la fonction à représenter des rendements décroissants par rapport à une caractéristique donnée.

  • Unimodalité : Vous pouvez spécifier que la fonction doit avoir un pic unique ou une vallée unique. Cela vous permet de représenter des fonctions qui ont un sweet spot par rapport à une fonctionnalité.

  • Pairwise trust : cette contrainte fonctionne sur une paire de fonctionnalités et suggère qu'une fonctionnalité d'entrée reflète sémantiquement la confiance dans une autre fonctionnalité. Par exemple, un nombre élevé d'avis vous rend plus confiant dans le nombre moyen d'étoiles d'un restaurant. Le modèle sera plus sensible par rapport au nombre d'étoiles (c'est-à-dire aura une pente plus grande par rapport au classement) lorsque le nombre d'avis est plus élevé.

Flexibilité contrôlée avec les régularisateurs

En plus des contraintes de forme, le réseau TensorFlow fournit un certain nombre de régularisateurs pour contrôler la flexibilité et la fluidité de la fonction pour chaque couche.

  • Régulateur laplacien : les sorties des sommets/points clés du treillis/calibrage sont régularisées vers les valeurs de leurs voisins respectifs. Il en résulte une fonction plus plate .

  • Hessian Regularizer : Cela pénalise la première dérivée de la couche de calibration PWL pour rendre la fonction plus linéaire .

  • Wrinkle Regularizer : Cela pénalise la dérivée seconde de la couche de calibrage PWL pour éviter les changements brusques de la courbure. Cela rend la fonction plus fluide.

  • Régulateur de torsion : les sorties du réseau seront régularisées pour empêcher la torsion entre les éléments. En d'autres termes, le modèle sera régularisé vers l'indépendance entre les contributions des caractéristiques.

Mélangez et assortissez avec d'autres couches Keras

Vous pouvez utiliser des couches TF Lattice en combinaison avec d'autres couches Keras pour construire des modèles partiellement contraints ou régularisés. Par exemple, des couches d'étalonnage en treillis ou PWL peuvent être utilisées au niveau de la dernière couche de réseaux plus profonds qui incluent des incorporations ou d'autres couches Keras.

Papiers

Tutoriels et documentations API

Pour les architectures de modèles courantes, vous pouvez utiliser des modèles prédéfinis Keras ou des estimateurs prédéfinis. Vous pouvez également créer des modèles personnalisés à l'aide de calques TF Lattice Keras ou mélanger et assortir avec d'autres calques Keras. Consultez la documentation complète de l'API pour plus de détails.