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/
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>''')
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Processus classique d'apprentissage statistique passif (passive machine learning) :
Image("img/passive_learning.png", width=600)
Processus d'apprentissage statistique actif (active machine learning) :
Image("img/active_learning.png", width=600)
Notations (supposons que nous avons un petit ensemble de données labélisé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
Image("img/SVM_AL_US_tong_koller.png", width=800, height=200)
(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$.
Image("img/uncertainty_binary.png", width=800, height=200)
Image("img/uncertainty_binary_select.png", width=800, height=200)
Cette stratégie considère seulement l'information sur le label le plus probable mais ne tient pas en compte les autres labels
Image("img/uncertainty_multi1.png", width=800, height=200)
Image("img/uncertainty_multi2.png", width=800, height=200)
Image("img/uncertainty_multi3.png", width=800, height=200)
Echantillonnage avec marge
(Scheffer et al, 2001) propose une stratégie pour remédier ce problème : l'échantillonnage avec marge (margin sampling)
$$x_{M}^* = \arg\max_{x \in \mathcal{U}}\left\{ P_{\theta}(\hat{y_1} \ | \ x) - P_{\theta}(\hat{y_2} \ | \ x)\right\}$$
où $\hat{y_i}$ est la $i$-ème plus probable classe à postériori sous le modèle $\theta$.
L'apprenant est donc :
Cette stratégie aide l'apprenant à discriminer entre deux classes les plus probables mais cette approche continue d'ignorer la distribution des sorties pour les classes restantes (et cela peut poser problème si nous avons un très grand ensemble de labels)
Echantillonnage par entropie
Une stratégie d'échantillonnage incertain plus générale (Shannon, 1948) utilise l'entropie comme mesure d'incertitude
$$x_{H}^* = \arg\max_{x \in \mathcal{U}}\left\{ - \sum\limits_{i=1}^{|\mathcal{C}|}P_{\theta}(y_i \ | \ x)\log P_{\theta}(y_i \ | \ x)\right\}$$
Une entropie est une mesure d'information théorique qui représente la quantité d'information nécessaire pour "encoder" une distribution
Pour une classification binaire, les trois stratégies ci-dessus sont équivalentes
Pour une classification multi-classe, l'approche entropique se généralise bien (voir Setteles et Craven (2008), pour les travaux sur les séquences)
Intuitivement :
Image("img/AL_QBC.png", width=800, height=200)
(Settles, 2010)
L'approche QBC (Seung et al., 1992) consiste à mettre en place, entraîner et maintenir plusieurs modèles d'apprenant $\Theta = \{\theta^{(1)},\cdots, \theta^{(N)} \}$.
Pour $i\in\{1, \cdots, C\}$, chaque modèle $\theta^{(i)}$ peut voter sur le label de chaque candidat de la requête
La requête la plus informative est l'instance où les modèles sont le plus en désaccord
Objectif en apprentissage : donner le meilleur modèle dans l'espace de versions. Objectif en apprentissage actif : contraindre le plus possible la taille de l'espace avec le moins d'instances labellisées que possible.
Afin d'implémenter un algorithme de séléction QBC nous devons préalablement :
1. Quel comité de modèles choisir ?
Image("img/qbc_process.png", width=800, height=200)
Image("img/qbag_process.png", width=800, height=200)
2. Quelle mesure de désaccord choisir ?
Il existe différentes approches pour mesurer le désaccord. Nous allons seulement présenter les deux méthodes les plus connues :
Le vote entropy (Dagon et Engelson, 1995) vue comme une généralisation de $x_{H}^*$ :
$$x_{VE}^* = \arg\max_{x \in \mathcal{U}}\left\{ - \sum\limits_{i=1}^{|\mathcal{C}|}\frac{V(y_i)}{N} \ \log \frac{V(y_i)}{N} \right\}$$
où $N$ est la taille de la comité et $V(y_i)$ le nombre de vote pour la classe $y_i$.
La divergence moyenne de Kullback Leibler (MacCallum et Nigam, 1998) :
$$x_{KL}^* = \frac{1}{N} \sum\limits_{i=1}^{N} D(P_{\theta^{(i)}} \ || \ P_N )$$
où $D(P_{\theta^{(i)}} \ || \ P_N ) = \sum\limits_{j=1}^{|\mathcal{C}|}P_{\theta^{(i)}}(y_j \ | \ x)\log \frac{P_{\theta^{(i)}}(y_j \ | \ x)}{P_N(y_j \ | \ x)}$
avec $P_{N}(y_j \ | \ x) = \frac{1}{N}\sum_{j=1}^{|\mathcal{C}|}P_{\theta^{(i)}}(y_j \ | \ x)$
Image("img/exp3.png", width=800, height=200)
Image("img/res_log_pre.png", width=800, height=200)
Image("img/res_log.png", width=800, height=200)
résumé :
Active learning
deux méthodes classiques : échantillonnage incertain, échantillonnage basé sur le désaccord
par rapport à un échantillonnage aléatoire, nous pouvons obtenu la même performance du modèle tout en réduisant considérablement la taille des données d'apprentissage