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
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) \}\)
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
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.
\( \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.
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
hpourrait être une distance, par exemple celle de Manhattan.hcontrô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) \) avecachemin minimum devà \( s_2 \) , alors \(A^{*} \) trouve le chemin minimum. Plushest 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
- Si