Vous êtes sur la page 1sur 18

EXPOSE D’INTELLIGENCE

ARTIFICIELLE

REGRESSION ET OPTIMISATION

OTTI Manuela Augusta 14G00356


JIOKENG ‘’I’’ TOKO Jean Junior Maldini 14G00106

DR EKOBO BRICE
• INTRODUCTION

• OPTIMISATION

• REGRESSION (Linéaire, logistique)

• CONCLUSION
INTRODUCTION

L’intelligence artificielle (IA) et une science qui a pour vue de


réaliser des machines ou systèmes capables de simuler l’intelligence
naturelle. Elle recherche des méthodes de résolution des problèmes
diverses dont la régression et l’optimisation. Les définitions et applications
de ces deux méthodes a l’IA seront expliquées dans la suite de ce travail.
On passera par la définition de l’optimisation et ses différentes méthodes
aux structures d’algorithmes d’optimisation. Ensuite on définira la
régression, ses différentes méthodes et des structures d’algorithmes
aussi.
OPTIMISATION

L’optimisation en mathématiques consiste à maximiser ou minimiser une fonction sur un ensemble.


Plus formellement, l’optimisation est l’étude des problèmes (problèmes d’optimisation) qui s’expriment de la manière
suivante :

Problème d’optimisation-
étant donné une fonction 𝑓 ∶ 𝐴 → ℝ définie sur un ensemble A à valeurs dans l’ensemble ℝ, trouver un élément ∗ 𝑥
tel que :

𝒇 ∗ 𝒙 ≤ 𝒇(𝒙) pour tout 𝒙 dans A


PROCESSUS D’OPTIMISATION

• Pour l’apprentissage automatique par


• Le processus d’optimisation renforcement par exemple, la récompensassions à
chaque étape de l’entrainement produit une
nous aide itérativement à optimisation des résultats.
découvrir les fonctions cachées
à l’intérieur des données. L’algorithme génétique lui, est un algorithme
évolutionniste. Son but étant d’obtenir une solution
L’intelligence artificielle est approchée à un problème d’optimisation.
basée sur l’optimisation des Pour les réseaux de neurones, la loi de Hebb sert à
l’optimisation :
résultats. Ses différentes 𝒘𝒊𝒋 = 𝒘𝒊𝒋 + ∆𝒘𝒊𝒋
méthodes (l’apprentissage 𝑎𝑣𝑒𝑐 ∆𝑤𝑖𝑗 = 𝑅𝑥𝑖 𝑥𝑗 ou les 𝑥𝑖 , 𝑥𝑗 sont les
automatique, le perceptron ou entrées du neurone, les 𝑤𝑖𝑗 sont les poids et ∆𝑤𝑖𝑗
encore l’algorithme génétique, est la variation des poids.
etc…) utilisent toutes des
modèles qui fourniront des
résultats optimaux.

On s’intéressera aux méthodes de l’optimisation pour l’apprentissage


automatique.
Cette méthode d’optimisation est dite de premier ordre (gradient-première
dérivée). Elle peut être divisée en 5 étapes.

• i- Définition d’un modèle d’IA


• ii- Définition du cout (que l’on trace)
• iii- Calcul des dérivées partielles en fonction des poids différents
• iv- Actualisation des valeurs des poids à l’aide du gradient
• v- Répétition des étapes 1-4 jusqu'à ce que le gradient ne soit 0

Cette méthode apporte une droite tangentielle à un point sur la surface d’erreur
Application de La Technique de Descente de Gradient

• Considérons la fonction, 𝑌 = 𝑋 2 • Pour avoir le gradient de cette


fonction, il suffit de calculer la
dérivée ( d’où le 1er ordre) et y
remplacer la valeur du point
représenté. On a :
𝑑𝑓 𝑥
= 2𝑥 d’où ∆𝑥 = −26 ,
𝑑𝑥
La nouvelle valeur de
𝑥 ⟵ 𝑥 − ∆𝑥 donne 𝑥 = 13.
La nouvelle valeur de 𝑥 étant
trop plus grande que 0, il faudra
refaire le processus. Ce qui peut
être pénible du fait d’osciller
jusqu'à ce que 0 soit atteint.
LEARNING RATE

On introduira donc un paramètre appelé learning rate. Le learing rate est un nombre
scalaire qui permet d’avancer dans le sens inverse du gradient d’une valeur égale à un
pourcentage du gradient. Il faudra repéter ce processus jusqu'à obtenir une valeur
satisfaisante de la fonction.
On obtient donc :
𝑥 ⟵ 𝑥 − 𝑎∆𝑥

Si on revient à notre exemple, en prenant


𝒂(𝒍𝒆𝒂𝒓𝒏𝒊𝒏𝒈 𝒓𝒂𝒕𝒆) =0.1

on aura une valeur qui tendra vers 0 en quelques itérations.

Et le poids devient 𝑤 = 𝑤 + 𝑎 ∗ 𝑥𝑖 ∗ 𝑦𝑖
Cas d’une fonction multivariable

• Pour une fonction multi variable, il suffira de calculer les dérivées partielles et d’appliquer la méthode
de descente de gradient à chacune des variables.
• Exemple :
• On considère la fonction suivante : 𝑍 = 𝑋 2 + 2𝑌 2

𝜕𝑧 𝜕𝑧
• En calculant les dérivées partielles ; 𝑒𝑡
𝜕𝑥 𝜕𝑦

• On obtient ∆𝑥 𝑒𝑡 ∆𝑦.
• En appliquant donc à X et à Y la technique
de descente de gradient, on minimisera la fonction Z.
On obtiendra
𝒙 ⟵ 𝒙 − 𝒃∆𝒙 et 𝒚 ⟵ 𝒚 − 𝒄∆𝒚

• Note : La dérivée première nous dit si la fonction est croissante ou décroissante à un certain point.
Structure d’un Algorithme de
la Descente de Gradient

#perceptron
import numpy as np ''' initialisation des données entrées annotées et biais = -1 '''
X = np.array([ ])
y = np.array([ ]) '''definition de la descente de gradient'''
def perceptron_sgd(X, Y):
w = np.zeros(len(X[0])) # initialise w
eta = 1 # definition du learning rate
epochs = 20 # nombre de processus
for t in range(epochs):
for i, x in enumerate(X): ‘’’ condition d’itération’’’
if (np.dot(X[i], w)*Y[i]) <= 0:
w = w + eta*X[i]*Y[i]
return w
w = perceptron_sgd(X,y )
print(w) # affiche la nouvelle valeur de w
METHODE DE NEWTON

• Cette méthode d’optimisation elle, est dite de second ordre (utilisation de la dérivée
seconde). La dérivée seconde nous dit si la dérivée première est croissante ou
décroissante. Les méthodes du second ordre apportent une surface quadratique qui
embrasse la courbe de la surface d’erreur et donc n’ignorent pas la courbure de cette
surface.
Il y a deux versions de la méthode de Newton, la première sert à trouver les racines
d’un polynôme (tous les points ou il croise l’axe des x) et la deuxième version sert à
l’optimisation ; c’est celle que l’on utilisera (et que l’on considèrera comme la
méthode de Newton).
• On construit une approximation quadratique de la fonction cible qui correspond aux
valeurs des dérivées premières et seconde sur un point de la fonction. Ensuite, on
minimise cette fonction quadratique au lieu de la fonction de départ. Le point
minimal de la fonction quadratique est utilisé comme point de départ dans l’étape
suivante et le processus est répété itérativement.
• Pour une fonction de dimension une, on peut obtenir une approximation quadratique
à un point donné de la fonction en la développant en série de Taylor, en négligent les
termes de puissance supérieur à 2. L’on minimisera cette fonction approximative en
égalisant ses dérivées premières et secondes à 0.
Structure d’un Algorithme
de la Méthode Newton
from scipy import misc

def NewtonsMethod(f, x, tolerance=0.000001): # définition de la méthode


while True:
x1 = x - f(x) / misc.derivative(f, x)
t = abs(x1 - x) ‘’’ condition
if t < tolerance: d’itération ‘’’
break # romp la boucle
x = x1
return x # nouvelle valeur de x
def f(x):
return f(x)
x0 = x0
x = NewtonsMethod(f, x0)
print("x = %0.12f" % x) #affiche x avec 2 chiffres signifiants
print("Test:")
print("%0.12f" % f(x))
LA REGRESSION
La régression est une évolution qui ramène à un degré moindre. Une régression peut être linéaire ou non.
En intelligence artificielle, la régression sert à prédire la cible par notre système.
On a la régression linéaire et la régression logistique.

REGRESSION LINEAIRE

La régression linéaire intervient généralement en apprentissage automatique. Le modèle de régression linéaire


est le suivant : 𝒚 𝑿, 𝑾 = 𝒘𝟎 + 𝒘𝟏 𝒙𝟏 + 𝒘𝟐 𝒙𝟐 +…+𝒘𝑫 𝒙𝑫
ou 𝑿 = (𝒙𝟏 , 𝒙𝟐 , … , 𝒙𝑫 )𝑻
𝑋 est une variable explicative 𝑊 sauf 𝑤0 est le vecteur des poids, 𝑤0 est le biais et 𝑦, la variable expliquée.

Lors de l’apprentissage, le modèle devra trouver des valeurs de 𝑤𝑖 tel que l’erreur sera très petite (généralement
la méthode de descente de gradient).
La relation se présente sous la forme d'une équation correspondante à la droite représentant le mieux une série
de données. Par exemple, la droite dans le diagramme suivant est la meilleure représentation linéaire possible
des données.

Pour avoir l’erreur associée à un point, on évalue la distance entre le point et la droite de
régression. En ajustant les coefficients 𝑤𝑖 et 𝑤0 on ajuste aussi l’angle et l’emplacement
de la droite de régression. On les ajuste jusqu’à ce que la somme des erreurs associées à
tous les points atteigne le plus petit nombre possible.
Structure de l’algorithme
de regression Linéaire

from sklearn import linear_model


import numpy as np
import matplotlib.pyplot as plt
x,y = np.loadtxt("test.txt", unpack='true') # charge le texte contenant les infos
plt.scatter(x,y) # classe les points de manière aléatoire
regr = linear_model.LinearRegression() # définition du modèle
regr.fit(x[:,np.newaxis], y)
x_test = np.linspace(np.min(x), np.max(x), 100)
plt.plot(x_test, regr.predict(x_test[:,np.newaxis]) #tracé de courbe
plt.show()
print ('slope, regr.coef_) # affiche le gradient
print ('intercept', regr.intercept_) # affiche le biais
Note : Le modèle de régression linéaire correspond à une droite de dimension D. Une
droite n’étant pas toujours assez flexible pour la prédiction, on introduira la notion
de fonctions de base.

Fonctions de Base
On peut introduire une non-linéarité de la manière suivante :
𝑴−𝟏

𝒚 𝑿, 𝑾 = 𝒘𝟎 + ෍ 𝒘𝒋 𝝓𝒋 (𝑿)
𝒋=𝟏
Avec 𝑀 = 𝐷 + 1 et ou les 𝜙𝑗 (𝑋) sont les fonctions de base.

Dans ce cas, le poids n’est plus directement multiplié par l’entrée 𝑋, mais pas la valeur des
fonctions, 𝜙𝑗 (𝑋).

1
En utilisant par exemple la fonction 𝜙𝑗 𝑋 = (fonction sigmoïde),
1+ 𝑒 −𝑥

on introduit une régression dite logistique. En effet la fonction 𝑦 𝑋, 𝑊 devient non linéaire
avec 𝜙𝑗 (𝑋).
REGRESSION LOGISTIQUE

La régression logistique est considérée comme une classification non


linéaire. Elle permet de classer des entrées selon 2 classes différentes (0 et 1).
On parle donc d’une classification binaire.
Le modèle de régression logistique donne en sortie une probabilité entre 1 et
0 Pour un projet, le modèle va déterminer si les entrées sont plus vers 0 ou
vers 1. On peut définir le modèle de régression logistique comme étant
𝒀 = 𝒇(𝒙𝒊 ) 𝒙𝒊 € [0;1]
Pour entrainer un modèle, on lui fournit des exemples d’ensemble
(data set). Au début, le modèle nous fournit une probabilité quelconque et en
fonction de l’erreur, il modifiera les paramètres de la fonction mathématique
qui le constitue.
CONCLUSION
En définitive, d’une part, dans l’optimisation, on a présenté la méthode
de descente de gradient et la méthode de Newton qui permettent d’obtenir les
valeurs optimales des poids. D’autre part la régression étant répartie sur
plusieurs types nous permet d’aborder plusieurs types de modèles et ce, selon
le nombre de paramètres et selon le degré du polynôme à étudier. De ce qui
précède, on peut ressortir qu’aux limites de ces approches, ces techniques ont
servi et continuent de servir à obtenir les solutions les plus optimales dans le
domaine de l’intelligence artificielle.