Cours L'IA Python 2022
Cours L'IA Python 2022
ARTIFICIELLE
&
PYTHON
KASSID Asmaa
DÉFINITON DE L’IA
Intelligence Artificielle : Le concept de l'intelligence artificielle
(IA) est de faire penser les machines « comme des humains » ;
en d'autres termes, effectuer des tâches telles que raisonner,
planifier, apprendre et comprendre notre langage.
Par exemple
un ordinateur, un smartphone ou tout autre objet connecté utilise déjà l'IA pour
se faciliter la vie :
Facebook suggère des identifications dans les photos à l'aide de la
reconnaissance d'image
Amazon recommande des produits en utilisant des algorithmes
d'apprentissage automatique
Waze suggère des itinéraires en utilisant une combinaison de modèles
prédictifs, de prévisions de circulation et de techniques d'optimisation
L’APPRENTISSAGE AUTOMATIQUE : MACHINE
LEARNING
L'apprentissage automatique (machine learning) est le moteur principal de l'IA. Son
concept : les ordinateurs tirent des leçons des données avec un minimum de
programmation.
SOUS-BRANCHE DE L’IA
le machine learning est un ensemble de méthodes statistiques appliquées à l’IA.
Elles permettent en particulier à l’IA d’apprendre à partir de données d’exemple.
on montre à l’IA plein d’appartements avec leur prix, puis elle peut deviner le prix
d’un nouvel appartement).
ML = IA + STATS
L’APPRENTISSAGE PROFOND: DEEP LEARNING
SOUS-BRANCHE DU ML
le Deep learning repose principalement sur l’utilisation de réseaux de
neurones (on se rapproche donc de la neuroscience plutôt que des
statistiques) pour résoudre les problèmes.
Le principe reste identique, avoir des données d’exemples et adapter son
modèle interne pour qu’il prédise correctement ses sorties.
l’IA va grouper des données en fonction de leur similarité pour former
Par exemple
des groupes
*la reconnaissance faciale et classification d’images
*la génération de texte
*la prédiction de pannes complexes, un robot qui va découvrir tout
seul comment marcher, etc…).
DL = ML + RÉSEAUX DE NEURONES
HISTORIQUE
(IA) telle que définie dans (ML) est l’application de (PL) S’inspirer de comment
l’industrie est plutôt « des méthodes statistiques aux marche notre cerveau (avec
algorithmes plus ou moins algorithmes pour les rendre plus des réseaux de neurones) pour
évolués qui imitent des actions intelligents. pousser l’analyse plus loin et
humaines ». Il repose donc sur la capacité des savoir extraire les données soi-
algorithmes à recevoir beaucoup même !
de données et à « apprendre »
d’elles .
L’ÉVOLUTION DE LA RECHERCHE
En effet, l'IA a végété plusieurs années à plusieurs reprises notamment dans les
années 1970 et 1990 ; car elle a été longtemps limitée par les coûts et
performances des machines:
-vitesse,
-capacité mémoire,
-capacité de stockage
Aujourd'hui les
superordinateurs et le cloud
ont aboli ces limites et nous
assistons à une explosion de
ses possibilités qui semblent
inarrêtables.
DOMAINE D’APPLICATION DE L’IA
Des disciplines extrêmement compliquées et coûteuses comme la reconnaissance
vocale, la reconnaissance visuelle/faciale, autrefois réservées à des industriels et
l'armée, sont devenues des éléments de notre quotidien.
Apprentissage statistique :
vous allez récupérer des données dites annotées de les données d'entrées ne sont pas annotées.
leurs sorties pour entraîner le modèle, c'est-à-dire l'algorithme d'entraînement s'applique dans
que vous leur avez déjà associé un label ou ce cas à trouver seul les similarités et
une classe cible et vous voulez que l'algorithme distinctions au sein de ces données, et à
devienne capable, une fois entraîné, de prédire regrouper ensemble celles qui partagent des
cette cible sur de nouvelles données non annotées. caractéristiques communes.
Mathématiquement
on reçoit des données d'exemple annotées: on reçoit uniquement des observations brutes de
variables aléatoires :
(x1,y1),(x2,y2),(x3,y3),...et on espère prédire la sortie
x1,x2,x3,x4,... et on espère découvrir la
sur de nouvelles observations : x∗→y∗
relation avec des variables latentes
structurelles : xi→yi
APPRENTISSAGE SUPERVISÉ: FONCTIONNEMENT
La première étape d’un algorithme de Supervised Learning consiste donc à importer un Dataset qui
contient les exemples que la machine doit étudier.
Features
Target
m= nombre d’exemples
n=nombre de facteurs
Exemple
X Facteurs
1/ LE DATASET
Désigner la qualité du 3ième appartement que vous avez visité, on écrit ……..????
Avec un tel Dataset, il devient possible de prédire de nouvelles valeurs y à partir de valeurs de x en
développant un modèle
2/ LE MODÈLE
un modèle est une représentation simplifiée de la réalité, que l’on peut
utiliser pour prédire ce qui se passerait dans certaines conditions. Ça
peut être un dessin, une équation physique, une fonction mathématique,
une courbe…
il est construit à partir de données, comme un modèle statistique.
Si par exemple votre Dataset vous donne le nuage de point suivant, alors
la machine devra trouver le modèle qui rentre le mieux dans ce nuage de
point.
2/ LE MODÈLE
C’est nous qui décide quel modèle(fonction) choisira la
machine et c’est à la machine de trouver
les coefficients de cette fonction qui donnent les
meilleurs résultats
Classification Régression
FC=Nombre d’erreurs sur le FC=la distance entre votre flèche et le centre de la cible,
nombre d’exemples
qui n’est autre que le point qu’elle est sensée atteindre.
L’ALGORITHME D’APPRENTISSAGE
Phase de l’apprentissage:
c’est lorsque la machine cherche les paramètres de modèle qui
minimisent la Fonction Coût.
Exemple
25
15
𝑓′ 𝑥 = 0
10
0
-5 -4 -3 -2 -1 0 1 2 3 4 5 1
𝑓 ′ 𝑥 = 2𝑥 − 1 = 0 ⇒ 𝑥∗ =
2
26
L’ALGORITHME D’APPRENTISSAGE: GRADIENT DESCENT
Parfoisla résolution analytique n’est pas possible, parce que le nombre de
paramètres est élevé par exemple, ou parce que le calcul serait trop
coûteux approximation avec une approche itérative.
Algorithme du GRADIENT
Valeur de a???
Valeur b????
Impossible de tracer une bonne droite sur le nuage de point,
à moins de choisir des paramètres au hasard.
L’ALGORITHME GRADIENT
DESCENT : L’IMPLÉMENTATION
L’ALGORITHME GRADIENT
DESCENT : L’IMPLÉMENTATION
Soit J la fonction coût = la moyenne de toutes nos
erreurs
Par convention
POSITIVE
<0 >0
a1<a0
a1>a0
GRADIENT
C’est le taux d’apprentissage de la machine
: L’HYPER-PARAMÈTRE
LEARNING RATE
Un paramètre de réglage dans un algorithme d'optimisation qui détermine la taille du pas à chaque
itération tout en se déplaçant vers un minimum d'une fonction de perte.
AVANTAGES:
1/En Machine Learning on va justement se servir des matrices pour manipuler d’une seule fois toutes
les données de notre Dataset.
2/ calculer les prédictions du Modèle l’erreur de la Fonction Coût et les Gradients sur tout le Dataset,
plutôt que point par point.
L'écosystème
Python possède des librairies pour à peu près tout ce que vous pouvez
imaginer pour L’IA, et notamment:
Anaconda est une plateforme Python dédiée aux data sciences elle possède les outils de Machine
Learning.
Il s’agit d’une suite logicielle intégrant les modules les plus utilisés.
Anaconda contient tous les outils et librairies dont vous avez besoin pour faire du Machine Learning :
Numpy, Matplotlib, Sklearn, etc.
Elle est téléchargeable à l’adresse https://www.anaconda.com/download
PYTHON DANS L’IA: INSTALLATION
Une fois Anaconda installé, vous pouvez lancer l’application Jupyter Notebook depuis
votre barre de recherche.
La Data Science est itérative : il faut souvent tenter plusieurs approches et étudier les résultats avant de
décider de la bonne façon de traiter un problème.
Un notebook est une interface web dans laquelle vous pouvez taper du code Python, l'exécuter et voir
directement les résultats, y compris une visualisation à l'aide de graphiques.
Création
Affichage
Notion de type
On utilise des crochets pour délimiter les listes d’éléments dans
les tableaux.
>>>> type(a)
°La fonction Plot dans sa forme la plus simple, elle prend en paramètre deux listes numériques ou encore deux
tableaux unidimensionnels numpy , X et Y de même dimension et de la forme : X = [ x1, x2, ..., xn ] et Y =
[ y1, y2, ..., yn ]
°Plot considère alors que les éléments de X et Y sont les abscisses et les ordonnées de n points du plan (Oxy),
de la forme : (x1, y1), (x2, y2), ..., (xn, yn).
°Elle place ces points et les relie par un trait. Voilà, c’est tout ! Bien entendu, les xi et yi doivent avoir le bon
format : il ne peut s’agir que d’entiers ou de nombres réels.
_Vous pouvez combiner les différents caractères dans une même chaîne pour préciser le tracé.
_Par exemple "ro-" signifie que la courbe doit être tracée en rouge, avec des gros points reliés
entre eux par des segments de droite .
_Vous pouvez aussi préciser l’épaisseur du trait grâce au paramètre linewidth = numero.
Plus numero est grand, plus le trait est épais.
import numpy as np
import math as m
import matplotlib.pyplot as plt
X = np.linspace(0, 2*m.pi, 50)
Y = np.cos(X) Z = np.sin(X)
W = 0.5*X - 1
plt.figure(1)
plt.plot(X, Y, "ro-" ) # Courbe en rouge avec de gros points reliés par
des segments
plt.plot(X, Z, "g.’) # Courbe en vert avec des points non reliés
plt.plot(X, W, "k’, linewidth=5)
REDÉFINIR LES AXES
Par défaut, Python choisit les axes à votre place. Vous pouvez cependant
redéfinir leur étendue à l’aide de la fonction axis,
ajouter une grille sur le schéma à l’aide de la fonction grid
ajouter un label à chaque axe grâce aux fonctions xlabel et ylabel.
import numpy as np
import math as m
import matplotlib.pyplot as plt
X = np.linspace(0, 2*m.pi, 50) plt.axis(L),
Y = np.cos(X) L = [xmin, xmax, ymin, ymax]
plt.figure(1)
plt.plot(X, Y, "ro-" )
plt.axis([-0.5, 2*m.pi+0.5, -1.5, 1.5]) plt.grid()
plt.xlabel("temps")
plt.ylabel("Signal")
AJOUTER DU TEXTE ET UN TITRE
Pour ajouter un titre, il suffit de taper : plt.title(nom_titre) où nom_titre est une chaine
de caractères qui sera affichée comme le titre de votre graphique.
Placer du texte dans le dessin se fait grâce à : plt.text(x, y, text, color = ...). text est
une chaîne de caractères qui sera le texte affiché, x et y sont les coordonnées du
premier caractère de tex
y = y.reshape(y.shape[0], 1)
On remarque que y n'a pas les
print(y.shape) dimensions (100, 1). On corrige le
problème avec np.reshape
RÉGRESSION LINÉAIRE ET PYTHON
Une fois le dataset généré
*il faut ajouter une colonne de biais au tableau X,
c’est-à-dire un colonne de 1, pour le développement du futur modèle linéaire ,
X = np.hstack((x, np.ones(x.shape)))
print (X.shape)
*Il faut initialiser des paramètres aléatoires a,b dans un vecteur theta qui
nous donne l’erreur la plus petite qui minimise la fonction coût.
On implémente un modèle , puis on teste le modèle pour voir s'il n'y a pas de bug
En plus, cela permet de voir a quoi ressemble le modèle initial, défini par la valeur de .
cost_function(X, y, theta)
le gradient :
la descente de gradient :
n_iterations = 1000
learning_rate = 0.001
theta_final= gradient_descent(X, y, theta, learning_rate, n_iterations)
Print(theta_final) #affiche la valeur (a,b)
On va créer d'un vecteur prédictions qui contient les prédictions de notre modele final
Phase d'entrainement
on observe l'évolution de la
fonction cout a travers les
itérations.
theta = theta - learning_rate * grad(X, y, theta) # mise a jour du parametre theta (formule du gradient
descent)
plt.plot(range(n_iterations), cost_history)
Mettre le n_iterations=400
Économisé le
temps et
l’énergie de
la machine
RÉGRESSION LINÉAIRE ET PYTHON
coef_determination(y, predictions)
0.9512254636609898
RÉGRESSION LINÉAIRE POLYNOMIALE
Polynôme de degré 10 ??
RÉGRESSION LINÉAIRE POLYNOMIALE
solution
RÉGRESSION LINÉAIRE POLYNOMIALE
Les mêmes équations de la régression linéaire pour résoudre des problèmes non
linéaire , il faut juste changer le contenu des matrices
RÉGRESSION LINÉAIRE POLYNOMIALE
Pratique
import numpy as np
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
Etape 1 et 2
np.random.seed(0)
x, y = make_regression(n_samples=100, n_features=1, noise = 10)
y = y + abs(y/2) # modifie les valeurs de y pour rendre le dataset non-
linéaire
plt.scatter(x, y) # afficher les résultats. x en abscisse et y en ordonnée
)
.
print(x shape) y = y.reshape(y.shape[0], 1)
Print (y.shape)
print (y.shape)
**Création de la matrice X
X = np.hstack((x, np.ones(x.shape)))
X = np.hstack((x**2, X)) # X c est la matrice de régression linéaire on lui ajoute le vecteur x^2 a
la gauche
.
print(X shape)
print(X[:10])
theta = np.random.randn(3, 1)
theta
Création de la matrice X
X = np.hstack((x, np.ones((x.shape[0], 1)))) # ajoute un vecteur Biais de
dimension (x.shape[0], 1)
print(X.shape)
Print (X[:10])
RÉGRESSION LINÉAIRE MULTIPLE VARIABLES
Modèle Linéaire
Fonction Cout Déjà implémentés
Gradient Descent
Phase d'entrainement
n_iterations = 1000 learning_rate = 0.01
création d'un vecteur prédictions qui contient les prédictions de notre modele final
predictions = model(X, theta_final)
theta_fina
%matplotlib notebook
ax = plt.figure().add_subplot(111, projection='3d')
ax.scatter(x[:,0], x[:,1], y)
ax.scatter(x[:,0], x[:,1], predictions)
SKLEARN
Model=linearRegression(………)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression from
sklearn.linear_model import SGDRegressor
SKLEARN
np.random.seed(0)
x, y = make_regression(n_samples=100, n_features=1, noise=10)
plt.scatter(x, y)
model = LinearRegression()
model.fit(x,y)
model.score(x,y)#coef de détermination
model.predict(x)
prediction=model.predict(x)
plt.scatter(x,y)
plt.plot(x,prediction,c='r')
LA CLASSIFICATION
Classification Régression
LA CLASSIFICATION
Dans ce genre de problème, on aura un Dataset contenant une variable
target 𝒚 pouvant prendre 2 valeurs seulement, par exemple 0 ou 1
• si 𝑦 = 0, alors l’email n’est pas un spam
• si 𝑦 = 1, alors l’email est un spam
Logarithme
FONCTION COÛT ASSOCIÉE À LA RÉGRESSION
LOGISTIQUE
le cas où 𝑦 = 1 le cas où 𝑦 = 0
si y=0
si y=1
GRADIENT DESCENT POUR LA RÉGRESSION
LOGISTIQUE
DÉVELOPPER UN PROGRAMME DE
CLASSIFICATION BINAIRE DANS
JUPYTER
Voir fichier (régression losigtique)
PANDA
tab = numpy.array([[1.1, 2, 3.3, 4], [2.7, 10, 5.4, 7], [5.3, 9, 1.5, 15]])
df = pandas.DataFrame(tab, index = ['a1', 'a2', 'a3'], columns = ['A', 'B', 'C', 'D'])
http://www.python-simple.com/python-pandas/panda-intro.php
L’ALGORITHME K NEARST NEIGHBORS (K-NN)
L’Objectif :
est de classé les nouveaux donnés non étiquetés sur la
base de leur similarité avec les exemples de notre Dataset
o Domaine d’utilisations:
La reconnaissance de formes
Analyse d’image
Marketing ciblé
KNN: PRINCIPE DE FONCTIONEMENT
Pour tout nouveau point de, test x pour lequel il doit prendre une
décision, l’algorithme :
1/ recherche dans D les k points les plus proches de x au sens de
la distance d ,
2/ et attribue x à la classe qui est la plus fréquente parmi ces k
voisins.
KNN:EXEMPLE
•Dans l’exemple suivant, on a 3 classes et le but est de trouver la
valeur de la classe de l’exemple inconnu x.
•On prend la distance Euclidienne et k=5 voisins
•Des 5 plus proches voisins, 4 appartiennent à ω1 et 1appartient à
ω3, donc x est affecté à ω1, la classe majoritaire
KNN: ALGORITHME
Début Algorithme
Données en entrée :
Pour une nouvelle observation X dont on veut prédire sa variable de sortie y Faire :
1.Calculer toutes les distances de cette observation X avec les autres observations Dataset D
2.Retenir les k observations Dataset D les proches de X en utilisation le fonction de calcul de distance
4.Retourner la valeur calculée dans l’étape 3 comme étant la valeur qui a été prédite par K-NN pour l’observation
.
Fin Algorithme
KNN : CALCULE DE DISTANCE
**Comme on vient de le voir dans notre écriture algorithme, K-NN a besoin d’une
fonction de calcul de distance entre deux observations.
**Plus deux points sont proches l’un de l’autre, plus ils sont similaires et vice versa.
K petit :
frontières des classes très complexes
très sensible aux fluctuations des données
(variance élevée).
risque de sous apprentissage.
K=grande :
frontière rigide
plus la valeur de k est grande plus le
résultat d’affectation est bien réalisée
K=N(sur apprentissage)
KNN: CONCLUSION
Avantage :
2/ Il n'y a que deux paramètres requis pour implémenter KNN, à savoir la valeur de K
et la fonction de distance ,
Inconvénients :
1/ L'algorithme KNN ne fonctionne pas bien avec des données de grande dimension
car avec un grand nombre de dimensions,
il devient difficile pour l'algorithme de calculer la distance dans chaque
dimension.
le un coût de prédiction devient élevé. En effet, dans les grands ensembles de
données, le coût du calcul de la distance entre un nouveau point et chaque point
existant devient plus élevé.
IMPLÉMENTATION DU K-NN SUR MNIST
C’ est une base de donnée de chiffres manuscrits très utilisée en Machine Learning, notamment pour
l’entrainement et le test de modèles prédictifs.
à l’époque, les réseaux de neurones étaient limités par les ressources techniques. Par
exemple, les ordinateurs n’étaient pas assez puissants pour traiter les données
nécessaires au fonctionnement des réseaux de neurones.
la recherche dans le domaine des Neural Networks est restée en sommeil durant de
longues années.
L’HISTOIRE DES RÉSEAUX DE
NEURONES ARTIFICIELS
3/ Il aura fallu attendre le début des années 2010, avec l’essor du Big Data et du
traitement massivement parallèle, pour que les Data Scientists disposent des données et
de la puissance de calcul nécessaires pour exécuter des réseaux de neurones complexes.
4/ En 2012, lors d’une compétition organisée par ImageNet, un Neural Network est
parvenu pour la première fois à surpasser un humain dans la reconnaissance d’image.
Fonctionnement
C’est une fonction mathématique qui va mettre une relation entre les
entrées X et les sorties Y
Une fonction mathématique qui imite le fonctionnement d’un vrai
neurone (biologique)
Fonctionnement
Voila un neurone artificielle avec
3 entrées : X1,X2,X3
Poid1
Le premier tiers reçoit les entrées d’informations brutes, un peu comme les
nerfs optiques de l’être humain lorsqu’il traite des signaux visuels.
Vous remarquez :
**un niveau d’entrées (input layer) ,
**un niveau de sorties (output layer) ,
**plusieurs niveaux cachés entre les deux.
**Les ronds ( les neurones) représentent des fonctions d’activation.
Etape 1 Etape 2
le Deep Learning.
LES RÉSEAUX DE NEURONES
Des modèles bien plus complexes que tous les autres modèles de Machine Learning dans
le sens où ils représentent des fonctions
mathématiques avec des millions de coefficients (les paramètres).
1. Un Dataset
2. Un Modèle et ses paramètres
4. Un Algorithme de minimisation
L’ENTRAÎNEMENT D’UN RÉSEAU DE NEURONE
1/ Pour le Dataset: un tableau (𝑿,𝒚) comme pour les autres problèmes. Les
facteurs (𝒙𝟏,𝒙𝟐,𝒙𝟑,…) sont distribuées à l’entrée du réseau le premier layer
NB: Le Gradient Descent en lui-même n’est pas différent de celui que nous
avons vu
IMPLÉMENTATION DU RÉSEAU DE NEURONES.
On va utilisé la BD d’Iris
Normalement, on développe des Réseaux de Neurones avec un Framework
comme Tensorflow, mais on va le faire avec Sklearn. Pour cela,
Clustering
Détection
d’anomalie
Réduction de
dimension
La machine apprend à projeter nos données dans des espaces de plus petite
dimension
Ensuite :
- L’étape 1 consiste à rallier chaque exemple au centre le plus proche.
Après cette étape, nous avons K Clusters (ici 2 clusters)
- L’étape 2 consiste à déplacer les centres au milieu de leur Cluster
ALGORITHME DE K-MEAN CLUSTERING
On répète les étapes 1 et 2 en boucle jusqu’à ce que les centres ne bougent
plus
ALGORITHME DE K-MEAN CLUSTERING