Introduction à l'IA

Introduction à l'IA

mikaela.keller@univ-lille.fr

Qu'est-ce que l'intelligence artificielle

Au départ, c'est un domaine de recherche:

  • Conférence de Darmouth, 1956
  • Composing music with stochastic processes (1949), John Pierce et Betty Shannon

L'objectif de l'IA, c'est de modéliser l'intelligence pour la comprendre

Il y a plusieurs définitions:

  Comme un humain Rationnellement
Penser Sciences cognitives Logique
Agir Test de Turing (1950) Agent rationnel

Agir comme un humain : Test de Turing (Définition opérationnelle de l'intelligence)

Pour pouvoir répondre, l'ordinateur a besoin de :

  • TALN (NLP) : Traitement automatique du Langage Naturel
  • Représentation des connaissances pour stocker ce qu'il sait
  • Raisonnement automatisé : Répondre aux questions
  • Apprentissage automatique : pour s'adapteur aux nouvelles circonstances, détecter et extrapoler des tendances
  • Vision par ordinateur
  • Robotique

Limitation : L'humain n'est qu'un modèle d'intelligence. Pour construire des avions, pas besoin de système qui trompent même les oiseaux

Penser comme un humain

Aux débuts de l'IA, il y a deux objectifs :

  • Efficacité computationnelle
  • Plausibilité cognitive

=> Hybridation très fertile : Réseaux de neurones artificiels

Penser rationnellement

Les philosophes et les mathématiciens s'intéressent depuis longtemps aux "lois du raisonnement" : la logique. Une notation précise a été développée pour décrire toutes sortes d'énoncé et de relations entre des entités du monde.

Intelligence Artificielle Symbolique : solveurs logiques

Limitations : Toutes les connaissances ne sont pas évidentes à décrire de façon suffisament précise pour un système logique

Agir rationnellement

Tous les programmes font des choses, un agent rationnel peut potentioellement

  • Agir de manière autonome
  • En percevant son environnement
  • De facon à persister sur une longue période
  • Obtenir le meilleur résultat possible

Dans l'approche "lois du raisonnement", on cherche à avoir un inférence correcte qui permet une action performante. Parfois, on doit qunad-même prendre une décision sans inférence correcte. Certains comportements rationnels court-circuitent la délibération logique

Un agent perçoit son environnement, réalise des actions, mesure son succès par une mesure de performance et peut posséder une connaissance de son environnement.

Agent Mesure de Performance Environnement Levier d'action Senseurs
Taxi automatique Sécurité, rapidité, respect de la loi, maximise les profits Route, piétons, autres véhicules Volant, accélérateur, freins Caméra, GPS, sonar
Système d'analyse d'images satellites Bonne catégorie d'image Images satellites Afficher catégorie Tableau de pixels
Aspirateur simple Propreté, sécurité 2 pièces Gauche, Droite, Aspire Propre / sale

Algorithmes de graphes

Qu'est-ce qu'un graphe ?

Des réseaux un peu partout :

  • Réseaux ferroviaire
  • Réseaux social
  • Réseaux internet
  • Réseaux de neurones

Graphe : Abstraction d'un réseau

Un graphe \(G = (V, E) \) est défini par :

  • L'ensemble \(V\) de ses sommets (les noeuds)
  • L'ensemble E de ses arrêtes (les connexions)

\(G = \{1, 2, 3, 4, 5\}, \{\{1, 2\}, \{1, 3\}, \{2, 3\}, \{1, 5\}\}\)

Une matrice d'adjacence est une représentation de \(G\) par un tableau rempli de 0 et 1

  • Autour de lignes et de colonnes que de sommets dans \(V\)
  • Un 1 simple signifie qu'il y a un lien, un 0 non
\begin{pmatrix} 0 & 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 0 \end{pmatrix}

Il existe plusieurss types de graphes :

  • Graphe non dirigé :

    Un graphe est non dirigé si la relation entre les entités (càd les arêtes) est non directionnelle ou symmétrique. Une arête est un ensemble de deux éléments. L'ordre est arbitraire

  • Graphe dirigé : Un graphe est dirigé si la relation entre les entités est directionnelle. La notation est séquentielle : l'arête est un couple d'éléments ordonnés

Exemple : Le graphe \(V = \{1, 2, 3, 4, 5\}\), E = \(\{\left(1, 2\right) , \left(2, 1\right) , \left(3, 1\right) , \left(2, 3\right) , \left(1, 5\right) \}\)

graph-example-1.png

  • Graphe complet

    Un graphe est complet si chaque sommet est relié par une arête aux autres sommets Un sous graphe complet s'appelle aussi une clique

  • Graphe pondéré

    Un graphe est pondéré s'il y a des poinds associés à ses arêtes. On s'intéresse alors à sa matrice de pondération

\begin{pmatrix} 0 & 0.6 & 0.6 & 0.1 & 0.6 \\ 0.6 & 0 & 0.6 & 0.1 & 0.3 \\ 0.6 & 0.6 & 0 & 0.1 & 0.3 \\ 0.1 & 0.1 & 0.1 & 0 & 0.1 \\ 0.6 & 0.3 & 0.3 & 0.1 & 0 \end{pmatrix}
  • Graphe connexe

    Un graphe est connexe si pour chaque couple de sommets, il existe un Chemin qui les relie. S'il est non connexe, il est composé de plusieurs composantes connexes

Définitions

  • Le degré d'un graphe non dirigé d'un noeud est le nombre d'arêtes qui s'attachent à ce noeud.

Soit \( G = \left(V, E\right) , V = \{ x_1, \dots , x_{n} \} , |E| = m \) , on a :

\[ \sum_{i = 1}^{n}{\operatorname{degré}(x_{i})} = 2m \]

Soit \( G \) un graphe complet de \( n \) sommets. Alors :

\[ \sum_{i = 1}^{n}{\operatorname{degré} \left(x_{i}\right) = n \left(n-1\right) } \]

  • La densité d'un graphe \( G = \left(V, E\right) |V| = n, |E| =m \) est le rapport :

\[ \operatorname{densité} \left(G\right) = \frac{2m}{n \left(n-1\right) } \]

  • La distance entre deux sommets est la longueur du plus court chemin les reliant. S'il n'existe pas de chemin entre les deux sommets, la distance est considérée comme infinie
  • L'exentricité d'un sommet est la plus grande distance qui le sépare des autres sommets. Le diamètre d'un graphe correspond à la plus grande valeur d'exentricité des sommets du graphe. Le rayon d'un graphe est la plus petite valeur d'exentricité des sommets du graphe
  • La périphérie est l'ensemble des sommets dont l'exentricité est égale au diamètre
  • Le centre est l'ensembled des sommets dont l'exentricité est égale au rayon
  • La centralité de proximité. Soit \( G = \left(V, E\right) , x \in V, n = |V| \) , on a :

\[ \operatorname{C}(x) = \frac{n-1}{\sum_{y \in V}{d(x, y)}} \]

Si la distance moyenne est basse, la centralité est forte

  • La centralité d'intermédiarité. Soit \( G = \left(V, E\right) , x \in V \), on a :

\[ g(x) = \sum_{y \neq x; z \neq x}{\frac{\sigma_{yz}\left(x\right) }{\sigma_{yz}}} \]

où \( \sigma _{yz} \) est le nombre de plus court chemin entre \( y \) et \( z \) et \( \sigma _{yz}(x) \) est le nombre de plus court chemin entre \( y \) et \( z \) passsant par \( x \)

Chemin

Un chemin est une séquence d'arêtes reliant deux sommets. La longueur d'un chemin est définie par le nombre d'arêtes de la séquence.

image-graphe-2.svg

\( \left( \{ 1, 3 \} \right) , \left( \{ 1, 2 \} , \{ 2, 3 \} \right) \) sont deux chemins entre 1 et 3

Algorithmes de recherche

Soit \( G = \left(V, E, \gamma \right) \), avec \( \gamma : E \longmapsto ]0, +\infty [ \), \( \gamma \) est appelée la fonction de coût. Le coût d'un chemin \( a = \left(x_0, \dots , x_{k}\right) \) est la somme des coûts des arêtes de ce chemin :

\[ \gamma \left(a\right) = \sum_{i = 1}^{k}{\gamma \left(e_{i}\right) } \]

avec \( e_{i} \) l'arête entre \( x_{i-1} \) et \( x_{i} \). Pour tout \( x \in V \), le chemin \( c = \left(x\right) \) de longueur 0 à un coût nul. Le chemin minimul de \( x \in V \) à \( y \in V \) est un chemin de x à y tel que \( \gamma \left(a\right) \) soit minimum

\[ \gamma \left(a\right) = \min \{ \gamma \left(b\right) | b \text{ est un chemin de } x \text{ à } y \} \]

Soit \( V = \{ v_1, \dots , v_{n} \} \). La matrice des coûts \( C = \left(c_{ij}\right)_{1 \leq i \leq j \leq n} \) est définie par :

\[ c_{ij} = \begin{cases} 0 \text{ si } i = j \\ +\infty \text{ si } i \neq j \text{ et il n'y a pas d'arêtes entre } v_i \text{ et } v_j \\ \gamma \left(e_{ij}\right) \text{ avec } e_{ij} \in E, \text{ l'arête entre } v_i \text{ et } v_j \end{cases} \]

Soit \( M = \left(m_{ij}\right) \) la matrice des coûts minimums

\[ m_{ij} = \begin{cases} 0 \text{ si } j = i \\ +\infty \text{ s'il n' y a pas de chemin entre i et j} \\ \min \{ \gamma \left(c\right) | c \text{ un chemin entre } v_{i} \text{ et } v_{j} \} autrement \end{cases} \]

Si \( \gamma : E \longmapsto \{ 1 \} \), \( M \) est la matrice des distances. Trouver un chemin de coût minimum est un problème qui se formule en différentes variantes avec divers algorithmes pour les résoudre. Ces familles d'algo sont liés aux algos de parcours de graphes.

Variantes

  • Soit un cherche le chemin minimum entre \( x \) et \( y \)
  • Soit on cherche tous les chemins minimums partant d'un certain point
  • Soit un cherche tous les chemins minimums menant à \( y \)
  • Soit on cherche tous les chemins minimums entre toutes les paires de sommets
  • Soit on a des informations supplémentairessur le sommet cible à atteindre (informé)
  • Soit on n'a que le graphe comme information sur le sommet à atteindre (non informé)

Des questions fondamentales qui font qu'on va choisir un algorithme plutôt qu'un autre :

  • Complétude : est-ce que l'algorithme trouve une solution quand elle existe ?
  • Optimalité : Est-ce que l'algorihtme trouve la solution optimale ?
  • Complexité en temps et en espace

Algorithme de parcours de graphe

Soit \( G = \left(V, E\right) \) un graphe non orienté avec { γ : E \longmapsto { 1 } }. Soit \( S \in V \) le sommet initial. BFS (Breath-First Search). Chaque sommet \( x \) possède trois attributs :

  • color \( \in \{ \text{ blanc, gris, noir } \} \), avec blanc : inconnu, gris : atteint mais non développé, noir : développé
  • distance : c'est la distance à \( s \)
  • \( \pi \) : c'est le prédécesseur dans le chemin depuis \( s \)

BFS

BFS(G, s):
  Pour chaque i dans V \ {S}
    u.color = blanc
    u.d = +oo
    u.pi = NiL
  s.color = gris
  s.d = 0
  s.pi = NiL
  Q = Nouvelle File Vide
  Enfiler(Q, s)
  Tant que Q n'est pas vide
    u = Defile(Q)
    Pour chaque v adjacent à u
      Si v.color == blanc
        v.color = gris
        v.d = u.d + 1
        v.pi = u
        Enfiler(Q, v)
    u.color = noir

Le parcours en largeur est :

  • Complet
  • Optimal pour la longueur
  • Soit \( G \) un graphe uniforme de degré \( b \) et soit \( d \) la distance à laquelle se trouve le sommet cible \( b + b ^2 + b ^3 + \dots + b^{d} = O(b^{d} ) \). Même complexité en espace et en temps.

graphe3.svg

Voir une visualisation de BFS pour un exemple

Algorithme A*

On cherche un chemin minimim en \( x \) et \( y \). Soit \( f \) une fonction d'évaluation du sommet \( x \) : \( f(x) = g(x) + h(x) \), où \( g(x) = \) le coût du chemin jusqu'à \( x \) et \( h(x) \) est une heuristique sur le chemin jusqu'à \( y \). La frontière est modélisée par une file prioritaire.

Astar(G, s1, s2, h):
  for each u in G.V \ {s1}
    u.gscore = infty
    u.fscore = infty
    u.pi = nil
  s1.gscore = 0
  s1.fscore = h(s1)
  s1.pi = nil
  q = new file priorité
  enfile(q, s1)
  while q != vide:
    u = defile(q)
    if u == s2:
      break
    for each v in  G.adj[u]:
      gscore = u.gscore + G.gamma(u,v)
      if u.score < v.gscore:
        v.gscore = gscore
        v.fscore = gscore + h(v)
        v.pi = u
        if v not in q:
          enfiler(q,v)

La fonction h est l'heuristique utilisée. h devrait fournir une "estimation" du coût minimum pour atteidre ls sommet \( s_2 \) depuis \( v \). v.fscore = v.gscore + h(v)

  • Exemple

    Si on prend une grille, la fonction h pourrait être une distance, par exemple celle de Manhattan. h contrôle le comportement de \( A^{*} \)

    • Si h(v) = 0, \(\forall v \in V \implies A^{*} \) est équivalent à l'algorithme de Djikstra qui est garanti de trouver le chemin minimum.
    • Si h(v) \( < \gamma (a) \) avec a chemin minimum de v à \( s_2 \) , alors \(A^{*} \) trouve le chemin minimum. Plus h est petit, plus l'exploration est grande et plus lente la découverte du chemin minimum.
    • Si h(v) \( = \gamma (a) \) avec a un chemin minimum de \( v \) à \( s_2 \), alors \(A^{*} \) va uniquement explorer le chemin minimum de \( s_1 \) à \( s_2 \). Exécution optimale.

    Interro : Lundi 10h15-11h45 : Documents autorisés : Feuille A4 manuscrite

Created: 2026-02-09 lun. 10:54

Validate