Trouver l’ordre dans le chaos avec l’extension du chaos polynomial, en utilisant uncertainpy et chaospy
Rétablir l'ordre dans le chaos avec l'expansion du chaos polynomial, grâce à uncertainpy et chaospy
Voici comment aborder les problèmes chaotiques en utilisant les mathématiques, la physique, Python et la science des données

Il y a trois ans, j’ai déménagé de Rome, en Italie, et j’ai commencé à vivre à Cincinnati, dans l’Ohio, aux États-Unis, après avoir reçu une offre de doctorat de l’Université de Cincinnati. Il y avait (et il y a encore) beaucoup de choses qui me manquent dans ma ville : la nourriture, le climat, la beauté de la ville éternelle. Une chose dont je ne regrette absolument pas ma ville, c’est le trafic insensé.
Un de mes bons amis m’a envoyé un message l’autre jour et a dit :
“Piero, aujourd’hui le trafic est tellement mauvais et la ville est un chaos total”.
Maintenant, évidemment, je ne l’ai pas corrigé (surtout en sachant comment est le trafic à Rome), mais le terme chaos a un sens totalement différent en mathématiques et en physique par rapport à la façon dont nous utilisons “chaos” dans notre vie quotidienne.
- IBM annonce les services de détection et de réponse aux menaces alimentés par l’IA pour révolutionner la cybersécurité.
- Une façon bayésienne de choisir un restaurant
- La génération augmentée par récupération – expliquée de manière intuitive et exhaustive
Une définition populaire du chaos, lorsque nous parlons de chaos en mathématiques, est celle d’un problème régulé par des équations déterministes, mais dont l’évolution du système dépend énormément des conditions initiales. Cela signifie que même avec un changement extrêmement petit dans les conditions initiales, l’évolution du système peut être incroyablement différente. Pour le dire avec les mots de Lorentz¹ :
“Le présent détermine le futur, mais le présent approximatif ne détermine pas approximativement le futur.”
¹ http://mpe.dimacs.rutgers.edu/2013/03/17/chaos-in-an-atmosphere-hanging-on-a-wall/
Cela signifie que la seule façon dont nous sommes capables de prédire l’évolution d’un état est de le considérer d’un point de vue probabiliste. Étant donné le point de départ d’un processus, nous ne serons pas en mesure de prédire exactement le point d’arrivée du système, car il est chaotique, mais nous serons en mesure de le prédire de manière probabiliste, dans le sens où nous serons en mesure d’obtenir, par exemple, la moyenne et l’écart-type.
Ce type de chaos peut être traité numériquement, par exemple en utilisant Python. Dans cet article de blog, nous décrirons l’Expansion du Chaos Polynomiale (PCE) en partant de la Promenade Aléatoire abstraite jusqu’à l’application sur un cas réel avec la température de notre café ☕️
Commençons !
1. Promenade Aléatoire
La promenade aléatoire est quelque chose que tous les mathématiciens et physiciens qui lisent connaissent bien. Ce modèle a été utilisé un peu partout, de la finance à la physique, et il est très simple. Il est également connu dans la littérature sous le nom de mouvement brownien et il fonctionne comme suit :
- Nous partons d’un point x = 0
- Avec la même probabilité, nous pouvons passer de x = 0 à x = 1 ou de x = 0 à x = -1. Nous définissons ce point comme x_1
- Encore une fois, nous pouvons augmenter la valeur de x_1 de +1 ou -1. Nous définirons ce point comme x_2.
- Nous répétons l’étape 3 avec x_2 encore N-2 fois
Pour une fois, je pense que le pseudocode est même plus facile à comprendre que de l’expliquer en mots
PromenadeAléatoire(N) : x = 0 i = 0 while i<N: p = aléatoire(-1,1) x = x+p i = i+1 return x
Maintenant, explorons cela, voulez-vous ?
1.2 Code
Dans cette partie de l’article, nous décrirons la Promenade Aléatoire en utilisant le code du langage Python. Vous devrez importer des bibliothèques très basiques comme numpy et matplotlib.pyplot.
Voici le code de la Promenade Aléatoire :
Si nous exécutons cela, disons 100 fois, nous obtenons les chemins suivants :
Ce qui est très intéressant, c’est que vous pouvez trouver la distribution gaussienne si vous considérez la dernière étape :
Arrêtons-nous là pour le moment. Je vous promets, nous l’utiliserons.
2. Équations différentielles
Maintenant, tout ce que nous savons sur la vie, attendez, littéralement, tout ce que nous savons sur la vie, nous le connaissons grâce à l’équation différentielle.
Les équations différentielles sont les outils que la physique utilise pour décrire l’évolution d’un système. Mon professeur de lycée l’a expliqué en disant :
“Pour décrire le monde, vous avez besoin de deux choses : différencier et intégrer. Différencier est très facile, intégrer est très difficile.”
Par exemple, considérons la position y d’un écureuil grimpant sur un arbre :

Disons que la vitesse de l’écureuil est v(t) = (t/60)**2, où t = secondes. Notre super-héros commence donc avec une v(t=0) = 0 et après deux minutes, il atteint la vitesse v(120) = 2**2 = 4 m/s.
Étant donné ces informations, quelle est la position du super écureuil ?
Ce que nous devons faire, c’est intégrer l’équation de vitesse et nous obtenons :
Comment obtenons-nous cette constante c ? Nous définissons simplement ce qui se passe lorsque t = 0. Nous supposons que notre écureuil commence à une hauteur de 0, donc c = 0.
Ainsi, la position de notre super écureuil qui grimpe à l’arbre est la suivante :
En général, une certaine solution y peut être considérée comme une intégration d’une autre quantité, disons x et une condition initiale.
Dans ce schéma dont nous avons parlé :
- Le temps (t) qui est la variable temporelle (qui va du début à la fin de l’expérience)
- x, qui est l’objet que nous intégrons (dans l’exemple ci-dessus, x est la vitesse)
- La solution (y) qui est la solution que nous obtenons en intégrant x (dans l’exemple ci-dessus, y est la position du super écureuil)
Ainsi, dans ce cas, nous pouvons dire que x(t) = intégration de y(t).
Il y en a plus. Vous pouvez avoir certains paramètres dans votre système qui sont fixes mais qui peuvent modifier l’évolution de votre système. Donc :
x(t, liste de paramètres) = intégration de y(t, liste de paramètres)
Par exemple. Parlons de café. Café ? Oui, café.
2.1 Loi de refroidissement de Newton
Un gars plutôt doué en physique (lol) nommé Isaac Newton, parmi les nombreux dons qu’il nous a laissés, a expliqué comment décrire le transfert de chaleur d’un corps chaud. En d’autres termes, il nous a dit comment les choses refroidissent

La loi du refroidissement proposée par Newton stipule que le taux de chaleur du corps vers l’extérieur est proportionnel à une constante k qui dépend de la surface et de son coefficient de transfert de chaleur, ainsi que de la différence entre la température T à l’instant t et la température de l’environnement T_env.
Si nous voulons obtenir la température (T), nous devons intégrer le taux de chaleur (dT/dt). Voici l’équation :

Pour obtenir la température T, étant donné T_env et k (n’oubliez pas cela !!!), nous devons intégrer dT/dt.
3. Le chaos de Wiener !
Rarement, très rarement, nous sommes capables de définir une solution analytique pour l’équation différentielle. C’est pourquoi mon professeur de lycée disait que c’est très difficile à intégrer. Il est plus probable que nous ayons besoin de faire une intégration numérique, ce qui signifie résoudre l’équation différentielle de manière numérique (aussi appelée avec un algorithme).
Il existe des méthodes (algorithmes) très connues pour les intégrations, comme la somme trapézoïdale ou la somme de Riemann. Elles fonctionnent, avec leurs avantages et leurs inconvénients, et elles fonctionnent efficacement. Ce n’est pas le problème.
Le vrai problème réside dans les paramètres (par exemple T_env et kappa) de l’équation différentielle. Laissez-moi vous expliquer davantage.
Vous rappelez-vous de T_env et de k dans l’équation ci-dessus ? Nous n’avons aucune idée de ce qu’ils pourraient réellement être, et cela peut changer complètement l’évolution de notre système.
Le bel esprit de Norbert Wiener a formulé de manière très élégante les équations différentielles avec des paramètres aléatoires supplémentaires. En particulier, et maintenant toute notre discussion prend sens, les équations différentielles avec des paramètres aléatoires sont définies comme chaotiques et peuvent être décrites à l’aide de marches aléatoires (ah-ha !) comme un polynôme. En faisant cela, nous sommes capables de comprendre la solution T(t) de manière probabiliste !
Je comprends que cela peut être déroutant : faisons-le étape par étape 🙂
3.1 La configuration
La première chose dont nous avons besoin, en Python, est de définir notre équation différentielle :
Comme nous le voyons, ce n’est pas seulement une question de T (notre variable) mais aussi une question de kappa et T_env.
C’est la fonction que nous devons intégrer. Avant de le faire, importons quelques amis 🦸♂️
Vous aurez probablement une erreur car vous n’avez pas chaospy et uncertainpy. Ce sont nos magiciens magiques : ils implémentent la méthode d’expansion du chaos polynomial. C’est super facile de les installer :
pip install uncertainpy
3.2 Intégrer la fonction
Mettons en place la fonction à intégrer en utilisant la règle du trapèze :
Donc :
- Nous fixons la température de départ de notre café, disons T_0 = 95
- Nous fixons le pas de temps de notre problème, disons 500 pas de temps
- Nous l’intégrons en utilisant la règle du trapèze
- Nous renvoyons le temps et la température
3.3 À propos d’uncertainpy
Maintenant, je dois dire ceci : uncertainpy est incroyable. Il y a tellement de choses que vous pouvez faire avec et je vous recommande vraiment de passer du temps dessus ici.
Voici ce que nous allons faire :
- Nous définissons une distribution possible de kappa. Par exemple, kappa est échantillonné à partir d’une distribution normale avec une valeur moyenne et une variance données.
- Nous faisons la même chose avec T_env.
- Nous appliquons uncertainpy et extrayons une distribution de valeurs possibles de la température en fonction des distributions d’entrée.
Le jeu est simple : si nous connaissons la distribution possible des paramètres grâce au chaos de Wiener, nous sommes en mesure de connaître la distribution de la sortie.
Cela peut sembler confus, mais je vous promets que cela sera plus clair après vous avoir montré le code :
Le modèle est défini avec la coffee_cup, qui est notre équation différentielle. Nous définissons ensuite les distributions des paramètres (en utilisant chaospy) et définissons le dictionnaire des paramètres correspondants.
Maintenant, pour chaque valeur de kappa et T_env, nous avons une équation différentielle avec des paramètres différents et des températures différentes T(t), qui sont le résultat de l’intégration. Grâce à l’utilisation de la magie de chaospy, les solutions deviennent une distribution avec une moyenne et un écart-type.
Voyons comment :
C’est tout ! (comme Biggie) C’est si facile.
3.4 Le tout
Le tout peut être mis dans ce seul bloc de code :
N’est-ce pas magnifique ? Nous sommes capables de convertir la distribution des paramètres en entrée en la distribution du résultat à la sortie. Au moment t=0, la température est T= T_0 = 95. Lorsque le temps s’écoule, l’incertitude des paramètres devient de plus en plus présente. Nous avons une grande incertitude (disons de 5 à 30) à l’instant = 200 minutes, il pourrait faire froid ou un peu chaud selon k et T_env.
4. Résultats
Dans cet article de blog, nous avons décrit les magnifiques bibliothèques chaospy et uncertainpy. Ces bibliothèques nous ont permis de traiter le problème du chaos de Wiener, qui utilise la marche aléatoire pour définir une forme de chaos polynomial. Ce chaos polynomial est utilisé pour traiter les équations différentielles avec des distributions au lieu de paramètres. Nous l’avons fait dans l’ordre suivant :
- Nous avons décrit la marche aléatoire dans le chapitre 1.
- Nous avons décrit les équations différentielles dans le chapitre 2. En particulier, nous avons décrit la loi de refroidissement de Newton.
- Nous avons décrit le chaos selon Wiener et appliqué le chaos polynomial dans le chapitre 3.
5. Conclusions
Si vous avez aimé l’article et que vous souhaitez en savoir plus sur l’apprentissage automatique, ou si vous avez simplement une question à me poser, vous pouvez :
A. Me suivre sur Linkedin, où je publie toutes mes histoires.
B. Vous abonner à ma newsletter. Elle vous tiendra informé des nouvelles histoires et vous donnera la possibilité de me contacter pour recevoir toutes les corrections ou les doutes que vous pourriez avoir.
C. Devenir un membre recommandé, ainsi vous n’aurez pas de “nombre maximum d’histoires par mois” et vous pourrez lire tout ce que moi (et des milliers d’autres écrivains de premier plan en apprentissage automatique et en science des données) écrivons sur les nouvelles technologies disponibles.
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Schémas de conception avec Python pour les ingénieurs en apprentissage automatique Constructeur
- Note The translation provided above is a direct translation of the given English text. However, the translated title may not match the reference text perfectly, as stylistic choices can vary in different languages.
- Est-ce qu’un Chatbot alimenté par un Llama peut être entraîné sur un CPU ?
- Comparaison des LLMM pour les applications de chat LLaMA v2 Chat contre Vicuna
- Empoisonnement des données et effondrement du modèle Le cataclysme de l’IA à venir
- Alimenter l’innovation Outils clés pour améliorer l’intelligence artificielle générative dans les Data Lake Houses
- Les dépôts GitHub AI tendance semaine du 9 octobre 2023