Physique & Chimie au lycée

Cours de physique-chimie pour les classes de 1ère et Terminale

Sommaire
SP-1 ES-1
SP-T ES-T
3e SNT
Divers Annales
Contact

3.5 De l’informatique à l’intelligence artificielle

Jusqu’au début du XXe siècle, les machines traitant l’information sont limitées à une ou quelques tâches prédéterminées (tisser grâce à un ruban ou des cartes perforées, …). Turing a été le premier à proposer le concept de machine universelle qui a été matérialisé dix ans plus tard avec les premiers ordinateurs.

Ordinateur

  • Analyser des documents historiques relatifs au traitement de l’information et à son automatisation.
  • Recenser les différentes situations de la vie courante où sont utilisés les ordinateurs, identifier lesquels sont programmables et par qui (thermostat d'ambiance, smartphone, box internet, ordinateur de bord d'une voiture, …).

Ce qu’en dit Wikipédia

Un ordinateur est un système de traitement de l’information programmable qui fonctionne par la lecture séquentielle [c’est-à-dire dans un ordre défini] d’un ensemble d'instructions, organisées en programmes. Ces instructions lui font exécuter des opérations logiques et arithmétiques. Sa structure physique actuelle fait que toutes les opérations reposent sur la logique binaire et sur des nombres formés à partir de chiffres binaires.

Les données à manipuler sont acquises soit par la lecture de mémoires, soit en provenance de périphériques (souris, clavier, mesures physiques, lecteur de mémoire, carte réseau…). Une fois utilisés, ou manipulés, les résultats sont écrits soit dans des mémoires, soit dans des composants qui peuvent transformer une valeur binaire en une action physique (écriture sur une imprimante ou sur un moniteur, accélération ou freinage d'un véhicule, changement de température d'un four…).

Un ordinateur est constitué a minima d’un processeur, d’une mémoire vive et de périphériques d’entrée et de sortie (sans quoi il ne peut pas recevoir d’information et/ou ne peut rien en faire).

Exemples d’ordinateur

1. Donner des exemples d’ordinateurs utilisés dans la vie quotidienne, autres que les exemples évidents que sont les ordinateurs classique (PC…) et les téléphones portables.

2. Le thermostat d’une chaudière peut-il être considéré comme un ordinateur ? (Attention, la réponse attendue est : « ça dépend », à vous de développer de quoi ça dépend 😊)

3. Commenter cet extrait du programme officiel : « Recenser les différentes situations de la vie courante où sont utilisés les ordinateurs, identifier lesquels sont programmables (…) ».

Fichiers

  • Savoir distinguer les fichiers exécutables des autres fichiers sous un système d’exploitation donné.
  • Connaître l’ordre de grandeur de la taille d’un fichier image, son, vidéo.
  • Savoir calculer la taille en octets d’une page de texte (en ASCII et non compressé).

Bit & octet

Comme cela a été mentionné dans la citation de Wikipédia, les ordinateurs actuels ne sont capables de travailler, au niveau fondamental, qu’avec des 0 et des 1.

Un bit est l’unité élémentaire de mémoire et ne peut prendre que deux valeurs, 0 et 1.

Les bits (b) sont regroupés en octet (o) – ou byte (B) en anglais – qui est un groupe de 8 bits.

Un octet peut donc prendre 28 soit 256 valeurs différentes (de 0 à 255).

Ainsi, un nombre entier dont la valeur peut varier entre 0 et 255 nécessitera 1 octet pour être stocké.

Fichiers exécutables

Dans un ordinateur, l’information est stockée en mémoire sous forme de fichiers. Il faut bien distinguer, pour votre propre sécurité 🤓, les fichiers qui contiennent de l’information « simple », c’est-à-dire destinée uniquement à être lue et/ou modifiée sans affecter l’état de votre ordinateur – par exemple des images, du texte, et autres types de données – des fichiers qui contiennent des instructions exécutables par votre machine et capables de modifier son état (les fichiers .exe sous Windows, mais il n’y a pas qu’eux, loin s’en faut).

Fichiers de données

Les données les plus courantes, utilisées par tout un chacun, sont les textes, les images, les sons et les vidéos. Les descriptions qui suivent sont extrêmement succintes.

Texte

Un texte brut (c’est-à-dire non mis en forme) est une suite de caractères, et à chaque caractère est assigné un nombre selon un table de codage prédéfinie (il existe plein de standard de codage de caractères, mais petit-à-petit, malgré les efforts considérables de Microsoft et d’Apple pour freiner le processus de standardisation, un encodage est en train de s’imposer comme universel : l’utf-8).

L’ASCII (American Standard Code for Information Interchange) est un standard permettant d’encoder des caractères sur 7 bits (soit 128 caractères possibles – incluant certains caractères spéciaux et certains caractères de ponctuation).
Ce système n’est plus utilisé car il ne permet pas d’encoder les caractères accentués – on ne peut écrire correctement qu’en anglais, mais venant des États-Uniens, on n’en attendait pas moins 😊.
Cependant de nombreux systèmes d’encodage de caractères en 8 bits (256 caractères possibles) partagent les mêmes 128 premiers caractères de l’ASCII.

Retenez que, en général, un caractère est stocké sur un octet et donc qu’un texte brut (non formaté) aura une taille d’un octet par caractère (retour à la ligne compris).

Son

Le stockage numérique d’un son se fait par une mesure du signal électrique généré par le micro à intervalle de temps très petit (44100 fois par seconde est une valeur standard). Chaque mesure correspond à un nombre qui est ensuite transformé en nombre binaire.

Numérisation d’un signal sonore

Le stockage d’un fichier son se fait, en général, sous forme compressée. L’ensemble des mesures correspondant au fichier son sont transformées par un algorithme qui réduit leur taille, soit en perdant un peu de qualité de son (compression destructive – exemple : mp3) soit sans perte (compression sans perte – exempe : flac).
Ceci permet de réduire sensiblement la taille du fichier (typiquement d’un facteur 3 à 5 pour le mp3, ou d’un facteur 2 pour le flac).

Image

Une image est découpé en pixels (picture element)*. À chaque pixel est associé un niveau de rouge, un niveau de vert et un niveau de bleu (les trois couleurs primaires de la synthèse additive permettant, par leur combinaison, de recréer toutes les couleurs). Chaque niveau est stocké (en général) sur un octet, et peut donc prendre 256 valeurs. Donc un pixel d’une image en couleur non compressée nécessite 3 octets pour être stocké.

Comme pour le son, le stockage d’une image ne se fait quasiment jamais en format non compressée. Il existe des formats de compression destructif – de l’information va être perdue (exemple : jpg) – et des formats non destructifs – sans perte (exemple : png).

Une toute petite image compte environ 40.000 pixels, alors qu’une image issue d’un appareil photo professionnel en compte plus de 50 millions.

*Il existe une autre manière de coder une image, qui consiste à décrire mathématiquement les formes présentes. Ce sont les images vectorielles, utilisées lorsqu’on souhaite faire des graphiques, logos, schéma, etc. Cette méthode n’est pas adaptée pour des photos.

Vidéo

Si vous avez compris comment on code le son et l’image, je crois que vous pouvez deviner seul comment on code une vidéo… 😊

Taille des différents type de données

Il faut connaître quelques ordres de grandeurs de la taille de ces fichiers.

Type de fichiers Taille (ordre de grandeur)
Image 10 ko – 10 Mo
Son (mp3) 1 à 2 Mo par minute
Vidéo basse résolution 10 à 15 Mo par minute
Vidéo full HD (h.264) 30 à 50 Mo par minute
1 page de texte (~ 2500 caractères) 2,5 ko

Bien entendu, ces tailles peuvent être très variables en fonction du format de fichier et du type de compression choisi. Mais si un site vous propose de télécharger la dernière saison de votre série préférée et vous annonce une taille de fichier de 50 Mo, méfiez-vous…

Programmes & bugs

  • Étant donné un programme très simple, proposer des jeux de données d’entrée permettant d’en tester toutes les lignes.
  • Corriger un algorithme ou un programme buggé simple.

Un programme peut comporter jusqu’à plusieurs centaines de millions de lignes de code, ce qui rend très probable la présence d’erreurs appelées bugs (ou bogues – terme recommandé par la Délégation générale à la langue française et aux langues de France – mais ce mot, tant à l’écrit qu’à l’oral, est laid et je ne l’emploierai pas). Ces erreurs peuvent conduire un programme à avoir un comportement inattendu et entraîner des conséquences graves.

Voici quelques extraits de l’article de Wikipédia sur les bugs informatiques

Ce qu’en dit Wikipédia

En informatique, un bug est un défaut de conception d’un programme informatique à l'origine d'un dysfonctionnement.

Les bugs peuvent amener les logiciels à tenter d’effectuer des opérations impossibles à réaliser (exceptions) : division par zéro, recherche d'informations inexistantes. Ces opérations - qui ne sont jamais utilisées lors de fonctionnement correct du logiciel - déclenchent un mécanisme à la fois matériel et logiciel qui met alors hors service le logiciel défaillant, ce qui provoque un crash informatique ou un déni de service.

Un des bugs les plus chers de l’Histoire

L'échec du vol inaugural de la fusée Ariane 5 en 1996 a pour origine un défaut dans les appareils d'avionique de la fusée, appareils utilisés avec succès pendant plusieurs années sur la fusée Ariane 4. Lors du décollage, l’accélération d’Ariane 5, 5 fois plus fortes que celles d'Ariane 4, généra une valeur dépassant les limites prévues par le logiciel, ce qui a provoqué le plantage de l’ordinateur qui calculait la position de la fusée en fonction de son accélération. Aveuglé, le pilote automatique perdit le contrôle de la fusée, et un dispositif de sécurité provoqua son autodestruction quelques secondes après le décollage. 💸

Le débugage d’un logiciel consiste à analyser son fonctionnement dans un grand nombre de situations. Pour faciliter ce processus, les logiciels sont conçus à partir de fonctions plus ou moins indépendantes, chaque fonction pouvant être testée séparément.

Il y a des bugs bien plus complexes qu’une faute de frappe dans un code ! 😅 Un logiciel peut ne pas planter mais ne pas faire exactement ce qui lui est démandé. En langage de programmation de bas niveau, ces erreurs peuvent être extrêmement difficiles à déceler (se jouant, par exemple, au niveau de l’allocation mémoire, du processeur, etc.).

Correction de bugs

Voici quelques lignes de codes dont l’objectif est de déterminer si une année A donnée est bissextile ou non.

Une année est bissextile si elle est multiple de 4, mais pas multiple de 100, sauf si elle est également multiple de 400.

Bien entendu, il est buggé ! 😊


			A = 2020

			if A%4 == 0 :	# si le reste de la division A÷4 vaut 0
				bissextile = True
			elif A%100 == 0 :
				bissextile = False
			elif A%400 == 0 :
				bissextile = True

			if bissextile :
				print ("L’année", A, "est bissextile")
			else :
				print ("L’année", A, "n’est pas bissextile")
		

1. Proposez quelques valeurs d’années permettant de tester le bon fonctionnement du logiciel.

2. Corriger le ou les bugs trouvés.

Intelligence artificielle

  • Analyser des documents relatifs à une application de l’intelligence artificielle.
  • Utiliser une courbe de tendance (encore appelée courbe de régression) pour estimer une valeur inconnue à partir de données d’entraînement.

Mais qu’est-ce que c’est ?

L’intelligence artificielle est un terme employé à tort et à travers, souvent pas des personnes ne sachant qu’approximativement de quoi elles parlent.
Et pour cause… le concept est plutôt nébuleux. 😏

Voici quelques extraits de l’article de Wikipédia sur ce sujet.

Définition

L'intelligence artificielle (IA) est « l’ensemble des théories et des techniques mises en œuvre en vue de réaliser des machines capables de simuler l’intelligence humaine »

Elle correspond donc à un ensemble de concepts et de technologies plus qu'à une discipline autonome. Certaines instances, notamment la CNIL (Commission Nationale Informatique et Libertés), relevant le peu de précision dans la définition de l'IA, introduisent ce sujet comme « le grand mythe de notre temps ».

Le terme « intelligence artificielle » est défini par l’un de ses créateurs, Marvin Lee Minsky, comme « la construction de programmes informatiques qui s’adonnent à des tâches qui sont, pour l’instant, accomplies de façon plus satisfaisante par des êtres humains car elles demandent des processus mentaux de haut niveau tels que : l’apprentissage perceptuel, l’organisation de la mémoire et le raisonnement critique »

Intelligence artificielle forte

Ce concept fait référence à une machine capable non seulement de produire un comportement intelligent, notamment de modéliser des idées abstraites, mais aussi d’éprouver une impression d'une réelle conscience, de « vrais sentiments » (quoi qu’on puisse mettre derrière ces mots), et « une compréhension de ses propres raisonnements ». De telles machines n’existent pas (encore ?).

Intelligence artificielle faible

Cette notion constitue une approche pragmatique d’ingénieur : chercher à construire des systèmes de plus en plus autonomes (pour réduire le coût de leur supervision), des algorithmes capables de résoudre des problèmes d’une certaine classe, etc. Mais, cette fois, la machine ne fait que simuler l'intelligence.

Il faut également distinguer plusieurs termes qui sont parfois confondus :

  • L'apprentissage profond (deep learning) est un ensemble de méthodes d'apprentissage automatique tentant de modéliser avec un haut niveau d’abstraction des données. La machine détermine elle-même quelles sont les critères de modélisation.
  • L'apprentissage automatique (machine learning) est un champ d'étude de l'intelligence artificielle qui se fonde sur des approches mathématiques et statistiques pour donner aux ordinateurs la capacité d'« apprendre » à partir de données, c'est-à-dire d'améliorer leurs performances à résoudre des tâches sans être explicitement programmés pour chacune.
Positionnement des notions d'IA, de machine learning et deep learning imbriquées les unes aux autres (Wikipédia)

Apprentissage automatique

Pour réaliser un apprentissage automatique, il faut fournir à l’ordinateur une grande quantité de données représentatives et de qualité.

Pour entraîner une IA à reconnaître des visages sur des photos, il faut lui fournir une grande quantité de photos et lui indiquer s’il y a des visages et où ils se trouvent le cas échéant.

En utilisation des corrélations de données, les algorithmes vont déterminer d’eux-même quels sont les critères à retenir pour déterminer l’existence et la position d’un visage sur une photo.

Deux grandeurs sont corrélées s’il existe un lien entre elle

Déterminer ces critères dans un algorithme direct seraient très complexes.

La machine pourra par la suite détecter les visages dans une photo, mais jamais avec un taux de réussite de 100 %.

Correlations de données

Vous êtes un algoritme de machine learning (allez, un peu d’imagination 😊). On vous alimente avec des données. Une des étapes de votre apprentissage consiste à repérer les données corrélées et à trouver la relation mathématique qui les lient.

C’est ce que vous allez faire dans cet exercice, en utilisant les données regroupées dans ce fichier CSV concernant 4 grandeurs $*a*$, $*b*$, $*c*$ et $*d*$ (peu importe ce qu’elles représentent – de toute façon vous n’êtes pas capable de les comprendre 😁).

Utiliser des prédictions d’une IA

  • À partir de données, par exemple issues d’un diagnostic médical fondé sur un test, produire un tableau de contingence afin de calculer des fréquences de faux positifs, faux négatifs, vrais positifs, vrais négatifs. En déduire le nombre de personnes malades suivant leur résultat au test.

Lorsqu’une « prédiction » est réalisée à partir de données, ou plus simplement lorsqu’un test est réalisé, il est fréquent que cette prédiction ne soit pas fiable à 100 %.

Lorsqu’un test (au sens large) est réalisé, il y a quatre cas de figure :

  • Le résultat du test est positif et ce résultat correspond bien à la réalité.
  • Le résultat du test est positif mais il est erroné (faux positif).
  • Le résultat du test est négatif et ce résultat correspond à la réalité.
  • Le résultat du test est négatif mais il est erroné (faux négatif).

La fiabilité d’un test est sa probabilité de détecter un cas positif. Par exemple, un test COVID fiable à 99 % signifie que si une personne qui a le COVID se fait tester, le résultat du test a 99 % de chance d’être positif (le 1 % restant correspond aux faux négatif).

La spécificité d’un test est sa probabilité de ne pas être positif lorsque il devrait être négatif. Par exemple, un test COVID spécifique à 95 % signifie que si une personne qui n’a pas le COVID se fait tester, le résultat du test a 95 % de chance d’être négatif (les 5 % restant correspondent aux faux positifs).

Différents résultats possible d’un test

Les résultats d’une série de tests peuvent être notés dans un tableau de contingence qui permettent d’estimer la fiabilité et la spécifité du test.

Détection de spam

De nombreux fournisseurs de boîtes mails appliquent un algorithme de détection de spam pour classer automatiquement les mails reçus dans un dossier spam s’ils sont considérés comme tel.

Un test est donc appliqué à chaque message, le résultat du test étant spam ou courrier légitime

Bien-sûr, ce test n’est pas infaillible et il arrive qu’un message spam ne soit pas détecté comme tel, et inversement, il arrive que qu’un message légitime soit considéré comme du spam.

Il est possible pour l’utilisateur de corriger le résultat des tests de l’algorithme.

Voici des données concernant un échantillon de 1000 messages : 128 d’entre eux ont été considérés comme du spam, parmi lesquels 12 étaient en fait des message légitimes.
Parmi les 872 messages détectés comme légitimes, 65 étaient en fait du spam.

1. Résumer ces résultats dans le tableau de contingence ci-dessous.

détectés comme spam détectés comme légitime
messages spam
messages légitimes

2. Calculer la fiabilité et la spécificité de cet algorithme

3. Dans un échantillon de 1500 messages, l’algorithme détecte 80 spams. Donner une estimation du nombre réel de spam dans cet échantillon. Si vous trouvez les calculs trop compliqués, vous pouvez prendre une spécificité de 100 % 😊

Il est parfois nécessaire de prioriser la fiabilité sur la spécificité ou inversement.

4. Qu’en est-il pour un algorithme de détection des spams ? Et pour un algorithme de détection de mélanome malin à partir de photo ?