Qu'est-ce que la programmation probabiliste?


10

Au cours de la dernière année, j'ai beaucoup entendu parler des cadres de programmation probabiliste (PP) comme PyMC3 et Stan , et de la qualité de PP. Et aujourd'hui, quelqu'un a partagé ce lien avec moi: Pyro: un langage de programmation probabiliste profond

Cependant, je ne suit pas vraiment ce qui est spécial à ce sujet car cela ressemble à tout ce que vous pouvez faire en PP, vous pouvez le faire dans n'importe quel autre langage à usage général. Je suis sûr qu'il y a des aspects techniques du PP qui le rendent attrayant (par exemple le calcul parallèle), mais mis à part, PP est-il vraiment différent de tout autre langage?

Question: Je me demandais s'il y avait un consensus sur ce qu'était PP et en quoi il diffère des autres logiciels statistiques comme R, Matlab, Mathematica. Il convient de noter que PyMC3et Stanse concentrent sur une analyse plus bayésienne.

En faisant un peu de recherche sur Google, je suis tombé sur les deux définitions suivantes. Le premier plus abstrait et le second plus sur les caractéristiques techniques de PP.

1.2. La programmation probabiliste est

Au lieu de cela, la programmation probabiliste est un outil de modélisation statistique. L'idée est d'emprunter des leçons du monde des langages de programmation et de les appliquer aux problèmes de conception et d'utilisation de modèles statistiques. Les experts construisent déjà des modèles statistiques - à la main, en notation mathématique sur papier - mais c'est un processus réservé aux experts qui est difficile à supporter avec le raisonnement mécanique. L'idée clé de PP est que la modélisation statistique peut, lorsque vous le faites suffisamment, commencer à ressembler beaucoup à la programmation. Si nous faisons le saut et utilisons réellement un vrai langage pour notre modélisation, de nombreux nouveaux outils deviennent possibles. Nous pouvons commencer à automatiser les tâches qui justifiaient la rédaction d'un article pour chaque instance.

Voici une deuxième définition : un langage de programmation probabiliste est un langage de programmation ordinaire avec randet une grande pile d'outils connexes qui vous aident à comprendre le comportement statistique du programme.

Ces deux définitions sont exactes. Ils soulignent simplement différents angles sur la même idée centrale. Le choix qui vous convient dépendra de la raison pour laquelle vous souhaitez utiliser PP. Mais ne vous laissez pas distraire par le fait que les programmes PPL ressemblent beaucoup à des implémentations logicielles ordinaires, où le but est d'exécuter le programme et d'obtenir une sorte de sortie. L'objectif en PP est l'analyse, pas l'exécution (accent ajouté).

- Programmation probabiliste

Je voudrais savoir si la communauté statistique générale est d'accord avec ces deux définitions de PP, et s'il y a d'autres caractéristiques, cette définition peut manquer.


1
Je serais d'accord avec la première définition: PP vous fait définir un modèle statistique et gère la partie simulation seule. Des exemples en plus de Stan sont BUGS, Church, Anglican. R n'est pas un PP.
Xi'an

@ Xi'an, diriez-vous que PP semble se concentrer principalement sur la modélisation statistique bayésienne? Dans l'affirmative, PP est-il censé soutenir uniquement une approche bayésienne?
Jon

L'accent est mis sur la "modélisation hiérarchique". Ceci est intrinsèquement pratique pour les méthodes bayésiennes. Bien qu'il existe également une interprétation fréquentiste moins naturelle.
knrumsey

Réponses:


2

La programmation probabiliste est une technique pour définir un modèle statistique. Contrairement à la définition d'un modèle par sa fonction de distribution de probabilité ou au dessin d'un graphique, vous exprimez le modèle dans un langage de programmation, généralement sous la forme d'un échantillonneur direct.

L'inférence automatique à partir d'une spécification de modèle est une caractéristique typique des outils de programmation probabiliste, mais elle n'est pas essentielle, et il n'est pas nécessaire qu'elle soit bayésienne. Il existe une variété de choses utiles que vous pouvez faire avec un modèle spécifié comme programme probabiliste. Par exemple, le document Deriving Probability Density Functions from Probabilistic Functional Programs décrit un outil qui analyse un programme probabiliste et élabore sa fonction de distribution de probabilité. L'article Détecter les symétries de paramètres dans les modèles probabilistes analyse un programme probabiliste pour les symétries de paramètres. Ce type de travail relève également de la programmation probabiliste.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.