Cascades de cartes de stade et art de programmer une foule

Alors que la saison de bowling universitaire approche à grands pas, les fans de football de tout le pays seront éblouis, non seulement par l’action sur le terrain, mais aussi par les « cascades de cartes » complexes exécutées par les membres du public du stade. Le travail de foule hautement coordonné est capable de produire des images détaillées qui ressemblent aux images pixellisées sur les écrans d’ordinateur – et qui sont codées à peu près de la même manière.

Le nouveau livre de Michael Littman, Code to Joy : pourquoi tout le monde devrait apprendre un peu de programmation, regorge d’exemples similaires sur la manière dont fonctionnent les machines qui nous entourent et sur la manière dont nous ne devons pas nous méfier d’un avenir rempli d’automates tant que nous apprenons à parler leur langue (au moins jusqu’à ce qu’ils aient fini d’apprendre la nôtre). Du séquençage des commandes au stockage des variables, Code à la joie fournit un guide accessible et divertissant sur les bases de la programmation pour les codeurs débutants de tous âges.

Couverture de Code to Joy

Presse du MIT

Extrait de Code to Joy : pourquoi tout le monde devrait apprendre un peu de programmation par Michael L Littman. Publié par MIT Press. Copyright © 2023 par Michael L Littman. Tous droits réservés.


« DONNEZ-MOI UN BLEU! »

Les cascades de cartes, dans lesquelles le public du stade brandit des panneaux colorés pour créer un panneau d’affichage géant temporaire, sont comme des flash mobs où les participants n’ont besoin d’aucune compétence particulière et n’ont même pas besoin de s’entraîner à l’avance. Il leur suffit de se présenter et de suivre les instructions sous la forme d’une courte séquence de commandes. Les instructions guident le public du stade pour qu’il tienne en l’air les bonnes cartes colorées de la taille d’une affiche au bon moment, comme annoncé par un chef de cascade. Un ensemble typique d’instructions de cascade de cartes commence par des instructions pour suivre les instructions :

  • écouter attentivement les instructions

  • Tenez le haut de la carte au niveau des yeux (pas au-dessus de votre tête).

  • maintenez la couleur indiquée vers le champ (pas face à vous)

  • passez les cartes dans l’allée à la fin des cascades (ne déchirez pas les cartes)

Ces instructions peuvent paraître évidentes, mais ne pas les énoncer conduit sûrement au désastre. Même ainsi, vous savez qu’il doit y avoir un alec intelligent qui demande ensuite : « Désolé, c’était quoi ce premier déjà ? » C’est certainement ce que je ferais.

Vient ensuite l’événement principal qui, pour une personne spécifique dans la foule, pourrait être la séquence de commandes :

  1. Bleu

  2. Bleu

  3. Bleu

A couper le souffle, non ? Eh bien, vous devriez peut-être voir la situation dans son ensemble. L’idée même des cascades de cartes exploite le fait que les membres d’une foule dans un stade sont assis dans des sièges disposés en grille. En brandissant des panneaux rectangulaires colorés, ils se transforment en quelque chose comme un grand écran d’affichage d’ordinateur. Chaque participant agit comme un élément d’image unique : des pixels individuels ! Les changements dans lesquels les cartes sont tenues changent l’image ou peut-être même la font se transformer comme un gif animé plus grand que nature.

Les cascades de cartes ont commencé comme une activité de participation de la foule dans les sports universitaires dans les années 1920. Ils sont devenus beaucoup moins populaires dans les années 1970, lorsqu’il était généralement admis que chacun devait faire ce qu’il voulait. Dans les années 1950, cependant, il y avait une réelle soif de créer des expositions toujours plus élaborées. Les équipes d’encouragement concevaient les cascades à la main, puis préparaient des instructions individuelles pour chacun des milliers de sièges. Il faut vraiment aimer son équipe pour consacrer ce genre d’énergie. Dans les années 1960, quelques écoles pensaient que ces nouveaux outils informatiques pourraient être utiles pour alléger une partie de la corvée de la préparation à l’enseignement et ont conçu des programmes pour transformer des séquences d’images dessinées à la main en instructions individualisées pour chacun des participants. Avec l’aide des ordinateurs, les gens pourraient produire des séquences individualisées beaucoup plus riches pour chaque pixel individuel indiquant quand soulever une carte, quelle couleur soulever et quand la poser ou la changer pour une autre carte. Ainsi, alors que l’exemple de questionnaire de la section précédente concernait des personnes créant des séquences de commandes que l’ordinateur devait suivre, cet exemple concerne l’ordinateur créant des séquences de commandes pour personnes suivre. Et le support informatique pour automatiser le processus de création de séquences de commandes permet de créer des cascades plus élaborées. Cela a abouti à une séquence de commandes d’un participant ressemblant à :

  • sur 001 blanc

  • 003 bleu

  • 005 blanc

  • 006 rouge

  • 008 blanc

  • 013 bleu

  • 015 blanc

  • 021 vers le bas

  • sur 022 blanc

  • 035 vers le bas

  • sur 036 blanc

  • 043 bleu

  • 044 vers le bas

  • sur 045 blanc

  • 057 rouge métallisé

  • 070 vers le bas

D’accord, ce n’est toujours pas aussi amusant de lire les instructions que de voir le produit final. Dans cet exemple réel, il fait partie d’un « S » animé de Stanford. Pour exécuter ces commandes de manière synchronisée, un annonceur dans le stade annonce le numéro de l’étape (« Quarante et un ! ») et chaque participant peut dire à partir de ses instructions quoi faire (« Je tiens toujours la carte blanche J’ai relevé 36, mais je m’apprête à l’échanger contre une carte bleue lorsque le décompte atteindra 43″).

Comme je l’ai dit, ce n’est pas si compliqué pour les gens de faire partie d’un coup de cartes, mais c’est un exemple plutôt sympa de création et de suivi de séquences de commandes où l’ordinateur nous dit quoi faire au lieu de l’inverse. Et aussi simple que cela puisse paraître, il arrive parfois que les choses tournent mal. Lors de la Convention nationale démocrate de 2016, les partisans d’Hillary Clinton ont planifié un coup de cartes à l’échelle de l’arène. Même s’il s’agissait d’une démonstration patriotique d’unité, certains participants n’ont pas voulu y participer. Le résultat fut un désordre illisible qui, de manière déprimante, était censé épeler « Stronger Together ».

De nos jours, les ordinateurs permettent de transformer facilement une photographie en instructions sur les couleurs à afficher et à quel endroit. Essentiellement, toute image numérisée est déjà un ensemble d’instructions sur le mélange de rouge, de bleu et de vert à afficher à chaque position de l’image. Un défi intéressant dans la traduction d’une image en instructions de cascade de cartes est que les images typiques sont constituées de millions de points colorés (mégapixels), alors qu’une section de cascade de cartes d’un stade compte peut-être un millier de sièges. Au lieu de demander à chaque personne de brandir mille petites cartes, il est plus logique de calculer une moyenne des couleurs de cette partie de l’image. Ensuite, parmi la collection de couleurs disponibles (par exemple, les soixante-quatre options classiques de Crayola), l’ordinateur sélectionne simplement celle qui se rapproche le plus de la moyenne.

Si vous y réfléchissez, il n’est pas évident qu’un ordinateur puisse faire la moyenne des couleurs. Vous pouvez mélanger du vert et du jaune et décider que le résultat ressemble au crayon vert printanier, mais comment apprendre à une machine à faire cela ? Examinons cette question un peu plus profondément. Cela vous aidera à comprendre comment les ordinateurs peuvent nous aider à mieux les instruire. De plus, ce sera notre entrée dans le monde passionnant de l’apprentissage automatique.

Il existe en fait de très nombreuses façons de faire la moyenne des couleurs. Une solution simple consiste à tirer parti du fait que chaque point de couleur dans un fichier image est stocké en fonction de la quantité de rouge, de vert et de bleu qu’il contient. Chaque couleur de composant est représentée par un nombre entier compris entre 0 et 255, 255 ayant été choisi car il s’agit de la plus grande valeur que vous puissiez créer avec huit chiffres binaires ou bits. L’utilisation de quantités de rouge-bleu-vert fonctionne bien car les récepteurs de couleurs de l’œil humain traduisent les couleurs du monde réel dans cette même représentation. Autrement dit, même si le violet correspond à une longueur d’onde spécifique de la lumière, nos yeux le voient comme un mélange particulier de vert, de bleu et de rouge. Montrez à quelqu’un le même mélange et il verra du violet. Donc, pour résumer un grand groupe de pixels, faites simplement la moyenne de la quantité de bleu dans ces pixels, de la quantité de rouge dans ces pixels et de la quantité de vert dans ces pixels. Cela fonctionne fondamentalement. Il s’avère que, pour une combinaison de raisons physiques, perceptuelles et techniques, vous obtenez de meilleurs résultats en mettant les valeurs au carré avant de faire la moyenne et en établissant la racine carrée des valeurs après la moyenne. Mais ce n’est pas important pour le moment. L’important est qu’il existe un moyen mécanique de faire la moyenne d’un groupe de points colorés pour obtenir un seul point dont la couleur résume le groupe.

Une fois cette couleur moyenne produite, l’ordinateur a besoin d’un moyen de trouver la couleur la plus proche des cartes dont nous disposons. Est-ce plutôt une terre de Sienne brûlée ou un rouge-orange ? Une manière typique (bien qu’imparfaite) d’évaluer la similitude de deux couleurs en utilisant leurs valeurs rouge-bleu-vert est ce qu’on appelle la formule de distance euclidienne. Voici à quoi cela ressemble en tant que séquence de commandes :

  • prendre la différence entre la quantité de rouge dans les deux couleurs

  • prendre la différence entre la quantité de bleu dans les deux couleurs

  • prenez la différence entre la quantité de vert dans les carrés des deux couleurs et additionnez les trois carrés ensemble

  • prends la racine carrée

Alors pour savoir quelle carte doit être tenue pour capturer au mieux la moyenne des couleurs dans la partie correspondante de l’image, il suffit de déterminer laquelle des couleurs disponibles (bleu, jaune vert, abricot, loup des bois, acajou, pervenche, etc. ) a la plus petite distance par rapport à cette couleur moyenne à cet endroit. C’est la couleur de la carte qui doit être donnée à la personne pixel assise à cet endroit de la grille.

La similitude entre ce calcul de distance et l’opération de moyenne des couleurs n’est, j’en suis presque sûr, qu’une coïncidence. Parfois, une racine carrée n’est qu’une racine carrée.

En prenant du recul, nous pouvons utiliser ces opérations – faire la moyenne des couleurs et trouver la couleur la plus proche de la moyenne – pour qu’un ordinateur nous aide à construire la séquence de commandes pour une cascade de cartes. L’ordinateur prend en entrée une image cible, un plan de salle et un ensemble de cartes de couleurs disponibles, puis crée une carte indiquant quelle carte doit être tenue dans chaque siège pour reproduire au mieux l’image. Dans cet exemple, l’ordinateur gère principalement la comptabilité et n’a pas grand-chose à faire en termes de prise de décision au-delà de la sélection de la couleur la plus proche. Mais le résultat ici est que l’ordinateur prend en charge une partie de l’effort d’écriture des séquences de commandes. Nous sommes passés de la nécessité de sélectionner chaque commande pour chaque pixel de personne à chaque instant de la cascade de cartes à la sélection d’images et à ce que l’ordinateur génère les commandes nécessaires.

Ce changement de perspective ouvre la possibilité de confier davantage de contrôle du processus de génération de séquences de commandes à la machine. En ce qui concerne notre grille 2 × 2 du chapitre 1, nous pouvons passer de dire (fournir des instructions explicites) à expliquer (fournir des incitations explicites). Par exemple, il existe une variante de ce problème de sélection des couleurs qui est beaucoup plus difficile et donne à l’ordinateur un travail plus intéressant à effectuer. Imaginez que nous puissions imprimer des cartes de n’importe quelle couleur dont nous avons besoin, mais notre imprimerie insiste pour que nous commandions les cartes en gros. Ils ne peuvent nous fournir que huit couleurs de cartes différentes, mais nous pouvons choisir toutes les couleurs que nous voulons pour composer ces huit. (Huit est le nombre de valeurs différentes que nous pouvons créer avec 3 bits — les bits apparaissent souvent en informatique.) Nous pourrions donc choisir le bleu, le vert, le bleu-vert, le bleu-violet, le céruléen, l’indigo, le bleu cadet et le bleu ciel. , et restituez une magnifique vague océanique en huit nuances de bleu. Super!

Mais alors il n’y aurait ni rouge ni jaune pour faire d’autres images. Limiter la palette de couleurs à huit peut sembler une contrainte bizarre, mais il s’avère que les premiers écrans d’ordinateur fonctionnaient exactement de cette manière. Ils pouvaient afficher n’importe laquelle des millions de couleurs, mais seulement huit couleurs distinctes sur l’écran à la fois.

Compte tenu de cette contrainte, le rendu d’une image dans des cartes colorées devient beaucoup plus délicat. Non seulement vous devez décider quelle couleur parmi notre ensemble d’options de couleurs pour créer chaque carte, comme auparavant, mais vous devez également choisir les huit couleurs qui constitueront cet ensemble d’options de couleurs. Si nous faisons une grimace, une variété de tons de peau sera bien plus utile que des distinctions entre les nuances de vert ou de bleu. Comment passer d’une liste de couleurs que nous souhaitons pouvoir utiliser parce qu’elles se trouvent dans l’image cible à la liste beaucoup plus courte de couleurs qui constitueront notre ensemble d’options de couleurs ?

L’apprentissage automatique, et plus particulièrement une approche connue sous le nom de clustering ou apprentissage non supervisé, peut résoudre ce problème de choix de couleurs pour nous. Je vais te dire comment. Mais examinons d’abord un problème connexe qui découle de la transformation d’un visage en puzzle. Comme dans l’exemple de la cascade de cartes, nous allons demander à l’ordinateur de concevoir une séquence de commandes pour restituer une image. Mais il y a un problème : les pièces du puzzle disponibles pour construire l’image sont fixées à l’avance. Semblable à l’exemple du pas de danse, il utilisera le même ensemble de commandes et considérera quelle séquence produit l’image souhaitée.

Source-145