Aller au contenu principal
DomicileDidacticielsIntelligence artificielle (IA)

IA explicável - Entendendo e confiando nos modelos de aprendizado de máquina

Il s'inscrit dans le cadre de l'IA explicative (XAI) et explique comment créer la confiance dans les systèmes d'IA avec LIME et SHAP pour l'interprétation des modèles. Entenda a importância da transparência e da justiça nas decisões baseadas em IA.
Actualisé 4 oct. 2024  · 12 min lire

Un grand nombre d'entreprises et d'organisations ont recours à l'intelligence artificielle et à des modèles d'apprentissage par ordinateur pour prendre des décisions informées. En outre, à mesure que ces technologies progressent et deviennent plus complexes, les êtres humains ne parviennent plus à comprendre et à reconstituer le processus de prise de décision concernant ces solutions d'IA. Ce problème peut être résolu par l'utilisation de l'IA explicite (XAI).

Ici, nous explorerons ce qu'est l'IA explicatif, nous soulignerons son importance et nous illustrerons ses objectifs et ses avantages. Dans la deuxième partie, nous présentons une vision générale et une implémentation en Python de deux modèles de substitution populaires, LIME et SHAP, qui peuvent aider à interpréter les modèles d'apprentissage de la machine.

Qu'est-ce que l'IA explicative (XAI) ?

L'IA explicative est un ensemble de processus et de méthodes visant à fournir aux êtres humains une explication claire et compréhensible des décisions prises dans le cadre de l'IA et des modèles d'apprentissage de l'automobile.

En intégrant une démarche d'explicitation à ces modèles, les scientifiques et les professionnels de l'apprentissage des machines peuvent créer des systèmes plus fiables et plus transparents pour aider un large éventail de parties intéressées, telles que les concepteurs, les régulateurs et les utilisateurs finaux.

Criando confiança por meio de IA explicável

Voici quelques principes d'IA explicites qui peuvent contribuer à créer la confiance :

  • Transparência. Garantir que les parties intéressées connaissent le processus de prise de décision concernant les modèles.
  • Equidade. Garantir que les décisions des modèles soient justes pour tous, y compris pour les personnes appartenant à des groupes protégés (race, religion, sexe, déficience, etc.).
  • Confiança. Avaliação do nível de confiança dos usuários humanos que usam o sistema de IA.
  • Robustez. Faire preuve de résilience face aux changements des données d'entrée ou des paramètres du modèle, en maintenant un comportement cohérent et confiant même lorsque vous êtes confronté à des incertitudes ou à des situations inattendues.
  • Privacidade. Garantir a proteção de informações confidenciais do usuário.
  • Interpretabilidade. Fournir des explications détaillées sur vos prévisions et vos résultats.

Elementos de IA explicável

La mise en œuvre de l'IA explicite présente de nombreux avantages. Pour les preneurs de décision et les autres parties intéressées, il offre une vision claire de la logique à travers les décisions basées sur l'AI, ce qui leur permet de prendre des décisions en étant mieux informés. Cela permet également d'identifier les éventuels écarts ou erreurs dans les modèles et d'obtenir des résultats plus précis et plus justes.

Exemples d'AI explicites

Il existe deux catégories d'explication des modèles : les méthodes spécifiques de modélisation et les méthodes génétiques de modélisation. Dans cette section, nous verrons les différences entre les deux, en mettant l'accent sur les méthodes agnostiques de modélisation.

Ces deux techniques permettent d'obtenir des informations précieuses sur le fonctionnement interne des modèles d'apprentissage de la mécanique et, dans le même temps, de garantir que ces modèles sont efficaces et efficaces.

Pour illustrer au mieux ces outils, nous utilisons l'ensemble des données sur le diabète de Kaggle. En premier lieu, nous créons un classificateur simple et, en second lieu, nous mettons en œuvre l'explicabilité. Le fichier complet est disponible dans l'espace de travail DataCamp.

Créer un classificateur

Un classificateur Random Forest a été créé pour évaluer les résultats du diabète en utilisant l'ensemble des données sur le diabète. Le code est divisé en plusieurs étapes : (1) importer les bibliotecas pertinentes, (2) créer des ensembles de données de traitement et de test, (3) créer le modèle et (4) informer les méthodes de travail à l'aide du rapport de classification.

# Load useful libraries
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report

# Separate Features and Target Variables
X = diabetes_data.drop(columns='Outcome')
y = diabetes_data['Outcome']

# Create Train & Test Data
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3,
                                                	stratify =y,
                                                	random_state = 13)

# Build the model
rf_clf = RandomForestClassifier(max_features=2, n_estimators =100 ,bootstrap = True)

rf_clf.fit(X_train, y_train)

# Make prediction on the testing data
y_pred = rf_clf.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

La dernière instruction d'impression contient le rapport suivant : 

Relatório de classificação do modelo

Le classificateur de floraison aléatoire offre un rendement satisfaisant pour la prévision des résultats du diabète, avec une marge de manœuvre pour des améliorations à l'aide de modèles différents.

Aujourd'hui, nous pouvons intégrer la méthode d'explicitation à ce modèle afin d'obtenir plus d'informations sur ses prévisions. La prochaine section se concentrera sur deux grandes catégories d'explication du modèle : les méthodes spécifiques du modèle et les méthodes agnostiques du modèle.

Nosso Classificação em aprendizado de máquina: Introduction L'article vous aidera à comprendre la classification dans l'apprentissage de la mécanique, en analysant ce qu'elle est, comment elle est utilisée et quelques exemples d'algorithmes de classification.

Métodos agnósticos de modelo

Ces méthodes peuvent être appliquées à n'importe quel modèle d'apprentissage de la machine, indépendamment de sa structure ou de son type. Ils se concentrent sur l'analyse du taux d'entrée et de sortie des ressources. Cette séance présente et discute le LIME et le SHAP, deux modèles de substituts largement utilisés.

SHAP

Significa SHapley AdditiveexPlanations. Cette méthode a pour objectif d'expliquer la prévision d'une installation ou d'une observation en calculant la contribution de chaque critère à la prévision, et peut être installée à l'aide de la procédure suivante.

!pip install shap

Après l'installation :

  • La bibliothèque principale du shap est importée.
  • La classe TreeExplainer est utilisée pour expliquer les modèles basés sur des arbres, conjointement avec initjs.
  • La fonction shape.initjs() introduit le code JavaScript nécessaire à la visualisation des images de SHAP dans un environnement de notebook jupyter.
  • Ainsi, après avoir instancié la classe TreeExplainer avec le classificateur de flore aléatoire, les valeurs de forme sont calculées pour chaque recurso de chaque instância dans la conjoncture des données de test.
import shap
import matplotlib.pyplot as plt

# load JS visualization code to notebook
shap.initjs()

# Create the explainer
explainer = shap.TreeExplainer(rf_clf)

shap_values = explainer.shap_values(X_test)

SHAP propose une série d'outils de visualisation permettant d'améliorer l'interprétation du modèle, et la présente section en présente deux : (1) l'importance de la variation dans le résumé, (2) le résumé d'un échantillon particulier et (3) le résumé de la dépendance.

Importance de la variabilité avec le graphique de résumé

Dans ce graphique, les ressources sont classées en fonction de leurs valeurs moyennes de SHAP, ce qui permet d'afficher les ressources les plus importantes dans la partie supérieure et les moins importantes dans la partie inférieure, à l'aide de la fonction summary_plot(). Cela permet de comprendre l'impact de chaque recurso sur les prévisions du modèle.

print("Variable Importance Plot - Global Interpretation")
figure = plt.figure()
shap.summary_plot(shap_values, X_test)

Grille de résumé présentant les variables importantes

Vous trouverez ci-dessous une interprétation qui peut être faite à partir du graphique ci-contre :

  • Nous pouvons observer que les noyaux vermelha et azul occupent la plus grande partie des retângulos horizontais de chaque classe. Cela signifie que chaque critère a un impact identique sur la classification des cas de diabète (critère=1) et de non-diabète (critère=0).
  • Par conséquent, la glicose, l'âge et l'IMC sont les trois premières sources d'information ayant le plus grand pouvoir de prévision.
  • Par ailleurs, les grossesses, les taches cutanées, l'insuline et la tension artérielle ne contribuent pas autant que les trois premières ressources.

Gráfico de resumo em um rótulo específico

L'utilisation de cette approche peut permettre d'obtenir une vision générale plus détaillée de l'impact de chaque recours sur un résultat spécifique (titre).

Dans l'exemple ci-dessus, shap_values[1] est utilisé pour représenter les valeurs SHAP pour les établissements classés dans le groupe 1 (diabète).

shap.summary_plot(shap_values[1], X_test)

Résumé du graphique d'approfondissement du titre = 1

Faites le calcul à l'avance :

  • L'encadré Y représente les ressources classées en fonction de leurs valeurs médianes absolues de SHAP, comme sur le graphique de l'image 2.
  • L'élément X représente les valeurs de SHAP. Les valeurs positives d'un récursus déterminé se rapprochent de la prévision du modèle du titre que vous examinez (titre=1). D'autre part, les valeurs négatives s'accumulent dans la classe la plus basse (titre=0).
  • Un individu ayant un niveau élevé de glicose (points vermelhos) sera probablement diagnostiqué comme diabétique (résultat positif), tandis qu'un niveau faible de glicose ne sera pas diagnostiqué comme diabétique.
  • De la même manière, les patients idosos ont une plus grande probabilité d'être diagnostiqués comme diabétiques. Par ailleurs, le modèle semble incertain en ce qui concerne le diagnostic des patients les plus jeunes.

Pour lever cette ambiguïté sur l'attribut Idade, il est possible d'utiliser la grille de dépendance afin d'obtenir davantage d'informations.

Schéma de dépendance

Différemment des gráficos de resumo, les gráficos de dependência mettent en évidence la relation entre un récurso spécifique et le résultat prévu pour chaque instância de données. Cette analyse est réalisée pour différentes raisons et ne se limite pas à l'obtention d'informations plus détaillées et à la validation de l'importance du contenu qui est analysé, en confirmant ou en contestant les résultats des graphiques de résumé ou d'autres méthodes globales d'évaluation de l'importance du contenu. 

Schéma de dépendance pour l'attribut Idade

Le graphique de dépendance révèle que les patients âgés de moins de 30 ans ont un risque plus faible d'être diagnostiqués comme diabétiques. En revanche, les personnes âgées de plus de 30 ans ont une probabilité plus élevée de recevoir un diagnostic de diabète.

LIME

Local Interpretable Model-agnostic Explanations (LIME, abreviação de Local Interpretable Model-agnostic Explanations). Au lieu d'offrir une vision globale du modèle pour l'ensemble des données, le LIME se concentre sur l'explication de la prévision du modèle pour les institutions individuelles.

Le LIME explainer peut être configuré en deux étapes principales : (1) importar o módulo lime e (2) ajustar o explicador usando os dados de treinamento e os alvos. Au cours de cette phase, le mode est défini comme étant la classification, qui correspond à la tâche qui est en cours d'exécution.

# Import the LimeTabularExplainer module
from lime.lime_tabular import LimeTabularExplainer

# Get the class names
class_names = ['Has diabetes', 'No diabetes']

# Get the feature names
feature_names = list(X_train.columns)

# Fit the Explainer on the training data set using the LimeTabularExplainer
explainer = LimeTabularExplainer(X_train.values, feature_names =     
                                 feature_names,
                                 class_names = class_names, 
                                 mode = 'classification')

L'encadré du code ci-dessus présente et explique une explication de la LIME pour une 8ème instância sur les données de test en utilisant le classificateur de floresta aleatória et en présentant la contribution finale du recurso dans un format tabulaire. 

Explicação do LIME para a 8ª instância do conjunto de dados de teste

Le résultat contient trois informations principales, de l'adresse à la direction : (1) les prévisions du modèle, (2) les contributions des ressources et (3) la valeur réelle de chaque ressource.

Nous pouvons observer que la prévision est que l'autre patient souffre de diabète, ce qui représente 72% de confiance. Les raisons qui ont poussé le modèle à prendre cette décision sont les suivantes :

  • O nível de glicose do paciente é superior a 99.
  • La pression artérielle est supérieure à 70.

Ces valeurs peuvent être vérifiées dans le tableau à droite.

Méthodes spécifiques du modèle

Contrairement aux méthodes analytiques de modélisation, ces méthodes ne peuvent être appliquées qu'à une catégorie limitée de modèles. Certains de ces modèles incluent la régression linéaire, les outils de décision et l'interprétation des réseaux neuronaux. Différentes techniques, telles que DeepLIFT, Grad-CAM ou Integrated Gradients, peuvent être utilisées pour expliquer les modèles d'apprentissage en profondeur.

En utilisant un modèle d'arbre de décision, un arbre graphique peut être créé à l'aide de la fonction plot_tree de scikit-learn afin d'expliquer le processus de prise de décision du modèle de base pour le bas, et une illustration est donnée à l'annexe.

L'article Apprentissage approfondi - un tutoriel pour les scientifiques répond aux questions les plus fréquentes sur l'apprentissage approfondi et explore de nombreux aspects de l'apprentissage approfondi à l'aide d'exemples concrets.

Nous allons créer un classificateur de taux de décision avec des paramètres spécifiques, tels que max_depth et min_samples_leaf, avant de créer un taux graphique.

from sklearn.tree import DecisionTreeClassifier, plot_tree
dt_clf = DecisionTreeClassifier(max_depth = 3, min_samples_leaf = 2)
dt_clf.fit(X_train, y_train)

# Predict on the test data and evaluate the model
y_pred = dt_clf.predict(X_test)

print(classification_report(y_pred, y_test))

Les instructions d'impression précédentes contiennent les informations suivantes sur la classification du modèle. 

Relatório de classificação do modelo

Le processus de prise de décision du modèle peut être visualisé dans le tableau ci-dessous :

fig = plt.figure(figsize=(25,20))
_ = plot_tree(dt_clf,
               	feature_names = feature_names,
               	class_names = class_names,
               	filled=True)

Aide à la décision pour la prise en charge de la prévention du diabète

En examinant la structure de l'entrepôt, il est possible d'analyser le processus de prise de décision pour chaque groupe, ce qui permet d'obtenir des informations sur le comportement et l'interprétation du modèle.

Dans le graphique ci-dessus, chaque point représente une décision ou une division basée sur une valeur de référence spécifique. Pour chaque pays, le graphique montre le critère de répartition utilisé, la valeur du critère de répartition, l'impureté de Gini et le nombre d'échantillons qui correspondent à ce pays.

Dans nos pages, vous trouverez la classe principale et le nombre d'étoiles. Par ailleurs, les noyaux de nos enfants représentent la classe majoritaire, l'intensité du noyau indiquant la proportion de la classe dominante au sein de l'enfant. Par exemple, le nom "laranja" dans la colonne vertébrale correspond à un titre de diabète, tandis que le nom "azul" correspond à aucun diabète.

Défis du XAI et perspectives d'avenir

Alors que la technologie de l'IA continue de progresser et de devenir plus sophistiquée, la compréhension et l'interprétation des algorithmes pour déterminer comment ils produisent des résultats sont de plus en plus difficiles, ce qui permet aux chercheurs de continuer à explorer de nouvelles approches et à améliorer celles qui existent déjà.

De nombreux modèles d'AI explicites exigent une simplification du modèle sous-jacent, ce qui entraîne une perte d'efficacité préventive. Par ailleurs, les méthodes actuelles d'explicitation n'abordent pas tous les aspects du processus de prise de décision, ce qui peut limiter le bénéfice de l'explicitation, en particulier lorsqu'il s'agit d'utiliser des modèles plus complexes.

Les nouvelles méthodes de recherche se concentrent sur l'amélioration des techniques d'IA explicatives, la mise au point d'algorithmes plus efficaces pour traiter les questions étiques et, dans le même temps, la création d'explications faciles à utiliser.

C'est pourquoi, dans le cadre d'une enquête sur le marché du travail, il est essentiel de disposer de méthodes plus souples qui favorisent la transparence, la confiance et la justice.

Conclusão

Cet article présente une vue d'ensemble de ce qu'est l'AI explicite et quelques principes qui contribuent à créer la confiance et qui peuvent aider les scientifiques et les autres parties intéressées à acquérir les compétences nécessaires pour créer des modèles de confiance qui les aideront à prendre des décisions éclairées.

Nous avons également abordé les méthodes spécifiques de modélisation et les méthodes agnostiques de modélisation, en nous concentrant plus particulièrement sur la première, en utilisant LIME et SHAP. Par ailleurs, nous avons souligné les difficultés, les limites et les domaines de recherche de l'IA explicite.

Pour en savoir plus sur l'éthique de cette technologie, consultez notre cours Introduction à l'éthique des données, qui aborde les principes de l'éthique des données, sa relation avec l'éthique de l'IA et ses caractéristiques aux différentes étapes du cycle de vie des données. 

Sujets