[PYTHON] Techniques pour comprendre la base des décisions d'apprentissage en profondeur

L'apprentissage en profondeur peut fournir une précision extrêmement élevée dans des domaines spécifiques et sa gamme d'applications ne cesse de s'étendre. Cependant, un tel apprentissage en profondeur a également ses faiblesses. L'un des plus gros problèmes est que je ne sais pas sur quoi repose le jugement. L'apprentissage en profondeur a la particularité de bien apprendre les caractéristiques elles-mêmes des données au cours du processus d'apprentissage. On dit parfois que "les gens n'ont pas besoin d'extraire des fonctionnalités", mais inversement, c'est au réseau de décider des fonctionnalités à extraire. Comme son nom l'indique, les caractéristiques extraites sont latentes dans le poids du réseau profond, et il est extrêmement difficile d'en extraire «quelque chose» appris sous une forme que les humains peuvent comprendre.

learned_weights.png

Exemple: Réponse de la figure ci-dessus qui visualise le poids du réseau sur quelle base ce réseau juge les chats comme des chats (délai: 3 minutes) * image de [CS231n Visualisations](http: //cs231n.github) .io / réseaux-neuronaux-3 /) *

"Je devrais apprendre quelque chose, mais je ne suis pas sûr de ce que j'apprends."

C'est un problème d'interprétabilité dans l'apprentissage profond. Cependant, les recherches sur ce point ont progressé ces dernières années et plusieurs méthodes ont été proposées pour clarifier le fondement de l'arrêt. Dans ce document, je voudrais présenter ces méthodes.

1. Importance de la compréhension de la base du jugement

Il existe également une théorie selon laquelle "si la précision est élevée, c'est très bien", alors je vais d'abord présenter les mérites d'avoir un pouvoir explicatif avec quelques exemples.

Ce qui suit est une étude qui visualise les pixels, qui sont des indices importants pour faire des prédictions dans la classification des images.

smoothgrad.PNG SMOOTHGRAD//SmoothGrad:removingnoisebyaddingnoise

La gauche est l'image d'entrée, et l'image en noir et blanc à droite est une visualisation des parties importantes pour le jugement (la supérieure est la méthode existante, la inférieure est la méthode proposée). S'il est appliqué à un modèle pour le diagnostic pathologique, il sera possible de clarifier où dans l'image comme une photographie aux rayons X a été focalisée. Il est difficile de convaincre les gens qui disent: "Vous êtes malade. Je ne sais pas pourquoi, mais avec une forte probabilité", donc partager le processus est un processus important pour convaincre les décisions prises. .. L'apprentissage profond a été très réussi dans le domaine de l'imagerie, et ces techniques sont un moyen efficace de comprendre le processus de prise de décision.

Ensuite, je voudrais présenter une étude qui non seulement détecte s'il y a ou non une situation de crise (comme un risque de suicide) à partir des déclarations sur SNS, mais fournit également la base de la détection.

crisis.PNG Detecting and Explaining Crisis

Dans cette recherche, nous utilisons une technique appelée Attention, qui est souvent utilisée dans le traitement du langage naturel, pour calculer l'importance du jugement pour chaque mot d'une déclaration et la visualiser. Puisqu'il y a tellement de commentaires sur SNS, nous essayons d'aider à répondre en priorisant (triant) ceux à haut risque (D'ailleurs, nous menons conjointement cette recherche Koko. //itskoko.com/) est une entreprise du MIT Media Lab qui fournit des fonctions de consultation des problèmes via l'application de messagerie. Puisqu'il est d'une institution de recherche, il essaie d'utiliser les derniers résultats de recherche dans le service. C'est une fonctionnalité).

Il existe également des études qui appliquent cette technique Attention au sous-titrage d'image pour savoir où dans l'image vous vous concentrez lors de la génération de sous-titres.

image_caption_explanation.png

Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

On peut dire que toutes les études supposent que les gens agissent (effectuent un travail) en fonction du jugement du modèle d'apprentissage automatique. Je pense que l'apprentissage automatique sera utilisé dans divers domaines à l'avenir, mais je pense qu'un tel mécanisme est indispensable pour que les humains et les modèles d'apprentissage automatique travaillent en coopération. En Europe, ce point est à l'étude, et pour les appareils équipés de soi-disant IA, on considère également qu'il devrait être possible de présenter le processus de jugement lorsque l'utilisateur le demande] https://arxiv.org/abs/1606.08813).

Il est également important en termes de vérification du comportement du modèle d'apprentissage automatique. En effet, ces dernières années, il a été signalé qu'il existe une méthode de "piratage" du modèle d'apprentissage. Ceci est également appelé attaque contradictoire, et il est possible de mal identifier le résultat de la reconnaissance en ajoutant un bruit infime qui ne peut pas être vu en un coup d'œil à l'image d'entrée. Dans la figure ci-dessous, le panda est confondu avec un tenagazaru en ajoutant du bruit à l'image d'entrée.

adversarial_example.png Intriguing properties of neural networks

En outre, Certaines études ont montré qu'il est possible de mal identifier les panneaux de signalisation. Ceci est un exemple légèrement horrible lorsque vous pensez que le panneau d'arrêt est mal identifié pendant le fonctionnement automatique. Cette méthode est une conférence de premier plan sur l'apprentissage automatique [NIPS envisage également activement la méthode et la méthode de défense dans un format de compétition](https://www.kaggle.com/c/nips-2017-non- attaque antagoniste ciblée).

En comprenant la logique de jugement du modèle d'apprentissage automatique, il est possible de se rendre compte qu'il s'agit d'une «logique inhabituelle» dans le cas d'une telle attaque. En outre, même si elle n'est pas attaquée séparément, la précision peut être réduite en modifiant purement la tendance des données (comme le comportement de l'utilisateur). Même dans ce cas, il est facile de le gérer si vous connaissez la quantité de fonctionnalités sur laquelle le modèle s'est appuyé. En d'autres termes, il est important d'interpréter la base du jugement en termes de maintien du modèle que nous utilisons.

2. Définition de la "compréhension" du fondement du jugement

À partir de là, nous verrons comment «comprendre» réellement la base de jugement de l'apprentissage profond. Cependant, ce que l'on entend par «compréhension» n'est pas clair, voici donc quelques définitions.

Premièrement, il y a deux perspectives en termes de compréhension du modèle.

Puisqu'il existe différents types de modèles qui sont réellement utilisés, il est difficile de comprendre le mécanisme du contenu un par un. Par conséquent, nous nous concentrerons ici sur la «compréhension du comportement». Plus précisément, on suppose que vous pouvez "comprendre" si vous pouvez "expliquer" quel type d'entrée et quel type de sortie seront obtenus, en partant de l'état où le modèle entraîné est donné. En parlant de distributeurs automatiques, ce n'est pas grave si vous pouvez comprendre quel type de boisson sortira lorsque vous appuyez sur le bouton, et si vous appuyez sur le bouton, ce signal se dirigera vers la machine interne ... ,à propos de ça.

Or, puisque «l'explication» est donnée aux humains, elle doit être donnée dans des «expressions» que les humains peuvent comprendre. Cependant, si vous pouvez «l'exprimer», vous pouvez l'expliquer. Même s'il s'agit d'une expression humaine reconnaissable comme l'image qui visualise le poids du réseau montré précédemment, c'est une autre histoire de savoir si elle a un pouvoir explicatif. La différence entre cette expression et la description est définie comme suit.

En d'autres termes, «l'explication» n'est pas simplement une «expression» telle que la visualisation et l'écriture, mais une «explication» seulement après «avoir exprimé» les «caractéristiques qui contribuent à la sortie du réseau». est. En d'autres termes, l'explication comporte deux étapes: calculer l'impact de chaque entrée sur la sortie et l'exprimer sous une forme lisible par l'homme. Les méthodes présentées ci-dessous ont également été conçues pour ces deux points.

3. Remettez en question «l'explication» du réseau appris

À partir de là, je vais introduire une méthode pour expliquer réellement la sortie du réseau. Les méthodes peuvent être globalement divisées comme suit.

  1. Créez une entrée qui maximise la sortie réseau
  2. Analysez la sensibilité à l'entrée
  3. Inversez le chemin de la sortie à l'entrée
  4. Estimer les tendances de production de divers intrants
  5. Inférer les critères de jugement du montant du changement
  6. Corrigez les résultats d'apprentissage pour qu'ils soient prévisibles
  7. Incorporer l'accent mis sur les intrants dans le modèle

Incorporer le dernier point de vue dans le modèle (Attention) est hors de la perspective d'une boîte noire car il nécessite une modification du réseau lui-même, mais c'est une méthode très efficace et sera introduite ici.

3.1 Maximisation de l'activation

Pour les réseaux traitant des problèmes de classification, le résultat est la probabilité de classification pour chaque catégorie. Ici, si vous pouvez trouver une entrée avec une probabilité de classification très élevée d'une catégorie, elle est synonyme de ce que le réseau considère comme un «exemple typique» de cette catégorie, et si vous pouvez l'identifier, cela sera utile pour estimer la base de jugement. est.

Ce qui suit est une étude publiée par Google en 2012 qui permet à un réseau ayant appris les caractéristiques d'une image par apprentissage non supervisé (Auto encoder) de l'identifier, et les données jugées les plus humaines (ci-dessus) et les plus humaines C'est un composite des données à juger (en bas).

activation_maximization.png Building high-level features using large scale unsupervised learning

Le problème ici est de trouver $ x ^ * $ qui maximise la probabilité $ p $ d'être classé dans la classe $ c $, qui est fondamentalement l'entrée minimale.

x^* = max_x \log p(w_c|x) - \lambda ||x||^2

(||x||^2 = 1Il existe également une méthode pour mettre une contrainte sur la surface sphérique unitaire comme)

Cependant, cela produira certainement une image mystérieuse qui a la sortie maximale mais qui ne peut pas être comprise par les humains (un état comme le surapprentissage), il y a donc aussi un modèle qui met une contrainte qu'il est plus proche de l'entrée réelle. Il y a.

x^* = max_x \log p(w_c|x) + \log p(x)

Cela signifie ajouter $ p (x) $, c'est-à-dire la probabilité que les données apparaissent réellement. Il existe une étude qui visualise les caractéristiques de l'image en utilisant les mêmes contraintes.

am_with_expert.png Understanding Deep Image Representations by Inverting Them

Cependant, si les données d'entrée sont de grande dimension, il sera très difficile d'estimer ce $ p (x) $ avec une grande précision. Par conséquent, il existe également un procédé pour le réaliser en combinaison avec un modèle de génération tel que VAE ou GAN. Ici, $ x ^ * $ sera généré à partir du vecteur approprié $ z $ via le générateur.

max_{z \in Z} \log p(w_c|g(z)) - \lambda ||z||^2

C'est une forme de génération d'une image à partir de $ z $ qui est classée dans la classe $ w_c $. La génération d'image est GAN, mais il existe une étude dans le sens de GAN qui équivaut à cette contrainte, c'est-à-dire une contrainte que l'image générée est classée dans la même classe que la classe réelle (Synthèse d'image conditionnelle avec auxiliaire Classifier GANs).

ac-gan.PNG

De plus, l'objectif du GAN et celui de comprendre la base du jugement sont légèrement différents.(En bref, il vaut mieux être abstrait dans une certaine mesure que la vraie chose).. Par conséquent, dans la formule ci-dessus\lambda||z||^2La plage d'expression est supprimée en tirant parti des restrictions de.

À propos, Deep Dream, qui est devenu un sujet brûlant pendant un certain temps, utilise cette méthode. L'optimisation de l'image d'entrée (ou du bruit aléatoire) pour maximiser la sortie du réseau se traduira par une telle image. Cet article fournit une explication détaillée de la visualisation des fonctionnalités d'image par cette maximisation d'activation (les images suivantes sont également tirées de cet article).

Feature Visualization

deep_dream.png

De plus, comme suite de cet article, un article comprenant une démo où vous pouvez voir la base du jugement de manière interactive sur la page est publié. Cet article va encore plus loin et tente d'identifier «où» dans le réseau contribue à maximiser le jugement de chaque classe.

The Building Blocks of Interpretability

3.2. Analyse de sensibilité

Si l'une des fonctionnalités d'entrée a un effet significatif sur la sortie en la modifiant, elle peut être considérée comme une fonctionnalité importante. En d'autres termes, il semble que son importance puisse être comprise en examinant l'ampleur du changement auquel le réseau est sensible.

Cela peut être réalisé en examinant le Gradient, car la différence entre en jeu est la quantité de changement. Puisque le réseau neuronal apprend du gradient en premier lieu, cela fonctionne bien avec le mécanisme d'optimisation existant. Vous pouvez facilement calculer la sensibilité à l'entrée $ x $ comme suit:

S(x) = (\frac{\partial f}{\partial x})^2

Le SMOOTH GRAD introduit au début est un appareil qui rend ce look plus propre (intentionnellement parce que le dégradé est trop sensible au bruit). Créez plusieurs échantillons avec du bruit ajouté et faites la moyenne des résultats).

smoothgrad_architecture.png

Cependant, ce que vous obtenez, c'est quelle partie du changement rend l'erreur plus grande / plus petite. Par exemple, je sais où le changer pour le faire ressembler davantage à une voiture, mais je ne sais pas pourquoi il est considéré comme une voiture en premier lieu. Vous devez en être conscient lors de son utilisation.

3.3. Inverser le chemin de la sortie à l'entrée (Déconvolution / LRP)

L'idée suivante est que si vous inversez l'entrée de la sortie, vous pourriez obtenir des résultats significatifs.

Ce qui suit propose une méthode dans laquelle l'entrée qui contribue à une certaine couche peut être recalculée en propageant le réseau vers une certaine couche, puis en définissant la partie autre que la partie à examiner à 0 et en se propageant en arrière.

deconvolution.png Striving for Simplicity: The All Convolutional Net

Afin de supprimer la valeur négative qui atténue l'activation dans cette rétro-propagation, la partie où la valeur devient négative pendant la propagation / rétro-propagation est mise à 0 et propagée (par conséquent, elle est non-linéaire équivalente à ReLU). En traitement). Dans la recherche précédente, nous avons nommé cette "propagation guidée en retour", et par conséquent, nous avons réussi à visualiser des points importants dans les entrées suivantes.

guided_backpropagation.png

Une méthode de traçage du dégradé à l'envers du libellé souhaité a également été proposée car on veut savoir uniquement où il a contribué à la classification de la classe.

grad-cam.png

Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

Il s'agit d'une méthode de calcul de la contribution de chaque carte de caractéristiques jusqu'à la classification et de rétropropagation avec le poids. Cela vous donnera une sortie semblable à une carte thermique (le diagramme Grad-CAM en bas de la deuxième colonne à partir de la gauche dans la figure ci-dessus). Cependant, puisque la contribution est calculée en unités de carte, il n'est pas possible d'obtenir des contributions en unités de pixels comme la propagation guidée en retour mentionnée ci-dessus. Par conséquent, il est dit dans l'article ci-dessus qu'il doit être utilisé ensemble (Guided Grad-CAM). L'explication détaillée de Grad-CAM et le résultat de son application sont présentés dans le blog suivant.

L'apprentissage profond regarde où dans l'image! ?? Vérifiez la différence entre "Oshiyaki" et "Pizza" avec CNN

La propagation de pertinence par couche (LRP) est une technique qui propage les relations entre les couches en sens inverse pour atteindre l'entrée. L'idée est que la somme des contributions de chaque entrée à la sortie est égale entre les couches et que la distribution ne change que par propagation.

lrp_principle.png

Ensuite, la façon de calculer ce montant de contribution (pertinence) est définie comme suit (la dérivation est Explication des décisions de classification non linéaire avec décomposition de Taylor profonde / pii / S0031320316303582? via% 3Dihub)).

lrp_calc_relevance.png

La propagation normale est l'activation dans ReLU (haut du tableau), et lorsque la plage de valeurs est limitée (0 à 255) comme la couche d'entrée qui reçoit l'image, la règle au centre du tableau (Intensités des pixels = intervalle fermé) Est appliqué. Un tutoriel pour implémenter cela est également disponible et vous pouvez l'essayer.

Tutorial: Implementing Layer-Wise Relevance Propagation

Vous pouvez voir le résultat de LRP pour l'image que vous avez écrite sur ce site La démo est également disponible.

lrp_demo.png

Une méthode appelée PatternNet / PatternAttribution a été proposée comme version améliorée de ces méthodes.

Learning how to explain neural networks: PatternNet and PatternAttribution

Cet article indique qu'il n'est pas possible de comprendre la justification du jugement en analysant simplement les «poids» dans le réseau. Pour cette raison, divisez d'abord l'entrée $ x $ en $ s $, qui contribue à la sortie finale $ y $, et l'autre (c'est-à-dire le bruit) $ d $, et exprimez-la comme $ x = s + d $. Je vais. À ce stade, considérant que la sortie d'un réseau simple est $ w ^ T x = y $, le poids $ w $ filtre $ d $ à partir de $ x $ et définit $ s $ qui contribue à $ y $. Vous pouvez y penser comme ayant un rôle à extraire. Ensuite, le rôle du poids $ w $ est d'annuler le bruit $ d $, donc la direction vectorielle de $ w $ dépend de $ d $. Avec cela, peu importe combien vous recherchez, vous ne pouvez pas trouver $ s $. Dans la figure ci-dessous, la flèche noire est $ w $ et la flèche jaune est $ d $, et vous pouvez voir qu'elles pointent dans la direction de l'annulation l'une de l'autre. La direction de $ w $ dépend de $ d $ et n'a rien à voir avec le $ s $ que vous recherchez.

patternNet.png

À ce stade, $ y = w ^ T x = w ^ T (s + d) $, et $ d $ doivent être annulés de $ w $, donc $ w ^ T d = 0 $ et $ w ^ T s = y $. De plus, puisque $ y $ et $ d $ ne devraient avoir aucune corrélation, $ cov [y, d] = 0 $, et $ cov [x, y] $ équivaut à $ cov [s, y] $. Je vais. Si la fonction qui extrait $ s $ de $ x $ est $ S (x) $, alors $ cov [s, y] = cov [S (x), y] $. Vous pouvez l'utiliser pour trouver $ S (x) $.

Premièrement, dans le cas d'une transformation linéaire, seul $ y $ linéaire peut être produit = $ s $ doit également être linéaire, donc la corrélation doit être une relation linéaire. En d'autres termes, la formule suivante est valable.

s = ay => S_a(x) = a w^T x

En remplaçant ceci dans la relation $ cov $ ci-dessus

cov[x, y] = cov[S(x), y] => cov[a w^T x, y] = a cov[w^T x, y] = a cov[y, y]

d'ici,

a = \frac{cov[x, y]}{cov[y, y]} = \frac{cov[x, y]}{\sigma_y^2}

Ce sera. Cependant, il ne s'agit que d'un cas linéaire, et c'est une fonction non linéaire qui ne se propage pas dans le sens négatif dans ReLU, qui est souvent utilisée dans les images. Dans ce cas, il faut considérer $ s $ et $ d $ séparément pour $ s_ + et d_ + $ dans le sens positif et $ s_- et d_- $ dans le sens négatif. Cette formule de dérivation est omise, mais les valeurs qui se propagent de cette manière sont remplacées par $ s_ + et s_- $ dans le DeConvNet / Guided Backpropagation et LRP améliorés, qui sont respectivement nommés PatternNet et PatternAttribution.

patternNet_p.png

De plus, la capacité d'extraction de $ S (x) $ peut être mesurée à l'aide de l'indice d'évaluation $ \ rho $ suivant.

patternNet_f.png

$ x-S (x) $ a une corrélation très élevée avec $ w ^ T x = y $ car si $ S (x) $ sort complètement de $ s $, il ne reste que $ d $, qui est une épave. En conséquence, la valeur devient élevée. Vous pouvez désormais estimer la base de jugement avec une plus grande précision et mesurer sa capacité d'estimation.

3.4. Estimation des tendances de la production de divers intrants (LIME)

L'idée suivante est d'explorer le comportement du modèle non pas à partir d'une seule entrée mais à partir d'entrées transformées de diverses manières. C'est le LIME (modèle interprétable local) proposé dans «Pourquoi devrais-je vous faire confiance?» Expliquant les prédictions de tout classificateur. -Explications agnostiques).

La technique consiste d'abord à générer une entrée qui ressemble à l'image originale divisée en plusieurs parties. Envoyez-le à un modèle entraîné pour obtenir des résultats de jugement. Ensuite, vous obtiendrez une paire d'entrée et de jugement de modèle. Ceci est formé par un modèle plus simple et plus descriptif préparé séparément du modèle de corps principal.

lime.png Introduction to Local Interpretable Model-Agnostic Explanations (LIME)

Ensuite, la quantité de caractéristiques qui est accentuée peut être obtenue à partir du modèle simple formé. En raison de la simplicité de la technique, cela peut être appliqué à n'importe quel modèle. Les articles suivants fournissent des explications plus détaillées et les résultats de l'utilisation réelle.

Interprétation des résultats de prédiction d'apprentissage automatique avec LIME

Understanding Black-box Predictions via Influence Functions est une étude qui formule l'effet de cette fluctuation des données d'entrée sur la sortie. Nous avons formulé à la fois l'effet de chaque donnée d'apprentissage et l'effet des changements sur les données d'entraînement, et ce faisant, nous pouvons identifier des échantillons qui contribuent au jugement du modèle / réduisent la précision du jugement et apportent des changements qui affectent le jugement du modèle. Je peux vous guider.

En outre, il existe une étude qui a fait un modèle d'apprentissage automatique du mécanisme LIME d'identification de ce qui est important en masquant l'image (apprendre à masquer le modèle de reconnaissance d'image). Cela permet de visualiser la partie masquée = la partie importante.

image.png Interpretable Explanations of Black Boxes by Meaningful Perturbation

3.5. Inférer les critères de jugement du montant du changement

Lorsque le résultat est que A est OK et B est NG, comment B peut-il être OK / fermé? Si vous comprenez cela, il semble que vous puissiez comprendre ce qu'il y a entre OK et NG = critères de jugement. Les articles suivants se concentrent sur ce point.

Interpretable Predictions of Tree-based Ensembles via Actionable Feature Tweaking

Il s'agit d'une méthode basée sur l'apprentissage d'ensemble utilisant un arbre de décision, et le coût minimum est calculé en calculant la quantité de changement pour amener NG x à OK dans chaque arbre de décision et en trouvant le montant minimum de changement à partir de celui-ci. C'est une méthode pour trouver la quantité de changement qui convient. Ce document s'applique à la livraison des annonces et tente de transformer les annonces "invendables" en annonces "vendables" (qui peuvent être utilisées pour définir des frais publicitaires appropriés en fonction des frais de modification).

3.6. Faire en sorte que les résultats d'apprentissage soient prévisibles

C'est une idée d'inversion, l'idée de ne pas prendre de décisions que vous ne comprenez pas en premier lieu. Vous trouverez ci-dessous une tâche qui tente d'apprendre les recommandations des cafés, qui sont généralement meilleures pour les cafés à proximité, mais lorsqu'elles sont réellement formées, elles font de fausses prédictions telles que les recommander même si elles sont loin du manque de données. Il est conçu pour faire (figure de gauche). Pour éviter cela, nous limitons la tendance à être «monotone» (figure de droite).

lattice.png TensorFlow Lattice: Flexibility Empowered by Prior Knowledge Implémentation: tensorflow / lattice

Le concept est de contrôler la tendance générale tout en tirant parti de la puissance expressive du modèle. Cela vous permet de refléter une tendance plus fine à frapper un modèle linéaire ou similaire. En premier lieu, il peut être nécessaire d'augmenter les données, mais dans de nombreux cas, elles ne sont pas disponibles. Il existe un risque que vous ne soyez pas en mesure de répondre à la situation à laquelle vous devriez être confronté en appliquant des restrictions, mais vous pouvez éviter le risque de comportement imprévisible. Ce sera un compromis.

3.7. Attention à l'entrée

Enfin, nous introduirons une méthode pour introduire un mécanisme qui indique le point d'intérêt des données d'entrée dans le modèle. C'est une technique appelée Attention. La première apparition était probablement l'application au modèle de traduction, et il est apparu comme un mécanisme permettant d'apprendre sur quel mot de la phrase originale se concentrer lors de la sortie du mot traduit. Dans la figure ci-dessous, l'axe des x est la phrase d'origine et l'axe des y est la phrase de destination de la traduction, et il est montré quel mot de la phrase d'origine est référencé lorsque le mot de la phrase de destination de traduction est sorti.

attention.png Neural Machine Translation by Jointly Learning to Align and Translate

L'idée de base de Attention est d'utiliser non seulement la couche cachée immédiatement précédente, mais également la couche cachée passée lors de la sortie, et le poids est réparti en fonction des points importants à ce moment-là.

attention_architecture.png Effective Approaches to Attention-based Neural Machine Translation

Étant donné les couches cachées au temps $ t $ comme $ h_t $ et les couches cachées dans le passé comme $ \ override {h_s} $, l'attention pour elles peut être définie comme suit:

a_t(s) = \frac{exp(score(h_t, \overline{h_s}))}{\sum_{s'}exp(score(h_t, \overline{h_s}))}

Il existe différentes variantes de score, comme prendre simplement le produit intérieur ou préparer des poids pour l'attention.

attention_score_variation.png

Ensuite, multipliez cette Attention pour créer un vecteur (contexte) $ c $ pour la sortie du temps $ t $. Il peut sembler que vous faites quelque chose de difficile, mais cela équivaut à peu près à prendre une moyenne pondérée.

c_t = \sum_s a_t(s) \overline{h_s}

C'est le mécanisme de base de l'attention. Cela vous permet d'obtenir de $ a_t $ la série de données sur laquelle vous vous concentrez actuellement.

4. Évaluation du pouvoir explicatif

Dans ce qui précède, nous avons introduit diverses méthodes "d'explication", mais y a-t-il un moyen de vérifier ce "pouvoir explicatif"? De ce point de vue, il y a les deux points suivants.

4.1 Évaluation de la cohérence de la description

Vous pouvez vérifier la cohérence de la description en regardant comment la description change, par exemple, si l'entrée est une image et que vous la faites glisser progressivement. Dans la figure ci-dessous, lorsque l'image du numéro 2 est décalée vers la droite, la façon dont l'explication ($ R (x) $) change est comparée pour chaque méthode (lorsque le LRP le plus à droite est décalé). On peut voir que le degré d'influence de est faible).

explanation_1.png Methods for Interpreting and Understanding Deep Neural Networks

4.2 Évaluation de l'exactitude de l'explication

Pour l'exactitude de l'explication, il existe une technique appelée inversion de pixels. Il s'agit de supprimer progressivement les pixels (mots si les données sont en langage naturel) qui sont importants dans l'explication, et de mesurer le degré de changement de précision. La figure ci-dessous montre comment la précision de classification diminue lorsque les pixels importants sont extraits (encore une fois, vous pouvez voir que le LRP a chuté le plus rapidement et est très explicatif).

explanation_2.png Methods for Interpreting and Understanding Deep Neural Networks

En utilisant ces méthodes, vous pouvez vérifier le "pouvoir explicatif" de la méthode utilisée pour l'explication.

4.3 Universalité de la mise en œuvre

L'estimation de la base du jugement fait dans la boîte noire ne tient essentiellement compte que de l'entrée et de la sortie. Cela signifie mettre de côté ce que vous faites à l'intérieur, donc tant que les entrées et les sorties correspondent sur n'importe quel réseau à l'intérieur, les estimations de la justification de cette décision doivent être les mêmes ... ·à propos de ça.

5. Exemple d'application

Que peut-on faire avec les techniques que j'ai introduites jusqu'à présent pour expliquer les décisions de DNN? Étant donné que DNN est très bon pour l'apprentissage d'expression (extraction de caractéristiques), il peut être possible d'acquérir une nouvelle conscience en permettant aux gens d'apprendre l'expression d'un objet qui ne reconnaît pas bien la caractéristique en premier lieu, puis de l'expliquer. ..

Ce qui suit est une visualisation des relations entre les atomes qui contribuent à la formation de la structure moléculaire à l'aide d'un modèle qui entraîne la structure moléculaire (une quantité considérable de connaissances chimiques est nécessaire pour lire l'article qui a fait cette présentation). Donc, cette description peut être un peu inexacte).

application_1.png Quantum-Chemical Insights from Deep Tensor Neural Networks

AlphaGo a surpassé les gens en Go, mais si AlphaGo avait un haut niveau de responsabilité, les gens auraient acquis plus de connaissances sur Go. Il existe de nombreux domaines de recherche que les gens n'ont pas encore entièrement compris. Je pense que le pouvoir de l'apprentissage en profondeur sera d'une grande aide pour essayer de clarifier cela.

Il existe de nombreux problèmes non résolus non seulement dans le domaine de la science, mais également dans le domaine des sciences sociales. Il est exagéré de dire pourquoi les gens continuent de se battre, mais ces dernières années, des données sur les incidents terroristes ont été compilées.

global_tero.png Global Terrorism Database

Ces données peuvent fournir des indices sur certaines mesures efficaces. En passant, l'Université de Columbia, qui mène des recherches pour détecter les situations de crise à partir des déclarations sur SNS introduites au début, mène également des recherches pour détecter les signes de conflit de gangs de SNS. Cela semble avoir fait un travail d'annotation des données en coopération avec les travailleurs sociaux.

gang.png Automatically Processing Tweets from Gang-Involved Youth: Towards Detecting Loss and Aggression

Au Japon, où il y a de nombreux tremblements de terre, c'est un moyen prometteur de l'utiliser pour des contre-mesures en cas de catastrophe. Il y a une image satellite avant et après le grand tremblement de terre du Japon oriental appelé jeu de données ABCD qui annote ce qui était sûr après avoir été endommagé par le tsunami et ce qui ne l'était pas.

abcd_dataset.png

Afin de recevoir une assurance et une indemnisation après que le bâtiment est endommagé, il est nécessaire d'évaluer la situation des dommages, mais dans le cas d'une catastrophe de grande ampleur, il faut du temps pour que l'argent parvienne à la victime. Il y a un problème qu'il faut. À ce stade, ce sera d'une grande aide si vous pouvez montrer le degré et les motifs des dommages ainsi que la présence ou l'absence de dommages.

De cette façon, il y a tellement de problèmes non résolus non seulement dans le domaine scientifique mais aussi dans la société, et il est difficile pour les humains seuls de découvrir des «caractéristiques» pour les résoudre. Dans ces circonstances, il peut être possible d'obtenir une opportunité de résoudre le problème en donnant un "pouvoir explicatif" non seulement à l'apprentissage automatique, mais aussi à l'apprentissage profond, qui est particulièrement fort dans l'apprentissage d'expression.

Je pense que la méthode pour donner ces "explications" deviendra plus importante pour résoudre plus de problèmes à l'avenir.

6. Références

Articles

Datasets

Recommended Posts

Techniques pour comprendre la base des décisions d'apprentissage en profondeur
Othello-De la troisième ligne de "Implementation Deep Learning" (3)
Visualisez les effets de l'apprentissage profond / de la régularisation
Résumé des pages utiles pour étudier le framework d'apprentissage profond Chainer
Othello-De la troisième ligne de "Implementation Deep Learning" (2)
L'histoire de l'apprentissage profond avec TPU
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Compréhension de base de l'estimation de la profondeur stéréo (Deep Learning)
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Deep learning 1 Pratique du deep learning
Comptez le nombre de paramètres dans le modèle d'apprentissage en profondeur
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
Deep running 2 Réglage de l'apprentissage profond
Apprentissage profond pour la formation composée?
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Traduction japonaise du matériel pédagogique public du diplôme nano d'apprentissage profond
Compréhension de base de l'estimation de la profondeur par caméra mono (Deep Learning)
Mémorandum de l'outil de gestion de paquets Python ez_setup
J'ai recherché une carte similaire de Hearthstone avec Deep Learning
[Python] Comprendre le potentiel_field_planning de Python Robotics
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
[Détection d'anomalies] Essayez d'utiliser la dernière méthode d'apprentissage à distance
[AI] Apprentissage en profondeur pour le débruitage d'image
Comment étudier pour le test G de Deep Learning Association (pour les débutants) [version 2020]
Graphique de l'historique du nombre de couches de deep learning et du changement de précision
Apprendre le latin dans le but d'écrire un programme d'analyse de phrases latines (partie 1)
[Exemple d'amélioration de Python] Quel est le site d'apprentissage recommandé pour les débutants en Python?
Jusqu'à ce que l'environnement Deep Learning (TensorFlow) utilisant le GPU soit préparé pour Ubuntu 14.04
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
J'ai essayé l'histoire courante de prédire la moyenne Nikkei à l'aide du Deep Learning (backtest)
Notes d'apprentissage depuis le début de Python 1
Signification des modèles et paramètres d'apprentissage en profondeur
Créez votre propre PC pour un apprentissage en profondeur
Essayez l'apprentissage profond de la génomique avec Kipoi
Détection d'objets par apprentissage profond pour comprendre en profondeur par Keras
Analyse émotionnelle des tweets avec apprentissage en profondeur
Résumé des petites techniques pour les commandes Linux
La troisième nuit de la boucle avec pour
Pandas du débutant, par le débutant, pour le débutant [Python]
[Apprentissage en profondeur] Détection de visage Nogisaka ~ Pour les débutants ~
Résumé des techniques utiles de Scrapy en Python
La deuxième nuit de la boucle avec pour
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
À propos du traitement d'expansion des données pour l'apprentissage en profondeur
Notes d'apprentissage depuis le début de Python 2
[Renforcer l'apprentissage] Rechercher le meilleur itinéraire
Préparez l'environnement pour le livre O'Reilly "Deep Learning from scratch" avec apt-get (Debian 8)
[Pour les débutants en intelligence artificielle] Parcours d'apprentissage et de référence en apprentissage automatique / programmation en profondeur
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Créez un environnement python pour apprendre la théorie et la mise en œuvre de l'apprentissage profond
L'apprentissage en profondeur
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
L'apprentissage en profondeur facilite considérablement la visualisation du laps de temps des changements physiques
Comment installer le framework d'apprentissage en profondeur Tensorflow 1.0 dans l'environnement Windows Anaconda
Introduction au Deep Learning pour la première fois (Chainer) Reconnaissance de caractères japonais Chapitre 4 [Amélioration de la précision de la reconnaissance en développant les données]
Ordre d'étude recommandé pour les débutants en apprentissage automatique / apprentissage en profondeur
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Apprentissage profond / rétropropagation d'erreur de la fonction sigmoïde