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 PyMC3
et Stan
se 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
rand
et 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é).
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.
Réponses:
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.
la source