Partie 3/3 : Apprentissage actif pour les données textuelles

François HU - Data scientist au DataLab de la Société Générale Assurances - 19/11/19 - https://nbviewer.jupyter.org/github/curiousML/DSA/tree/master/text_mining/

In [3]:
from IPython.display import HTML, Image
HTML('''<script>code_show=true; function code_toggle() {if (code_show){$('div.input').hide();} else {$('div.input').show();}code_show = !code_show} $( document ).ready(code_toggle);</script><form action="javascript:code_toggle()"><input type="submit" value="cacher / afficher code"></form>''')
Out[3]:
In [1]:
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Out[1]:
run previous cell, wait for 2 seconds

1. Contexte et objectifs

  • Classifier automatiquement des données textuelles volumineuses : ces données sont labellisées par des experts humain (dans la littérature : "oracles")

Processus classique d'apprentissage statistique passif (passive machine learning) :

In [5]:
Image("img/passive_learning.png", width=600)
Out[5]:
  • Problèmes : processus d'annotation peut être trop long, trop difficile et/ou trop coûteux
  • Question : pouvons-nous entraîner les modèles avec $\color{red}{\text{moins de données annotées}}$ et avec $\color{red}{\text{moins d'intervention humaine}}$ ?

2. Active Learning

  • $\color{#228B22}{\text{Active Learning}}$ : Modèle plus performant avec moins d'entraînement si nous avons la possibilité de choisir les données à entraîner

Processus d'apprentissage statistique actif (active machine learning) :

In [11]:
Image("img/active_learning.png", width=600)
Out[11]:
  • Pour l'apprenant actif (active learner), il existe différentes stratégies de requête pour décider la donnée la plus informative (nous voulons éviter de requêter sur des données redondantes ou non-informatives)

3. Stratégies d'échantillonnage

Notations (supposons que nous avons un petit ensemble de données labélisées) :

  • $x_A^*$ l'instance la plus informative (i.e. la meilleure requête) selon une stratégie de séléction $A$ ;
  • $\mathcal{L} = \{x_i^*, y_i\}_{i = 1, \cdots, |\mathcal{L}|} $, l'ensemble des données labellisées ;
  • $\mathcal{U} = \{x_i\}_{i = 1, \cdots, |\mathcal{U}|}$, l'ensemble des données non labellisées ;
  • $\theta$, le modèle actuel ;
  • $\mathcal{C}$, l'ensemble des labels. Dans le cas binaire, les classes 0 et 1 (ou -1 et 1) sont souvent utilisées

nous allons voir deux stratégies classiques : échantillonnage basé sur l'incertitude du modèle et échantillonnage basé sur le désaccord des modèles

Echantillonnage basé sur l'incertitude (Uncertainty-based sampling)

In [5]:
Image("img/SVM_AL_US_tong_koller.png", width=800, height=200)
Out[5]:

(Prateek Jain, Sudheendra Vijayanarasimhan et Kristen Grauman)

Echantillonnage "least confident"

  • L'apprenant actif requête les instances pour lesquelles il n'est pas certain comment labelliser (Lewis and Gale, 1994).

  • Dans le cas d'un problème de :

    • classification binaire, l'échantillonnage incertain requête les instances où leur probabilité à posteriori d'être positif est proche de 0.5

    • classification multi-classe, l'échantillonnage incertain requête les instances où leur prédiction est la moins confiante

      $$x_{LC}^* = \arg\max_{x \in \mathcal{U}}\left\{ 1 - P_{\theta}(\hat{y} \ | \ x)\right\}$$

      où $\hat{y} = \arg\max\limits_{y}\left\{ P_{\theta}(y\ |\ x)\right\}$ est la classe avec la plus grande probabilité à postériori sous le modèle $\theta$.

In [6]:
Image("img/uncertainty_binary.png", width=800, height=200)
Out[6]:
In [7]:
Image("img/uncertainty_binary_select.png", width=800, height=200)
Out[7]:

Cette stratégie considère seulement l'information sur le label le plus probable mais ne tient pas en compte les autres labels

In [8]:
Image("img/uncertainty_multi1.png", width=800, height=200)
Out[8]:
In [9]:
Image("img/uncertainty_multi2.png", width=800, height=200)
Out[9]: