La tarification dynamique avec le bandit manchot multi-bras Apprendre en faisant
Tarification dynamique avec le bandit manchot multi-bras. Apprentissage en action.
L’application de stratégies d’apprentissage par renforcement à des cas d’utilisation réels, en particulier dans la tarification dynamique, peut révéler de nombreuses surprises
Tarification dynamique, apprentissage par renforcement et bandit manchot multi-bras
Dans le vaste monde des problèmes de prise de décision, un dilemme est particulièrement lié aux stratégies d’apprentissage par renforcement : l’exploration versus l’exploitation. Imaginez entrer dans un casino avec des rangées de machines à sous (également appelées “bandits manchots”) où chaque machine paie une récompense différente et inconnue. Explorez-vous et jouez-vous chaque machine pour découvrir celle qui a le plus gros gain, ou restez-vous sur une seule machine en espérant que ce soit le jackpot ? Ce scénario métaphorique est à la base du problème du bandit manchot multi-bras (MAB). L’objectif est de trouver une stratégie qui maximise les récompenses au fil des parties. Tandis que l’exploration offre de nouvelles perspectives, l’exploitation tire parti des informations dont vous disposez déjà.
Maintenant, transposez ce principe à la tarification dynamique dans un contexte de vente au détail. Supposons que vous êtes propriétaire d’une boutique en ligne avec un nouveau produit. Vous n’êtes pas certain de son prix de vente optimal. Comment fixer un prix qui maximise vos revenus ? Devriez-vous explorer différents prix pour comprendre la volonté des clients de payer, ou devriez-vous exploiter un prix qui a été performant historiquement ? La tarification dynamique est essentiellement un problème de bandit manchot multi-bras déguisé. À chaque étape, chaque prix potentiel peut être vu comme un “bras” d’une machine à sous et les revenus générés par ce prix sont sa “récompense”. Une autre façon de voir cela est que l’objectif de la tarification dynamique est de mesurer rapidement et précisément la réaction de la demande d’une base de clients à des prix variables. En termes plus simples, l’objectif est de déterminer la courbe de demande qui reflète le mieux le comportement des clients.
Dans cet article, nous explorerons quatre algorithmes de bandit manchot multi-bras pour évaluer leur efficacité face à une courbe de demande bien définie (bien que pas simple). Nous examinerons ensuite les forces et les limites principales de chaque algorithme et nous plongerons dans les principales mesures qui sont essentielles pour évaluer leurs performances.
Modélisation de la courbe de demande
Traditionnellement, les courbes de demande en économie décrivent la relation entre le prix d’un produit et la quantité du produit que les consommateurs sont prêts à acheter. Elles descendent généralement, représentant l’observation courante selon laquelle lorsque le prix augmente, la demande diminue généralement, et vice versa. Pensez à des produits populaires tels que les smartphones ou les billets de concert. Si les prix sont réduits, plus de personnes ont tendance à acheter, mais si les prix augmentent de façon exponentielle, même les fans les plus ardents peuvent hésiter.
- Protégez vos projets Python Évitez l’appel direct de setup.py pour une protection ultime du code !
- AWS vs Azure L’affrontement ultime des nuages
- Dévoiler la puissance de l’ajustement des biais améliorer la précision prédictive dans les jeux de données déséquilibrés
Cependant, dans notre contexte, nous modéliserons légèrement différemment la courbe de demande : nous mettons le prix en corrélation avec la probabilité. Pourquoi ? Parce que dans les scénarios de tarification dynamique, en particulier pour les biens ou services numériques, il est souvent plus pertinent de penser en termes de probabilité de vente à un prix donné plutôt que de spéculer sur des quantités exactes. Dans de tels environnements, chaque tentative de tarification peut être vue comme une exploration de la probabilité de succès (ou d’achat), ce qui peut être facilement modélisé comme une variable aléatoire de Bernoulli avec une probabilité p dépendant d’un prix de test donné.
C’est là que cela devient particulièrement intéressant : alors qu’intuitivement, on pourrait penser que la tâche de nos algorithmes de bandit manchot multi-bras est de découvrir ce prix idéal où la probabilité d’achat est la plus élevée, ce n’est pas aussi simple. En réalité, notre objectif ultime est de maximiser les revenus (ou la marge). Cela signifie que nous ne recherchons pas le prix qui incite le plus de personnes à cliquer sur “acheter” — nous recherchons le prix qui, multiplié par sa probabilité d’achat associée, donne le plus grand retour attendu. Imaginez fixer un prix élevé que peu de personnes achètent, mais chaque vente génère des revenus importants. En revanche, un prix très bas pourrait attirer plus d’acheteurs, mais le total des revenus pourrait encore être inférieur au scénario du prix élevé. Ainsi, dans notre contexte, parler de la “courbe de demande” est quelque peu inhabituel, car notre courbe cible représentera principalement la probabilité d’achat plutôt que la demande directement.
Maintenant, passons aux mathématiques. Commençons par dire que le comportement des consommateurs, en particulier lorsqu’il s’agit de sensibilité aux prix, n’est pas toujours linéaire. Un modèle linéaire pourrait suggérer que pour chaque augmentation incrémentielle du prix, il y a une diminution constante de la demande. En réalité, cette relation est souvent plus complexe et non linéaire. Une façon de modéliser ce comportement est d’utiliser des fonctions logistiques, qui peuvent capturer cette relation nuancée de manière plus efficace. Notre modèle choisi pour la courbe de demande est donc le suivant :
Ici, a représente la probabilité maximale atteignable d’achat, tandis que b module la sensibilité de la courbe de demande aux changements de prix. Une valeur plus élevée de b signifie une courbe plus raide, se rapprochant plus rapidement de probabilités d’achat plus faibles à mesure que le prix augmente.
Pour n’importe quel point de prix donné, nous serons alors en mesure d’obtenir une probabilité d’achat associée, p. Nous pouvons ensuite entrer p dans un générateur de variable aléatoire de Bernoulli pour simuler la réponse d’un client à une proposition de prix particulière. En d’autres termes, étant donné un prix, nous pouvons facilement émuler notre fonction de récompense.
Ensuite, nous pouvons multiplier cette fonction par le prix afin d’obtenir les revenus attendus pour un point de prix donné:
Sans surprise, cette fonction n’atteint pas son maximum en correspondance avec la probabilité la plus élevée. De plus, le prix associé au maximum ne dépend pas de la valeur du paramètre a, tandis que le retour attendu maximum le fait.
Avec un peu de rappel du calcul différentiel, nous pouvons également dériver la formule pour la dérivée (vous devrez utiliser une combinaison de la règle du produit et de la règle de la chaîne). Ce n’est pas exactement un exercice relaxant, mais ce n’est rien de trop difficile. Voici l’expression analytique de la dérivée du revenu attendu:
Cette dérivée nous permet de trouver le prix exact qui maximise notre courbe de revenu attendu. En d’autres termes, en utilisant cette formule spécifique en tandem avec des algorithmes numériques, nous pouvons facilement déterminer le prix qui le fixe à 0. C’est, à son tour, le prix qui maximise le revenu attendu.
Et c’est exactement ce dont nous avons besoin, car en fixant les valeurs de a et b, nous saurons immédiatement le prix cible que nos bandits devront trouver. Coder cela en Python ne nécessite que quelques lignes de code:
Pour notre cas d’utilisation, nous fixerons a = 2 et b = 0.042, ce qui nous donnera un prix cible d’environ 30.44, associé à une probabilité optimale de 0.436 (→ récompense moyenne optimale est 30.44 * 0.436 = 13.26). Ce prix est évidemment inconnu en général et c’est exactement le prix que nos algorithmes de bandits manchots rechercheront.
Stratégies des Bandits Manchots
Maintenant que nous avons identifié nos objectifs, il est temps d’explorer différentes stratégies pour tester et analyser leurs performances, leurs forces et leurs faiblesses. Bien qu’il existe plusieurs algorithmes dans la littérature MAB, en ce qui concerne les scénarios réels, quatre stratégies principales (avec leurs variations) forment principalement l’ossature. Dans cette section, nous fournirons un bref aperçu de ces stratégies. Nous supposons que le lecteur a une compréhension fondamentale d’elles; cependant, pour ceux qui souhaitent une exploration plus approfondie, des références sont fournies à la fin de l’article. Après avoir présenté chaque algorithme, nous présenterons également sa mise en œuvre en Python. Bien que chaque algorithme possède son propre ensemble de paramètres, ils utilisent tous en commun une entrée clé: le vecteur arm_avg_reward
. Ce vecteur représente la récompense moyenne obtenue pour chaque bras (ou action/prix) jusqu’à l’instant t. Cette entrée critique guide tous les algorithmes dans la prise de décisions éclairées sur le réglage du prix suivant.
Les algorithmes que je vais appliquer à notre problème de tarification dynamique sont les suivants:
Glouton: Cette stratégie consiste à toujours revenir à la machine qui vous a donné le plus de pièces les premières fois que vous avez joué. Après avoir essayé chaque machine un peu, elle reste avec celle qui semblait la meilleure. Mais il peut y avoir un problème. Et si cette machine avait simplement de la chance au début? La stratégie Glouton pourrait passer à côté de meilleures options. Du bon côté, l’implémentation du code est vraiment simple:
Il est essentiel de différencier le scénario initial (lorsque toutes les récompenses sont à 0) du scénario régulier. Souvent, vous ne trouverez que la partie “else” implémentée, ce qui fonctionne effectivement même lorsque toutes les récompenses sont à 0. Cependant, cette approche peut entraîner un biais en faveur du premier élément. Si vous commettez cette erreur, vous pourriez finir par payer ce biais, en particulier si la récompense optimale est liée au premier bras (oui, j’ai vécu cela). L’approche Greedy est généralement la moins performante et nous l’utiliserons principalement comme référence de performance.
ϵ-greedy : L’algorithme ϵ-greedy (epsilon-greedy) est une modification visant à résoudre le principal inconvénient de l’approche greedy. Il introduit une probabilité ε (epsilon), généralement une petite valeur, pour sélectionner un bras au hasard, favorisant ainsi l’exploration. Avec une probabilité de 1−ε, il choisit le bras avec la récompense estimée la plus élevée, favorisant l’exploitation. En équilibrant l’exploration aléatoire et l’exploitation des récompenses connues, la stratégie ε-greedy vise à obtenir de meilleurs rendements à long terme par rapport aux méthodes purement greedy. Encore une fois, la mise en œuvre est immédiate, c’est simplement un “if” supplémentaire ajouté au code Greedy.
UCB1 (Upper Confidence Bound) : La stratégie UCB1 est comme un explorateur curieux qui essaie de trouver le meilleur restaurant dans une nouvelle ville. Bien qu’il ait un endroit préféré qu’il a apprécié, l’attrait de découvrir éventuellement un endroit encore meilleur grandit chaque jour qui passe. Dans notre contexte, UCB1 combine les récompenses des points de prix connus avec l’incertitude de ceux qui sont moins explorés. Mathématiquement, cet équilibre est atteint grâce à une formule : la récompense moyenne d’un point de prix plus un “bonus d’incertitude” basé sur le temps écoulé depuis qu’il a été essayé pour la dernière fois. Ce bonus est calculé comme suit :
et représente la “curiosité croissante” à l’égard du prix non testé. Le paramètre hyper C contrôle l’équilibre entre l’exploitation et l’exploration, avec des valeurs plus élevées de C encourageant davantage l’exploration des bras moins échantillonnés. En sélectionnant toujours le prix avec la valeur combinée la plus élevée de la récompense connue et du bonus de curiosité, UCB1 garantit un mélange entre ce qui est connu et ce qui est inconnu, dans le but de découvrir le point de prix optimal pour maximiser les revenus. Je commencerai par l’implémentation classique de cette approche, mais nous verrons bientôt que nous devons la modifier un peu.
Thompson Sampling : Cette approche bayésienne aborde le dilemme de l’exploration-exploitation en sélectionnant de manière probabiliste les bras en fonction de leurs distributions de récompense postérieures. Lorsque ces récompenses suivent une distribution de Bernoulli, représentant des résultats binaires tels que succès/échec, Thompson Sampling (TS) utilise la distribution Beta comme priori conjugué (voir ce tableau pour référence). En commençant par un priori Beta(1,1) non informatif pour chaque bras, l’algorithme met à jour les paramètres de la distribution lorsqu’il observe des récompenses : un succès augmente le paramètre alpha, tandis qu’un échec augmente le paramètre beta. À chaque tour, TS tire de la distribution Beta actuelle de chaque bras et choisit celui avec la valeur échantillonnée la plus élevée. Cette méthodologie permet à TS de s’ajuster dynamiquement en fonction des récompenses obtenues, équilibrant habilement l’exploration des bras incertains et l’exploitation de ceux connus comme étant récompensants. Dans notre scénario spécifique, bien que la fonction de récompense fondamentale suive une distribution de Bernoulli (1 pour un achat et 0 pour un achat manqué), la récompense réelle d’intérêt est le produit de cette récompense de base et du prix actuel en cours de test. Par conséquent, notre implémentation de TS nécessitera une légère modification (qui réserve également quelques surprises).
Le changement est en réalité assez simple : pour déterminer le bras suivant le plus prometteur, les échantillons extraits des estimations postérieures sont multipliés par leurs points de prix respectifs (ligne 3). Cette modification garantit que les décisions sont ancrées sur le revenu moyen anticipé, déplaçant l’accent de la probabilité d’achat la plus élevée.
Comment évaluons-nous les résultats ?
À ce stade, ayant rassemblé tous les éléments clés pour construire une simulation comparant les performances des quatre algorithmes dans notre contexte de tarification dynamique, nous devons nous demander : que mesurerons-nous exactement ? Les métriques que nous choisissons sont cruciales, car elles nous guideront dans le processus de comparaison et d’amélioration de l’implémentation de l’algorithme. Dans cette entreprise, je me concentre sur trois indicateurs clés :
- Regret : Cette métrique mesure la différence entre la récompense obtenue par l’action choisie et la récompense qui aurait été obtenue en prenant la meilleure action possible. Mathématiquement, le regret à l’instant t est donné par : Regret(t) = Récompense optimale(t) − Récompense réelle(t). Le regret, lorsqu’il est accumulé au fil du temps, donne des indications sur ce que nous avons “perdu” en ne choisissant pas toujours la meilleure action. Il est préféré à la récompense cumulative car il fournit une indication plus claire des performances de l’algorithme par rapport au scénario optimal. Idéalement, une valeur de regret proche de 0 indique une proximité avec une prise de décision optimale.
- Réactivité : Cette métrique mesure la vitesse à laquelle un algorithme atteint une récompense moyenne cible. Essentiellement, c’est une mesure de l’adaptabilité et de l’efficacité d’apprentissage de l’algorithme. Plus un algorithme peut atteindre rapidement la récompense moyenne souhaitée, plus il est réactif, ce qui implique un ajustement plus rapide au point de prix optimal. Dans notre cas, la récompense cible est fixée à 95% de la récompense moyenne optimale, qui est de 13,26. Cependant, les premières étapes peuvent présenter une grande variabilité. Par exemple, un choix chanceux au début peut entraîner un succès à partir d’un bras de faible probabilité associé à un prix élevé, atteignant rapidement le seuil. En raison de telles fluctuations, j’ai opté pour une définition plus stricte de la réactivité : le nombre d’étapes nécessaires pour atteindre 95% de la récompense moyenne optimale dix fois, en excluant les 100 premières étapes.
- Allocation des bras : Cela indique la fréquence à laquelle chaque algorithme utilise les bras disponibles. Présentée sous forme de pourcentage, elle révèle la propension de l’algorithme à sélectionner chaque bras au fil du temps. Idéalement, pour une stratégie de tarification la plus efficace, nous voudrions qu’un algorithme alloue 100% de ses choix au bras le plus performant et 0% aux autres. Une telle allocation conduirait naturellement à une valeur de regret de 0, indiquant une performance optimale.
Exécution de la simulation
L’évaluation des algorithmes MAB pose des défis en raison de la nature hautement stochastique de leurs résultats. Cela signifie que, en raison de l’aléatoire inhérent à la détermination des quantités, les résultats peuvent varier considérablement d’une exécution à une autre. Pour une évaluation robuste, l’approche la plus efficace consiste à exécuter la simulation cible plusieurs fois, accumuler les résultats et les métriques de chaque simulation, puis calculer la moyenne.
La première étape consiste à créer une fonction pour simuler le processus de prise de décision. Cette fonction mettra en œuvre la boucle de rétroaction représentée dans l’image ci-dessous.

Voici l’implémentation de la boucle de simulation :
Les entrées de cette fonction sont :
prices
: Une liste de prix candidats que nous souhaitons tester (essentiellement nos “bras”).nstep
: Le nombre total d’étapes dans la simulation.strategy
: L’algorithme que nous visons à tester pour prendre des décisions sur le prochain prix.
Enfin, nous devons écrire le code pour la boucle externe. Pour chaque stratégie cible, cette boucle appellera run_simulation
plusieurs fois, collectera et agrégera les résultats de chaque exécution, puis affichera les résultats.
Pour notre analyse, nous utiliserons les paramètres de configuration suivants :
prices
: Nos prix candidats → [20, 30, 40, 50, 60]nstep
: Nombre d’étapes de temps pour chaque simulation → 10000nepoch
: Nombre d’exécutions de simulation → 1000
De plus, en fixant nos prix candidats, nous pouvons obtenir rapidement les probabilités d’achat associées, qui sont (approximativement) [0,60, 0,44, 0,31, 0,22, 0,15].
Résultats
Après avoir exécuté la simulation, nous sommes enfin en mesure de voir quelques résultats. Commençons par le graphique du regret cumulatif :
À partir du graphique, nous pouvons voir que TS est le gagnant en termes de regret cumulatif moyen, mais il lui faut environ 7 500 étapes pour surpasser ε-greedy. D’autre part, nous avons un clair perdant, qui est UCB1. Dans sa configuration de base, il se comporte essentiellement au même niveau que l’approche gloutonne (nous y reviendrons plus tard). Essayons de comprendre les résultats plus en détail en explorant les autres métriques disponibles. Dans les quatre cas, la réactivité montre de très grandes déviations standard, nous nous concentrerons donc sur les valeurs médianes plutôt que sur les moyennes, car elles sont plus résistantes aux valeurs aberrantes.
L’observation initiale des graphiques révèle que, bien que TS dépasse ε-greedy en termes de moyenne, il est légèrement en retard en termes de médiane. Cependant, son écart-type est plus petit. Particulièrement intéressant est le graphique en barres de réactivité, qui montre comment TS peine à atteindre rapidement une récompense moyenne favorable. Au départ, cela était contre-intuitif pour moi, mais le mécanisme derrière TS dans ce scénario a clarifié les choses. Nous avons déjà mentionné que TS estime les probabilités d’achat. Cependant, les décisions sont prises en fonction du produit de ces probabilités et des prix. En ayant connaissance des probabilités réelles (qui, comme mentionné, sont [0,60, 0,44, 0,31, 0,22, 0,15]), nous pouvons calculer les récompenses attendues que TS recherche activement : [12,06, 13,25, 12,56, 10,90, 8,93]. En essence, bien que les probabilités sous-jacentes diffèrent considérablement, les valeurs de revenu attendues sont relativement proches de son point de vue, surtout à proximité du prix optimal. Cela signifie que TS a besoin de plus de temps pour discerner le bras optimal. Bien que TS reste l’algorithme le plus performant (et sa médiane finit par chuter en dessous de celle de l’approche ε-greedy si la simulation est prolongée), il demande une période plus longue pour identifier la meilleure stratégie dans ce contexte. Ci-dessous, les diagrammes circulaires d’allocation des bras montrent comment TS et ε-greedy parviennent assez bien à identifier le meilleur bras (prix = 30) et à l’utiliser la plupart du temps pendant la simulation.
Maintenant, revenons à UCB1. Le regret et la réactivité confirment qu’il agit essentiellement comme un algorithme entièrement exploiteur : rapide pour obtenir un bon niveau de récompense moyenne mais avec un grand regret et une grande variabilité du résultat. Si nous regardons les affectations de bras, c’est encore plus clair. UCB1 est seulement légèrement plus intelligent que l’approche Greedy car il se concentre davantage sur les 3 bras avec des récompenses attendues plus élevées (prix 20, 30 et 40). Cependant, il n’explore essentiellement pas du tout.
Entrez dans l’optimisation des hyperparamètres. Il est clair que nous devons déterminer la valeur optimale du poids C qui équilibre l’exploration et l’exploitation. La première étape consiste à modifier le code UCB1.
Dans ce code mis à jour, j’ai incorporé l’option de normaliser la récompense moyenne avant d’ajouter le “bonus d’incertitude”, qui est pondéré par l’hyperparamètre C. La raison à cela est de permettre une plage de recherche cohérente pour le meilleur hyperparamètre (disons 0.5-1.5). Sans cette normalisation, nous pourrions obtenir des résultats similaires, mais l’intervalle de recherche nécessiterait des ajustements en fonction de la plage de valeurs avec lesquelles nous traitons à chaque fois. Je vais vous épargner l’ennui de trouver la meilleure valeur de C ; elle peut être facilement déterminée grâce à une recherche en grille. Il s’avère que la valeur optimale est de 0.7. Maintenant, relançons la simulation et examinons les résultats.
C’est un véritable rebondissement, n’est-ce pas ? Maintenant, UCB1 est clairement le meilleur algorithme. Même en termes de réactivité, il s’est légèrement détérioré par rapport au score précédent.
De plus, du point de vue de l’allocation des bras, UCB1 est maintenant le leader incontesté.
Leçons apprises et prochaines étapes
- Théorie vs. Expérience : Commencer par l’apprentissage basé sur les livres est une première étape essentielle lorsque l’on se plonge dans de nouveaux sujets. Cependant, plus tôt vous vous plongez dans des expériences pratiques, plus vite vous transformerez l’information en connaissances. Les nuances, subtilités et cas particuliers que vous rencontrez lors de l’application d’algorithmes à des cas d’utilisation du monde réel offriront des idées bien au-delà de tout livre de science des données que vous pourriez lire.
- Connaître vos mesures et référentiels : Si vous ne pouvez pas mesurer ce que vous faites, vous ne pouvez pas l’améliorer. Ne commencez jamais une implémentation sans comprendre les mesures que vous souhaitez utiliser. Si je n’avais considéré que les courbes de regret, j’aurais pu conclure que “UCB1 ne fonctionne pas”. En évaluant d’autres mesures, notamment l’allocation des bras, il est devenu évident que l’algorithme n’explorait tout simplement pas suffisamment.
- Pas de solutions universelles : Bien que UCB1 se soit révélé être le meilleur choix dans notre analyse, cela ne signifie pas que c’est la solution universelle pour votre problème de tarification dynamique. Dans ce scénario, l’optimisation était simple car nous connaissions la valeur optimale que nous recherchions. Dans la vie réelle, les situations ne sont jamais aussi claires. Possédez-vous suffisamment de connaissances dans le domaine ou les moyens de tester et d’ajuster votre facteur d’exploration pour l’algorithme UCB1 ? Peut-être vous pencheriez-vous vers une option fiable et efficace comme ε-greedy qui promet des résultats immédiats. Ou peut-être gérez-vous une plateforme de commerce électronique animée, présentant un produit 10000 fois par heure, et vous êtes prêt à être patient, convaincu que Thompson Sampling atteindra finalement la récompense cumulative maximale. Ouais, la vie n’est pas facile.
Enfin, permettez-moi de dire que si cette analyse vous a semblé intimidante, malheureusement, elle représente déjà une situation très simplifiée. Dans la tarification dynamique du monde réel, les prix et les probabilités d’achat n’existent pas dans le vide – ils existent en réalité dans des environnements en constante évolution et sont influencés par divers facteurs. Par exemple, il est très improbable que la probabilité d’achat reste constante tout au long de l’année, pour toutes les données démographiques et les régions. En d’autres termes, pour optimiser les décisions de tarification, nous devons prendre en compte les contextes de nos clients. Cette considération sera le point central de mon prochain article, où je plongerai plus profondément dans le problème en intégrant les informations sur les clients et en discutant des Bandits Contextuels. Alors, restez à l’écoute !
Références
- https://www.amazon.it/Reinforcement-Learning-Introduction-Richard-Sutton/dp/0262039249
- https://www.geeksforgeeks.org/epsilon-greedy-algorithm-in-reinforcement-learning/
- https://towardsdatascience.com/multi-armed-bandits-upper-confidence-bound-algorithms-with-python-code-a977728f0e2d
- https://towardsdatascience.com/thompson-sampling-fc28817eacb8
- https://www.youtube.com/watch?v=e3L4VocZnnQ
- https://www.youtube.com/watch?v=e3L4VocZnnQ
- https://www.youtube.com/watch?v=Zgwfw3bzSmQ&t=2s
Avez-vous apprécié cet article ? Si vous recherchez des applications d’IA, de NLP, d’apprentissage automatique et d’analyse de données pour résoudre des problèmes du monde réel, vous aimerez probablement aussi mes autres travaux. Mon objectif est de créer des articles pratiques qui montrent ces technologies transformantes dans des scénarios concrets. Si cela vous concerne également, suivez-moi sur VoAGI pour rester informé de mes dernières publications !
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
- Comment extraire les informations clés des documents d’entreprise à l’aide de LayoutLMv3
- Adobe Express améliore l’expérience utilisateur avec Firefly Generative AI
- Les ensembles prompt rendent les LLM plus fiables
- Diffusion stable L’IA de la communauté
- Comment utiliser ChatGPT pour convertir du texte en une présentation PowerPoint
- Nouveaux graphiques SHAP Violon et Heatmap
- L’exploitation des LLM avec la recherche d’informations une démonstration simple