[PYTHON] J'ai essayé d'implémenter Human In The Loop - Partie ① Tableau de bord -

introduction

Human in the loop (HITL) consiste à intervenir dans les opérations humaines dans le jugement et le contrôle de l'IA, et est considéré comme l'un des moyens de mise en œuvre sociale de l'IA où le contrôle qualité est difficile. [Référence 1] Dans cet article, j'aimerais implémenter un modèle d'apprentissage automatique, un tableau de bord pour la surveillance et un outil de vérification avec une simple application WEB afin de pouvoir saisir l'image de HITL. (Programmé 3 fois au total) Dans HITL, un tableau de bord qui vous permet de vérifier les données réelles et le comportement de l'IA en même temps est efficace pour la surveillance, donc cette fois dans la partie 1, nous allons fixer des objectifs, introduire les données d'utilisation et mettre en œuvre un tableau de bord de surveillance.


Table des matières de l'implémentation HITL
Partie ① Tableau de bord ← Cette fois Outil de vérification de la pièce Partie ③ HITL (① et ② + mécanisme de réapprentissage des modèles)

■ Résultat de la mise en œuvre simpledashboard.gif ■ Environnement

Python 3.7.7 dash 1.16.1 dash-bootstrap-components 0.10.7 dash-core-components 1.12.1 dash-html-components 1.1.1 dash-renderer 1.8.1 dash-table 4.10.1 plotly 4.10.0 Flask 1.1.2 lightgbm 3.0.0

fixation de l'objectif

Différentes constructions de HITL sont attendues en fonction de la tâche, mais dans cette série, nous adopterons celle basée sur la détection d'anomalies.

■ Implémentez les éléments suivants dans l'application WEB

--Surveillance

HITL_1.png

Données d'utilisation

L'implémentation a utilisé les données de Kaggle's Credit Card Fraud Detection. [Référence 2]

Ces données sont des données déséquilibrées avec la variable objective d'utilisation frauduleuse de cartes de crédit, et sont souvent utilisées pour essayer des modèles de détection d'anomalies.

Les données d'origine incluent les données PCA de V1 à V28. Puisque le but de cette fois est une démonstration pour saisir l'image, la quantité de caractéristique d'entrée est fixée à 2 variables (V4, V14) * afin qu'elle soit facile à comprendre une fois visualisée.

Dans la démo, nous surveillerons, vérifierons et réapprendrons artificiellement les données ci-dessus ainsi que les données normales inconnues. Les données normales inconnues créées artificiellement doivent satisfaire aux conditions suivantes dans le scénario.

① Le modèle supervisé détecte à tort (détermine à tort qu'il est anormal) (2) Le modèle de détection peut être détecté (c'est-à-dire que les données artificielles sont clairement différentes des données d'apprentissage d'origine) ③ Même en cas de réapprentissage, le modèle supervisé peut conserver le jugement d'anomalie existant

Sur la base de ce qui précède, nous avons créé les données de démonstration. (Moins que) (1 à 8s: connu (anormal à 3s), 9 à 11s: inconnu, répété deux fois)

HITL_2.png

Technologie utilisée

Décrit le cadre et le modèle utilisés pour la mise en œuvre.

■ Partie visualisation

■ Modèle d'apprentissage automatique, modèle de détection

--Modèle d'apprentissage automatique - LightGBM --Afficher le score de la classification binaire (normal: 0, invalide: 1)

la mise en oeuvre

Nous allons l'implémenter séparément ci-dessous.

    1. Tableau de bord ← cette fois
  1. Outil de vérification
    1. HITL ((1) et (2) + mécanisme de réapprentissage du modèle)

1. 1. Tableau de bord

■ Détails de mise en œuvre

--Objectif: tableau de bord simple (graphique + α) --Entrée: données de table (fichier csv)

■ Image de mise en œuvre HITL_3.png

■ Résultat de la mise en œuvre simpledashboard.gif

Sommaire

Cette fois, nous avons implémenté un tableau de bord à utiliser pour la surveillance dans Human In The Loop. Le tableau de bord visualise les informations de données réelles et le score de l'IA en temps réel, ce qui permet de mieux comprendre où l'IA se concentre sur les données réelles. (Dans ces données, AI semble juger qu'il est invalide lorsque V4 est positif et V14 est négatif) En utilisant Dash et de manière intrigue, j'ai trouvé qu'il était relativement facile de coder les parties HTML et CSS. Surtout, j'aimerais que vous éprouviez le sentiment que vous pouvez facilement implémenter une telle application WEB qui fonctionne en temps réel.

Si vous avez des améliorations ou des questions, je vous serais reconnaissant de bien vouloir commenter.

référence

  1. Une IA humaine dans la boucle qui crée une entreprise, une société et un avenir meilleurs https://note.com/masayamori/n/n2764e3cecc05

  2. Kaggle - Credit Card Fraud Detection https://www.kaggle.com/mlg-ulb/creditcardfraud

  3. Créez une application Web qui permet l'apprentissage automatique avec Dash [Étape 1] https://wimper-1996.hatenablog.com/entry/2019/10/28/dash_machine_learning1

  1. Code publié http://github.com/utmoto

  2. Dash https://dash.plotly.com/

  3. plotly https://plotly.com/

Recommended Posts

J'ai essayé d'implémenter Human In The Loop - Partie ① Tableau de bord -
J'ai essayé d'implémenter la fonction gamma inverse en python
J'ai implémenté N-Queen dans différentes langues et mesuré la vitesse
Je me suis perdu dans le labyrinthe
J'ai participé au tour de qualification ISUCON10!
J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
Découvrez la partie I «Monnaie multinationale» du livre «Test Driven Development» avec Python
Je veux gérer la rime part1
Implémenter une partie du processus en C ++
Je veux gérer la rime part3
J'ai essayé de sauvegarder les données récupérées au format CSV!
J'ai essayé d'implémenter la régression logistique de Cousera en Python
Tri sélect écrit en C
Je ne peux pas obtenir l'élément dans Selenium!
J'ai écrit l'aile coulissante dans la création.
J'ai implémenté le modèle VGG16 avec Keras et essayé d'identifier CIFAR10
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
Implémentation de DQN avec TensorFlow (je voulais ...)
J'ai essayé d'implémenter le filtre anti-spam bayésien de Robinson avec python
J'ai essayé de simuler "Birthday Paradox" avec Python
Je veux gérer la rime part7 (BOW)
Je ne peux pas saisir de caractères dans la zone de texte! ?? !! ?? !! !! ??
Boucle les variables en même temps dans le modèle
J'ai vérifié le calendrier supprimé dans le calendrier de l'Avent Qiita 2016
Je veux afficher la progression en Python!
J'ai implémenté CycleGAN (1)
J'ai implémenté ResNet!
J'ai essayé d'implémenter la recherche de priorité de largeur avec python (file d'attente, dessin personnalisé)
[Deep Learning from scratch] J'ai implémenté la couche Affine
J'ai essayé de représenter graphiquement les packages installés en Python
Trouvez la partie 575 de Wikipedia en Python
Je veux écrire en Python! (3) Utiliser des simulacres
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
J'ai essayé d'effacer la partie négative de Meros
Je veux gérer la rime part6 (organiser une fois)
Ce que j'ai appris en participant aux qualifications ISUCON10
Je ne peux pas utiliser la commande darknet dans Google Colaboratory!
Je veux gérer la rime part8 (fini une fois)
J'ai implémenté une commande de remplacement de type Vim dans Slackbot #Python
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 8) J'ai dessiné le graphique du chapitre 6 avec matplotlib