CSI 4506 - Automne 2024
Version: sept. 30, 2024 08h54
Nous constituons une équipe restreinte et exceptionnelle des meilleurs ingénieurs et chercheurs du monde, dédiée exclusivement à se concentrer sur SSI (safe superintelligence) et rien d’autre.
(traduction GPT-4o)
Comprendre l’histoire de l’intelligence artificielle est crucial, surtout maintenant que nous nous trouvons au sommet de l’enthousiasme spéculatif, avec des affirmations répandues selon lesquelles l’ère de l’intelligence artificielle générale est imminente.
Reconnaitre les contributions d’autres disciplines à l’IA.
Situer l’IA actuelle dans son contexte historique.
Introduire certains des outils, notamment les Jupyter Notebooks.
Aristote (384-322 av. J.-C.) a établi plusieurs concepts fondamentaux pour l’IA, y compris un système informel de syllogismes qui facilite le raisonnement en dérivant mécaniquement des conclusions à partir de prémisses données.
L’utilitarisme est une théorie éthique qui met l’accent sur le plus grand bien pour le plus grand nombre.
George Boole (1815–1864) est crédité de la mathématisation de la logique grâce au développement de la logique propositionnelle, également appelée logique booléenne.
Gottlob Frege (1848–1925) a étendu le cadre logique de Boole en incorporant des objets et des relations, développant ainsi ce qui est aujourd’hui connu sous le nom de logique du premier ordre.
Les contributions de Kurt Gödel (1906–1978), Alonzo Church (1903–1995) et Alan Turing (1912–1954), entre autres, ont été déterminantes dans la formation du concept moderne de computation.
Gerolamo Cardano (1501–1576) a initialement conceptualisé la probabilité à travers les résultats des jeux de hasard.
Blaise Pascal (1623–1662) a exposé en 1654 des méthodes pour calculer des prédictions et des gains moyens dans des jeux de hasard inachevés, en correspondance avec Pierre Fermat (1601–1665).
Thomas Bayes (1702–1761) a introduit une méthode pour réviser ses croyances avec de nouvelles informations, connue sous le nom de règle de Bayes, essentielle pour les applications en IA.
Les algorithmes complexes trouvent leur origine avec Euclide autour de 300 av. J.-C., tandis que le terme « algorithme » lui-même est dérivé des travaux de Muhammad ibn Musa al-Khwarizmi au IXe siècle.
La thèse de Church-Turing postule que toute computation pouvant être effectuée par un processus mécanique peut être calculée par une machine de Turing, équivalant essentiellement le concept de computation algorithmique aux capacités des machines de Turing (Church 1936; Alan M. Turing 1936).
Le concept de NP-complétude, introduit par Cook et développé par Karp, établit un cadre pour évaluer la tractabilité des problèmes de computation (Cook 1971; Karp 1972).
Aujourd’hui, il est universellement reconnu que les fonctions cognitives émergent des activités électrochimiques au sein de structures cérébrales, illustrant comment des assemblages de cellules simples peuvent donner naissance à la pensée, à l’action et à la conscience.
“De tous les animaux, l’homme a le plus grand cerveau proportionnellement à sa taille.” Aristote, 335 av. J.-C..
Les recherches de Paul Broca en 1861 ont marqué le début de la compréhension de l’organisation fonctionnelle du cerveau, notamment en identifiant le rôle de l’hémisphère gauche dans la production de la parole.
Des études collaboratives à grande échelle nous ont fourni des données étendues sur l’anatomie, les types de cellules, la connectivité et les profils d’expression génétique du cerveau (Maroso 2023; Conroy 2023).
Superordinateur | Ordinateur personnel | Cerveau humain | |
---|---|---|---|
Unités de calcul | \(10^6\) cœurs CPU+GPU | 8 cœurs CPU | \(10^6\) colonnes |
\(10^{15}\) transistors | \(10^{15}\) transistors | \(10^{11}\) neurones | |
\(10^{14}\) synapses | |||
Temps de cycle | \(10^{-9}\) sec | \(10^{-9}\) sec | \(10^{-3}\) sec |
Opérations/sec | \(10^{18}\) | \(10^{10}\) | \(10^{17}\) |
Si l’organisme porte dans sa tête un « modèle à petite échelle » de la réalité extérieure et de ses propres actions possibles, il est capable d’essayer diverses alternatives, de conclure laquelle est la meilleure, de réagir aux situations futures avant qu’elles ne se produisent, d’utiliser la connaissance des événements passés pour faire face au présent et à l’avenir, et de réagir de manière beaucoup plus complète, plus sûre et plus compétente aux urgences qui se présentent à lui.
La psychologie cognitive conceptualise le cerveau comme un dispositif de traitement de l’information.
Les agents basés sur la connaissance sont conceptualisés comme recevant des entrées (percepts) de leur environnement, ayant un état interne et produisant des actions (sorties).
La même année que le terme « intelligence artificielle » a été introduit, les sciences cognitives ont émergé en tant que discipline.
Atelier du MIT en 1956 :
Trois articles fondamentaux ont démontré comment les modèles informatiques peuvent être appliqués à la psychologie de la mémoire, au langage et au raisonnement logique.
1943–1974
Le Test de Turing est une mesure de la capacité d’une machine à exhiber un comportement intelligent indiscernable de celui d’un humain.
Si un évaluateur humain ne peut pas distinguer de manière fiable entre une machine et un humain uniquement sur la base de leurs réponses à des questions, on dit que la machine a passé le test.
Il est probable que le Test de Turing devienne une autre victime de nos conceptions changeantes de l’intelligence. En 1950, Turing avait intuité que la capacité de mener une conversation semblable à celle des humains devait être une preuve irréfutable de “pensée” et de tout ce qui l’accompagne. Cette intuition est encore forte aujourd’hui. Mais peut-être ce que nous avons appris d’ELIZA et d’Eugene Goostman, et ce que nous pourrions encore apprendre de ChatGPT et de ses semblables, est que la capacité à parler couramment en langage naturel, comme jouer aux échecs, n’est pas une preuve concluante d’intelligence générale.
Warren S. McCulloch & Walter Pitts 1943
Logique propositionnelle et événements neuronaux : La nature “tout ou rien” de l’activité nerveuse permet de traiter les événements neuronaux et leurs relations en utilisant la logique propositionnelle.
Implications pour la psychologie et la neurophysiologie : La théorie fournit un cadre rigoureux pour comprendre les activités mentales en termes de neurophysiologie, offrant des aperçus sur les relations causales et la construction de réseaux neuronaux hypothétiques.
Apprentissage : nous considérons \((\ldots)\) l’apprentissage comme un changement durable qui peut survivre au sommeil, à l’anesthésie, aux convulsions et au coma.
En 1949, Donald Hebb a introduit une règle de mise à jour simple pour ajuster les forces de connexion entre les neurones.
L’apprentissage hebbien est un mécanisme d’apprentissage dans lequel la force synaptique entre deux neurones est augmentée s’ils sont activés simultanément. Ce principe est souvent résumé par “les cellules qui s’activent ensemble, se connectent ensemble”, et il forme la base pour comprendre comment les connexions neuronales sont renforcées par l’expérience.
En 1950, alors qu’il était étudiant de premier cycle à Harvard, Marvin Minsky, en collaboration avec Dean Edmonds, a construit le premier ordinateur de réseau neuronal artificiel, qui simulait la fonctionnalité de 40 neurones.
En 1954, pour sa thèse de doctorat en mathématiques à l’Université de Princeton, Minsky a mené une enquête approfondie sur le principe de la computation universelle au sein des réseaux neuronaux.
Projet de recherche d’été Dartmouth sur l’intelligence artificielle
Nous proposons qu’une étude de 2 mois, 10 personnes sur l’intelligence artificielle soit réalisée durant l’été 1956 au Dartmouth College à Hanover, New Hampshire. L’étude doit se dérouler sur la base de la conjecture que chaque aspect de l’apprentissage ou toute autre caractéristique de l’intelligence peut en principe être décrit de manière si précise qu’une machine peut être conçue pour la simuler. Une tentative sera faite pour trouver comment faire en sorte que les machines utilisent le langage, forment des abstractions et des concepts, résolvent des types de problèmes actuellement réservés aux humains, et s’améliorent elles-mêmes. Nous pensons qu’une avancée significative peut être réalisée dans un ou plusieurs de ces problèmes si un groupe soigneusement sélectionné de scientifiques y travaille ensemble pendant un été.
Russell et Norvig (2020)
Newell et Simon ont présenté peut-être le travail le plus mature, un système de démonstration de théorèmes mathématiques appelé Logic Theorist (LT). Simon a affirmé : ‘Nous avons inventé un programme informatique capable de penser de manière non numérique, et résolvant ainsi le vénérable problème corps-esprit.’
Le travail d’Arthur Samuel sur l’apprentissage automatique utilisant le jeu de dames a eu un impact profond sur le domaine de l’intelligence artificielle (IA) et l’informatique en général.
L’un des premiers exemples d’un système d’IA auto-améliorant.
Ses contributions ont aidé à établir l’apprentissage automatique comme un sous-domaine crucial de l’IA.
Samuel définit l’apprentissage automatique comme un “domaine d’étude qui donne aux ordinateurs la capacité d’apprendre sans être explicitement programmés”.
Précurseur de l’apprentissage par renforcement et AlphaGo.
16 000 instructions par seconde
8,75 kilo-octets de mémoire
1957 Herbert Simon
Je ne vise pas à vous surprendre ou à vous choquer - mais la manière la plus simple de résumer est de dire que il existe maintenant dans le monde des machines qui pensent, qui apprennent et qui créent. De plus, leur capacité à faire ces choses va augmenter rapidement jusqu’à ce que - dans un futur visible - la gamme de problèmes qu’elles peuvent traiter soit coextensive avec la gamme à laquelle l’esprit humain a été appliqué.
1958, New York Times, 8 juillet
La Marine a révélé aujourd’hui l’embryon d’un ordinateur électronique qui, selon elle, sera capable de marcher, parler, voir, écrire, se reproduire, et être conscient de son existence.
1965 Herbert Simon (Mitchell 2019)
(\(\ldots\)) les machines seront capables, dans les 20 ans, de faire n’importe quel travail qu’un homme peut faire.
1966 Marvin Minsky (Mitchell 2019)
(\(\ldots\)) dans lequel ils assigneraient à des étudiants de premier cycle le travail sur “la construction d’une partie significative d’un système visuel”. Dans les mots d’un historien de l’IA, “Minsky a embauché un étudiant de première année et lui a assigné un problème à résoudre pendant l’été : connecter une caméra de télévision à un ordinateur et faire en sorte que la machine décrive ce qu’elle voit.”
1967 Marvin Minsky (Strickland 2021)
D’ici une génération\(\ldots\) le problème de créer une ‘intelligence artificielle’ sera substantiellement résolu.
1974–1980
En 1976, Newell et Simon, les auteurs de Logic Theorist (LT), créent le General Problem Solver (GPS) destiné à imiter la manière dont les humains résolvent les problèmes.
Allen Newell et Simon (1976)
un système de symboles physiques a les moyens nécessaires et suffisants pour une action intelligente générale.
Les financements se sont taris.
Russell et Norvig (2020)
L’incapacité à faire face à l’“explosion combinatoire” était l’une des principales critiques de l’IA contenues dans le rapport Lighthill (Lighthill, 1973), qui a servi de base à la décision du gouvernement britannique de mettre fin au soutien à la recherche en IA dans toutes les universités sauf deux.
Limites fondamentales : ce qui pouvait être représenté. Données linéairement séparables, par exemple.
1980–1987
Les systèmes experts sont des programmes qui imitent les capacités de prise de décision d’un expert humain en utilisant une base de connaissances et des règles d’inférence (généralement des règles si-alors) pour résoudre des problèmes complexes dans un domaine spécifique.
Règle 1 :
SI le patient a de la fièvre ET le patient a mal à la gorge,
ALORS envisager la possibilité d’une infection streptococcique.
Règle 2 :
SI le patient a une éruption cutanée ET le patient a été récemment dans une zone boisée,
ALORS envisager la possibilité de la maladie de Lyme.
Règle 3 :
SI le patient ressent une douleur thoracique ET le patient a des antécédents de maladies cardiaques,
ALORS envisager la possibilité d’un infarctus du myocarde (crise cardiaque).
1987–1993
Strickland (2021)
Dans les années 1990, il n’était plus à la mode sur le plan académique de travailler sur l’IA symbolique ou les réseaux neuronaux, car les deux stratégies semblaient avoir échoué.
1993–2011
Une Machine à Vecteurs de Support (SVM) est un algorithme d’apprentissage supervisé.
Elle fonctionne en identifiant l’hyperplan optimal qui sépare les données en classes distinctes dans un espace de haute dimension.
Basée sur le cadre théorique robuste de la théorie de Vapnik-Chervonenkis (VC).
Influente et dominante pendant les années 1990 et 2000.
2011–
En 2012, AlexNet, une architecture de réseau neuronal convolutif (CNN) inspirée par les travaux de Yann LeCun, remporte le ImageNet Large Scale Visual Recognition Challenge.
Cela a marqué un moment pivot dans le domaine, car par la suite, toutes les entrées principales de la compétition ont été fondées sur des méthodologies d’apprentissage profond.
Voir aussi :
La maîtrise de Python est attendue.
Pour ceux qui ont besoin d’une remise à niveau, le tutoriel officiel sur Python.org est un bon point de départ.
Améliorez simultanément vos compétences en créant un Jupyter Notebook qui intègre des exemples et des notes du tutoriel.
Autres ressources :
Un notebook est un document partageable qui combine code informatique, descriptions en langage clair, données, visualisations riches comme des modèles 3D, tableaux, graphes et figures, et contrôles interactifs. Un notebook, avec un éditeur (comme JupyterLab), fournit un environnement interactif rapide pour prototyper et expliquer du code, explorer et visualiser des données, et partager des idées avec d’autres.
En supposant que le notebook est dans le répertoire courant, exécutez la commande suivante depuis le terminal.
De même, pour créer un nouveau notebook à partir de zéro,
Facilité d’utilisation : L’interface est intuitive et propice à l’analyse exploratoire.
Visualisation : La capacité d’intégrer des visualisations riches et interactives directement dans le notebook améliore son utilité pour l’analyse et la présentation des données.
Reproductibilité : Les Jupyter Notebooks sont devenus la norme de facto dans de nombreux domaines pour démontrer les fonctionnalités du code et garantir la reproductibilité.
Par défaut, les Jupyter Notebooks stockent les sorties des cellules de code, y compris les objets multimédias.
Les Jupyter Notebooks sont des documents JSON, et les images qu’ils contiennent sont encodées au format PNG base64.
Cet encodage peut entraîner plusieurs problèmes lors de l’utilisation des systèmes de contrôle de version, tels que GitHub.
Taille de fichier importante : Les Jupyter Notebooks peuvent devenir assez volumineux en raison des images et des sorties intégrées, entraînant des temps de téléchargement prolongés et des contraintes de stockage potentielles.
Incompatibilité avec le contrôle de version basé sur le texte : GitHub est optimisé pour les fichiers basés sur du texte, et l’inclusion de données binaires, telles que des images, complique le processus de suivi des modifications et de résolution des conflits. Les opérations traditionnelles de diff et de fusion ne sont pas bien adaptées pour gérer ces formats binaires.
Dans JupyterLab ou Notebook, Edit \(\rightarrow\) Clear Outputs of All Cells, puis sauvegardez.
En ligne de commande, utilisez jupyter nbconvert --clear-output
ou
jupyter nbconvert 04_stock_price.ipynb --to notebook --ClearOutputPreprocessor.enabled=True --output 04_stock_price_clear
nbdime
, spécialisé pour les Jupyter Notebooks.Ces instructions utilisent pip
, l’outil d’installation recommandé pour Python.
La première étape est de vérifier que vous disposez d’une installation Python fonctionnelle avec pip installé.
Installer JupyterLab
avec pip
:
Une fois installé, lancez JupyterLab
avec
Lancer 03_get_youtube_transcript
sur Colab.
04_stock_price
Lancer 04_stock_price
sur Colab.
05_central_limit
Lancer 05_central_limit
sur Colab.
Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow (Géron 2022) offre des exemples pratiques et utilise des bibliothèques Python prêtes pour la production.
La couverture complète inclut non seulement les modèles, mais aussi les bibliothèques pour le réglage des hyperparamètres, le prétraitement des données et la visualisation.
Exemples de code et solutions aux exercices disponibles sous forme de Jupyter Notebooks sur GitHub.
Aurélien Géron est un ancien chef de produit chez YouTube, où il a dirigé la classification vidéo pour la recherche et la découverte.
Important
N’essayez pas d’installer ces outils à moins d’être sûr de vos compétences techniques. Une installation incorrecte pourrait entraîner une perte de temps considérable ou même rendre votre environnement inutilisable. Il n’y a rien de mal à utiliser pip
ou Google Colab pour vos travaux de cours. Vous pourrez développer ces compétences d’installation plus tard sans impacter vos notes.
La gestion des dépendances des packages peut être complexe.
Différents projets peuvent nécessiter différentes versions des mêmes bibliothèques.
conda
, facilitent la création d’environnements virtuels adaptés à des projets spécifiques.Anaconda est une plateforme complète de gestion des packages pour Python et R. Elle utilise Conda pour gérer les packages, les dépendances et les environnements.
Anaconda est avantageux car il est livré pré-installé avec plus de 250 packages populaires, offrant ainsi un point de départ robuste pour les utilisateurs.
Cependant, cette distribution étendue entraîne une taille de fichier importante, ce qui peut être un inconvénient.
De plus, puisque Anaconda repose sur conda
, il hérite également des limitations et des problèmes associés à conda
(voir les diapositives suivantes).
Miniconda est une version minimale d’Anaconda qui inclut uniquement conda
, Python, leurs dépendances et une petite sélection de packages essentiels.
Conda est un système de gestion des packages et des environnements open-source pour Python et R. Il facilite l’installation et la gestion des packages logiciels et la création d’environnements virtuels isolés.
Des conflits de dépendances conflicts dus à des interdépendances complexes de packages peuvent obliger l’utilisateur à réinstaller Anaconda/Conda.
Encombré par des exigences de stockage importantes et des problèmes de performance lors de la résolution des packages.
Mamba est une réimplémentation du gestionnaire de packages conda
en C++.
Il est nettement plus rapide que conda
.
Il consomme moins de ressources informatiques.
Il fournit des messages d’erreur plus clairs et plus informatifs.
Il est entièrement compatible avec conda
, ce qui en fait un remplacement viable.
Micromamba est un exécutable entièrement lié de manière statique et autonome. Son environnement de base vide garantit que la base n’est jamais corrompue, éliminant ainsi le besoin de réinstallation.
Marcel Turcotte
École de science informatique et de génie électrique (SIGE)
Université d’Ottawa