Programmation statistique en apprentissage automatique : contraste entre Pyro et TFP

Publié: 2021-01-29

En apprentissage automatique, la programmation statistique ou probabiliste se fait à l'aide de 2 langages de programmation, comme indiqué ci-dessous. Donnant une brève introduction, En termes simples, la programmation probabiliste est un outil de modélisation statistique. Cela signifie essentiellement résoudre des problèmes en utilisant un langage grâce auquel nous pouvons créer et concevoir des modèles statistiques en tant que solution.

Il s'agit d'appliquer les concepts de statistiques à l'aide de langages de programmation informatique. En utilisant des modèles probabilistes, on peut déduire comment nos croyances sur les hyperparamètres du modèle peuvent modifier la sortie.

Table des matières

Célèbre langage de programmation probabiliste

1. Pyro

Pyro est un langage de programmation probabiliste (PPL) écrit en Python et pris en charge par Pytorch sur le backend. Avec Pyro, nous avons accès à la modélisation probabiliste approfondie, à la modélisation bayésienne et combinons le meilleur des algorithmes modernes d'apprentissage en profondeur. Il peut être installé comme suit :

pip3 Installer Pyro-ppl

ou pour l'installer depuis la source utilisez les commandes suivantes :

git clone https://github.com/pyro-ppl/pyro.git

cd pyro

pip installer . [extras]

Importez Pyro en utilisant une simple ligne de code :

importer pyro

2. Tensor Flow Probability (TFP)

TFP est une bibliothèque Python construite sur TensorFlow qui permet la combinaison de modèles probabilistes et de modèles d'apprentissage en profondeur sur GPU et TPU. Il peut être utilisé par quiconque souhaite incorporer des connaissances du domaine pour comprendre et faire des prédictions pertinentes. Pour installer TFP, tapez la commande suivante dans votre invite de commande ou anaconda.

installation pip -probabilité de tensorflow de mise à niveau

TFP peut être utilisé dans le code à l'aide de la ligne de commande suivante :

importer tensorflow_probability en tant que tfp

Rejoignez le cours d'intelligence artificielle en ligne des meilleures universités du monde - Masters, Executive Post Graduate Programs et Advanced Certificate Program in ML & AI pour accélérer votre carrière.

Le contraste entre Pyro et TFP

1. Documents

La documentation pour Pyro et TFP est excellente et abondante alors qu'elle est moins sur l'explication de TFP à partir de la perspective des réseaux de neurones. Dans pyro, le module pyro.nn présente des implémentations de modules de réseaux de neurones utiles dans le cadre de la programmation probabiliste profonde. Dans TFP, tfp.layers représente des couches de réseau de neurones avec une incertitude sur les fonctions qu'elles représentent, étendant les couches TensorFlow.

2. Langue

Les utilisateurs de TFP et de Pyro écrivent en python. Cependant, l'API impliquée dans le cas de TFP est extrêmement détaillée. Je veux dire par là que nous devons parfois écrire plus de lignes de code pour parvenir à une solution. Cela peut parfois être bon parce que nous avons plus de contrôle sur l'ensemble du programme et mauvais lorsqu'il est disponible sous une forme plus courte dans Pyro.

3. Temps de montée en puissance

Avec Pyro, l'exécution du code est plus rapide et efficace, et vous n'aurez besoin d'apprendre aucun nouveau concept. La TFP, en revanche, nécessite des concepts tels que les espaces réservés, la portée variable ainsi que les sessions, ce qui prend plus de temps à exécuter.

4. Déploiement

TFP et Pyro peuvent être facilement déployés côté serveur à petite échelle. Pour les déploiements mobiles et micro-ordinateurs ou embarqués, TensorFlow fonctionne efficacement, contrairement à Pytorch. Un effort moindre est requis pour le déploiement de TensorFlow sous Android et IOS, par rapport à Pytorch.

5. Graphiques

Tensorflow a de meilleures visualisations de graphes informatiques, qui sont indigènes par rapport à d'autres bibliothèques comme Torch et Theano. Edward est basé sur TensorFlow et permet des fonctionnalités telles que les graphiques de calcul, la formation distribuée, l'intégration CPU/GPU, la différenciation automatique et la visualisation avec TensorBoard. Cependant, Pyro ne fournit aucune fonctionnalité de démonstration ou de visualisation.

Interférence d'Edward avec TensorBoard, Source : Edward

6. Chaîne de Markov Monte-Carlo

TFP implémente une tonne d'algorithmes de chaîne de Markov Monte Carlo (MCMC) (comme Metropolis, Gibbs, Hamiltonian) dont l'utilisation est un échantillon d'une distribution de probabilité et quelques algorithmes d'itération de valeur dans TensorFlow. Jusqu'en 2018, Pyro n'a pas exécuté la chaîne de Markov Monte Carlo. Il a été mis à jour et prend entièrement en charge MCMC, HMC et NUTS.

7. Optimiseurs

Tout comme TFP implémente plusieurs optimiseurs de TensorFlow, notamment Nelder-Mead, BFGS et L-BFGS (pour déterminer les problèmes d'optimisation non linéaire sans contrainte), Pyro implémente les optimiseurs présents dans PyTorch. Le module pyro.optim fournit un support pour l'optimisation dans Pyro. . On peut dire que les deux PPL sont dépendants de leurs modules de base (TensorFlow et PyTorch).

La source

8. Bijecteurs

Dans TFP, les bijecteurs incluent le changement de variables pour une densité de probabilité. Lorsque nous cartographions d'un espace à un autre, nous influençons également une carte des densités de probabilité sur l'espace initial aux densités sur l'espace cible.

Mais comme nous mappons vers un espace différent, nous devons suivre ces comptes de mappage pour eux dans le calcul de la densité de probabilité dans ce dernier espace. Les bijecteurs sont donc utilisés pour une cartographie fluide. En pyro, la documentation ne mentionne rien sur les bijecteurs, donc je suppose qu'ils n'en ont pas.

9. Série chronologique

Le module pyro.contrib.timeseries fournit une collection de modèles de séries chronologiques bayésiens utiles pour les applications de prévision. Ceci peut être réalisé en utilisant l'objet Forecaster existant dans Pyro. Après avoir fourni des données d'entrée au modèle, nous indiquons simplement au modèle comment faire une prédiction éclairée.

C'est aussi simple que ça, juste des données et un cadre probabiliste. TFP utilise cependant les modèles de séries chronologiques de Tensorflow, tels que CNN et RNN, ainsi que son cadre pour les modèles de séries chronologiques structurels bayésiens (tfp.sts). Les séries chronologiques structurelles bayésiennes sont une interface de haut niveau pour l'ajustement de modèles de séries chronologiques qui n'a pas encore été publiée.

La source

10. Distributions

C'est une classe de base pour construire et organiser les propriétés (par exemple, moyenne, variance) de variables aléatoires (par exemple, Bernoulli, Gaussian). Un exemple peut être une distribution normale. La plupart des distributions dans Pyro sont de fines enveloppes autour des distributions PyTorch. Pour plus de détails sur l'interface de distribution PyTorch, vous pouvez consulter torch.distributions.distribution.Distribution. TFP a cependant son module tfp.distributions.

La source

La source

11. Modèles linéaires généralisés (GLM)

En statistique , le modèle linéaire généralisé est une généralisation flexible de la régression linéaire ordinaire qui permet des variables de réponse qui ont des modèles de distribution d'erreur autres qu'une distribution normale. Dans TFP, le module tfp.glm contient une interface de haut niveau pour l'ajustement des modèles de régression à effets mixtes. Pyro, cependant, n'a pas un tel module pour GLM.

La source

Conclusion

En utilisant ces facteurs, il est prudent de conclure que Pyro ne diffère pas tellement de TFP. Ils sont tous deux basés sur le langage de programmation Python. Les API Python sont bien documentées. Pytorch, cependant, a un bon temps de montée en puissance et est donc beaucoup plus rapide que TensorFlow. Le choix entre ces deux cadres dépendra de l'accessibilité de la méthode d'apprentissage pour chacun d'eux. Votre sélection dépendra également des exigences de votre organisation.

Si vous souhaitez en savoir plus sur l'apprentissage automatique, consultez le programme Executive PG d'IIIT-B & upGrad en apprentissage automatique et IA , conçu pour les professionnels en activité et offrant plus de 450 heures de formation rigoureuse, plus de 30 études de cas et missions, IIIT -B Statut d'anciens élèves, 5+ projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Les références

Mise en route – Documentation Pyro

Module : tfp | Probabilité TensorFlow

Comment l'apprentissage automatique est-il lié aux statistiques et vice versa ?

Les statistiques sont utilisées pour construire un modèle statistique afin de représenter les données et d'en tirer des conclusions ou des inférences. Alors que l'apprentissage automatique utilise ce modèle statistique pour obtenir une compréhension des données et faire des prédictions précises. Ainsi, les statistiques sont utilisées dans la construction de modèles statistiques pour aider à effectuer l'apprentissage automatique correctement et facilement.

Puis-je connaître l'apprentissage automatique sans connaître les statistiques ?

Les statistiques et l'apprentissage automatique sont interconnectés. Si vous connaissez les statistiques, vous pouvez représenter les données sous la forme d'un modèle statistique, puis analyser et faire des prédictions avec l'apprentissage automatique. Ainsi, connaître les statistiques avant l'apprentissage automatique sera très utile. Donc, si vous ne connaissez que les bases des statistiques, vous êtes prêt à partir. Vous n'avez pas besoin d'être un pro des statistiques pour réussir dans l'apprentissage automatique.

TensorFlow est-il facile à apprendre pour un débutant ?

TensorFlow est une plate-forme d'apprentissage automatique open source qui fonctionne du début à la fin. TensorFlow simplifie la création de modèles d'apprentissage automatique pour les débutants et les professionnels. Vous devrez passer entre six et douze mois à étudier et à perfectionner vos capacités TensorFlow si vous souhaitez travailler dans l'apprentissage automatique. Cependant, si vous connaissez les bases des langages de programmation comme R et Python, vous n'aurez pas trop de problèmes.