Vous êtes sur la page 1sur 100

!

Rapport'de'Projet'de'Fin'd’Etude'
!

APPROCHES « DEEP LEARNING »


APPLIQUEES AUX SIGNAUX AUDIO :
PAROLE ET MUSIQUE
'
'
'
'
!
'
'
'
'
'
!
'
'
'
Valentin'BARRIERE'
IENAC12L'
!

Soutenance!le!04/09/15! !
Mémoire'de'Fin'd’Etudes' !
!

Page'II'
!
Mémoire'de'Fin'd’Etudes' !
!

! Remerciements*
!

Je#souhaite#remercier#M#PELLEGRINI#pour#son#accompagnement#tout#au#long#de#mon#stage,#et#dans#
mes#démarches#professionnelles.##
Je#souhaite#aussi#remercier#l’équipe#SAMoVA#pour#avoir#motivé#les#échanges#entre#les#différents#
projets#de#tous,#mais#aussi#pour#la#bonne#humeur#apportée#dans#les#locaux#de#l’IRIT#et#ailleurs.##

'

Page'III'
!
Mémoire'de'Fin'd’Etudes' !
!

Page'IV'
!
Mémoire'de'Fin'd’Etudes' !
!

Résumé*
!

Les!réseaux!de!neurones!(NN)!ont!réussi!à!se!faire!une!place!de!choix!dans!des!domaines!tels!
que!le!traitement!de!l’image.!Des!résultats!remarquables!ont!été!obtenus!par!exemple!en!détection!
d’objets!dans!des!photos.!Mon!stage!s’est!intéressé!à!l’application!de!NN!à!des!domaines!un!peu!moins!
explorés!avec!cette!technique!:!le!traitement!de!la!parole!et!l’extraction!d’information!en!musique!
(MIR!:!Musical!Information!Retrieval).!Une!présentation!des!principes!généraux!des!NN!sera!effectuée!
pour!les!nonFexperts.!

Au!cours!de!mon!stage,!nous!avons!implémenté!et!testé!plusieurs!types!de!NN.!!

Premièrement!nous!avons!appliqués!des!réseaux!de!neurones!convolutionnels!(CNN)!dans!le!
cadre!d’un!défi!(challenge!Eating!Condition,!Conférence!Interspeech!2015).!Ce!défi!consiste!à!detecter!
dans!un!enregistrement!audio!de!parole!lue!si!les!locuteurs!mangent!quelquechose!ou!non!tout!en!
parlant.!Il!s’agit!d’une!tache!de!classification!à!7!classes.!L’idée!principale!d’un!CNN!étant!de!capturer!
des!informations!spatiales!pertinentes!dans!les!images!qu’il!traite,!pour!des!tâches!de!classification!ou!
de!régression,!on!a!utilisé!ce!type!de!réseaux!ayant!de!très!bons!résultats!sur!des!données!visuelles!
pour! extraire! des! caractéristiques! d’un! signal! de! parole! en! utilisant! le! spectrogramme! de! ce! signal!
comme!s’il!s’agissait!d’une!image.!!

Ensuite,!nous!avons!mis!en!place!des!réseaux!de!neurones!récurrents!(RNN)!qui!permettent!
de! modéliser! les! séquences! temporelles! sur! une! tâche! de! régression! ayant! pour! but! d’extraire! des!
composantes! émotionnelles! de! morceaux! musicaux! toutes! les! 0,5! secondes.! Cette! tache! Les! RNN!
permettent!de!modéliser!les!séquences!temporelles,!ce!qui!fait!sens!ici.!!

Mots!clés!:!Apprentissage!profond,!Réseaux!de!neurones,!Traitement!de!la!parole,!Extraction!
d’information!en!musique,!Optimisation!

Page'V'
!
Mémoire'de'Fin'd’Etudes' !
!

Page'VI'
!
Mémoire'de'Fin'd’Etudes' !
!

! Abstract*
!

! Neural!Networks!(NN)!did!succeed!to!become!popular!in!fields!like!Image!processing.!Some!
remarkable! results! have! been! obtained,! for! exemple! in! object! detection! in! images.! During! my!
internship,! I! studied! the! application! of! NN! for! some! less! mainstream! approaches! :! the! speech!
processing!and!the!Musical!Information!Retrieval!(MIR).!A!presentation!of!the!general!principals!of!NN!
will!take!place!to!guide!the!nonFexperts.!

! During!my!internship!we!implemented!and!tested!several!kind!of!NN.!

Firstly,! we! applied! Convolutional! Neural! Networks! (CNN)! as! part! of! the! Eating! Condition! challenge!
(Interspeech!Conference).!!This!challenge!consists!of!a!classification!task!over!7!classes,!to!detect!if!the!
speaker! is! eating! while! he! speaks.! The! main! idea! behind! a! CNN! is! to! capture! pertinent! spatial!
informations!in!the!images!it!processes.!We!used!that!kind!of!network!that!has!really!good!results!on!
visual!datas!to!extract!some!features!from!a!speech!signal!by!using!his!spectrogram!like!a!picture!

Then,! we! have! implemented! RNNs! (Recurrent! Neural! Network)! that! are! performant! to!
modelize!temporal!sequences!on!a!regression!task!proposing!to!extract!the!emotional!components!of!
music!every!0,5sec.!

Key6words!:!Deep!Learning,!Neural!Networks,!Speech!processing,!Music!Information!Retrieval,!
Optimization!!

'

Page'VII'
!
Mémoire'de'Fin'd’Etudes' !
!

Page'VIII'
!
Mémoire'de'Fin'd’Etudes' !
!

! Table*des*matières*
!

! Introduction!:!Contexte!et!Problématique!................................................................................!1!
1.1! Problématique!du!stage!:!........................................................................................................!1!
1.2! Présentation!de!l’IRIT!:!............................................................................................................!2!
! Présentation!des!différents!outils!et!Etat!de!l’Art!.....................................................................!5!
2.1! Principe!du!réseau!de!neurones!:!Perceptron!et!MultiFlayer!Perceptron!(MLP)!.....................!5!
2.1.1! Biologie!du!neurone!........................................................................................................!5!
2.1.2! Neurone!simple!...............................................................................................................!6!
2.1.3! Perceptron!multicouches!................................................................................................!7!
2.2! Apprentissage!..........................................................................................................................!8!
2.2.1! Présentation!....................................................................................................................!8!
2.2.2! Fonction!de!coût!et!calcul!du!gradient!............................................................................!9!
2.2.3! Algorithme!de!convergence!..........................................................................................!10!
2.3! Les!réseaux!en!pratique!........................................................................................................!11!
2.3.1! Prétraitement!des!données!...........................................................................................!12!
2.3.2! Initialisations!du!modèle!...............................................................................................!12!
2.3.3! La!couche!finale!.............................................................................................................!13!
2.3.4! Algorithme!de!descente!du!gradient!:!Descente!du!gradient!avec!moment!.................!13!
2.3.5! Régularisation!................................................................................................................!14!
2.3.6! Dropout!.........................................................................................................................!15!
2.3.7! Autoencodeurs!..............................................................................................................!15!
2.3.8! Analyse!en!Composante!Principale!(PCA)!......................................................................!16!
2.3.9! Un!choix!difficile!:!les!hyperparamètres!........................................................................!18!
2.4! Réseaux!spéciaux!:!rapide!présentation!et!quelques!résultats!.............................................!19!
2.4.1! Réseau!de!neurones!convolutionnel!(CNN)!...................................................................!19!
2.4.2! Réseau!de!neurones!récurrents!(RNN)!..........................................................................!20!
2.5! Différentes!boites!à!outils!disponibles!:!................................................................................!22!
2.5.1! Logiciels!utilisables!(Matlab,!Python,!etc..)!...................................................................!22!
2.5.2! Theano!...........................................................................................................................!22!
2.5.3! Pylearn2!.........................................................................................................................!24!

Page'IX'
!
Mémoire'de'Fin'd’Etudes' !
!

2.5.4! Autres!(Lasagne,!Caffe,!Torch7)!.....................................................................................!26!
2.6! Conclusion!.............................................................................................................................!27!
! Application!à!la!parole!...........................................................................................................!29!
3.1! Réseau!de!neurones!convolutionnel!(CNN)!..........................................................................!29!
3.1.1! Présentation!générale!...................................................................................................!29!
3.1.2! Les!différentes!couches!.................................................................................................!30!
3.1.2.1! Convolution!en!deux!dimensions!..............................................................................!31!

3.1.2.2! Couche!de!convolution!..............................................................................................!31!

3.1.2.3! Couche!de!pooling!.....................................................................................................!32!

3.1.3! Différence!dans!la!retroFpropagation!............................................................................!34!
3.1.3.1! Couche!de!pooling!.....................................................................................................!34!

3.1.3.2! Couche!de!convolution!..............................................................................................!34!

3.2! Introduction!:!Challenge!Interspeech!’15!..............................................................................!35!
3.2.1! Présentation!..................................................................................................................!35!
3.2.2! Corpus!:!Eating!Condition!..............................................................................................!36!
3.2.3! Approche!générale!:!principe!et!choix!possibles!...........................................................!37!
3.3! Utilisation!du!corpus!.............................................................................................................!37!
3.4! Extractions!de!paramètres!acoustiques!................................................................................!38!
3.4.1! Spectrogrammes!...........................................................................................................!38!
3.4.2! Log!MEL!.........................................................................................................................!39!
3.4.3! Fenêtrage!......................................................................................................................!39!
3.4.4! Normalisation!................................................................................................................!40!
3.5! Réseaux!.................................................................................................................................!41!
3.6! Algorithme!d’apprentissage!..................................................................................................!42!
3.7! Posttraitement!des!scores!:!prédictions!par!fichier!..............................................................!43!
3.7.1! Moyenne!simple!............................................................................................................!44!
3.7.2! Utiliser!la!variable!centrée!réduite,!dite!moyenneFz!.....................................................!44!
3.7.3! Enlever!les!faux!positifs!.................................................................................................!44!
3.7.4! Nombre!de!maximums,!et!pourcentage!des!max!.........................................................!45!
3.8! Implémentations!...................................................................................................................!45!
3.8.1! Matlab!...........................................................................................................................!46!

Page'X'
!
Mémoire'de'Fin'd’Etudes' !
!

3.8.2! PythonFCython!...............................................................................................................!46!
3.8.3! Theano!...........................................................................................................................!47!
3.9! Résultats!................................................................................................................................!47!
3.9.1! Métrique!........................................................................................................................!47!
3.9.2! Matrices!de!confusion!...................................................................................................!48!
3.9.3! Interprétation!................................................................................................................!49!
3.10! Autres!expériences!................................................................................................................!49!
3.10.1! Normalisation!générale!ou!par!locuteur!.......................................................................!49!
3.10.2! Séparation!par!genre!.....................................................................................................!50!
3.10.3! Utilisation!différente!des!prédictions!............................................................................!51!
3.10.4! Séparer!les!données!par!rapport!aux!sons!graves!et!aigus!...........................................!51!
3.10.5! Autres!changements!hyperparamètres!.........................................................................!53!
3.11! Conclusion!.............................................................................................................................!53!
! Application!à!la!musique!........................................................................................................!55!
4.1! Réseau!de!neurones!récurrent!(RNN)!...................................................................................!55!
4.1.1! RNN!simple!....................................................................................................................!55!
4.1.2! Long!Short!Term!Memory!(LSTM)!.................................................................................!56!
4.2! Introduction!:!Challenge!MediaEval!’15!................................................................................!58!
4.2.1! Présentation!:!la!tache!«!Emotion!dans!la!musique!»!...................................................!58!
4.2.2! Corpus!...........................................................................................................................!60!
4.2.3! Différentes!sousFtaches!.................................................................................................!60!
4.3! Choix!d’un!modèle!pour!la!tache!1!........................................................................................!60!
4.3.1! Description!des!données!...............................................................................................!60!
4.3.2! Régression!linéaire!........................................................................................................!61!
4.3.2.1! La!régression!..............................................................................................................!61!

4.3.2.2! Les!résultats!...............................................................................................................!62!

4.3.3! RNN!...............................................................................................................................!62!
4.3.3.1! Le!réseau!...................................................................................................................!62!

4.3.3.2! Les!résultats!...............................................................................................................!62!

4.3.4! RNNFLSTM!.....................................................................................................................!63!
4.3.4.1! Le!réseau!...................................................................................................................!63!

Page'XI'
!
Mémoire'de'Fin'd’Etudes' !
!

4.3.4.2! Les!résultats!...............................................................................................................!64!

4.3.5! Denoising!Autoencoder!.................................................................................................!64!
4.4! Résultats!................................................................................................................................!65!
4.5! Conclusion!.............................................................................................................................!65!
! Conclusion!Générale!..............................................................................................................!67!
! Glossaire!................................................................................................................................!69!
! Bibliographie!.........................................................................................................................!71!
! Références!Web!.....................................................................................................................!75!
! Annexe!..................................................................................................................................!77!
!

Page'XII'
!
Mémoire'de'Fin'd’Etudes' !
!

! Introduction*:*Contexte*et*Problématique*
!

1.1! Problématique*du*stage*:*
!

Le! Machine# Learning! (Apprentissage! automatique)! est! un! domaine! est! plein! renouveau! depuis!
plusieurs! années.! Il! regroupe! tous! les! algorithmes! qui! modifient! euxFmêmes! des! paramètres! de!
modèles! en! fonction! des! données! auxquelles! ils! ont! accès.! Ces! modèles! permettent! de! faire! des!
prédictions!sur!d’autres!données!qu’ils!n’ont!jamais!vues.!Comme!nous!sommes!à!l’air!du!Big!Data!où!
des!volumes!exceptionnels!d’informations,!de!types!différents!sont!recueillis,!le!Machine#Learning!se!
porte!très!bien.!Cette!capacité!d’adaptation!permet!à!ces!algorithmes!de!donner!des!résultats!proches!
voir!meilleurs!que!l’humain!sur!certaines!taches!!!

Les!algorithmes!de!ce!type!pourront!résoudre!de!nombreux!problèmes!tels!que!:!!

F! !Segmenter!une!image!avec!un!algorithme!de!KFmoyenne!suivi!d’une!mixture!gaussienne![1]!
F! Permettre!à!un!robot!d’apprendre!à!marcher!pour!avancer!tout!seul!avec!une!boucle!de!retour!
fonctionnant!grâce!à!des!capteurs![2]!
F! Reconnaître!des!émotions!sur!un!visage!avec!des!machines!à!vecteurs!de!support![3]!
F! Faire!des!prédictions!de!matchs!sportifs!avec!des!réseaux!bayésiens![4]!!

Le! Machine# Learning! comprend! beaucoup! d’algorithmes! inspirés! par! la! nature,! et! un! domaine!
particulier!qui!en!a!récemment!émergé!est!celui!des!réseaux!de!neurones!profonds!(DNN1),!dit!aussi!
«!Apprentissage!profond!»!(Deep#Learning).!!

Ce! sont! des! réseaux! basés! sur! la! manière! dont! les! neurones! fonctionnent! et! qui! reconnaissent!
certains! types! de! données! en! construisant! des! connections! de! valeurs! particulières! entre! leurs!
différents!neurones.!Ces!réseaux!peuvent!avoir!des!physiologies!très!différentes!et!se!nourrissent!de!
données!de!tous!types!pour!de!nombreuses!tâches!différentes!:!!

F! Reconnaissance!faciale,!ou!bien!d’objets!sur!des!photos,!
F! Reconnaissance!d’accords!dans!une!mélodie!
F! Reconnaissance!de!la!parole!
F! Détection!en!avance!de!crise!d’épilepsie!
F! Création!de!morceaux!de!musique,!
F! Création!de!textes!dans!un!style!particulier!(ex!:!Shakespeare),!
F! Création!de!code!informatique,!!
F! Création!d’images!psychédéliques!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1
!Deep#Neural#Network!

Page'1'
!
Mémoire'de'Fin'd’Etudes' !
!

On! s’est! intéressé! lors! de! ce! stage! à! l’application! de! tels! réseaux! à! des! données! audio! de! type!
parole!et!musique.!Le!but!sera!d’explorer!les!dernières!avancées!en!matière!de!DNN!pour!ce!type!de!
données!à!la!place!d’autres!techniques!qui!ont!déjà!prouvé!leur!intérêt!comme!les!Chaines!de!Markov!
Cachés!ou!bien!les!Machines!de!Vecteurs!à!Support.!On!utilisera!aussi!des!approches!qui!ont!marché!
dans! certains! cas! pour! les! appliquer! à! d’autres! types! de! données! similaires,! mais! différentes.! Par!
exemple!utiliser!pour!la!parole!une!technique!dont!l’efficacité!est!prouvée!sur!la!musique.!

Nous!ferons!dans!la!première!partie!une!présentation!en!détails!de!ce!qu’est!un!DNN!en!prenant!
comme!exemple!le!Perceptron!Multicouche,!qui!est!le!réseau!de!neurones!profond!le!plus!basique.!On!
abordera!la!manière!de!lui!faire!apprendre!des!données,!les!différentes!techniques!utilisées!pour!que!
les! algorithmes! d’apprentissage! convergent! mieux,! certains! autres! concepts! de! Machine# Learning!
qu’on!peut!combiner!avec!les!DNN,!et!finalement!une!présentation!et!études!des!réseaux!spéciaux!
qu’on!utilisera!par!la!suite.!On!terminera!par!un!Etat!de!l’Art!de!ce!qui!se!fait!à!l’heure!actuelle!en!
audio.!!

Dans! la! deuxième! partie,! nous! parlerons! de! l’implémentation! d’un! réseau! de! neurone!
convolutionnel! (CNN)! et! de! son! application! à! des! données! de! types! parole! dans! le! cadre! d’une!
classification!(trouver!la!bonne!classe!d’un!fichier!parmi!un!nombre!fini).!Ceci!est!fait!dans!le!cadre!
d’un!challenge!de!Machine#Learning!qui!a!pour!but!d’étudier!en!profondeur!les!différentes!manières!
de!traiter!le!langage!parlé.!

Dans! la! troisième! partie,! on! utilisera! d’autres! réseaux! de! neurones! spéciaux! :! des! réseaux! de!
neurones!récurrents!(RNN).!Ce!sera!cette!foisFci!pour!le!traitement!de!données!audio!de!type!musique!
dans!le!cadre!d’une!régression!(donner!plusieurs!valeurs!réelles!en!sortie!au!cours!du!temps).!!

1.2! Présentation*de*l’IRIT*:*
!

L’IRIT!(Institut!de!Recherche!en!Informatique!de!Toulouse)!se!situe!sur!le!campus!de!l’Université!
PaulFSabatier!et!est!une!unité!mixte!de!recherche!issue!de!la!fondation!de!2!URA!(Unités!de!Recherche!
Associées)! du! CNRS! et! de! l'Université! Paul! Sabatier! (LSI! :! Langages! et! Systèmes! Informatiques,! et!
CERFIA! :! Centre! d'Études! sur! la! Reconnaissance! des! Formes! et! l'Intelligence! Artificielle)! et! du! CIT!
(Centre!Informatique!de!Toulouse)!de!l'Université!Paul!Sabatier.!L’IRIT!est!dirigé!depuis!juillet!2011!par!
Michel!Daydé.!

Depuis! sa! création,! il! a! accueilli! des! équipes! provenant! de! divers! laboratoires! des! universités!
toulousaines.!Un!partenaire!nouveau!a!rejoint!les!tutelles!initiales!:!l'Université!de!ToulouseFLe!Mirail!
(Toulouse!2).!

Il!abrite!environ!690!personnes,!dont!234!enseignantsFchercheurs,!30!chercheurs,!233!doctorants,!
13!postFdoctorants,!et!38!personnels!administratifs!et!techniques!(IATOS).!Pour!ce!qui!est!du!nombre!
de! chercheurs,! l'IRIT! est! la! plus! importante! UMR! CNRS,! ainsi! que! l’un! des! plus! grands! instituts! de!
recherche!français!en!informatique.!Il!a!été!évalué!A+!par!l'AERES!en!2010.!Les!recherches!de!l’IRIT!
s'orientent!d’une!manière!générale!selon!4!axes!stratégiques!:!

Page'2'
!
Mémoire'de'Fin'd’Etudes' !
!

•! Informatique!pour!la!santé!et!l'autonomie!

•! Masses!de!données!et!calcul!

•! Systèmes!sociotechniques!ambiants!

•! Systèmes!embarqués!critiques!

Actuellement,!on!compte!un!total!de!21!différents!laboratoires!au!sein!de!l’IRIT!qui!sont!reparties!
dans!les!thèmes!de!recherche!suivants!:!!

•! Analyse!et!synthèse!de!l'information!(Équipes!:!SAMoVA,!SC,!TCI!et!VORTEX)!

•! Indexation!et!recherche!d'informations!(Équipes!:!PYRAMIDE!et!SIG)!

•! Interaction!Coopération!Adaptation!par!l’Expérimentation!(Équipes!IC3,!ELIPSE!et!SMAC)!

•! Raisonnement!et!décision!(Équipes!:!ADRIA,!LILaC!et!MELODI)!

•! Modélisation,!algorithmes!et!calcul!haute!performance!(Équipe!:!APO)!

•! Architecture,!systèmes!et!réseaux!(Équipes!:!IRT,!SEPIA,!SIERA,!T2RS!et!TRACES)!

•! Sûreté!de!développement!du!logiciel!(Équipes!:!ACADIE,!ICS!et!MACAO)!

La!complémentarité!des!travaux!menés!par!chaque!équipe!au!sein!du!thème!est!mise!en!valeur!
par!la!participation!de!ces!équipes!à!des!projets!transversaux!au!sein!du!thème.!

Mon!stage!s’est!déroulé!au!sein!d’une!équipe!faisant!partie!du!thème!«!Analyse!et!synthèse!de!
l'information!».!Ce!thème!a!pour!préoccupation!la!modélisation,!la!simulation!et!l’automatisation!des!
processus!d’analyse!et!de!synthèse!des!média!image,!son!et!vidéo!ainsi!que!du!signal!numérique.!Ces!
traitements!fondamentaux!sont!abordés!dans!le!thème!en!tant!que!tels!mais!aussi!en!tant!que!vecteur!
d’informations!et!support!à!l’interaction!hommeFmachine.!Les!quatre!équipes!constituant!ce!thème!
abordent!chacune!un!aspect!différent!et!complémentaire!de!l’analyse!et!de!la!synthèse!multimédia.!

L’équipe!dont!je!fais!partie,!SAMoVA!(Structuration,!Analyse!et!Modélisation!de!documents!Vidéo!
et!Audio),!développe!des!modèles!et!des!outils!pour!la!segmentation!automatique!de!l’audio!et!de!la!
vidéo! ainsi! que! des! méthodes! d’indexation! multimédia! robustes.! Même! si! la! volonté! affichée! de!
l’équipe!est!d’aborder!conjointement!l’audio!et!la!vidéo,!de!nombreuses!études!restent!mono!média.!
Cela! est! particulièrement! vrai! au! niveau! de! l’analyse! bas! niveau! des! signaux.! Au! niveau! de! la!
modélisation,!les!études!sont!orientées!classification!mais!restent!appliquées!à!un!seul!média.!L’étude!
transFmédia!apparaît!au!niveau!des!études!de!structuration!des!documents!audiovisuels,!valorisées!
par!des!applications!en!indexation.!

On!notera!que!l’IRIT!possède!aussi!des!services!communs!tels!que!:!Service!Informatique,!Service!
de! Gestion! du! personnel,! Service! Financier,! Service! de! Gestion! de! Contrats! et! Valorisation! de! la!
recherche,! Service! des! Relations! Internationales,! Service! Communication,! Service! Bibliothèque! /!
SerDoc!et!le!Service!Accueil,!Technique!et!Logistique.!

Page'3'
!
Mémoire'de'Fin'd’Etudes' !
!

Page'4'
!
Mémoire'de'Fin'd’Etudes' !
!

! Présentation*des*différents*outils*et*Etat*de*
l’Art*
!

Dans!cette!section!nous!présenterons!en!détails!ce!que!sont!les!DNN!de!manière!théorique!en!
utilisant!l’exemple!le!plus!simple,!et!certaines!techniques!utilisées!pour!améliorer!leurs!résultats.!On!
abordera!ensuite!l’utilisation!de!DNN!particuliers!plus!complexes,!d’un!point!de!vue!théorique!puis!
d’un!point!de!vue!pratique!avec!leurs!applications.!On!finira!par!parler!des!moyens!à!disposition!pour!
utiliser!ces!objets!mathématiques!:!les!langages!et!la!manière!de!les!coder!ainsi!que!les!boites!à!outils!
existantes!pour!optimiser!les!performances!et!les!temps!de!calcul.!!

2.1! Principe*du*réseau*de*neurones*:*Perceptron*et*MultiDlayer*
Perceptron*(MLP)*
!

Les!réseaux!de!neurones!sont!des!classifieurs!très!puissants!utilisés!dans!de!nombreux!domaines!
de! reconnaissance! de! contours! :! par! exemple! en! vision! par! ordinateur! et! pour! la! reconnaissance!
automatique!de!la!parole.!Il!va!falloir!faire!l’étude!et!l’explication!de!ce!qu’il!y!a!de!plus!simple!avant!
de! passer! au! complexe,! commençons! donc! par! le! principe! du! neurone! formel! avant! d’aborder! le!
réseau.!

2.1.1! Biologie*du*neurone*
!

Tout!d’abord,!pourquoi!ce!nom!?!!

Un! neurone! reçoit! plusieurs! informations! (qui! sont! des! neurotransmetteurs)! au! niveau! de! ses!
dendrites.! Ces! neurotransmetteurs! sont! libérés! par! les! synapses.! Lorsque! la! quantité! d’information!
dépasse!un!certain!seuil,!le!neurone!«!s’active!»,!envoi!un!courant!éléctrique!dans!son!axone!ce!qui!lui!
permet!d’émettre!à!son!tour!des!neuro!transmetteurs!via!ses!synapses!(voir!figure!2.0).!Pour!résumer!:!!

F! Les!sorties!d’un!neurone!sont!les!entrées!d’un!autre!
F! Un!neurone!émet!lorsqu’il!reçoit!une!quantité!d’information!dépassant!un!seuil!
F! La!quantité!d’information!émise!au!neurone!suivante!est!géré!par!les!synapses!

Page'5'
!
Mémoire'de'Fin'd’Etudes' !
!

Axone!

Dendrites!

Neurotransmetteurs!

Synapses!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
Fig!2.1! Représentation!du!neurone!formel,!source!:!Wikipédia!

2.1.2! Neurone*simple* *

!
Fig!2.1! Principe!d’un!NN!

Le!neurone!simple,!comme!le!réseau!de!neurones!peut!être!vu,!une!fois!entrainé,!comme!une!fonction!
émettant!une!prédiction!!!par!rapport!à!une!variable!d’entrée!".!!

Plus! techniquement,! le! neurone! formel! est! une! combinaison! d’une! opération! affine! avec! une!
fonction!d’activation!#,!comme!on!peut!le!voir!sur!la!figure!2.2.!Pour!faire!une!analogie!avec!le!neurone!
biologique,! les! poids! $% ! représentent! les! synapses,! le! &! les! dendrites! et! le! '! est! l’axone.! Le! seuil! à!
dépasser!est!modélisé!par!la!#.!Pour!simplifier!les!opérations,!nous!mettrons!toujours!le!terme!de!biais!
dans!la!matrice!de!poids!W!et!en!augmentant!la!dimension!de!notre!entrée!par!1.!
0 0 1
!
(' = # & = #( $+ ,+ − .() =( (#( $ 2 + , 2 + ()( , 56 = −. $% $0 , " = ,% (! (!1!)!
+1% +13 ,0

Page'6'
!
Mémoire'de'Fin'd’Etudes' !
!

En!théorie,!la!fonction!d’activation!est!la!fonction!de!Heaviside!:!!

! 0, &<0
(# & = ! (!2!)!
1, &≥0

En!pratique,!on!utilisera!pas!la!fonction!de!
Heaviside! car! la! dérivée! n’est! pas! utilisable,!
mais! plutôt! les! fonction! ReLU,! tanh! ou!
sigmoïde!(voir!Annexe),!selon!les!résultats!que!
l’on!souhaite!avoir!(par!exemple,!si!le!réseau!
est!plus!efficace!avec!des!neurones!nonFactifs!
à!0!ou!alors!à!F1).!
!
Le!but!que!l’on!se!fixe!lors!de!la!création!
Fig!2.2! Représentation!du!neurone!formel,!source!:!Neural! d’un! réseau! de! neurones,! et! de! trouver! les!
Network,!J.!Matas! bon!poids!et!biais!pour!que!le!NN!en!question!
réponde!à!une!certaine!fonction.!Par!exemple!
on!pourrait!avoir!en!entrée!,% !représentant!la!masse,!,0 !la!taille!et!la!sortie!'!serait!la!pointure!des!
chaussures.!

2.1.3! Perceptron*multicouches* *
!

L’architecture!d’un!Perceptron!multicouches!(qu’on!notera!MLP!pour!MultiLLayer#Perceptron)!est!
la! généralisation! à! N! couches! du! même! principe,! avec! plusieurs! neurones! sur! chaque! couche.! Le!
vecteur!colonne!de!poids!W!devient!alors!une!matrice!car!on!a!plusieurs!neurones!en!entrée!d’une!
couche!ainsi!qu’en!sortie!(voir!figure!2.3).!!

Pour!un!réseau!à!;!couches,!la!matrice!de!poids!entre!les!couches!<!et!< + 1!notée!!5(>,>?%) ,!sera!


de!dimension!@>?% ∗ (@> + 1)!où!@> !représente!le!nombre!de!neurones!de!la!couche!<.!

Les! couches! qui! sont! entre! la! couche! d’entrée! et! la! couche! de! sortie! sont! appelées! couches!
cachées.!On!peut!disposer!autant!de!couches!cachées!avec!autant!de!neurones!que!l’on!veut!selon!les!
besoins!de!la!classification.!

Page'7'
!
Mémoire'de'Fin'd’Etudes' !
!

Couche!1,! Couche!2,! Couche!


entrée! cachée! de!sortie!

!
Fig!2.3! Représentation!schématique!d’un!NN!à!L!couches,!source!:!Neural!Network,!J.!Matas!

2.2! Apprentissage*
!

L’apprentissage!est!le!moment!où!l’on!optimise!les!poids!des!matrices!5(>,>?%) !de!notre!réseau!
pour!qu’il!«!apprenne!»!les!données.!

2.2.1! Présentation*
!

Comme!tout!algorithme!d’Apprentissage!Automatique,!il!y!a!plusieurs!phases!lors!de!la!création!
d’un! NN! (Neural# Network).! Il! faut! d’abord! entraîner! notre! réseau! à! reconnaître! les! données,! cela!
s’appelle!l’apprentissage.!Pour!prendre!une!image!simple,!si!l’on!montre!à!un!enfant!un!chien!en!lui!
disant!«!c’est!un!chien!»,!puis!deux,!puis!trois,!etc.!On!fait!ensuite!la!même!chose!pour!des!chats.!Il!
saura!reconnaître!les!différences!entre!un!chien!et!un!chat.!C’est!un!peu!le!même!principe!pour!le!
réseau!de!neurone,!mis!à!part!que!notre!NN!n’utilisera!pas!d’attributs!sémantiques,!mais!uniquement!
des!attributs!visuels.!

Page'8'
!
Mémoire'de'Fin'd’Etudes' !
!

Dans!le!cas!de!notre!exemple,!on!s’intéressera!à!un!NN!de!classification!qui!sait!reconnaître! B!
différentes!classes!(par!exemple!10!classes!d’animaux!sur!des!photos).!Pour!entrainer!notre!réseau!
nous!disposons!d’un!ensemble!de!données!déjà!classifiées!qui!permettront!d’entrainer!notre!NN!:!

! C = ( "+ , !+ , 1 ≤ E ≤ F, "+ ∈ ℝIJ , !+ ∈ ( 0; 1 L


( (!3!)!

!
Les!labels!sont!de!de!la!forme! 0; 1 L !plus!précisément!un!label!pour!une!donnée!appartenant!à!la!
classe!M ∈ B!!est!un!vecteur!nul!de!longueur!B!ayant!sa!MENON!coordonnée!égale!à!1!:!

0

0
1!!(MENON(QRSETER@!
0

0

Un!NN!dont!l’apprentissage!a!été!effectué!est!un!classifieur.!On!peut!donc!voir!ses!résultats!de!
manières!probabilistes.!En!notant!" ∈ ℝIJ !la!variable!observé!et!U ∈ {1, … , B}!la!variable!de!sa!classe,!
la!sortie!!!de!notre!réseau!est!donc!un!vecteur!de!longueur!B!dont!la!signification!est!:!!

! ! = (Q(U = M|"))Z1[..] ! (!4!)!

Le!label!présenté!ciFdessus!est!donc!logique.!Pour!une!classe!qui!est!donné,!donc!vrai,!la!probabilité!
que!ce!soit!cette!classe!est!égale!à!1,!alors!que!la!probabilité!que!ce!soit!une!autre!classe!est!0.!

2.2.2! Fonction*de*coût*et*calcul*du*gradient*
!

Ici,! pour! une! entrée! du! NN! "+ ,! on! notera! la! sortie! du! NN! !( 5, ^ , "+ ),! où! 5, ^ =
>,>?% >
( 5 ,^ , < ∈ ( 1, ; − 1 !ce!qui!correspond!à!!_ !si!l’on!suit!les!notations!précédentes.!

Estimer!les!poids!optimaux!des!matrices!W!et!b!peut!être!reformulé!comme!l’optimisation!d’une!
fonction!de!cout!:!!
e
! 1
`abacd 5, ^ = ` !+ , !( 5, ^ , "+ ) ! (!5!)!
F
+1%

La!forme!que!prend!notre!fonction!de!cout!` !, !(( 5, ^ , ") !dépend!de!la!dernière!couche!du!NN.!


Pour!une!simple!couche!avec!une!fonction!de!coût!quadratique!cela!donne!:!!

! 1 0
` !+ , !( 5, ^ , "+ = ! − !( 5, ^ , "+ 0! (!6!)!
2 +

L’objectif!est!donc!de!trouver!les!paramètres!W(’!et!b’(satisfaisants!:!!

! 52 , ^′ = ( argmin `abacd 5, ^ ! (!7!)!


5,^

Page'9'
!
Mémoire'de'Fin'd’Etudes' !
!

Pour! cela,! on! utilise! un! algorithme! de! rétropropagation! du! gradient! est! très! efficace.! Cette!
méthode!a!été!proposé!initialement!par!Rumelhart!et!Hinton!pour!les!réseaux!de!neurones!dans![5],!
nous! en! parlerons! dans! le! paragraphe! suivant! (2.2.3).! Afin! de! trouver! l’expression! du! gradient,! on!
utilise!la!propagation!de!l’erreur!à!la!couche!<!:!q(>) .!!

Le!q(r) !initial!se!calcul!à!l’aide!de!la!fonction!de!coût!`!et!cette!erreur!de!propagation!suit!la!loi!de!
récurrence!ciFdessous!:!!

! q(>) = ( (5(>,>?%)6 q(>?%) ).∗ #′(& (>) )! (!8!)!

vw
En!utilisant!comme!notation!s5(t,tuJ) (` = ( ,!on!peut!facilement!démontrer!que!:!
v5(t,tuJ)

! s5(t,tuJ) (` !, !(( 5, ^ , ") = ( q(>?%) x > 6


! (!9!)!

! s^(t) ` !, !(( 5, ^ , ") = ( q(>?%) ! (!10!)!

2.2.3! Algorithme*de*convergence*
!

Plusieurs!algorithmes!permettent!à!notre!gradient!de!converger!:!celui!ciFdessous!est!une!simple!
descente!du!gradient.!Il!faut!noter!que!la!convergence!dépend!de!bien!des!paramètres!:!des!valeurs!
initiales!de!nos!poids!et!biais,!du!type!de!données!à!classifier,!du!type!d’algorithme,!et!du!type!de!NN.!
L’algorithme!se!décompose!sous!cette!forme!:!!

1.!!Initialiser!y% !le!taux!d’apprentissage!initial.!M = 1!

2.!Effectuer!la!propagation,!le!calcul!de!J!et!des!gradients.!On!notera,!par!souci!de!simplification!le!
gradient!total!:!

! sz (` !, !(({, ") , QR|}({ = ( (~, .) ! (!11!)!

3.!Mettre!à!jour!les!différents!poids!et!éventuellement!le!taux!d’apprentissage!avec!:!!

! { = { − ( y sz (` !, !( {, " ! (!12!)!

! M(+= 1! (!13!)!

4.!!Revenir!à!l’étape!2!jusqu’à!la!convergence!( sz (` !, !( {, " < (Ä),!ou!un!nombre!maximum!


d’itérations!(M = FÅ,ÇTN}).!

Page'10'
!
Mémoire'de'Fin'd’Etudes' !
!

Souvent,!il!faut!s’arrêter!avant!que!l’on!obtienne!la!convergence!et!faire!ce!qu’on!appelle!un!arrêt!
prématuré! (early# stopping).! Si! l’on! s’entraine! trop! sur! les! données! d’entrainement,! le! réseau! de!
neurones!se!met!à!distinguer!des!caractéristiques!qui!ne!sont!propres!qu’au!jeu!de!données.!Il!perd!
alors!sa!généralité!et!devient!moins!performant!sur!le!reste!des!données.!Ce!phénomène!est!appelé!
surapprentissage!ou!overfitting!(voir!figure!2.4).!

!
Fig!2.4! Arrêt!prématuré!pour!éviter!l’overfitting,!source!:!https://www.coursera.org/learn/machineFlearning!
Pour!pallier!à!ce!problème,!il!faut!tester!périodiquement!l’algorithme!sur!des!données!dont!nous!
connaissons! le! label! mais! qui! sont! inconnues! de! notre! NN.! Ces! données! sont! appelées! données! de!
validation.!

2.3! Les*réseaux*en*pratique*
!

Les! principes! du! réseau! ainsi! que! de! l’algorithme! de! convergence! présentés! ciFdessus! sont!
théoriquement!très!simples.!En!pratique,!d’autres!conditions!viennent!s’ajouter!afin!d’apprendre!un!
modèle!efficace!et!efficient.!!

Je!vais!détailler!maintenant!quelques!différents!éléments!qui!vont!avoir!un!impact!sur!la!mise!en!
pratique!du!réseau!:!

Page'11'
!
Mémoire'de'Fin'd’Etudes' !
!

Prétraitement!des!données! •Préfiltrer!les!données!les!plus!importantes!pour!le!NN

Initialisation!du!modèle •Prendre!un!bon!départ pour!bien!converger

Couche!finale! •Choisir!une!couche!finale!efficace!pour!les!données!utilisées

Algorithme!de!convergence •Optimiser!la fonction!de!coût

Régularisation •Eviter!le!surFentrainement!sur!les!données

Dropout •Eviter!le!surFentrainement!sur!les!données!en!liant!les!variables

Autoencodeurs •PréFentrainer!le!réseau!en!trouvant!des!liens!entre!les!variables

PCA •Diminuer!la!taille!des!données!pour!les!traiter!plus!rapidement

2.3.1! Prétraitement*des*données* *
!

Le!prétraitement!des!données!joue!un!rôle!très!important.!Les!méthodes!diffèrent!plus!ou!moins!
selon! le! type! de! données.! On! peut! noter! que! la! normalisation! d’échantillon! et! la! standardisation!
globale!sont!beaucoup!utilisées!car!ces!techniques!permettent!d’enlever!le!bruit!relatif!des!données.!
Si!l’on!souhaite!faire!un!NN!de!reconnaissance!automatique!de!caractères!écrits!à!la!main,!normaliser!
le!centre!de!chaque!image!peut!réduire!la!variance!causée!par!la!différence!de!position!des!caractères,!
cette!technique!est!appelée!le!Whitening!(voir!section!2.4.8).!!

Le! prétraitement! des! données! peut! aussi! être! la! manière! dont! on! va! utiliser! nos! signaux.! Par!
exemple,!dans![6]!Stober!sépare!temporellement!les!EEGs!avec!des!fenêtres.!A!ces!courts!signaux,!ils!
applique!le!log!de!la!FFT2,!normalise!et!sousFéchantillonne!pour!obtenir!les!données!qui!seront!utilisés.!!
!

2.3.2! Initialisations*du*modèle* *
!

Le!modèle!initial!du!NN!peut!grandement!affecter!le!modèle!final,!il!faut!donc!faire!très!attention!
à!ce!qu’on!choisit.!En!effet!:!!

F! Si!les!poids!sont!trop!grands!ou!trop!petits,!les!neurones!vont!saturer!et!leurs!gradients!ne!
seront!plus!dans!la!zone!linéaire,!mais!seront!très!proches!de!zéro!dans!le!cas!des!fonctions!
sigmoïde!et!ReLU!(voir!en!annexe!A.0).!Il!est!montré!dans![7]!qu’afin!d’obtenir!une!distribution!
normale! dans! chaque! couche,! on! doit! respecter! ces! conditions.! On! initialise! les! poids! de! la!
>,>?%
matrice(5 !suivant!une!loi!uniforme:!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2
!Fast!Fourier!Transform!

Page'12'
!
Mémoire'de'Fin'd’Etudes' !
!

!
>,>?%
6
$+É =( 2, − 1 , , ∈ Ö~á 0; 1 (
@> + @>?%
(!14!)!
>,>?%
6 6
⇔ (( $+É ∈ Ö(~(á[− > >?%
; ]!
@ +@ @ + @>?%
>

F! Ce!problème!est!réglé!si!l’on!a!normalisé!les!données!à!l’origine!(comme!vu!section!2.2.4.1).!
F! Les!neurones!sont!symétriques!et!interchangeables!dans!une!même!couche,!s’ils!ont!tous!la!
même!valeur,!les!différents!neurones!auront!la!même!sortie!il!faut!donc!casser!ces!symétries!
en!initialisant!les!paramètres!de!manière!aléatoire.!!

2.3.3! La*couche*finale*
!

En!changeant!le!type!de!couche!finale,!les!résultats!peuvent!varier!fortement.!De!plus!la!couche!
finale! influe! sur! la! fonction! de! coût! :! cette! dernière! ne! sera! pas! la! même! si! l’on! utilise! une! couche!
Softmax! par! rapport! à! un! couche! Machine! à! Vecteurs! de! Support! (noté! SVM! pour! Support# Vector#
Machines)! ou! bien! une! simple! couche! avec! une! fonction! de! coût! quadratique! (comme! vu!
précédemment).! Il! faut! aussi! noter! que! le! dernier! vecteur! de! propagation! de! l’erreur! q(r) ! dépend!
directement!de!la!dernière!couche,!et!est!à!adapter!dans!l’algorithme.!!

F! Couche!Softmax!:!!
e L
! 1 { 
ℎè,ê (, ã
)
`abacd 5, ^ =− ( 1 ' (ã) = M log( L É ã
! (!15!)!
F É1% { ℎè,ê (, )
ã1% 1%

ã 
ℎè,ê (, )! étant! la! sortie! de! la! dernière! couche! cachée,! { ! la! kFième! colonne! de! ! 5(ëí[,ë) ! et!
1 ' (ã) = M !la!fonction!égale!à!1!lorsque!' (ã) est!de!la!classe!M,!0!sinon.!
!

2.3.4! Algorithme*de*descente*du*gradient*:*Descente*du*gradient*avec*moment*
!

Il! existe! d’autres! algorithmes! de! descente! du! gradient! plus! élaborés! que! celui! que! nous! avons!
présenté!au!paragraphe!2.2.3.!Leurs!spécificités!dépendent!de!la!fonction!que!l’on!cherche!à!optimiser.!
Je! ne! présenterai! ici! que! l’algorithme! de! descente! du! gradient! (noté! SGD! pour! Stochastic# Gradient#
Descent)!avec!moment,!mais!on!peut!citer!d’autres!méthodes!qui!marchent!mieux!dans!certains!cas,!
comme!par!exemple!ADADELTA!qui!a!été!présenté!dans![8].!L’algorithme!se!décompose!sous!cette!
forme!:!!

1.!!Initialiser!ì = 0!

2.!Effectuer!la!propagation,!le!calcul!de!J!et!des!gradients.!On!notera,!par!souci!de!simplification!le!
gradient!total!comme!dans!l’équation!(11)!:!

3.!Mettre!à!jours!les!différents!poids!avec!:!!

Page'13'
!
Mémoire'de'Fin'd’Etudes' !
!

! ì = (îì + (ysz (` !, !( {, " ! (!16!)!

! { = { − (ì( (!17!)!

4.!!Revenir!à!l’étape!2!jusqu’à!la!convergence.!

L’algorithme!fait!appel!à!2!paramètres!:!y!et!ì.!Il!faut!laisser!à!l’algorithme!quelques!itérations!pour!
trouver!la!bonne!direction!de!descente.!En!général,!î!est!initialisé!à!0.5!jusqu'à!ce!que!l’apprentissage!
se!stabilise!et!alors!on!pose!î = 0,9.!ì!change!donc!petit!à!petit!lorsque!le!gradient!de!`!change.!Cela!
implique!de!:!!

F! Gagner!de!l’inertie!dans!sa!descente!et!passer!les!longs!plateaux!(il!faut!voir!notre!fonction!de!
coût!comme!une!nappe)!!
F! Eviter!le!bruit!des!«!mauvais!»!gradients!que!l’on!a!de!temps!en!temps!car!le!moment!a!un!
effet!lissant.!

2.3.5! Régularisation* *
!

Afin!d’éviter!que!le!NN!prenne!une!forme!trop!particulière!en!ayant!certains!poids!trop!élevés!par!
rapport!à!d’autres,!il!faut!rajouter!un!critère!de!régularisation.!Cela!permet!à!notre!réseau!de!ne!pas!
devenir! trop! adapté! aux! données! d’entrainement! uniquement! (overfitting).! On! obtiendra! cette!
régularisation!en!ajoutant!à!notre!fonction!de!coût!la!norme!de!nos!matrices!de!poids!qu’on!pondérera!
par!un!coefficient!ñ.!Ici!on!utilisera!une!régularisation!de!type!L2!(norme),!généralement!ñ = 10í0 !
convient!pour!ce!genre!de!norme.!Ce!paramètre!est!en!général!fixé!sur!un!ensemble!de!validation.!!

! e rí% ItuJ It
1 (>,>?%) 0
`abacd 5, ^ = ` !+ , !( 5, ^ , "+ ) + (ñ (~+É ) ! (!18!)!
F
+1% >1% +1% É1%

Cela!empêche!que!le!NN!s’entraine!trop!bien!sur!le!jeu!de!données!d’entrainement!et!qu’il!perde!
son!pouvoir!de!généralisation.!Cela!arrive!quand!on!a!une!très!bonne!précision!sur!le!jeu!de!données!

!!!! !
Fig!2.5! Le!plus!complexe!n’est!pas!forcement!le!plus!général!:!Polynôme!de!degré!9!vs!Polynôme!de!degré!1,!source!:!
http://neuralnetworksanddeeplearning.com/!

Page'14'
!
Mémoire'de'Fin'd’Etudes' !
!

d’entrainement!et!une!bien!moins!bonne!sur!le!jeu!de!données!de!test.!De!tels!résultats!peuvent!aussi!
être!synonymes!de!trop!peu!de!données!d’entrainement,!donc!un!NN!bien!adapté!à!ces!dernières!sans!
être!utilisable!en!général.!Pour!faire!une!analogie!simple,!en!évitant!les!poids!trop!élevés,!on!diminue!
la!complexité!du!modèle.!Comme!un!polynôme!de!degré!9!est!plus!complexe!et!adapté!à!un!certain!
ensemble!et!moins!général!qu’un!polynôme!de!degré!1,!comme!illustré!sur!la!figure!2.5.!

2.3.6! Dropout*
!

Une!autre!manière!de!contrôler!le!surapprentissage!est!un!principe!récent!présenté!dans![9]!:!le!
dropout.!L'idée!de!base!du!dropout!est!d'omettre!de!manière!aléatoire!un!certain!pourcentage!(par!
exemple,! α)! des! neurones! dans! chaque! couche! cachée! pour! chaque! présentation! des! échantillons!
pendant!l’entrainement!du!réseau!(voir!Figure!2.6).!Cela!signifie!qu’au!cours!de!l’entrainement,!chaque!
combinaison!aléatoire!des!(1F!α)!neurones!cachés!restants!doivent!bien!classifier!même!en!l'absence!
des! α! neurones! omis.! Cela! implique! pour! chaque! neurone! de! dépendre! moins! des! autres! pour! la!
reconnaissance!de!formes.!Techniquement,!il!suffit!simplement!de!créer!un!vecteur!de!la!taille!de!la!
couche,!avec!des!variables!issues!d’une!loi!de!Bernoulli!avec!le!bon!coefficient!(appelé!coefficient!de!
dropout)!et!de!multiplier!élément!par!élément.!

Fig!2.6! Représentation!schématique!du!dropout!(coefficient!=!0.5),!source!http://cs231n.github.io/neuralFnetworksF2/!

2.3.7! Autoencodeurs*
!

Les! autoencodeurs! permettent! de! prétraiter! couche! par! couche! notre! NN! afin! d’améliorer! sa!
future!efficacité.!Pour!une!paire!de!couche!qui!se!suivent!dans!notre!NN,!on!utilise!celle!d’entrée!
comme!si!elle!était!aussi!celle!de!sortie,!avec!les!mêmes!poids!!(donc!56 )!et!on!l’entraine!pour!que!
la!fonction!caractéristique!de!notre!NN!à!2!couches!!soit!l’Identité!(voir!figure!2.7).!
Le!principe!d’un!autoencodeur!n’est!pas!de!faire!réellement!l’identité,!ce!qui!serait!inutile,!mais!
de! trouver! des! liens! entre! les! différentes! variables! d’entrée! en! leur! ajoutant! du! bruit! ou! avec! un!
dropout!au!cours!de!l’apprentissage.!Si!par!exemple!avec!un!dropout!la!variable!d’entrée!6!manque,!
on! souhaiterait! quand! même! approximer! sa! valeur! en! sortie,! et! elle! dépend! surement! d’autres!
variables!car!il!y!a!des!corrélations!dans!les!jeux!de!données.!L’autoencodeur!arriverait!au!cours!de!
l’apprentissage!à!reperer!les!liens!entre!cette!variable!6!et!la!variable!4!et!9!par!exemple!si!elles!sont!

Page'15'
!
Mémoire'de'Fin'd’Etudes' !
!

liées.!Ceci!permet!de!réduire!le!nombre!de!variable!et!de!rendre!plus!robuste!les!réseaux!face!à!de!
nouveaux!jeux!de!données.!
!
On!pourra!par!exemple,!comme!décrit!dans!
[10],! utiliser! des! Stacked# Denoising#
Autoencoders! pour! initialiser! les! poids,!
permettant!d’arriver!à!un!taux!de!précision!du!
NN!bien!plus!élevé.!Il!s’agit!d’un!entrainement!
préliminaire!de!chaque!couche!(stacked!signifie!
«!empilé!»)!comme!un!auto!encodeur!et!le!tout!
avec! un! du! bruit! ajouté! à! chaque! variable! en!
entrée.!
Il! peut! être! aussi! intéressant! d’utiliser! des!
Restricted#Boltzmann#Machine!(RBM),!qui!font!
appel! à! une! représentation! énergétique! des!
poids!à!travers!une!définition!probabiliste.!Dans!
ce! cas,! il! faut! minimiser! la! fonction! d’énergie!
qui! est! similaire! à! une! couche! Softmax!
séquentielle! avec! retour.! Pour! de! plus! amples!
!
informations,!se!reporter!à!la!page!RBM!du!très!
Fig!2.7! Représentation!d’un!autoencoder,!source!:! bon! tutoriel! Theano! [11]! (Package! Deep!
http://ufldl.stanford.edu/tutorial/unsupervised/Autoenco Learning!Python,!voir!Paragraphe!2.7)!
ders/!
Une! fois! que! l’on! a! prétraité! notre! réseau!
de! neurones! localement! (car! on! agit! couche!
après!couche),!on!peut!l’entrainer!entièrement.!Cette!étape!s’appelle!le!«!fineLtunning#».!
!

2.3.8! Analyse*en*Composante*Principale*(PCA)*
!

!Le! principe! de! la! PCA! est! que! pour! un! ensemble! de! données,! il! est! possible! de! trouver! des!
similitudes!entre!cellesFci!et!trouver!un!moyen!plus!simple!et!moins!couteux!de!les!décrire.!En!prenant!
la!matrice!de!covariance!de!nos!données!et!en!la!diagonalisant,!on!obtient!une!matrice!orthogonale!ó!
composée!de!vecteurs!propres!avec!leurs!valeurs!propres!associées.!!

En!changeant!de!repère!avec!la!matrice!ó,!on!obtient!nos!données!dans!un!nouveau!repère.!Il!
suffit!simplement!de!ne!choisir!que!les!vecteurs!propres!ayant!les!valeurs!propres!les!plus!fortes.!Une!
fois!que!l’on!a!nos!données!dans!une!base!de!vecteurs!propres,!il!est!aisé!d’isoler!la!majeure!partie!de!
la!base!de!l’autre!partie!qui!ne!contient!que!très!peu!d’informations.!!

Cette! technique! est! particulièrement! efficace,! ainsi! on! peut! voir! en! figure! 2.9! plusieurs!
recompositions!des!données!MNIST!après!des!PCA!ou!l’on!aura!pris!différents!pourcentages!des!784!
valeurs!propres!totales!:!!20%!(qui!correspond!à!1!vecteur!propre),!80%!(29!vecteurs!propres)!et!99%!
(300!vecteurs!propres).!L’image!initiale!est!aussi!affiché!à!titre!de!comparaison.!

Page'16'
!
Mémoire'de'Fin'd’Etudes' !
!

On!peut!facilement!conjuguer!cette!pratique!avec!un!Whitening!qui!est!une!technique!qui!consiste!
à!ramener!toutes!les!données!dans!un!cercle!de!rayon!1!centré!en!0!afin!de!les!traiter!plus!rapidement.!
On!effectue!alors!ce!qu’on!appelle!une!PCA!Whitening.!En!effet,!nos!données!initiales!sont!souvent!
redondantes!(dans!une!image!par!exemple,!les!pixels!adjacents!sont!fortement!corrélés)!alors!qu’il!est!

%% Step 0: Zero-mean the data


x_norm = mean(x,1);
x = bsxfun(@minus, x, x_norm);

%% Step 1: Implement PCA to obtain xRot


[n, m] = size(x);
sigma = 1/m*(x*x');
% In S : eigenvalues in the diag, in U eigenvectors
[U, S, ~] = svd(sigma);
xRot = U'*x;

%% Step 2: Implement PCA with dimension reduction


% (99% most important eigenvalues)
purcent = 0.99;
k = find(cumsum(diag(S)) / sum(diag(S)) >= purcent, 1);
fprintf('%d components left on %d\n', k, size(S, 1))
alz = zeros(n-k,m);
xHat = U*[xRot(1:k,:); alz];

souhaitable! d’avoir! des! données! moins! corrélées! et! qui! ont! la! même! variance.! Techniquement,! on!
effectue! une! transformation! qui! change! nos! données! en! un! autre! jeu! qui! aura! pour! covariance! la!
matrice!Identité.!Il!suffit!de!diviser!chaque!vecteur!propre!par!la!racine!carrée!de!sa!valeur!propre.!!

Page'17'
!
Mémoire'de'Fin'd’Etudes' !
!

Fig!2.8! Exemple!d’une!PCA!(Matlab)!

Chaque!transformation!de!Whitening!n’étant!pas!unique,!en!appliquant!la!matrice!de!rotation!ó!
encore!une!fois,!on!garde!les!données!aussi!proches!que!possibles!des!données!initiales!dans!le!sens!
des!moindres!carrés.!On!effectue!alors!un!ZCA!Whitening.!!

Vous!trouverez!en!Annexe!A.1!l’ensemble!de!code!Matlab!ZCA!Whitening!appliqué!à!la!base!de!
données!MNIST!qui!fut!implémenté!lors!de!ce!stage.
!

2.3.9! Un*choix*difficile*:*les*hyperparamètres*
!

Qu’estFceFque!sont!les!hyperparamètres!?!!

Nous! avons! vu! plus! haut! (paragraphe! 2.2.1)! que! ce! que! nous! cherchons! à! optimiser! est! le!
paramètre!{!:!autrement!dit!les!poids!des!liaisons!entre!les!différents!neurones.!Or!il!existe!beaucoup!

!!! !

!!!! !
Fig!2.9! Recomposition!avec!PCA!(d’en!haut!à!gauche!en!bas!à!droite)!:!1!VFP,!29!VFP,!300!VFP!et!784!VFP!

plus!de!paramètres!lorsqu’on!crée!le!NN!:!!

F! Le!coefficient!de!dropout!
F! Le!taux!d’apprentissage!
F! Le!coefficient!de!régularisation!

Page'18'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Le!nombre!de!couches!cachées!
F! Le!nombre!de!neurone!dans!chaque!couche!
F! Les!initialisations!!
F! Le!type!de!fonction!d’activation!

Une! question! très! pertinente! dont! nous! n’avons! pas! parlé! jusque! là! est! :! comment! choisir! ces!
paramètres!?!La!réponse!:!on!fait!des!tests.!Avec!moins!de!données!dans!les!jeux!d’entrainements!et!
de!validations!pour!aller!plus!vite!et!avoir!une!idée!de!ce!qui!pourrait!fonctionner!ou!non.!!

Heureusement!nous!n’avons!pas!à!faire!les!tests!tout!le!temps!car!la!majeure!partie!du!temps,!des!
données!similaires!aux!nôtres!ont!déjà!étés!utilisées!avec!des!NN!et!on!s’inspire!des!valeurs!utilisées!
lors!de!ces!expériences!!

2.4! Réseaux*spéciaux*:*rapide*présentation*et*quelques*résultats*
!

Lors! de! ce! stage,! nous! nous! sommes! intéressés! à! deux! types! de! réseaux! de! neurones!
particuliers!lors!de!nos!expériences!:!les!réseaux!de!neurones!convolutionnels!(CNN)!et!les!réseaux!de!
neurones!récurrents!(RNN).!Nous!n’en!placerons!ici!que!quelques!mots!car!le!sujet!sera!abordé!dans!
les!parties!respectives!à!leurs!utilisations.!!

Les!CNN!sont!des!réseaux!de!neurones!qui!utilisent!une!convolution!en!deux!dimensions!au!lieu!
d’une! opération! linéaire! pour! les! les! différentes! couches.! L’utilisation! de! convolutions! en! deux!
dimensions! permet! d’extraire! des! caractéristiques! spatiales! des! données.! On! comprend! donc! les!
résultats!intéressants!de!ces!réseaux!pour!le!traitement!des!images.!

Les!RNN!sont!des!réseaux!de!neurones!qui,!contrairement!au!MLP!présenté!plus!haut,!n’ont!pas!
une!propagation!uniquement!dans!un!sens.!Concrètement,!une!couche!peut!être!reliée!à!elleFmême!
par!l’intermédiaire!d’autres!couches,!ce!qui!est!impossible!dans!les!exemples!donnés!plus!haut.!
L’intérêt!d’un!tel!bouclage!est!de!permettre!une!prise!en!compte!des!caractéristiques!de!données!
précédentes!dans!le!traitement!de!la!donnée!actuelle,!ce!qui!est!utile!pour!le!traitement!de!données!
séquentielles!(qui!sont!ordonnées!par!une!séquence!particulière)!tels!que!les!données!audio!car!le!
son!est!corrélé!temporellement,!ou!bien!un!texte!car!l’ordre!des!mots!à!de!l’importance!

Un!peu!de!concret!maintenant!avec!des!exemples!d’applications!qu’on!a!pu!donner!à!ces!différents!
réseaux.!!

2.4.1! Réseau*de*neurones*convolutionnel*(CNN)*
!

Au!niveau!de!l’exploitation!de!données!audio,!des!CNN!ont!déjà!été!utilisés![12]!pour!la!détection!
d’apparition! de! notes! de! manière! intéressante.! C’est! une! technique! qui! a! été! appliqué! à! l’audio! et!
fonctionne! bien! pour! la! détection! d’apparition! de! musique.! Le! CNN! arrive! même! à! dépasser! en!
précision!d’autres!systèmes!(voir!figure!2.10)!normalement!plus!adaptés!à!ce!genre!de!données!tels!
que!le!RNN!et!le!SuperFlux!(un!algorithme!du!flux!spectral!amélioré![13]).!!

Page'19'
!
Mémoire'de'Fin'd’Etudes' !
!

Cette!approche,!expliquée!en!détails!dans!le!paragraphe!3,!consiste!à!avoir!une!représentation!
spectrale!et!temporelle!de!notre!signal!en!entrée!d’un!CNN.!On!utilise!la!capacité!des!CNN!à!repérer!
différentes!formes!sur!cette!représentation!comme!si!c’était!une!image.!

Encore!en!traitement!d’un!signal,!mais!cette!foisFci!avec!de!nombreux!canaux,!on!a!pu!obtenir!de!
bons! résultats! en! utilisant! des! NN! pour! la! classification! de! données! provenant!
d’Electroencéphalogrammes!(EEG)!dans![6]!comme!on!peut!l’observer!sur!le!figure!2.11.!Par!exemple,!
on!arrive!à!retrouver!quelle!musique!le!sujet!est!en!train!d’écouter!avec!une!précision!de!34.4%!en!
utilisant!le!modèle!D.!!

!
Fig!2.10! Résultats!de!précision!sur!la!détection!d’apparition!de!notes,!source![12]!!

Il!faut!garder!à!l’esprit!que!ce!sont!les!meilleurs!résultats!obtenus!sur!la!série.!Ce!n’est!qu’un!seul!
des! 12! sujets! (celui! dont! l’EEG! rendait! une! meilleure! précision! par! rapport! aux! autres)! avec! des!
hyperparamètres!particuliers.!Certains!sujets,!ont!des!résultats!bien!meilleurs!à!cause!de!nombreux!
facteurs! indépendants! (grande! variabilité! dans! la! qualité! des! différentes! EEG! et! différences!
individuelles!entre!les!participants).!!!

Dans![14],!on!effectue!encore!une!utilisation!de!différentes!méthodes!afin!de!détecter!les!crises!
d’épilepsies.! Une! des! conclusions! de! ce! document! et! que! les! CNN! arrivent! à! une! précision! de! zéro!
fausse!alarme!(émettre!une!fausse!prédiction)!sur!20!des!21!sujets,!comparé!à!11!en!utilisant!les!SVM.!
Avec!toutes!les!méthodes!testées,!pour!chaque!patient,!une!est!au!moins!efficace!à!prévoir!une!crise!
environ!1h!avant!qu’elle!arrive,!sans!fausse!alarme.!!

2.4.2! Réseau*de*neurones*récurrents*(RNN)*
!

Page'20'
!
Mémoire'de'Fin'd’Etudes' !
!

Dans![15]!l’auteur!utilise!des!RNN!pour!la!compréhension!du!langage!parlé.!Il!entraine!ses!réseaux!
pour!faire!du!slotLfilling!(remplissage!de!texte!à!trou).!Cela!consiste!à!faire!des!prédictions!sur!un!mot!
manquant!dans!une!phrase!donnée!en!utilisant!le!contexte!associé.!Il!arrive!à!surpasser!les!résultats!
obtenus!précédemment!avec!des!champs!aléatoires!conditionnels!(CRF).!!

!
Fig!2.11! Résultats!de!précision!sur!la!classification!d’une!musique!en!fonction!de!l’EEG,!!
source!:![6]!!

!
L’utilisation! de! RNN! pour! la! reconnaissance! d’accords! musicaux! s’est! avéré! efficace! comme! on!
peut! le! constater! dans! le! travail! de! Boulanger! [16].! Les! RNN! surpassent! les! différents! systèmes!
existants!de!(voir!figure!2.12)!:!!

F! !Machine! Learning! comme! les! Mixture! Gaussienne! (GMM)! et! Modèle! de! Markov! Cachée!
(HMM)!(HPA!est!aussi!une!sorte!HMM)!
F! Deep#Learning!comme!les!Deep#Belief#Network!(DBN3)!!

En! 2014,! B.! Schuller! utilisa! dans! [17]! un! réseau! type! LSTM! sur! des! données! audio! de! type!
musique.!Le!but!de!cet!algorithme!était!de!donner!des!valeurs!«!émotionnelles!»!à!des!données!
acoustiques.!Cette!attribution!s’effectuait!sous!la!forme!d’une!régression!où!il!essayait!de!donner!
des!valeurs!proches!de!celles!données!dans!le!corpus.!

!
Fig!2.12! Résultats!de!précision!sur!la!classification!d’accords!musicaux!(WAOR!précision!OR!mais!prenant!en!
compte!la!longueur!des!morceaux),!source![16]!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3
!Empilement!de!Restricted#Boltzmann#Machine!

Page'21'
!
Mémoire'de'Fin'd’Etudes' !
!

2.5! Différentes*boites*à*outils*disponibles*:*
!

Maintenant!que!nous!avons!vu!pourquoi!utiliser!des!réseaux!de!neurones,!en!étudiant!les!aspects!
théoriques! et! les! applications,! intéressonsFnous! au! comment! :! comment! utiliser! ces! concepts!
mathématiques!?!!

Il!existe!plusieurs!librairies!de!recherche!de!Deep#Learning!utilisables!sous!Python!afin!d’utiliser!
des!fonctions!déjà!faites!et!les!adapter!à!notre!problème.!!

2.5.1! Logiciels*utilisables*(Matlab,*Python,*etc..)*
!

La!plupart!des!boites!à!outils!de!Deep#Learning!sont!disponibles!sous!python.!On!peut!aussi!utiliser!
directement!des!langages!scripts!afin!de!créer!soiFmême!ses!réseaux!de!neurones.!Matlab!et!Python!
sont!particulièrement!adaptés!car!ils!sont!efficaces!pour!manier!les!vecteurs!et!matrices.!Cette!manière!
a!des!avantages!et!des!inconvénients!:!!

F! Avantages!:!C’est!très!bien!pour!comprendre!le!principe,!appliquer!les!équations!que!l’on!a!vu!
précédemment! dans! ce! document,! vérifier! soiFmême! que! son! gradient! est! correctement!
calculé.! Cette! manière! permet! de! faire! absolument! tout! ce! que! l’on! veut! car! on! a! une!
connaissance!totale!de!nos!variables!à!chaque!instant.!La!maitrise!est!totale!
F! Inconvénient!:!Si!l’on!fait!appel!à!des!fonctions!d’optimisation,!on!perd!de!la!portée,!mais!on!
gagne!de!la!rapidité,!or!la!portée!est!un!des!atouts!principaux!de!cette!méthode.!Mon!code!
personnel!est!relativement!peu!optimisé!(uniquement!vectorisation!et!quelques!petites!
astuces!possibles!avec!Matlab),!il!est!donc!lent!lorsque!le!réseau!et!les!données!sont!un!peu!
plus!conséquentes.!Ce!n’est!pas!le!plus!efficace!car!on!n’a!pas!accès!à!des!fonctions!
d’optimisation!compliquées.!!

2.5.2! Theano**

Theano!est!une!bibliothèque!de!fonctions!optimisées!pour!le!Deep#Learning#disponible!en!Python.!
Après! l’installation! et! la! mise! en! place! de! quelques! configurations! nécessaires! à! l’utilisation!
d’optimisation,!il!s’utilise!avec!un!simple!:!!

import!theano!

Les!avantages!principaux!de!Theano!sont!:!!

•! Forte! intégration! avec! la! librairie! Numpy–! Utilisation! de! numpy.ndarray! dans! les! fonctions!
Theano.!

La! librairie! Numpy! est! la! librairie! mathématique! de! python! spéciale! pour! le! calcul! matriciel.! Elle!
permet!entre!autres!de!créer!des!objets!de!type!«!array!»!qui!sont!des!objets!de!la!dimension!que!l’on!

Page'22'
!
Mémoire'de'Fin'd’Etudes' !
!

veut!(vecteur,!matrice,!ou!n’importe!quel!tenseur).!La!librairie!Numpy!permet!tout!type!d’opération!sur!
ces!arrays,!on!trouvera!en!annexe!A.2!un!tableau!de!correspondance!entre!les!fonctions!d’opérations!sur!
les!tenseurs!disponibles!sur!Matlab!et!celles!sur!les!arrays!de!Numpy.!La!création!de!variables!Theano!est!
facile!depuis!une!variable!Numpy,!et!une!obligation!pour!utiliser!les!optimisations.!

•! Utilisation! du! GPU–! Performances! de! calcul! intensif! jusqu'à! 140x! plus! vite! qu’avec! le! CPU!
(uniquement!pour!les!float32)!

Theano!permet!d’utiliser!le!processeur!graphique!(GPU)!afin!d’accélérer!les!calculs!:!une!partie!du!
code!la!plus!lourde!en!ressources!de!calculs!est!compilée!via!le!GPU!en!parallèle!du!processeur!(CPU).!Le!
CPU!est!généralement!composé!des!quelques!cœurs!et!calcule!des!opérations!en!série,!le!GPU!quant!à!
lui!est!composé!de!milliers!de!cœurs,!qui!calculent!des!opérations!plus!petites!mais!en!parallèles.!

•! Utilisation!de!variables!partagées–!Theano!fait!des!liens!entre!chaque!variable!et!les!garde!en!
mémoire.!

Theano! permet! de! définir! des! modèles! de! manière! symbolique.! Le! programmateur! n’a! pas! à!
implémenter!le!calcul!des!gradients!qui!sont!dérivés!automatiquement!par!Theano.!Theano!crée!des!liens!
entre!certaines!variables!dans!un!graphe!représentant!tout!le!programme.!Ces!variables!sont!d’un!type!
particulier!et!définies!comme!ciFdessous!:!!

X_shared!=!theano.shared(X_nonshared,!name=’X_shared’)!

Elles!sont!partagées!entre!toutes!les!fonctions!du!programme!et!font!maintenant!partie!de!la!«!piscine!
de!mémoire!»de!l’espace!mémoire!Theano,!qui!est!distinct!de!l’espace!mémoire!utilisé!par!Python.!Ceci!
permet!à!Theano!d’aller!beaucoup!plus!vite!car!le!programme!a!accès!à!ces!variables!tout!le!temps!et!n’a!
pas!à!les!copier!lors!de!l’accès!à!une!nouvelle!fonction!(ce!qui!est!excessivement!chronophage!lorsqu’on!
a!des!variables!très!lourdes).!!

•! Calcul! automatique! et! efficace! du! gradient–! Theano! calcule! directement! les!dérivées! de! vos!
fonctions!selon!une!ou!plusieurs!variables.!

Grace!aux!variables!partagées!et!au!graphe,!on!a!des!liens!entre!chaque!expression!et!les!différentes!
variables.!C’est!comme!ça!qu’on!peut,!en!utilisant!l’expression!:!!

x_grads!=!theano.tensor.grad(cost,x)!

obtenir!directement!en!sortie!le!gradient!de!l’expression!cost!par!rapport!à!la!variable!x.!Ceci!est!le!
grand!point!fort!de!Theano.!!

•! Optimisation! de! la! vitesse! et! de! la! stabilité–! Obtenir! la! bonne! réponse! pour! log(1+x)! même!
lorsque!x!est!très!petit.!
•! Génération!dynamique!de!code!C!–!Evalue!les!expressions!plus!rapidement.!
•! Nombreux! tests! de! valeurs! et! auto6vérification! –! Détecte! et! analyse! de! nombreux! types!
d’erreurs.!

Page'23'
!
Mémoire'de'Fin'd’Etudes' !
!

Il!y!a!plusieurs!manières!à!notre!disposition!pour!debugger!Theano.!C’est!très!important!car!on!utilise!
un!outil!de!haut!niveau!qui!cache!de!nombreuses!subtilités!et!il!est!parfois!compliqué!d’interpréter!les!
erreurs!obtenues!sur!la!console.!En!utilisant!certains!flags,!le!programme!tourne!moins!rapidement!mais!
nous!permet!d’avoir!plus!d’informations,!entre!autre!sur!la!structure!des!graphes.!!

Le!contrecoup!est!que!ces!fonctions!font!appel!à!une!bibliothèque!de!fonctions!C!cachées!dans!le!
code!python!qu’il!est!très!dur!de!comprendre.!Si!l’on!veut!utiliser!des!réseaux!un!peu!plus!exotiques,!
comme!des!CNNs!avec!des!filtres!de!convolutions!rectangulaires!et!non!carrés,!ce!n’est!plus!possible!!!!

De!plus,!il!faut!garder!en!tête!que!les!blocs!Theano!ne!sont!pas!des!classes!de!couches!de!réseaux!de!
neurones!prêtes!à!l’utilisation,!mais!plutôt!des!fonctions!aux!expressions!symboliques!que!l’on!compose!
en!d’autres!expressions!non!symboliques.!Par!exemple,!en!utilisant!des!expressions!du!type!:!!

f_cost!=!theano.function(cost,[x,!y])!

on!va!définir!une!fonction!f_cost!qui!calculera!le!coût!de!notre!NN!en!fonction!de!x!et!y!en!entrée.!

Si!l’on!souhaite!des!expressions!plus!synthétiques!et!qui!permettront!d’obtenir!de!but!en!blanc!une!
fonction! représentant! plus! qu’une! opération! ou! une! couche! mais! directement! tout! notre! réseau! de!
neurone,!il!va!falloir!utiliser!d’autres!APIs!qui!seront!par!exemple!des!surcouches!de!Theano!comme!celles!
présentées!dessous.!!!

2.5.3! Pylearn2*
!

Pylearn2!est!une!librairie!de!Machine!Learning!qui!se!rajoute!en!surcouche!de!Theano,!permettant!
de!simplifier!grandement!le!code!final!en!utilisant!des!fonctions!déjà!faites!et!plus!simples!à!lire.!Cette!
API!a!été!crée!par!le!laboratoire!LISA4!de!l’université!de!Montréal!qui!est!l’un!des!laboratoires!les!plus!
connu!pour!ses!travaux!en!Deep#Learning.!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4
!Laboratoire!d'Informatique!des!Systèmes!Adaptatifs!

Page'24'
!
Mémoire'de'Fin'd’Etudes' !
!

Pylearn2!ajoute!des!fonctions!tels!que!des!jeux!de!données!prêts!à!l’utilisation!(utile!si!l’on!veut!
faire! du! transfer# learning5),! des! modèles! de! plus! haut! niveau,! et! de! l’apprentissage! non! supervisé.!
Pylearn2! n’utilise! pas! que! du! code! Python,! mais! aussi! des! scripts! YAML6! qui! contiennent! des!
informations! supplémentaires.! Ceci! permet! de! séparer! le! code! de! création! du! NN! et! les!
hyperparamètres!et!ainsi!de!ne!pas!avoir!à!plonger!dans!du!code!compliqué!lorsqu’on!veut!simplement!
changer!quelques!paramètres.!Si!l’on!n’est!pas!expert,!il!est!agréable!de!télécharger!directement!des!
codes!qui!fonctionnent!pour!n’avoir!à!changer!que!le!script!YAML!en!fonction!de!ses!données.!!

!obj:pylearn2.train.Train {
dataset: &train
!obj:pylearn2.datasets.dense_design_matrix.DenseDesignMatrix {
X: !pkl: 'mnist_train_X.pkl',
y: !pkl: 'mnist_train_y.pkl',
y_labels: 10,
},
model: !obj:log_reg.LogisticRegression {
nvis: 784,
nclasses: 10,
},
algorithm: !obj:pylearn2.training_algorithms.sgd.SGD {
batch_size: 200,
learning_rate: 1e-3,
monitoring_dataset: {
'train' : *train,
'valid' :
!obj:pylearn2.datasets.dense_design_matrix.DenseDesignMatrix {
X: !pkl: 'mnist_valid_X.pkl',
y: !pkl: 'mnist_valid_y.pkl',
y_labels: 10,
},
'test' :
!obj:pylearn2.datasets.dense_design_matrix.DenseDesignMatrix {
X: !pkl: 'mnist_test_X.pkl',
y: !pkl: 'mnist_test_y.pkl',
y_labels: 10,
},
},
cost: !obj:log_reg.LogisticRegressionCost {},
termination_criterion:
!obj:pylearn2.termination_criteria.EpochCounter {
max_epochs: 15
},
},
}

Fig!2.13! Script!YAML!pour!une!régression!logistique!sous!Pylearn2!appliquée!à!la!base!MNIST!

On!peut!voir!sur!la!figure!2.13!un!exemple!de!script!YAML!pour!une!régression!logistique!sur!la!
base!MNIST![21]!(base!de!donnée!de!chiffres!écrits!à!la!main).!!

On!peut!voir!plusieurs!hyperparamètres!dans!ce!script!:!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5
!Méthode!consistant!à!prendre!un!NN!déjà!entrainé!sur!des!données!similaires,!pour!le!réFentrainer!sur!son!corpus!de!données!
6
!Langage!de!programmation!

Page'25'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Les!données!d’entrainement,!de!validation,!et!de!test!:!base!MNIST,!10!classes!
F! Le!nombre!de!paramètres!de!la!régression!:!784!
F! La!fonction!de!coût!:!Régression!Logistique!(ie!Softmax)!
F! Le!type!d’algorithme!d’optimisation!:!SGD!(Descente!du!gradient)!
F! Le!taux!d’apprentissage!:!10F3!
F! La!taille!des!batchs!:!200!
!

2.5.4! Autres*(Lasagne,*Caffe,*Torch7)***
!

J’aborderai!brièvement!d’autres!toolboxs7!utilisées!pour!le!Deep!Learning!et!notamment!Lasagne,!
Caffe!et!Torch7.!

Lasagne!est!une!autre!surcouche!de!Theano,!encore!plus!simple!d’utilisation!que!Pylearn2!!!Il!n’est!
même!pas!nécessaire!de!se!passer!du!temps!à!comprendre!les!fichiers!YAML,!tout!se!fait!en!Python.!
La!construction!d’un!classifieur!de!type!MLP!ou!CNN!très!ordinaire!se!fait!de!la!manière!la!plus!simple!
possible.!Cet!outil!est!parfait!pour!ceux!qui!souhaitent!utiliser!des!NN!sans!se!pencher!du!tout!sur!la!
théorie.!Lasagne!permet!aussi!de!créer!des!réseaux!couche!par!couche!en!les!personnalisant,!il!suffit!
de! créer! une! variable! de! type! lasagne.layers.InputLayer! et! d’assigner! à! cette! variable! une!
nouvelle!couche!pour!que!les!couches!soient!directement!liées,!par!exemple!:!!

network!=!lasagne.layers.InputLayer(input_var)!
network!=!lasagne.layers.RecurrentLayer(network,n_hid)!

Cela!permet!de!créer!un!grand!choix!de!différents!réseaux!de!neurones!sans!avoir!à!rentrer!vraiment!
dans!le!code.!Un!exemple!de!la!fonction!de!création!d’un!MLP!lasagne!se!trouve!en!Annexe!A.3.!

Torch7!est!une!boite!à!outils!totalement!différente,!codé!en!LuaJIT!donc!incompatible!avec!Python.!
Le!bon!point!est!qu’il!n’y!a!pas!besoin!d’interagir!avec!l’API!compliqué!de!Python!écrite!en!langage!C.!
Comme!pour!Theano,!la!programmation!est!non!symbolique!et!permet!d’optimiser!des!morceaux!de!
codes! sortant! de! l’ordinaire,! et! comme! pour! Pylearn2! on! peut! trouver! des! fonctions! déjà! prêtes! à!
l’emploi.! Cet! outil! a! été! développé! par! l’équipe! de! Yann! Lecun! et! est! utilisé! par! les! groupes! de!
recherches!de!grandes!compagnies!comme!Facebook,!Twitter!ou!Google.!

Caffe!est!quant!à!lui!codé!en!C++!et!ressemble!fortement!à!ce!qu’on!pourrait!avoir!avec!Pylearn2.!
Il! possède! néanmoins! des! wrappers! pour! Python! et! Matlab.! Caffe! est! la! boite! à! outils! plus! orienté!
Vision!par!Ordinateur!et!CNN.!Un!exemple!de!définition!de!couches!Caffe!est!disponible!en!annexe!en!
A.4!

Nous!avons!opté!pour!Theano!car!:!!

F! Beaucoup!de!documentation!et!de!tutoriels!sont!disponibles!sur!le!net!
F! De!nombreux!types!de!NN!sont!déjà!implémentés!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7
!Boîte!à!outils!

Page'26'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Theano!offre!la!possibilité!dans!la!création!de!nouveaux!modèles!

2.6! Conclusion**
!

L’état! de! l’art! et! les! possibilités! de! techniques! utilisés! en! Deep# Learning! sont! conséquents,! et!
représentatifs!du!travail!que!j’ai!dû!faire!en!début!de!stage.!Ce!qu’on!pourra!retenir!est!:!!

F! Qu’un!réseau!de!neurones!permet!d’extraire!des!caractéristiques!d’un!ensemble!de!données!!
F! Qu’il!a!besoin!d’un!corpus!d’apprentissage!
F! Qu’on!peut!l’appliquer!à!toutes!sortes!de!données!
F! Que!différents!types!existent,!et!que!leurs!avantages!sont!différents!
F! Qu’il!existe!des!boites!à!outils!à!l’état!de!l’art!disponibles!

Maintenant!que!le!lecteur!en!sait!un!peu!plus,!nous!allons!nous!intéresser!à!l’application!de!NN!sur!
des!données!audio.!

Page'27'
!
Mémoire'de'Fin'd’Etudes' !
!

! !

Page'28'
!
Mémoire'de'Fin'd’Etudes' !
!

! Application*à*la*parole*
!

Dans!cette!partie,!nous!allons!détailler!comment!nous!avons!utilisé!un!type!de!NN!particulier,!ayant!
de!bons!résultats!sur!les!images,!pour!une!tache!de!classification!sur!des!signaux!de!parole.!Nous!allons!
commencer!par!présenter!ce!type!de!réseau!:!le!réseau!de!neurone!convolutionnel!(CNN).!Ensuite,!
nous!présenterons!le!contexte!dans!lequel!nous!l’avons!utilisé!sur!des!signaux!de!parole!:!le!challenge!
Interspeech.! Puis! nous! en! viendront! à! la! manière! dont! nous! avons! extraits! des! informations! des!
données,!et!finalement!comment!nous!avons!interprétés!les!résultats.!!

!!!

3.1! Réseau*de*neurones*convolutionnel*(CNN)*
.!

3.1.1! Présentation*générale*
!

Le!CNN!est!un!type!de!NN!très!prometteur!(et!qui!a!déjà!fait!ses!preuves)!dans!le!domaine!du!
traitement!de!l’image.!Un!CNN!est!un!réseau!de!neurones!dont!les!couches!sont!liées!non!pas!par!une!
opération! matricielle! mais! par! une! convolution! en! 2! dimensions.! Les! CNN! permettent! de! traiter!
directement!de!grandes!quantités!de!données!que!sont!les!images!pour!plusieurs!raisons!:!!

F! Les!images!sont!corrélées!spatialement!(les!valeurs!des!pixels!adjacents!sont!généralement!
très!proches)!et!les!couches!de!convolutions!permettent!de!créer!des!liens!entre!ces!données!
corrélées!spatialements.!!
F! Les!couches!de!convolutions!sont!généralement!suivies!de!couches!de!sousFéchantillonnage!
(pooling)!qui!diminuent!grandement!la!taille!des!données.!!

Cela!implique!que!les!entrées!des!CNN!sont!des!données!de!dimensions!2!ou!3.!Chaque!donnée!de!
dimension!2!est!analogue!à!une!image!alors!que!la!3ieme!dimension!représente!le!nombre!de!canaux.!
On!peut!citer!comme!exemple!de!donnée!d’entrée!:!!

F! Une!image!noir!et!blanc!de!dimension!L*H!:!dimension!2!(L*H*1)!car!un!seul!canal!!
F! Une!image!en!couleur!de!dimension!L*H!:!dimension!3!(L*H*3)!car!plusieurs!canaux!d’entrées!
(Rouge,!Vert!et!Bleu)!

Page'29'
!
Mémoire'de'Fin'd’Etudes' !
!

Suite!à!l’apprentissage,!les!filtres!de!convolutions!arrivent!à!repérer!des!formes!particulières!sur!
les!images.!Les!formes!que!les!filtres!détectent!changent!par!rapport!à!la!couche!ou!se!trouve!les!filtres!
de! convolution.! Comme! on! peut! le! voir! sur! la! figure! 3.1,! les! filtres! des! différentes! couches! se!
spécialisent! dans! des! domaines! différents! :! ceux! de! la! première! couche! seront! des! détecteurs! de!
contours,! ceux! de! la! deuxième! des! détecteurs! de! parties! du! visage,! et! ceux! de! la! dernière! des!
détecteurs!de!visage!entier.!Ainsi,!on!comprend!facilement!que!les!CNN!se!sont!fait!une!place!de!choix!
dans!la!Vision!par!Ordinateur,!et!en!particulier!la!reconnaissance!d’objets.!

!
Fig!3.1! Spécialisation!des!filtres!d’un!CNN!(les!activations!sont!les!résultats!des!convolutions)!

Historiquement,!les!premiers!CNN!ayant!eu!du!succès!ont!été!inventés!en!1989!par!LeCun!dans!
[18]!et!appliqués!à!la!reconnaissance!d’écriture!manuscrite.!Ce!système!a!été!perfectionné!par!son!
auteur!en!1998!dans![19],!pour!être!maintenant!utilisé!dans!les!machines!de!dépôt!automatique!de!
chèques!bancaires.!!Ces!réseaux!composés!de!couches!de!convolutions!suivi!par!des!couches!de!type!
MLP!sont!appelés!réseaux!de!type!LeNet!(on!y!reviendra!au!paragraphe!3.4).!!

Nous!allons!décrire!plus!en!détails!les!différentes!couches!ciFdessous.!

3.1.2! Les*différentes*couches*
!

Avant!toute!chose,!il!est!important!de!décrire!ce!qu’est!une!convolution!en!deux!dimensions!(2D).!

Page'30'
!
Mémoire'de'Fin'd’Etudes' !
!

3.1.2.1! Convolution-en-deux-dimensions-
!

La!convolution!2D!est!énormément!utilisée!dans!le!traitement!de!l’image!(voir!la!figure!2.5).!

Mathématiquement,!le!produit!de!convolution!g!de!l’image!f!par!le!filtre!h!de!taille((ℎò , ℎô )!est!
définit!par!cette!équation!:!

! úù ,úû

ö ,, ' = ( ℎ E, õ # , + E, ' + õ ! (!19!)!


+,É

Il!y!a!plusieurs!types!de!convolutions!possible,!en!effet!la!convolution!peut!être!effectué!avec!ou!
sans!padding#:!

F! Sans!padding,!la!convolution!ne!dépasse!pas!les!bords!de!l’image!initiale,!le!résultat!sera!donc!
plus!petit!que!ce!qu’on!avait!à!l’origine.!Pour!une!image!de!dimension! <, O !et!un!filtre!de!
dimension!(}, S)!on!obtient!une!convolution!de!dimension!(< − } + 1, O − S + 1),!c’est!le!cas!
de!l’exemple!!de!la!figure!3.2.!
F! Avec! padding,! le! principe! est! de! rajouter! des! valeurs! au! bord! de! notre! image! d’entrée! afin!
d’avoir!une!image!de!même!taille!en!sortie.!

!!!!!

!
!

!
Fig!3.2! Principe!d’une!convolution!2D,!!
source!:!http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/!

3.1.2.2! Couche-de-convolution-
!

Une!couche!convolutionnelle!n’a!pas!grand!chose!à!voir!avec!une!couche!classique!de!NN.!Dans!le!
cas!présent,!on!convolue!la!donnée!d’entrée!avec!Q!filtres!de!3!dimensions!(une!image!ayant!plusieurs!
représentations!est!de!dimension!3!=!longueur,!largeur,!profondeur),!et!l’on!somme!sur!la!troisième!

Page'31'
!
Mémoire'de'Fin'd’Etudes' !
!

dimension! afin! d’avoir! un! résultat! de! dimension! 2.! On! obtient! finalement! en! sortie! de! la! couche! Q!
«! cartes! caractéristiques! »,! comme! montré! sur! la! figure! 3.3! où! dans! ce! cas! Q=2.! Comme! pour! une!
(>)
couche!de!MLP,!à!chaque!filtre!ü!est!associé!un!biais!.† .!Pour!une!explication!plus!précise,!se!référer!
à!la!figure!A.5!en!annexe.!Suite!à!cette!opération!et!comme!dans!le!cas!du!MLP,!on!va!faire!passer!
chacun! des! neurones! résultants! à! travers! une! fonction! d’activation.! Ces! Q! cartes! caractéristiques!
seront!chacune!un!canal!différent!en!entrée!de!la!prochaine!couche!convolutionnelle.!Pour!la!couche!
numéro(<,!les!activations!sont!égales!à!:!!

! (>)
&† ,, ' = (
(>í%)
$† E, õ, M Å , + E, ' + õ + .† !
(>)
(!20!)!
+,É,

! puis! !x(>) = (#(° > )!! (!21!)!

Précisons!ici!les!différences!par!rapport!au!MLP!:!!

F! Les! paramètres! que! l’on! souhaite! optimiser! ici! sont! les! poids! des! différents! filtres! de!
convolution,!ce!ne!sont!plus!les!poids!qui!liaient!simplement!un!neurone!à!un!autre!dans!les!
couches!du!MLP!!
F! Chaque!«!pixel!»!de!chaque!carte!caractéristique!est!un!neurone.!!
F! #!est!une!fonction!d’activation!similaire!à!celles!présentés!précédemment!

Fig!3.3! Principe!de!la!couche!de!convolution!(ici!le!nombre!de!filtres!Q!=!2),!!
source!:!http://deeplearning.net/tutorial/lenet.html!
!

3.1.2.3! Couche-de-pooling-
!

Page'32'
!
Mémoire'de'Fin'd’Etudes' !
!

La!couche!de!pooling!(couche!d’agrégation!en!français)!permet!de!diminuer!la!taille!comme!décrit!
dans!la!figure!3.4.!Les!paramètres!du!pooling,!sont!:!!

!
Fig!3.4! Principe!de!la!couche!de!pooling!(pooling!max!ici),!
!source!:!http://cs231n.github.io/convolutionalFnetworks/!

F! Son!type!car!le!pixel!sortant!peut!être!issu!d’une!fonction!max,!moyenne!ou!min!(ici!:!max)!
F! Le!stride#qui!correspond!au!déplacement!du!filtre!(ici!:!2!en!hauteur!et!largeur)!
F! La!taille!des!filtres!(ici!:!2x2)!

Dans!le!cas!de!cette!figure,!le!rapport!de!la!taille!de!sortie!sur!celle!d’entrée!est!égal!à!l’inverse!de!
la!taille!du!pooling.!

Dans!la!figure!3.5!on!peut!voir!une!représentation!d’une!couche!complète!d’un!CNN.!Les!unités!de!
même!couleur!sont!celles!qui!ont!été!convoluées!par!le!même!filtre.!Ici!il!y!a!3!couleurs!donc!Q!=!3.!

!
Fig!3.5! Représentation!d’une!couche!complète!(convolution+pooling)!d’un!CNN,!!
source!:!http://ufldl.stanford.edu/tutorial/supervised/ConvolutionalNeuralNetwork/!

Il!est!possible!d’utiliser!une!couche!de!convolution!en!plein!milieu!d’un!réseau!ou!alors!simplement!
au!début!afin!de!réduire!un!peu!l’information,!ou!bien!même!en!utiliser!plusieurs!à!la!suite.!!

Page'33'
!
Mémoire'de'Fin'd’Etudes' !
!

!!

3.1.3! Différence*dans*la*retroDpropagation*
!

La! couche! convolutionnelle! est,! on! l’a! vu,! bien! différente! d’une! couche! classique.! Le! calcul! du!
gradient! sera! donc! différent.! La! méthode! de! calcul! du! gradient! dans! un! réseau! de! neurones!
convolutionnel!a!été!mis!en!lumière!par!LeCun!dans![20].!!

Lors!de!mon!stage!j’ai!pu!coder!entièrement!un!CNN!et!je!me!suis!retrouvé!face!à!des!difficultés!
concernant!la!propagation!de!l’erreur!parmi!les!différentes!couches!:!les!q(>) .!En!effet,!selon!le!type!de!
pooling!que!l’on!a,!l’erreur!va!se!propager!différemment!à!travers!la!couche!de!pooling.!De!même,!si!
la!propagation!a!un!padding!ou!non,!le!résultat!sera!différent!et!les!fonctions!à!utiliser!dans!le!code!
aussi.!!

3.1.3.1! Couche-de-pooling--
!

Nous! avons! vu! dans! les! paragraphes! précédents! et! en! particulier! en! 2.2.2! que! l’erreur! de!
propagation!q(>) !a!la!dimension!de!la!couche!<,!et!chaque!paramètre!de!q(>) !correspond!à!une!erreur!
sur!un!neurone.!Nous!devons!propager!l’erreur!de!propagation!à!travers!la!couche!de!pooling!qui!est!
une!couche!de!sousFéchantillonnage.!Il!va!donc!falloir!faire!un!surFéchantillonnage.!Avant!de!calculer!
l’erreur!de!propagation!en!entrée!de!la!couche!de!pooling!lorsqu’on!a!celle!en!sortie,!regardons!ce!
qu’il!se!passe!physiquement.!

Si! l’on! est! en! présence! d’un! pooling! moyenne,! alors! tous! les! pixels! d’entrée! peuvent! être!
responsables! de! cette! erreur.! Le! surFéchantillonnage! distribue! uniformément! cette! erreur! sur! les!
neurones!de!la!couche!précédente.!Il!suffit!de!faire!un!produit!de!Kronecker!de!notre!delta!par!une!
matrice!uniforme!de!la!taille!de!notre!pooling!et!de!somme!totale!1.!Par!exemple,!pour!un!pooling!
moyenne!2*2,!la!matrice!utilisée!sera!:!!

! 1 1 1
. ! (!22!)!
4 1 1

Si!c’est!un!pooling!max,!alors!l’erreur!de!propagation!est!uniquement!due!au!neurone!qui!s’est!
propagé,!c’est!à!dire!le!plus!grand.!La!matrice!utilisé!dans!le!produit!de!Kronecker!sera!simplement!
une!matrice!de!0!avec!un!1!à!la!place!du!neurone!qui!a!été!transmis.!

Vous!trouverez!en!annexe!A.6!un!exemple!de!code!Matlab!pour!un!pooling!moyenne!carré.!

3.1.3.2! Couche-de-convolution-
!

Une! fois! que! l’on! a! la! matrice! d’erreur! à! l’entrée! de! la! couche! de! pooling,! il! faut! calculer! les!
gradients!de!nos!filtres!de!convolutions.!Pour!cela,!l’opération!est!encore!différente!:!au!lieu!de!faire!
une! simple! opération! matricielle! comme! dans! 2.2.2! on! effectue! la! convolution! entre! notre! matrice!

Page'34'
!
Mémoire'de'Fin'd’Etudes' !
!

d’erreur!et!les!activations!de!la!couche!précédente!(un!exemple!de!code!de!calcul!du!gradient!pour!un!
CNN!à!une!couche!de!convolution!et!une!couche!normale!est!disponible!en!annexe!A.7)!

! (>,>?%)
s5(t,tuJ) (` !, !(( 5, ^ , ") = ( q ∗x > ! (!23!)!
£

! s^(t) ` !, !(( 5, ^ , ") = ( q(>?%) ! (!24!)!

La!création!du!gradient!est!un!peu!différente!selon!le!type!de!convolution!que!l’on!a!choisi.!En!
effet,!la!taille!du!gradient!d’un!filtre!est!égale!à!la!taille!du!filtre!en!question.!Prenons!l’exemple!d’une!
(>,>?%)
image! x > ! de! dimension! <, O ! et! un! filtre! 5 ! de! dimension! (}, S).! Lorsqu’on! effectue! une!
convolution!:!!

(>,>?%)
F! Sans! padding,! l’image! obtenue! est! de! dimension! (< − } + 1, O − S + 1).! Le! q ! est! de!
dimension!(< − } + 1, O − S + 1)!car!on!rétropropage!donc!on!vient!du!coté!de!sortie!du!CNN.!
(>,>?%)
La!convolutio!de!q !de!dimension!(< − } + 1, O − S + 1)!avec!l’image!x > !de!dimension!
<, O !donne!bien!une!image!de!dimension! < − < − } + 1 − 1, O − O − S + 1 − 1 !!,!soit!
une!image!de!dimension! }, S .!Ce!qui!est!logique,!le!coefficient!en!haut!à!gauche!du!filtre!aura!
été!multiplié!par!les!(< − } + 1, O − S + 1)!premieres!valeurs!de!l’image,!l’erreur!doit!donc!se!
multiplier!par!celles!la.!
(>,>?%)
F! Avec!padding,!si!l’on!décide!de!garder!des!images!de!même!taille,!nous!avons!q !et!x > !
de!dimension!(<, O).!Il!faut!alors!ajouter!à!l’image!x > !un!padding!correspondant!à!la!taille!de!
celui!qui!a!été!fait!précédemment!car!si!l’on!a!modifier!l’image!dans!la!propagation,!il!faut!
conserver!la!même!dans!la!rétropropagation.!Cela!demande!une!adaptation!particulière!du!
code!car!si!la!convolution!est!commune!lors!de!la!propagation,!il!faut!effectuer!le!padding!à!la!
main!lors!de!la!rétropropagation.!

3.2! Introduction*:*Challenge*Interspeech*’15*
!

!
Fig!3.6! Logo!Interspeech!2015!
3.2.1! Présentation**
!

Page'35'
!
Mémoire'de'Fin'd’Etudes' !
!

La!parole!étant!le!signal!biologique!le!plus!important!produit!et!reçu!par!les!humains,!le!challenge!
Interspeech!s’efforce!de!proposer!aux!candidats!d’aller!plus!loin!dans!la!compréhension!de!ce!signal!
représentatif!du!genre!humain.!En!bref,!le!challenge!Interspeech!est!un!défi!ouvert!traitant!des!états!
de!locuteurs!selon!les!propriétés!de!leur!signaux!vocaux!acoustiques.!

On!distingue!4!sous!challenges!:!!

F! Brave#New#Approach#:!Trouver!une!nouvelle!approche!prometteuse,!en!dehors!des!chemins!
battus,!en!utilisant!des!données!de!test!labélisées!et!un!grand!nombre!de!métaFinformations!
F! Degree#of#Nativeness#:!Le!degré!d’autochtonie!du!locuteur!doit!être!retrouvé!en!fonction!du!
signal!de!parole!(la!langue!étant!l’anglais).!
F! Parkinson’s#Condition#:!Le!degré!d’atteinte!du!locuteur!par!la!maladie!de!Parkinson!doit!être!
retrouvé!en!fonction!du!signal!de!parole.!
F! Eating#Condition#:!Retrouver!sur!7!différentes!classes!le!type!de!nourriture!consommé!par!un!
locuteur!lorsqu’il!parle.!

Nous!nous!sommes!intéressés!au!dernier!sousFchallenge.!

3.2.2! *Corpus*:*Eating*Condition*
!

Afin!de!créer!ce!corpus,!les!organisateurs!ont!fait!appel!à!30!différents!locuteurs,!parlant!l’allemand!
comme! langue! maternelle.! Le! corpus! se! compose! de! fichiers! wav,! comprenant! chacun!
l’enregistrement! d’un! locuteur! lisant! une! phrase! alors! qu’il! est! en! train! (ou! non)! de! manger.! Les!
phrases! ne! seront! restreintes! qu’à! un! groupe! de! six! phrases! prédéfinies! tirées! de! la! fable! d’Esope!
«!Phébus!et!Borée!».!Sept!classes!de!nourritures!sont!présentes!dans!les!enregistrements!du!corpus!:!

!
Fig!3.7! Corpus!IS15!Eating!Condition!

Pomme,!Banane,!Chips,!Biscuit,!Ours!Haribo,!Nectarine!ou!rien!du!tout.!En!tout,!le!corpus!contient!
1400!phrases!pour!2h53!de!paroles.!!

Page'36'
!
Mémoire'de'Fin'd’Etudes' !
!

Le!corpus!est!séparé!entre!des!données!d’entraînements!qui!sont!labélisées!et!des!données!de!test!
qui!ne!le!sont!pas!comme!décrit!dans!le!tableau!ciFdessous!(Figure!3.7).!De!plus,!pour!chaque!fichier!
labélisé,!on!possède!des!métadonnées!comprenant!:!l’identité!anonyme!du!locuteur,!l’âge!du!locuteur!
et!son!sexe.!

Les!fichiers!du!corpus!de!test!et!les!fichiers!du!corpus!d’entrainement!sont!composés!de!locuteurs!
différents! afin! de! rendre! les! différents! corpus! indépendants! :! ainsi! l’on! n’apprend! pas! la! voix! des!
locuteurs!sur!lesquels!on!va!tester!notre!algorithme.!

3.2.3! Approche*générale*:*principe*et*choix*possibles*
!

Si! les! réseaux! de! neurones! récurrents! sont! les! plus! efficaces! pour! traiter! les! informations!
séquentielles! comme! l’audio! [22,23],! cette! fois! nous! allons! essayer! de! traiter! ces! informations!
séquentielles!que!sont!les!fichiers!audio!en!prenant!une!autre!approche.!On!peut!voir!dans!un!ancien!
travail![12]!une!technique!intéressante!qui!a!été!appliqué!à!l’audio!et!fonctionne!bien!pour!la!détection!
d’attaques!de!notes!musicales.!Cette!approche,!expliquée!dans!le!paragraphe!suivant,!consiste!à!avoir!
une! représentation! spectrale! et! temporelle! de! notre! signal! en! entrée! d’un! CNN! et! de! repérer!
différentes!formes!sur!cette!représentation!comme!s’il!s’agissait!d’une!image.!!

3.3! Utilisation*du*corpus*
!

Afin!d’entrainer!et!de!tester!nos!algorithmes,!il!faut!utiliser!les!données!qu’on!a!à!notre!disposition!
dans!le!corpus.!Nous!avons!20!locuteurs!différents,!avec!42!à!49!fichiers!audio.!Pour!avoir!une!idée!
correcte!de!la!précision!de!nos!réseaux,!nous!allons!les!entrainer!et!les!tester!sur!un!maximum!de!jeu!
de!données!différents.!Pour!cela!nous!avons!utilisé!une!validation!croisée.!Cette!technique!consiste!à!
séparer! les! données! en! plusieurs! parties! indépendantes! les! unes! des! autres,! de! laisser! une! de! ces!
parties!de!côté!car!elle!servira!de!test,!et!de!s’entrainer!sur!toutes!les!autres!(voir!figure!3.8).!Chaque!

!
Fig!3.8! Principe!de!la!validationFcroisée!avec!un!découpage!en!3!partie!du!corpus,!!
source!:!http://www.biomedcentral.com/1471F2105/13/S16/S3/figure/F4?highres=y!

fois!que!l’on!change!les!données!de!test,!on!réFentraine!un!nouveau!réseau!car!sinon!les!données!de!
test!seraient!des!données!déjà!connues!par!le!réseau.!Considérer!l’ensemble!des!résultats!obtenus!
permet!d’avoir!une!idée!meilleure!idée!de!la!précision!générale!de!notre!algorithme.!!!

Page'37'
!
Mémoire'de'Fin'd’Etudes' !
!

Nous!avons!utilisé!lors!de!nos!tests!un!type!commun!de!validation!appelé!LeaveLOneLSpeakerLOut!
(LOSO)! :! le! dossier! de! test! est! composé! des! fichiers! provenant! d’un! locuteur! uniquement.! Cette!
technique!laisse!les!données!de!tests!indépendantes!par!rapport!aux!données!d’entrainement!car!le!
réseau!de!neurones!n’apprend!pas!la!voix!du!locuteur!qui!sera!testé.!On!verra!que!les!résultats!varient!
beaucoup!en!fonction!du!locuteur!testé.!

3.4! Extractions*de*paramètres*acoustiques*
!

Les! données! d’entrée! qui! sont! les! fichiers! audio! doivent! être! prétraitées! avant! de! pouvoir! être!
utilisées!avec!plus!d’efficacité.!Seules!certaines!caractéristiques!de!notre!signal!sont!importantes!pour!
caractériser!la!nourriture!que!le!locuteur!est!en!train!de!manger,!en!«!aidant!»!un!peu!notre!algorithme!
en!lui!fournissant!des!données!plus!pertinentes,!les!résultats!sont!améliorés.!Par!exemple!utiliser!une!
échelle!reflétant!la!perception!humaine!permet!de!mieux!traiter!les!signaux!audio!(voir!paragraphe!
3.4.2).!

3.4.1! Spectrogrammes*
!

Afin!d’obtenir!des!données!similaires!à!ce!qu’on!pourrait!attendre!en!entrée!d’un!CNN!(une!image!
RGB!par!exemple),!les!fichiers!audio!ont!été!fenêtrés!dans!le!temps!selon!4!différentes!tailles!:!50,!100,!
500!et!2500!millisecondes.!

Nous!avons!fait!bouger!ces!fenêtres!par!pallier!de!25!millisecondes!sur!toute!la!durée!du!signal,!
ceci!nous!a!permis!d’avoir!plusieurs!fenêtres!de!tailles!différentes!toutes!centrés!autour!d’un!même!
point!tout!au!long!du!signal.!

Pour!un!fichier!de!longueur!T!secondes!et!en!utilisant!la!fenêtre!de!durée!2,5!secondes!on!obtient!
6í0,§
!!trames!qui!se!suivent.!Chacune!de!ces!trames!représente!donc!une!petite!partie!du!signal!audio.!
3,30§
En! prenant! le! spectre! du! signal! de! chaque! trame,! et! en! les! concaténant! on! obtient! une! carte! en! 2!
dimensions!caractéristique!de!notre!signal!de!parole.!On!reproduit!ce!processus!avec!les!fenêtres!de!
tailles!différentes!mais!centrés!sur!les!mêmes!points,!ce!qui!permet!d’obtenir!4!images!toutes!les!25!
ms.!!

!
Fig!3.9! Exemple!de!fenêtrage!d’un!signal!

Page'38'
!
Mémoire'de'Fin'd’Etudes' !
!

3.4.2! Log*MEL*
!

L’échelle! de! Mel! est! une! échelle! psychoFacoustique! des! sons,! pour! avoir! un! rendu! plus!
représentatif!de!ce!qui!est!perçu!par!l’oreille!humaine.!En!effet,!l'audition!humaine!ne!perçoit!pas!le!
doublement!de!la!fréquence!d'un!son!pur!(correspondant!à!un!intervalle!d'octave!pour!un!son!musical)!
comme!une!variation!égale!de!hauteur!à!toutes!les!fréquences.!Cette!échelle!est!établie!pour!qu'un!
doublement!de!la!valeur!en!mels!soit!perçu!comme!une!variation!de!hauteur!réelle!identique!quelle!
que!soit!la!fréquence!de!départ.!La!conversion!entre!Hertz!et!Mels!se!fait!de!cette!manière!:!!

! #
O = 2595 ∗ <Rö%3 (1 + )! (!25!)!
700

On!trouve!comme!en![24],!des!exemples!de!travaux!de!reconnaissance!automatique!de!la!parole!
ayant!eu!de!bons!résultats!avec!le!logFpuissance!du!spectre!du!signal!passé!à!l’échelle!Mel.!!

On!obtient!42!coefficients!représentant!des!fréquences!de!50!à!8000!Hertz.!

Fig!3.10! Echelle!de!MEL!par!rapport!aux!Hertz!(graph),!source!:!Wikipedia!

!!

3.4.3! Fenêtrage*
!

Les! différents! fichiers! wav! n’ont! pas! tous! la! même! longueur,! or! nous! avons! besoin! d’avoir! des!
entrées! de! tailles! similaires! pour! notre! réseau! de! neurones.! On! effectuera! un! fenêtrage!
supplémentaire!sur!nos!spectrogrammes!par!rapport!à!la!variable!temporelle.!Ceci!permet!de!prendre!
en!compte!du!contexte!du!signal!de!parole!à!un!instant!donné.!Pour!chaque!spectre!d’une!trame,!on!
prendra!les!spectres!des!7!voisines!de!droite!et!de!gauche,!ce!qui!correspond!à!un!contexte!de!±!175ms.!
On! appellera! cette! nouvelle! donnée! une! frame.! Le! résultat! obtenu! et! qui! sera! en! entrée! de! notre!

Page'39'
!
Mémoire'de'Fin'd’Etudes' !
!

réseau!est!un!jeu!de!frames!de!taille!42*15*4,!que!l’on!réduira!à!42*14*4!pour!une!question!de!parité.!
Pour!chaque!frame!nous!avons!donné!le!même!label!de!sortie!que!celui!du!fichier!dont!elle!est!extraite.!!

Nous!pouvons!voir!sur!la!figure!3.11!un!exemple!de!données!en!entrée!du!CNN.!!

Fig!3.11! Spectrogrammes!d’entrée!du!CNN!

3.4.4! Normalisation*
!

Pour! finir,! on! effectuera! une! normalisation! moyenneFvariance! des! différentes! données.! Soit! en!
normalisant!par!rapport!à!l’ensemble!des!données,!soit!en!normalisant!seulement!avec!les!données!
propres!à!chaque!locuteur.!

Une!normalisation!à!pour!but!de!rendre!les!données!non!liées!par!rapport!au!locuteur!et!donc!
indépendantes.!Cela!permet!à!notre!réseau!de!ne!pas!s’adapter!uniquement!à!la!voix!des!locuteurs!
qu’il!connaît!par!l’apprentissage.!

En!utilisant!le!théorème!Centrale!Limite,!on!peut!approximer!tout!échantillon!de!taille!supérieure!
à! 50! et! si! l’on! considère! les! variables! aléatoires! semblables! comme! suivant! une! loi! Normale! d’une!
certaine!espérance!et!d’une!certaine!variance!(on!notera!en!passant!que!c’est!ce!qu’on!utilise!lorsqu’on!
applique!une!mixture!gaussienne).!!

Soit!on!normalise!par!rapport!à!:!!

Page'40'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Toutes! les! fréquences,! et! l’on! a! une! seule! loi! normale! pour! tous! nos! valeurs! des!
spectrogrammes.!Cette!approche!semble!privilégier!la!tonalité!du!locuteur!
F! Chaque! fréquence,! et! l’on! a! une! loi! normale! par! fréquence,! donc! une! loi! normale! par!
coefficient.!Cette!approche!semble!privilégier!l’énergie!contenu!dans!la!voix!du!locuteur!!

En!utilisant!nos!coefficients!logMEL!qu’on!notera!Ö+ !par!simplicité,!on!peut!calculer!l’espérance!ß!et!la!
variance!®!:!!
™ ™
! 1 1
0
ß= Ö+ , ® = (ß − Ö+ )0 ! (!26!)!
© ©−1
+1% +1%

Puis!pour!chacune!de!nos!variables!on!peut!faire!une!normalisation!par!rapport!au!résultats!obtenus!:!!

! ((Ö+ − ß
∀E = 1. . ©, ÖI¨≠ã,+ = ! (!27!)!
®0

3.5! Réseaux*
!

Pour!tous!mes!CNN,!j’ai!décidé!de!choisir!de!faire!des!CNN!simples!mais!efficaces!de!type!LeNet!
comme!celui!utilisé!dans![18].!Comme!dit!précédemment!dans!le!paragraphe!2.5,!les!réseaux!de!type!
LeNet!ont!été!proposé!par!LeCun!dans![13]!pour!la!reconnaissance!de!chiffres!écrits!à!la!main.!!

L’application! de! CNN! à! des! données! similaires! aux! miennes! n’ayant! jamais! été! faite,! il! a! fallu!
essayer!beaucoup!de!différentes!configurations!dans!les!hyperparamètres,!ou!dans!la!façon!de!traiter!
les!données!pour!améliorer!la!précision!de!l’algorithme.!Nous!avons!essayé!des!nombres!variables!de!
couches!de!convolutions!et!de!couches!de!type!perceptron,!mais!aussi!des!nombres!plus!ou!moins!
grands! de! filtres! de! convolutions,! de! taille! de! neurones! dans! les! couche! de! type! MLP.! Voici! les!
hyperparamètres!du!CNN!ayant!eu!les!meilleurs!résultats!(figure!3.12)!:!

F! Une!première!couche!convolutionnel!avec!32!filtres!de!taille!5*5,!et!une!fonction!d’activation!
de!type!ReLU!
F! Une!couche!de!pooling!de!type!max!
F! Une!deuxième!couche!convolutionnel!avec!20!filtres!de!taille!3*3,!et!une!fonction!d’activation!
de!type!ReLU!
F! 1!première!couche!de!type!MLP!à!100!neurones!avec!fonction!d’activation!de!type!linéaire!
F! 1!première!couche!de!type!MLP!à!7!neurones!avec!fonction!d’activation!de!type!linéaire!
F! 1!couche!de!sortie!de!type!Softmax!

Nous!avons!aussi!essayé!de!couper!les!cartes!de!données!en!deux!dans!le!sens!horizontal!pour!
isoler!les!fréquences!hautes!et!les!fréquences!basses!de!la!voix,!ainsi!que!d’entrainer!les!réseaux!selon!
le!genre!du!locuteur!(homme/femme)!pour!voir!si!cela!influait.!Les!réponses!sont!négatives,!on!obtient!
des!résultats!beaucoup!moins!bons!avec!ces!méthodes.!!

Page'41'
!
Mémoire'de'Fin'd’Etudes' !
!

!
Fig!3.12! Un!CNN!de!type!LeNet!que!nous!avons!implémenté!

3.6! Algorithme*d’apprentissage*
!

En! prenant! exemple! sur! [12],! j’ai! choisi! d’entrainer! le! réseau! avec! un! algorithme! de! descente!
stochastique!du!gradient!avec!moment!(présenté!dans!2.3.4).!Les!valeurs!des!paramètres!qui!furent!
retenues!pour!cette!tâche!sont!des!valeurs!courantes!pour!ce!type!d’algorithme!de!convergence!:!!

F! Un!moment!de!0.9!!
F! Un!taux!d’apprentissage!de!0.95!

Sachant!que!la!taille!des!données!d’apprentissage!est!grande,!on!ne!peut!pas!effectuer!une!simple!
propagation!et!rétropropagation!avec!toutes!nos!données!de!test.!Une!des!techniques!utilisé!dans!le!
SGD!est!de!faire!des!«!lots!»!de!données!appelés!miniFbatchs.!Ainsi,!l’on!sépare!les!données!en!plus!
petites!quantités!afin!de!pouvoir!effectuer!les!calculs.!Un!des!autres!avantages!de!l’apprentissage!par!
batch!est!de!rendre!plus!stable!la!recherche!des!poids![25]!car!on!met!à!jour!les!poids!des!filtres!avec!
la! moyenne! des! gradients! des! données! du! batch.! Cela! permet! d’éviter! de! prendre! des! directions!
aléatoires!de!mauvais!gradients.!

Le!nombre!de!fois!que!l’on!fait!apprendre!toute!la!série!de!données!d’apprentissage!s’appelle!le!
nombre!d’époques.!Par!exemple,!si!l’on!a!un!ensemble!de!données!d’apprentissage!de!taille!100!000!
et!que!l’on!fait!des!miniFbatchs!de!50,!il!faudra!alors!2!000!itérations!par!époque!(2.103!*50!=!105)!

Page'42'
!
Mémoire'de'Fin'd’Etudes' !
!

Pour!choisir!notre!nombre!d’époque!et!éviter!l’overfitting,!on!teste!l’algorithme!sur!les!données!
de!validation.!Nous!avons!donc!un!nombre!d’époque!et!de!batch.!

F! Un!nombre!maximum!d’époque!de!5!
F! Une!taille!de!batch!de!50.!

for e = 1:epochs

% randomly permute indices of data for quick minibatch sampling


rp = randperm(m);
for s=1:minibatch:(m-minibatch+1)
it = it + 1;

% get next randomly selected minibatch


mb_data = data(:,:,:,rp(s:s+minibatch-1));
mb_labels = labels(rp(s:s+minibatch-1));

% evaluate the objective function on the next minibatch

[cost ,grad] = Cost_function(theta,mb_data,mb_labels);

% We add in the weighted velocity vector to the


% gradient evaluated above scaled by the learning rate.
% Then update the current weights theta

velocity = mom*velocity + alpha*grad;


theta = theta - velocity;

if mod(it,stop1) == 0
fprintf('Epoch %d: Cost on iteration %d is %f \n',e,it,cost);
% Save the datas, to plot a curve
cost_tot(it/stop1) = cost;

if mod(it,stop2)==0 % Too long


[~,~,preds]=cnnCost_mar(theta,images_test,labels_test,ei,true);

for k = 1 : numel(preds.mat)
[~,lab_wav(k)] = max(sum(preds.mat{k},2));
end

acc_tot(it/stop2) = 100*mean(lab_wav==new_labels);
fprintf('Accuracy on the validation test is %d purcent\n', acc_tot(it/stop2));
end
end

end;

alpha = decay*alpha;

end;
Fig!3.13! Partie!du!code!Matlab!avec!la!boucle!d’apprentissage.

3.7! Posttraitement*des*scores*:*prédictions*par*fichier*
!

Pour!participer!au!défi,!il!faut!fournir!une!prédiction!par!fichier!audio,!or!la!façon!dont!nous!avons!
choisi!de!traiter!les!données!implique!que!pour!chaque!fichier!wav!nous!avons!plusieurs!images!pour!
notre!CNN.!Utilisons!des!notations!générales!pour!mieux!visualiser.!Supposons!que!nous!avons!comme!
données!de!test!un!ensemble!Ç!de!fichiers!audio!à!classer.!Nous!avons!donc!pour!chaque!fichier!audio!
E ∈ Ç!que!l’on!doit!classifier,!!Æ+ !frames!en!entrée!du!réseau!et!donc!Æ+ !sorties!à!utiliser.!Chacune!de!

Page'43'
!
Mémoire'de'Fin'd’Etudes' !
!

ces!Æ+ !prédictions!est!un!vecteur!de!dimension!B = 7!dont!la!MENON!valeur!traduit!la!probabilité!que!


notre!échantillon!soit!de!classe!M.!Pour!chaque!donnée!d’entrée!S ∈ Æ + ,!on!notera!ces!prédictions!!+Ø .!

Nous!avons!donc!plusieurs!sorties,!or!il!ne!faut!qu’une!seule!par!fichier.!Nous!avons!testé!plusieurs!
manières! de! fusionner! ce! grand! nombre! de! prédictions! afin! d’arriver! à! de! meilleurs! résultats! en!
général!:!

F! Faire!la!moyenne!des!résultats!pour!chaque!fichier!
F! Utiliser!une!normalisation!des!résultats!:!centrée!réduite!
F! Utiliser!une!normalisation!des!résultats!:!moyenne!nulle!
F! Enlever!les!faux!positifs!
F! Prendre!comme!résultat!le!nombre!de!fois!ou!une!classe!a!obtenue!un!maximum!
F! Prendre! comme! résultat! le! pourcentage! de! fois! ou! une! classe! a! obtenue! un! maximum! par!
rapport!à!l’ensemble!entier!

3.7.1! Moyenne*simple*
!

Ici,!nous!avons!simplement!fait!la!moyenne!arithmétique!des!Æ+ !vecteurs!ce!qui!nous!fait!obtenir!7!
différentes!valeurs.!Il!suffit!ensuite!de!prendre!la!plus!grande!valeur!des!7!pour!obtenir!la!prédiction!
de!classe!sur!notre!fichier.!

3.7.2! Utiliser*la*variable*centrée*réduite,*dite*moyenneDz*
!

En!prenant!l’hypothèse!que!le!CNN!ajoute!un!biais!et!un!écart!type!sur!les!scores!de!sorties!et!
comme! nous! avons! un! grand! nombre! de! données! on! peut! utiliser! une! autre! transformation! très!
commune!:!des!variables!centrées!réduites.!La!technique!est!la!même!que!pour!la!normalisation!des!
variables!vu!dans!le!paragraphe!3.4.4.!!

Nous!avons!aussi!essayé!en!retirant!simplement!la!moyenne.!En!effet,!les!prédictions!sont!censées!
être!basses!sur!les!classes!qui!ne!sont!pas!celle!du!fichier!et!hautes!sur!la!classe!associée!au!fichier.!!

3.7.3! Enlever*les*faux*positifs*
!

Au! vu! des! résultats,! le! CNN! ne! produisait! pas! de! résultats! toujours! cohérents.! En! effet! il! se!
déclenchait!beaucoup!plus!à!tort!pour!des!classes!ayant!des!bruits!aigus!caractéristiques!comme!les!
chips!ou!les!biscuits!et!ce!même!lorsque!ce!n’était!pas!la!classe!associée!au!fichier.!!

Nous! avons! alors! utilisé! une! autre! méthode! commune! qui! nécessite! d’utiliser! les! données!
d’entrainement! car! nous! avons! besoin! du! label! du! fichier! en! question.! Pour! chaque! classe,! cette!
méthode!consiste!à!prendre!la!valeur!moyenne!de!toutes!les!prédictions!sur!les!fichiers!dont!le!label!
est! différent.! Si! notre! CNN! se! déclenche! à! tort! et! trop! souvent! en! faveur! de! certaines! classes,! cela!
permettra! d’équilibrer.! Cela! nous! donne! 7! différentes! valeurs! moyennes! que! l’on! doit! soustraire! à!
toutes!les!prédictions!de!test.!!

Page'44'
!
Mémoire'de'Fin'd’Etudes' !
!

3.7.4! Nombre*de*maximums,*et*pourcentage*des*max*
!

Etant!donnée!que!pour!chaque!fichier!E,!nous!avons!Æ+ !prédictions,!il!est!possible!de!prendre!en!
compte!le!nombre!de!fois!ou!chaque!classe!a!été!élu!comme!maximum.!Définissons!valmax(!!comme!

une!fonction!égale!à!1!lorsque!la!plus!grande!valeur!de!!!est!sa!MEèON!coordonnée.!Pour!chaque!fichier!
E,!nous!calculons!le!score!de!chaque!classe!M!comme!:!

! +
Ø∈≥¥ valmax !Ø
Q+ = 
! (!28!)!
Æ+

! Rien! Pomme! Banane! Biscuit! Chips! Haribo! Nectarine!


Rien! 794! 47! 185! 48! 27! 136! 0!
Pomme! 9! 601! 276! 196! 131! 65! 391!
Banane! 79! 202! 606! 73! 21! 180! 176!
Biscuit! 17! 79! 134! 789! 387! 35! 242!
Chips! 48! 140! 65! 252! 628! 38! 11!
Haribo! 53! 273! 453! 80! 219! 226! 136!
Nectarine! 14! 219! 486! 149! 44! 119! 424!
!

Cette!matrice!recensant!les!maximums!sur!l’ensemble!des!fichiers!de!tests.!Chaque!colonne!rend!
compte!du!nombre!de!prédiction!que!nous!avons!fait!par!classe,!par!rapport!à!la!véritable!classe!des!
données.!Nous!nous!sommes!rendu!compte!que!certaines!classes!ont!toujours!trop!de!faux!positifs!car!
le! CNN! les! déclare! gagnantes! beaucoup! trop! souvent.! J’ai! imaginé! une! nouvelle! méthode! plus!
performante!et!mixant!les!précédentes!a!alors!été!utilisée.!!

Le! principe! de! cette! méthode! est! de! prendre! le! nombre! total! de! maximum! sur! l’ensemble! des!
fichiers!de!tests,!et!sur!chaque!fichier!E,!d’utiliser!comme!score!de!prédiction!pour!chaque!classe!le!
nombre!de!maximum!de!la!classe!dans!le!fichier!E!divisé!par!le!nombre!de!maximum!de!la!classe!sur!
l’ensemble! des! fichiers! de! tests.! Le! score! final! de! la! classe! M! sur! le! fichier! E! est! alors! la! MENON!
coordonnée!du!vecteur!Q+ !:!!!

! +
Ø∈≥¥ valmax !Ø

Q+ = +
! (!29!)!
+∈µ Ø∈≥¥ valmax !Ø


Cette!méthode!a!donné!les!meilleurs!résultats!comme!nous!le!verrons!par!la!suite.!

3.8! Implémentations*
!

J’ai! eu! l’occasion! de! coder! des! CNN! en! plusieurs! langages! :! Matlab! et! Python.! Avec! Python! j’ai!
utilisé!deux!techniques!différentes.!Premièrement!en!utilisant!des!fonctions!de!la!bibliothèque!Cython.!

Page'45'
!
Mémoire'de'Fin'd’Etudes' !
!

Deuxièmement! en! utilisant! la! boite! à! outils! Theano,! qui! est! une! API! optimisée! pour! le! calcul! Deep#
Learning!et!fonctionnant!sous!Python.!

3.8.1! Matlab*
!

Lors!des!premiers!mois!de!stage,!j’ai!pu!coder!un!CNN!complet!via!Matlab!qui!permettait!beaucoup!
de! liberté! au! niveau! des!hyperparamètres.! Cela! m’a! permis! de! sélectionner! ceux! qui! marchaient! le!
mieux!afin!de!faire!un!premier!tri.!!

C’est!avec!ce!langage!que!j’ai!créé!les!différentes!données!à!partir!des!spectrogrammes.!

Les!avantages!de!ce!CNN!codé!entièrement!durant!ce!stage,!est!tout!d’abord!de!maitriser!à!tout!
instant! les! données! que! l’on! manipule! mais! aussi! de! pouvoir! choisir! différents! hyperparamètres!
comme!:!

F! Une!convolution!avec!ou!sans!padding,!et!si!oui!quel!type!de!padding.!Lorsque!nos!données!
ne!sont!pas!extrêmement!grandes!comme!dans!notre!cas!(42*14*4),!il!faut!veiller!à!ne!pas!
trop!perdre!de!taille!lorsqu’on!passe!nos!différentes!couches,!déjà!que!la!couche!de!pooling!
diminue!grandement!les!données!
F! Des!filtres!de!convolution!de!la!taille!que!l’on!veut,!lorsqu’on!doit!traiter!des!données!qui!ont!
une!forme!particulière!et!que!l’on!s’intéresse!plus!à!une!dimension!qu’à!une!autre!il!est!des!
fois! plus! intéressant! de! faire! une! convolution! via! un! filtre! rectangulaire! plus! long! sur! une!
dimension!que!sur!l’autre.!!
F! Des! filtres! de! pooling! de! la! taille! que! l’on! veut,! pour! les! mêmes! raisons! que! les! filtres! de!
convolutions!!

3.8.2! PythonDCython*
!

Afin!d’améliorer!la!vitesse!ou!les!tests!se!sont!fait,!j’ai!choisi!d’utiliser!:!!

F! Un!langage!plus!rapide,!le!Python!
F! Des!fonctions!d’optimisations!qui!améliorerait!encore!la!rapidité,!la!surcouche!Cython!

Python! est! un! langage! interprété! comme! Matlab,! cela! signifie! qu’il! a! été! codé! dans! un! autre!
langage!et!qu’il!passe!par!une!opération!de!«!préFtraduction!»!avant!de!compiler!son!programme!pour!
l’exécution.! Le! Python! se! compile! en! langage! C! via! son! interprète! CPython.! L’avantage! de! cette!
méthode!est!qu’il!est!bien!plus!facile!de!coder!dans!ces!langages!car!l’on!n’a!pas!besoin!de!produire!
un!code!rigoureux!et!de!déclarer!les!variables!au!préalable!par!exemple.!Typiquement,!rajouter!une!
dimension!à!une!matrice!déjà!existante!sous!Matlab!se!fait!en!l’écrivant!simplement.!Python!est!un!
peu!plus!rigoureux!sous!ce!point!de!vue.!Mais!il!est!plus!rapide.!

Cython!est!une!surcouche!de!Python!qui!permet!d’utiliser!des!fonctions!écrites!directement!en!C,!
et! gagner! du! temps.! C’est! en! fait! un! compilateur! source! à! source! de! Python! à! C! qui! s’intègre! avec!
l’interprète!de!Python!(CPython)!à!bas!niveau.!!

Page'46'
!
Mémoire'de'Fin'd’Etudes' !
!

Un! code! de! réseau! de! CNN! partiellement! complet! et! qu’il! a! fallu! adapter! à! notre! problème! se!
trouvait!sur!le!site!du!cours!«!CNN!pour!la!reconnaissance!visuelle!»!de!l’université!de!Stanford![26].!
L’intérêt!de!ce!code!était!de!pouvoir!se!familiariser!avec!le!Python!car!Matlab!n’était!pas!une!option!
valable!à!long!terme.!Ce!programme!a!permis!de!tester!beaucoup!plus!de!configurations!grâce!aux!
possibilités!offertes!par!Python.!!

Le! programme! Python! est! beaucoup! plus! rapide! grâce! à! l’optimisation! des! convolutions! en! 2!
dimensions!par!une!fonction!Cython.!En!effet,!si!l’on!a!dans!notre!réseau!des!filtres!de!convolution!
carrés,!alors!l’utilisation!d’une!fonction!im2col!de!Cython!suivi!d’une!simple!multiplication!élément!par!
élément!améliore!énormément!la!vitesse!d’exécution!du!programme.!Sous!Matlab,!il!n’y!a!pas!moyen!
de!vectoriser!si!on!utilise!la!fonction!conv2!car!elle!nécessite!absolument!une!image!de!2!dimensions!
en!entrée.!!

3.8.3! Theano*
!

L’implémentation!d’un!CNN!de!type!LeNet!appliqué!à!la!base!MNIST!est!fourni!par!le!LISA!Lab8!sur!
le!net![27].!J’ai!donc!pu!adapter!ce!code!afin!de!l’utiliser!sur!mes!données!assez!facilement.!Avec!ceci,!
nous!avons!pu!faire!des!tests!complémentaires!et!utiliser!une!fonction!de!coût!type!SVM.!!

Un! des! intérêts! est! que! le! code! Theano! s’interface! très! bien! avec! numpy! et! il! était! facile! de!
réutiliser!le!traitement!des!données!déjà!implémenté!avant!en!Python.!Theano!permit!d’aller!bien!plus!
vite!en!divisant!le!temps!de!calcul!par!!

Un!problème!s’est!posé!assez!rapidement!car!j’utilisais!des!boucles!pour!faire!les!tests!sur!tous!les!
dossiers!de!la!validation!croisée.!Theano!n’efface!pas!les!variables!partagées!quand!il!sort!de!la!fonction!
qu’il!utilise!alors!j’arrivais!à!une!saturation!des!64!Go!de!mémoire!vive.!Il!faut!penser!à!réaffecter!les!
valeurs!des!variables!à!0!après!chaque!boucle.!

3.9! Résultats*
!

3.9.1! Métrique*
!

La!principale!métrique!utilisée!afin!de!quantifier!nos!résultats!est!ce!qu’on!appelle!un!«!Rappel!».!
Le! rappel! est! le! rapport! des! «! vrais! »! positifs! (corrects)! sur! la! somme! des! vrais! positifs! et! des! faux!
négatifs.!Ce!dénominateur!est!égal!au!nombre!de!vrais!prédiction!sur!le!nombre!total!qu’on!avait!à!
trouver.!

Nous! donnerons! également! des! matrices! de! confusion! qui! permettent! de! voir! quelles! sont! les!
confusions!faites!entre!les!différentes!classes!à!prédire.!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
8
!Laboratoire!d’Informatique!des!Systèmes!Adaptatifs!de!l’université!de!Montréal!!

Page'47'
!
Mémoire'de'Fin'd’Etudes' !
!

3.9.2! Matrices*de*confusion*
!

Après!une!validation!croisée!LOSO!(voir!3.3)!sur!l’ensemble!des!données!disponibles,!nous!avons!
obtenus!pour!notre!réseau!le!plus!performants!un!taux!de!précision!de!62.7%.!Nous!présenterons!les!
différentes!prédictions!des!fichiers!dans!ce!qu’on!appelle!une!matrice!de!confusion.!Une!matrice!de!
confusion! est! un! tableau! ou! les! colonnes! contiennent! les! prédictions! de! notre! réseau! et! les! lignes!
contiennent!les!vrais!labels.!Une!matrice!de!confusion!d’un!algorithme!qui!classifie!parfaitement!est!
donc!diagonale.!

! Pomme! Banane! Biscuit! Chips! Haribo! Nectarine! Rien! Rappel!


Pomme! 58! 15! 15! 11! 9! 28! 5! 41!%!
Banane! 22! 56! 9! 3! 23! 19! 6! 40!%!
Biscuit! 6! 7! 100! 9! 3! 5! 2! 75!%!
Chips! 4! 5! 7! 119! 2! 2! 1! 85!%!
Haribo! 6! 16! 5! 9! 58! 11! 4! 57!%!
Nectarine! 22! 22! 13! 2! 9! 61! 2! 46!%!
Rien! 0! 2! 2! 4! 5! 0! 127! 90!%!
Tableau!1!

Les!résultats!sont!inégaux!en!fonction!du!locuteur!mis!à!l’écart!dans!le!cadre!de!la!validation!croisée!
et!utilisé!pour!les!tests.!Ainsi!les!précisions!peuvent!varier!de!30!%!en!fonction!du!locuteur.!!

Locuteur!ayant!donné!les!meilleurs!résultats!:!!

! Pomme! Banane! Biscuit! Chips! Haribo! Nectarine! Rien! Total!


Pomme! 4! 2!! 0! 0! 0! 1! 0! 57!%!
Banane! 0! 2! 0! 0! 3! 1! 1! 28!%!
Biscuit! 0! 0! 7! 0! 0! 0! 0! 100!%!
Chips! 0! 1! 0! 6! 0! 0! 0! 85!%!
Haribo! 0! 1! 0! 0! 6! 0! 0! 85!%!
Nectarine! 0! 2! 0! 0! 0! 5! 0! 71!%!
Rien! 0! 0! 0! 0! 0! 0! 7! 100!%!
!

Tableau!2!F!Précision!:!75.5%!

Locuteur!ayant!donné!les!moins!bons!résultats!:!

Page'48'
!
Mémoire'de'Fin'd’Etudes' !
!

! Pomme! Banane! Biscuit! Chips! Haribo! Nectarine! Rien! Total!


Pomme! 3! 0! 1! 1! 2! 0! 0! 42!%!
Banane! 0! 1! 0! 1! 2! 1! 2! 14!%!
Biscuit! 0! 2! 4! 0! 0! 1! 0! 57!%!
Chips! 1! 1! 0! 5! 0! 0! 0! 71!%!
Haribo! 0! 0! 0! 0! 0! 0! 0! X!%!
Nectarine! 2! 3! 0! 0! 0! 2! 0! 28!%!
Rien! 0! 0! 1! 1! 0! 0! 5! 71!%!
!

Tableau!3!FPrécision!:!47.6%!

3.9.3! Interprétation*
!

Malgré!le!fait!que!nous!ayons!utilisé!la!méthode!du!pourcentage!des!maximums!pour!avoir!moins!
de! détections! de! chips! et! de! biscuit,! on! a! toujours! des! problèmes! à! distinguer! entre! eux! les! sons!
provenant!des!fruits!et!des!bonbons.!Ce!sont!tous!des!sons!plus!ou!moins!pâteux!et!le!problème!est!
que!cela!peut!changer!énormément!selon!la!personne!qui!parle.!En!effet,!on!se!rend!compte!lorsqu’on!
a!les!fichiers!audio!et!les!résultats!du!NN!en!temps!réel!que!les!résultats!changent!en!fonction!des!
bruits!de!bouche.!Il!est!donc!rassurant!de!voir!qu’un!locuteur!qui!mange!une!banane!mais!ne!fait!pas!
de! bruits! de! bouche! se! voit! attribué! pendant! ce! temps! la! du! label! «! Pas! de! nourriture! ».! Une!
présentation!audiovisuelle!x!de!la!présentation!des!résultats!de!cette!expérience!a!été!faite!lors!de!ce!
stage!et!est!disponible!sur!le!net![28]!afin!d’avoir!une!meilleure!idée!des!données!et!des!résultats.!

3.10!Autres*expériences**
!

Durant!la!recherche!des!meilleurs!hyperparamètres!nous!avons!eu!l’occasion!de!tester!différentes!
configurations.!Nous!sommes!partis!d’une!configuration!de!base!qu’on!appellera!«!configuration!1!»!
détaillée!ciFdessous!:!!

F! Une!première!couche!convolutionnel!avec!32!filtres!de!taille!5*5,!et!une!fonction!d’activation!
de!type!ReLU!
F! Une!couche!de!pooling!de!type!max!
F! 1!couche!de!type!MLP!à!7!neurones!avec!fonction!d’activation!de!type!linéaire!
F! Une!couche!finale!de!type!softmax!

Je!ne!présenterai!que!les!matrices!de!confusion!de!quelques!modèles.!

3.10.1! Normalisation*générale*ou*par*locuteur*
!

Une! des! hypothèses! de! départ! était! que! peutFêtre! la! normalisation! des! données! d’un! locuteur!
seulement!par!rapport!aux!siennes!serait!mieux!que!par!rapport!aux!données!de!tous.!

F! Configuration!1!:!1!couche!convolutionnel,!1!couche!MLP!et!un!softmax!

Page'49'
!
Mémoire'de'Fin'd’Etudes' !
!

Normalisation!des!données!par!rapport!à!l’ensemble!des!locuteurs!+!Séparation!H/F!:!

! Pomme! Banane! Biscuit! Chips! Haribo! Nectarine! Rien!


Pomme! 64! 9! 11! 8! 2! 39! 6!
Banane! 31! 35! 6! 6! 10! 38! 12!
Biscuit! 31! 1! 67! 11! 3! 16! 3!
Chips! 8! 4! 23! 90! 2! 3! 10!
Haribo! 16! 20! 5! 18! 25! 25! 10!
Nectarine! 43! 15! 9! 2! 10! 48! 15!
Rien! 3! 3! 8! 3! 4! 3! 119!
!

Tableau!4!F!Précision!:!47.4!%!

Normalisation!des!données!par!rapport!seules!données!du!locuteur!+!Séparation!H/F!:!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 70!! 14!! 14!! 9!! 2!! 24!! 6!!
Banane!! 26!! 45!! 9!! 3!! 17!! 30!! 8!!
Biscuit!! 14!! 1!! 91!! 9!! 5!! 6!! 6!!
Chips!! 5!! 0!! 14!! 104!! 5!! 4!! 8!!
Haribo!! 16!! 21!! 9!! 18!! 31!! 17!! 7!!
Nectarine!! 43!! 18!! 10!! 3!! 9!! 44!! 4!!
Rien!! 6!! 4!! 11!! 3!! 3!! 1!! 112!!
!

Tableau!5!F!Précision!:!52.9!%!

Ce!test!a!permis!d’écarter!la!normalisation!des!données!par!rapport!au!groupe!entier!et!de!ne!garder!
que!la!normalisation!par!rapport!aux!données!de!chaque!locuteur.!

3.10.2! Séparation*par*genre*
!

La!voix!des!hommes!étant!en!général!plus!grave!que!celle!des!femmes,!nous!avons!testé!si!un!CNN!
est!plus!performant!si!on!ne!l’entraine!que!sur!les!locuteurs!du!même!sexe!que!celui!dont!les!données!
servent!de!test.!!

Normalisation!des!données!par!rapport!seules!données!du!locuteur!sans!Séparation!H/F!:!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 70!! 14!! 13!! 8!! 1!! 25!! 8!!
Banane!! 22!! 52!! 8!! 5!! 17!! 23!! 11!!
Biscuit!! 17!! 1!! 91!! 10!! 4!! 7!! 2!!
Chips!! 10!! 2!! 15!! 104!! 3!! 2!! 4!!
Haribo!! 20!! 31!! 9!! 12!! 33!! 9!! 5!!
Nectarine!! 39!! 25!! 14!! 5!! 2!! 43!! 3!!
Rien!! 5!! 5!! 5!! 2!! 3!! 1!! 112!!
Tableau!6!F!Précision!:!54.5!%!

Page'50'
!
Mémoire'de'Fin'd’Etudes' !
!

En!comparant!les!précisions!des!tableaux!5!et!6,!on!a!pu!éliminer!l’hypothèse!de!la!séparation!par!
genre.!

3.10.3! Utilisation*différente*des*prédictions*
!

Comme!énoncé!dans!la!section!3.6,!nous!avons!utilisé!les!multiples!prédictions!d’un!seul!fichier!de!
plusieurs!manières.!Voici!les!matrices!de!confusion!de!deux!types!de!prédictions!:!!

F! Configuration!4!:!2!couches!convolutionnel!et!2!couche!MLP!et!un!softmax!

Moyenne!simple!utilisée!pour!le!postFtraitement!des!données!:!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 75!! 18!! 13!! 7!! 3!! 17!! 6!!
Banane!! 23!! 55!! 4!! 4!! 17!! 28!! 7!!
Biscuit!! 9!! 5!! 95!! 8!! 6!! 7!! 2!!
Chips!! 7!! 4!! 9!! 114!! 3!! 1!! 2!!
Haribo!! 15!! 27!! 7!! 4!! 49!! 9!! 8!!
Nectarine!! 45!! 24!! 7!! 2!! 6!! 45!! 2!!
Rien!! 1!! 4!! 0!! 1!! 2!! 0!! 127!!
!

Tableau!7!FPrécision!:!60.2!%!

Pourcentage!des!maximums!utilisé!pour!le!postFtraitement!des!données!:!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 58!! 15!! 15!! 11!! 9!! 26!! 5!!
Banane!! 22!! 56!! 9!! 3!! 23!! 19!! 6!!
Biscuit!! 6!! 7!! 100!! 9!! 3!! 5!! 2!!
Chips!! 4!! 5!! 7!! 119!! 2!! 2!! 1!!
Haribo!! 6!! 16!! 5!! 9!! 68!! 11!! 4!!
Nectarine!! 22!! 22!! 13!! 2!! 9!! 61!! 2!!
Rien!! 0!! 2!! 2!! 4!! 5!! 0!! 127!!
!

Tableau!8!F!Précision!:!62.7!%!

Le! postFtraitement! des! données! qui! consistait! à! utiliser! le! pourcentage! des! maximums! fournit! une!
meilleure!précision!finale.!

3.10.4! Séparer*les*données*par*rapport*aux*sons*graves*et*aigus*
!

Nous!avons!essayé!d’améliorer!les!résultats!en!coupant!les!données!en!deux,!ce!qui!permettrait!
aux!filtres!de!convolutions!de!repérer!des!formes!ou!des!activations!séparément!sur!les!fréquences!
graves!et!les!aigues.!Nous!avons!aussi!testé!de!ne!s’entrainer!que!sur!les!fréquences!basses!ou!que!sur!
les!aigues.!

Page'51'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Configuration!7!:!Configuration!4,!mais!en!coupant!les!données!en!deux,!afin!que!les!sons!aigus!
soient!séparés!des!graves.!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 54!! 21!! 20!! 6!! 10!! 26!! 2!!
Banane!! 16!! 55!! 8!! 6!! 21!! 23!! 9!!
Biscuit!! 8!! 0!! 100!! 6!! 7!! 9!! 2!!
Chips!! 2!! 2!! 8!! 119!! 6!! 1!! 2!!
Haribo!! 8!! 21!! 5!! 6!! 60!! 10!! 9!!
Nectarine!! 26!! 25!! 10!! 5!! 10!! 49!! 6!!
Rien!! 3!! 1!! 4!! 2!! 0!! 0!! 132!!
!

Tableau!9!F!Précision!:!60.4!%!

F! Configuration!8!:!Configuration!4!mais!en!utilisant!que!la!partie!basse!des!données!d’entrée!
(pour!n’avoir!que!les!fréquences!basses!de!la!voix)!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 44!! 15!! 19!! 16!! 19!! 21!! 5!!
Banane!! 10!! 52!! 10!! 7!! 27!! 20!! 16!!
Biscuit!! 6!! 5!! 95!! 14!! 5!! 4!! 4!!
Chips!! 17!! 10!! 20!! 78!! 10!! 3!! 2!!
Haribo!! 10!! 29!! 7!! 6!! 40!! 20!! 7!!
Nectarine!! 19!! 22!! 9!! 14!! 17!! 42!! 8!!
Rien!! 3!! 4!! 7!! 0!! 5!! 2!! 116!!
!

Tableau!10!F!Précision!:!54.8%!

F! Configuration!9!:!Configuration!4!mais!en!utilisant!que!la!partie!haute!des!données!d’entrée!
(pour!n’avoir!que!les!fréquences!aigues!de!la!voix)!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 45!! 14!! 21!! 9!! 13!! 36!! 1!!
Banane!! 22!! 41!! 10!! 11!! 26!! 18!! 10!!
Biscuit!! 8!! 1!! 88!! 17!! 9!! 8!! 1!!
Chips!! 6!! 4!! 9!! 111!! 3!! 2!! 5!!
Haribo!! 11!! 20!! 5!! 16!! 49!! 9!! 9!!
Nectarine!! 23!! 21!! 15!! 2!! 8!! 57!! 5!!
Rien!! 1!! 4!! 1!! 4!! 6!! 2!! 128!!
!

Tableau!11!F!Précision!:!61!%!

Page'52'
!
Mémoire'de'Fin'd’Etudes' !
!

En!analysant!les!résultats!des!deux!derniers!tableaux!on!peut!se!rendre!compte!de!plusieurs!choses!:!!

F! Le!CNN!n’arrive!pas!à!spécialiser!ses!filtres!sur!des!gammes!de!fréquences!différentes!(tab.!9).!
F! Les!résultats!obtenus!avec!notre!meilleure!CNN!est!un!mix!des!meilleurs!résultats!des!tableaux!
10!et!11.!Cela!est!rassurant.!
F! Les!fréquences!aigues!fonctionnent!mieux!sur!les!chips,!les!bonbons!et!les!nectarines,!alors!
que!les!fréquences!basses!fonctionnent!mieux!sur!les!bananes!et!les!biscuits.!Cela!s’entend!
aussi!à!l’oreille!lorsqu’on!écoute!les!fichiers!du!corpus.!
F! Les!fréquences!aigues!ont!l’air!de!contenir!plus!d’informations!que!les!basses.!

3.10.5! Autres*changements*hyperparamètres*
!

! Les!matrices!de!confusions!de!plusieurs!autres!expériences!qui!ont!été!faites!se!trouvent!en!
annexe!A.8!

3.11!Conclusion*
!

L’objectif!de!cette!partie!était!de!mettre!en!place!et!tester!une!approche!nouvelle!sur!un!signal!
parole!afin!d’en!extraire!des!caractéristiques.!

Dans! un! premier! temps,! on! a! pu! voir! que! les! réseaux! de! neurones! convolutionnels! pouvaient!
apprendre! certaines! caractéristiques! de! ces! signaux! car! la! précision! obtenue! par! le! réseau! est! au!
%
dessus!de!celle!que!l’on!a!en!début!d’apprentissage!qui!est!de! .!Le!réseau!repère!très!bien!certaines!

catégories!:!chips,!biscuit!et!pas!de!nourriture.!!

Dans!un!second!temps,!les!limitations!de!cette!méthode!se!sont!ressentis.!Le!design!du!réseau!
ainsi!que!la!manière!dont!on!traite!les!prédictions!n’ont!pas!suffit!à!obtenir!une!précision!plus!haute!
que! 62.7%! sur! l’ensemble! des! données.! Nous! pouvons! penser! que! ceci! est! dû! à! plusieurs! raisons!
apparentes.!Les!locuteurs!étant!trop!différents!les!uns!des!autres,!il!y!a!une!répercussion!dans!leurs!
signaux!de!parole!respectifs.!L’algorithme!se!nourrit!de!chaque!instant!du!signal!de!parole!pour!repérer!
la! nature! des! sons! buccaux! alors! que! ces! sons! ne! sont! pas! présents! à! tous! les! instants,! ce! qui! doit!
perturber!ces!prédictions!et!donc!les!prises!de!décision.!Le!même!raisonnement!est!valable!lors!de!
l’entrainement!des!modèles.!

Pour!finir,!il!serait!possible!d’améliorer!nos!résultats!en!utilisant!d’autres!techniques!utilisées!dans!
le! traitement! de! la! parole! afin! de! consolider! l’analyse! de! notre! CNN.! Par! exemple,! utiliser! en!
prétraitement!un!algorithme!donnant!une!valeur!d’intelligibilité!qui!permettrait!d’isoler!les!moments!
contenant!le!plus!d’information!utile!à!la!prise!de!décision.!On!pourrait!aussi!ne!prendre!que!les!frames!
qui!ont!des!scores!très!élevés!sur!le!corpus!d’apprentissage!et!réFentrainer!un!CNN!avec,!ou!bien!ne!
prendre!en!compte!que!les!prédictions!des!frames!ayant!des!scores!élevés!dans!le!corpus!de!test.!

Page'53'
!
Mémoire'de'Fin'd’Etudes' !
!

! !

Page'54'
!
Mémoire'de'Fin'd’Etudes' !
!

! Application*à*la*musique*
!

Dans! cette! partie,! nous! allons! détailler! comment! nous! avons! utilisé! plusieurs! types! de! NN!
particuliers!ayant!de!bons!résultats!sur!les!données!séquentielles,!pour!une!tache!de!régression!sur!de!
la!musique.!Nous!allons!commencer!par!présenter!ces!type!de!réseau!:!le!réseau!de!neurones!récurrent!
(RNN)!simple!et!Long!Short!Term!Memory!(LSTM).!Ensuite,!nous!présenterons!le!contexte!dans!lequel!
nous!les!avons!utilisés!sur!de!la!musique!:!le!challenge!MediaEval.!Puis!nous!en!viendront!aux!différents!
tests!effectués!pour!améliorer!nos!résultats.!

4.1! Réseau*de*neurones*récurrent*(RNN)*
!

Les! RNN! sont! un! autre! type! de! NN! qui! sont! efficaces! dans! le! cadre! du! traitement! de! données!
séquentielles!car!ils!prennent!en!compte!les!sorties!précédentes.!Ainsi!lorsqu’on!traite!une!donnée!
audio!comme!de!la!parole!ces!caractéristiques!peuvent!nous!être!utiles.!!!

4.1.1! RNN*simple*
!

En!entrée!de!notre!RNN,!on!a!une!séquence!∑!de!longueur!C!:!elle!contient!C!vecteurs!de!même!
longueur.!Le!RNN!simple!utilise!un!système!de!rétropropagation!sur!une!couche!cachée,!d’où!le!nom!
récurrent!car!contrairement!à!ce!qui!a!été!présenté!avant,!certains!neurones!ont!une!influence!sur!des!
neurones!de!couches!antérieurs!ou!sur!eux!même.!Dans!notre!cas,!la!couche!cachée!est!connectée!à!
la!couche!de!sortie!et!à!elleFmême.!Pour!calculer!les!nouvelles!valeurs!de!cette!couche!on!utilise!ses!
valeurs!précédentes!:!!

! ∀T ∈ 1; C , ∏(π) = #(5òú " π


+ 5úú ∏ πí%
+ ^ú )! (!30!)!

3
Où!∏ !est!l’initialisation!des!neurones!de!la!couche!cachée.!

Une!fois!qu’on!a!les!valeurs!des!neurones!de!notre!couche!cachée!à!l’instant!T,!il!est!possible!de!
calculer!la!sortie!de!notre!RNN!:!!

! ∀T ∈ 1; C , !(π) = 5úô ∏(π) + ^ô ! (!31!)!

Pour!une!séquence!de!longueur!C!on!utilise!les!notations!:!!

F! " π !comme!étant!le!vecteur!à!l’instant!T!de!la!séquence!∑!
F! ∏(π) !comme!étant!la!matrice!de!poids!de!la!couche!cachée!à!l’instant!T!
F! (!(π) !comme!étant!le!vecteur!de!sortie!de!notre!RNN!à!l’instant!T!

Page'55'
!
Mémoire'de'Fin'd’Etudes' !
!

De!manière!plus!simple,!on!peut!représenter!notre!réseau!par!un!schéma!où!chaque!bloc!représente!
une!couche!de!neurones!(figure!4.1)!:!!

!
Fig!4.1! Représentation!schématique!d’un!RNN!

!Ici,! les! paramètres! intrinsèques! à! notre! réseau! que! nous! allons! optimiser! sont! les! matrices! de!
3
poids!5òú ,!5úú !et!5úô ,!les!biais!^ú !et!^ô !ainsi!que!la!matrice!initiale!de!la!couche!cachée!∏ .!Pour!
cela!on!utilise!la!même!technique!de!rétropropagation!du!gradient!déjà!vu!dans!le!paragraphe!du!MLP!
et!que!l’on!applique!à!chaque!instant!T!de!la!séquence!C.!!

4.1.2! Long*Short*Term*Memory*(LSTM)*
!

Le!LSTM!est!une!autre!architecture!de!RNN,!proposé!pour!la!première!fois!dans![29].!Ce!RNN!est!
plus!complexe!que!son!prédécesseur!car!il!dispose!de!cellules!de!mémoire!qui!permettent!de!garder!
ou!non!les!informations!précédentes.!Ceci!lui!permet!d’être!plus!performant!sur!les!données!possédant!
un!contexte!étendu!séquentiellement!parlant,!et!où!il!y!a!besoin!de!faire!des!liens!entre!des!données!
éloignées!dans!une!même!séquence.!!

En! effet,! lorsqu’on! effectue! une! rétropropagation! du! gradient! dans! des! NN! possédant! de!
nombreuses! couches,! les! fonctions! d’activations! diminuent! l’erreur! à! chaque! couche.! On! peut!
observer! ce! qu’on! appelle! une! évanescence! du! gradient! (vanishing# gradient# problem)! et! c’est! un!
problème!essentiel!pour!les!RNN![30]!car!dans!ce!cas!la!disparition!n’est!pas!lié!au!nombre!de!couches!
mais!à!la!taille!de!la!séquence!des!données.!Nous!en!parlerons!après!une!présentation!du!réseau.!

Le!LSTM!répond!donc!au!problème!d’évanescence!du!gradient!grâce!à!ses!cellules!de!mémoires!
spéciales.! Les! cellules! de! mémoire! se! composent! d’une! unité! linéaire! centrale,! ainsi! que! d’unités!
multiplicatives!spécialisées!appelées!portes!:!

F! Une!unité!linéaire!centrale!appelée!Constant!Error!Carrousels!(CEC).!Le!CEC!est!lié!à!luiFmême!
de!manière!linéaire.!Cela!permet!de!pallier!au!problème!de!l’évanescence!du!gradient.!

Page'56'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Une! porte! d’oubli! (qui! est! un! ajout! ultérieur! au! LSTM! de! base! [31])! qui! est! utilisée! pour!
remettre!à!zéro!l’activation!du!CEC!quand!l’information!n’est!plus!utile!:!la!rétropropagation!
lui!apprendra!quand!le!faire.!Cette!porte!est!généralement!à!1!(élément!neutre),!ainsi!l’unité!
linéaire!centrale!est!généralement!liée!linéairement!à!elle!même.!
F! Une!porte!d’entrée!servant!à!prévenir!le!fait!que!la!cellule!ne!se!remplisse!d’information!inutile!
provenant! des! séquences! temporelles.! Une! porte! d’entrée! reçoit! des! informations! des!
données! et! des! autres! unités! du! LSTM,! et! apprends! à! ouvrir! et! fermer! l’accès! au! CEC! aux!
moments!appropriés.!Typiquement!pour!protéger!l’unité!centrale!de!valeurs!de!données!en!
entrée!aberrantes.!!
F! Une!porte!de!sortie,!qui!similairement!à!la!porte!d’entrée!apprends!quand!il!faut!envoyer!les!
informations!contenues!dans!le!CEC!vers!la!sortie!du!LSTM.!Cela!permet!de!protéger!le!LSTM!
de!sorties!aberrantes.!

Tout! cet! ensemble! forme! ce! qu’on! appelle! une! cellule! de! mémoire! (figure! 4.2).! Un! LSTM! peut!
contenir!plusieurs!cellules!de!mémoire.!!

!
Fig!4.2! Représentation!schématique!d’une!cellule!de!mémoire!d’un!LSTM,!!
source!:!A.!Graves,!SPEECH!RECOGNITION!WITH!DEEP!RECURRENT!NEURAL!NETWORKS!

Considérons!une!cellule!de!mémoire.!On!peut!compter!une!porte!d’entrée!∫,!une!porte!de!sortie!
ª,! une! porte! d’oubli! º,! le! CEC! Ω! et! finalement! la! couche! cachée! æ.! Chacun! de! ces! matrices! sont!
composés! de! C! vecteurs! qui! ont! tous! la! même! dimension.! Par! souci! de! simplicité,! on! notera! les!
matrices!de!poids!différemment!:!5!pour!la!matrices!affectant!∑,!ó!pour!la!matrice!affectant!æ,!et!ø!

Page'57'
!
Mémoire'de'Fin'd’Etudes' !
!

pour!la!matrice!affectant!Ω.!Les!matrices!de!poids!ó,!ø!et!5!sont!chacune!des!matrices!de!dimension!
3!(concaténation!des!matrices!de!dimension!2!ciFdessous).!Ces!différentes!matrices!sont!liées!par!les!
équations!:!!

! ∀T ∈ 1; C , ¿(π) = ®(5+ " π


+ ó+ ∏ πí%
+ ø+ ¡ πí%
+ ^+ )! (!32!)!

! ∀T ∈ 1; C , ¬(π) = ®(5√ " π


+ ó√ ∏ πí%
+ ø√ ¡ πí%
+ ^√ )! (!33!)!

π π πí%
! ∀T ∈ 1; C , ¡ =¬ ¡ + ¿(π) tanh((5∆ " π
+ ó∆ ∏ πí%
+ ^∆ )! (!34!)!

! ∀T ∈ 1; C , «(π) = ®(5¨ " π


+ ó¨ ∏ πí%
+ ø¨ ¡ π
+ ^¨ )! (!35!)!

! π π π (!36!)!
∀T ∈ 1; C , ∏ =∏ tanh((¡ )!

La! rétropropagation! se! fait! sur! les! différentes! matrices! 5?? ,! les! biais! ^? ,! et! les! matrices!
d’initialisations!∏3 !et!¡3 .!On!utilise!généralement!la!fonction!sigmoïde!®!comme!fonction!d’activation!
des!portes!d’entrée,!de!sortie!et!d’oublie!alors!que!la!fonction!tangente!hyperbolique!sera!utilisée!pour!
la!couche!cachée!et!le!CEC.!!

On!notera!que!comme!dit!précédemment,!la!porte!d’oubli!est!généralement!à!1!(élément!neutre),!
π πí%
l’équation!(34)!!change!pour!donner!une!relation!linéaire!entre!¡ !et!¡ ,!d’où!l’appellation!d’unité!
linéaire!pour!le!CEC.!!

4.2! Introduction*:*Challenge*MediaEval*’15*
!

MediaEval! est! une! initiative! d’analyses! comparatives! dédié! à! l’évaluation! de! nouveaux!
algorithmes! d’accès! et! d’extraction! de! données! multimédias.! Il! met! l’accent! sur! le! «! multi! »! de!
multimédia!et!se!concentre!sur!les!facteurs!humains!et!sociaux!des!taches!multimédia.!MediaEval!est!
pour! les! participants! qui! sont! intéressés! autant! par! les! approches! multiFmodales! sur! les! données!
multimédias!tels!que!la!reconnaissance!de!la!parole,!l’analyse!de!contenu!multimédia,!d’audio!ou!de!
musique,! les! informations! émanant! des! utilisateurs! (tags,! tweets),! la! réponse! émotionnelle! d’un!
spectateur,! les! informations! provenant! des! réseaux! sociaux,! les! coordonnées! temporelles! et! géoF
localisés.!!

! Nous!nous!intéressons!ici!à!une!tache!particulière!qui!s’intitule!«!Emotion!dans!la!musique!»!
et!que!je!vais!présenter!ciFdessous.!!

4.2.1! Présentation*:*la*tache*«*Emotion*dans*la*musique*»*
!

«!Emotion!dans!la!Musique!»!est!une!tache!sur!l’estimation!en!temps!continu!de!l’émotion!dans!la!
musique.! Le! message! émotionnel! contenu! dans! la! musique! peut! changer! à! l’intérieur! du! même!
morceau! en! fonction! du! temps,! il! est! donc! fondamental! d’estimer! le! caractère! émotionnel! de! la!

Page'58'
!
Mémoire'de'Fin'd’Etudes' !
!

musique! d’une! manière! continue! temporellement.! Pour! ceci,! le! corpus! utilise! un! modèle! dont! les!
résultats!ont!étés!reconnus!depuis!de!nombreuses!années!:!le!modèle!ValenceFArrousal9!(VFA).!

Les!théories!dimensionnelles!de!l’émotion!représentent!les!émotions!dans!un!espace!continue.!
Depuis! cette! perspective,! les! émotions! discrètes! sont! des! concepts! folkloricoFpsychologiques10! qui!
peuvent! être! identifiés! par! des! points! dans! cette! espace! [32].! Les! représentations! psychologiques!
utilisés! par! les! psychologistes! représentent! souvent! les! émotions! dans! un! espace! de! nFdimensions!
(généralement!2!ou!3).!La!représentation!la!plus!connue!de!ce!type!d’espace!est!la!représentation!VFA!
[33],!c’est!pour!cela!qu’elle!a!été!utilisée!pour!ce!travail.!!

La! représentation! VFA! est! une! représentation! plan! (voir! Figure! 4.3)! dont! les! deux! axes!
indépendants!sont!la!valence!et!l’excitation.!La!valence!indique!une!sensation!positive!ou!négative!liée!
à! l’émotion,! alors! que! l’excitation! représente! l’intensité! émotionnelle.! La! validité! de! cette!
représentation!en!bidimensionnelle!des!émotions!a!été!vérifiée!lors!de!nombreuses!études!comme!
dans![34,35],!et!pour!un!large!panel!de!musique.!!

!
Fig!4.3! La!représentation!ValenceFExcitation,!!
source!:!http://www.mdpi.com/2076F328X/3/3/501/htm!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9
!Activation!Physiologique,!ce!qui!signifie!l’Excitation!
10
!Concepts!qui!sont!propres!à!la!personne!et!sa!culture!

Page'59'
!
Mémoire'de'Fin'd’Etudes' !
!

4.2.2! Corpus*
!

Le!corpus!d’apprentissage!est!composé!de!431!chansons!provenant!de!la!Free!Music!Archive11,!et!
dont!les!styles!varient!de!Blues!à!Electronique!en!passant!par!le!Rock,!le!Classique,!la!Country,!le!Jazz!
et!autres.!!

Pour! chaque! chanson! nous! avons! des! extraits! audio! de! 45! secondes.! Les! annotations! des! 15!
premières!secondes!ne!sont!pas!données!car!on!suppose!qu’il!y!a!un!temps!d’adaptation!au!début!de!
l’écoute.!Ce!qui!fait!que!l’on!a!des!informations!sur!la!valence!et!l’arousal!pendant!30!secondes.!Les!
informations!sont!censées!être!continues,!en!réalité,!elles!sont!actualisées!toutes!les!0,5!secondes,!ce!
qui! est! bien! suffisant! pour! représenter! une! réponse! émotionnelle! à! la! musique! d’après! [36].! Cela!
donne!60!annotations!séquentielles!par!chanson!pour!la!valence!et!pour!l’arousal.!!

4.2.3! Différentes*sousDtaches*
!

La! tache! «! Emotion! dans! la! musique! »! sera! composée! de! trois! sousFtaches.! Il! faudra! faire! des!
estimations! des! scores! de! valence! et! d’arousal! continus! dans! le! temps! pour! chaque! morceau! de!
l’ensemble!des!données!de!test!sous!plusieurs!conditions!:!!

1.! Utiliser! des! données! d’entrée! pour! l’algorithme! fixé! par! les! organisateurs.! Le! choix! de! la!
régression!est!libre.!
2.! Utiliser!un!modèle!de!régression!fixé!par!les!organisateurs!(une!régression!multilinéaire)!mais!
cette!foisFci!en!sélectionnant!les!données!d’entrée!que!l’on!souhaite.!
3.! Utiliser!les!données!d’entrée!que!l’on!souhaite!et!le!système!de!régression!que!l’on!souhaite.!

Pour!chaque!sousFtache!l’ErreurFtype!(Root#Mean#Square#Error,!noté!RMSE)!servira!de!principal!
indicateur,!et!le!coefficient!de!corrélation!d’indicateur!secondaire.!!

4.3! Choix*d’un*modèle*pour*la*tache*1*
!

Il!y!a!différentes!manières!dont!il!aurait!été!possible!d’aborder!le!problème,!même!une!simple!
régression!linéaire!comme!dans![37],!mais!nous!avons!choisi!d’utiliser!une!approche!Deep#Learning!
afin!de!continuer!dans!notre!démarche.!

4.3.1! Description*des*données*
!

Les!données!que!nous!avions!à!dispositions!étaient!figées!pour!chaque!chanson!:!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11
!http://www.freemusicarchive.org/!

Page'60'
!
Mémoire'de'Fin'd’Etudes' !
!

F! En!label,!30!secondes!d’annotations!dans!l’espace!VFA!et!ce!toutes!les!demiFsecondes,!ce!qui!
donne!un!total!de!60!labels!dans!un!ordre!précis!et!ce!par!chanson!
F! En! données! exploitable! :! 260! caractéristiques! extraites! via! le! logiciel! OpenSmile! [38],! et! ce!
toutes!les!demiFsecondes!pour!chaque!chanson!

Dans! ces! caractéristiques! on! compte! différents! paramètres! liés! au! spectrogramme! et! au! domaine!
temporel.!!

! La!taille!de!nos!données!d’entrée!est!donc!260!et!la!taille!des!sorties!est!2,!et!l’on!possède!
25860!(431*60)!échantillons!différents.!Pour!tester!les!algorithmes!sur!nos!données,!il!était!encore!
nécessaire!de!faire!une!validation!croisée.!Cette!fois,!il!ne!suffisait!plus!de!prendre!uniquement!les!
données!dans!l’ordre!et!de!les!séparer!en!différents!paquets!car!:!!

1.! Il!faut!bien!faire!attention!à!garder!ensemble!les!différentes!données!provenant!du!même!
morceau,!car!comme!pour!les!locuteurs!dans!le!set!de!données!précédent,!il!y!aurait!non!
indépendance!entre!nos!données!d’entrainement!et!nos!données!de!test.!!
2.! Les!morceaux!étaient!regroupés!par!styles!:!au!début!ne!se!trouve!que!la!country,!ensuite!
du! jazz,! etc…! Nous! avons! donc! mélangé! les! morceaux! entre! eux! avant! de! créer! les!
différents!dossiers!en!gardant!chaque!morceau!complet.!
3.! Nous!avons!sauvé!les!jeux!de!données!dans!des!fichiers!pkl!afin!d’avoir!fait!un!tri!aléatoire!
qui! ne! bougera! pas.! Comme! ça,! je! peux! tester! différentes! configurations! sans! que! le!
contenu!du!jeu!de!données!que!je!teste!ai!un!impact!sur!mes!résultats!(au!lieu!de!faire!un!
tri!aléatoire!au!début!de!chacun!de!mes!algorithmes)!

On! obtient! finalement! 10! dossiers,! avec! des! données! provenant! de! musiques! de! tous! les! styles,!
indépendantes!et!qui!ont!les!60!ensembles!de!caractéristiques!complètes!pour!chaque!chanson!dans!
l’ordre.! Le! dernier! détail! est! important! puisqu’on! va! utiliser! des! RNN! qui! sont! des! méthodes! de!
traitement!séquentielle!de!l’information.!

4.3.2! Régression*linéaire*
!

4.3.2.1! La-régression-
!

Pour!débuter,!et!savoir!quelle!valeur!moyenne!d’erreur!il!faut!s’attendre!à!avoir!sur!ce!corpus,!on!
a! utilisé! une! méthode! simple! comme! la! régression.! Cela! permet! de! nous! donner! une! baseline! (un!
étalon!minimum)!à!dépasser.!J’ai!donc!commencé!par!traiter!les!données!avec!une!régression!linéaire!
sous!Python!et!pour!cela!j’ai!utilisé!la!toolbox!scikitFlearn!qui!est!une!boite!à!outils!basique!de!fonctions!
de!machine#learning.!On!trouve!la!plupart!des!algorithmes!de!machine#learning!sous!une!forme!très!
simple!d’utilisation,!ce!qui!permet!de!faire!des!tests!très!simples!à!moindre!coût!pour!les!non!initiés.!!
ScikitFlearn!offre!des!possibilités!de!:!

F! Classification!:!SVM,!Random!Forest,!…!!
F! Régression!:!SVR!(régression!de!vecteurs!à!support),!Régression!d’arête,!…!
F! Regroupement!(clustering)!:!KFmoyennes,!…!

Page'61'
!
Mémoire'de'Fin'd’Etudes' !
!

F! Réduction!de!dimension!:!PCA,!…!

4.3.2.2! Les-résultats-
!

La! régression! linéaire! a! permis! de! disposer! de! résultats! de! base! comparer! nos! données.! Cette!
méthode! étant! simple,! on! est! censé! pouvoir! trouver! des! algorithmes! qui! la! surpasse! même! si! des!
papiers!comme![37].!!Les!résultats!qu’on!a!obtenus!sont!:!

F! Pour!la!valence!une!RMSE!de!0,275!et!un!coefficient!de!corrélation!der!0,637!
F! Pour!l’arousal!une!RMSE!de!0,254!et!un!coefficient!de!corrélation!de!0,646!

On!peut!noter!des!changements!par!rapport!aux!résultats!d’autres!documents!où!les!valeurs!de!RMSE!
sont!plus!faibles!pour!la!valence!que!pour!l’arousal!!

4.3.3! RNN*
!

4.3.3.1! Le-réseau-
!

Le!RNN!utilisé!pour!cette!tache!de!régression!est!celui!classique!présenté!dans!le!paragraphe!2!et!
il!a!été!codé!en!Theano.!

!Les!hyperparamètres!élus!après!différents!tests!sont!:!!

F! Régularisation!L1!avec!un!coefficient!de!0!.01!
F! Régularisation!L2!avec!un!coefficient!de!0!.01!
F! Un!nombre!d’époque!de!50!(apres!50!époque!le!RNN!commence!à!surapprendre!sur!l’arousal!
mais!pas!sur!la!valence)!
F! Un!niveau!de!dropout!de!0.05!!
F! Un!nombre!de!neurones!dans!la!couche!cachée!de!10!

4.3.3.2! Les-résultats-
!

Les!résultats!obtenus!sur!la!moyenne!des!10!dossiers!avec!notre!RNN!sont!pour!:!!

F! La!Valence!:!une!erreurFtype!de!0.261!avec!un!coefficient!de!corrélation!de!0.675!
F! L’Arousal#:!une!erreurFtype!de!0.254!avec!un!coefficient!de!corrélation!de!0.670!

RéFentrainer! un! RNN! ayant! en! entrée! les! prédictions! du! premier,! lisse! les! prédictions!
temporellement.!En!effet,!il!a!déjà!été!prouvé!de!manière!similaire!par!Boulanger!dans![16]!que!d’avoir!
en!retour!les!prédictions!acquises!forçaient!le!RNN!à!être!cohérent!avec!ses!prédictions!précédentes.!
On!a!alors!utilisé!cette!technique!en!plaçant!en!entrée!d’un!nouveau!RNN!les!données!de!bases!plus!la!
prédiction!du!premier!RNN!entrainé!préalablement.!

Les!résultats!en!ont!étés!améliorés!avec!pour!:!!

Page'62'
!
Mémoire'de'Fin'd’Etudes' !
!

F! La!Valence!:!une!erreurFtype!de!0.252!avec!un!coefficient!de!corrélation!de!0.698!
F! L’Arousal!:!une!erreurFtype!de!0.240!avec!un!coefficient!de!corrélation!de!0.687!

4.3.4! RNNDLSTM*
!

4.3.4.1! Le-réseau-
!

Le!Réseau!de!Neurone!Récurrent!Long!Short!Term!Memory!(RNNFLSTM)!a!été!démontré!capable!
de!donner!des!résultats!efficaces!pour!effectuer!une!régression!dans!le!plan!VFA!dans![17].!Nous!
avons!donc!décidé!de!le!tester!sur!le!corpus!proposé!cette!année!afin!d’avoir!encore!une!
amélioration!par!rapport!aux!résultats!obtenues!avec!un!simple!RNN.!!

Le!modèle!de!LSTM!que!nous!avons!utilisé!est!plus!simple!que!celui!décrit!dans!le!paragraphe!
2.6.2.!Ici,!l’état!de!la!cellule!n’affecte!pas!les!portes!du!LSTM.!Il!faut!enlever!la!matrice!ø!des!
équations!(32),!(33)!et!(35)!qui!deviennent!:!!

! ∀T ∈ 1; C , ¿(π) = ®(5+ " π


+ ó+ ∏ πí%
+ ^+ )! (!37!)!

! ∀T ∈ 1; C , ¬(π) = ®(5√ " π


+ ó√ ∏ πí%
+ ^√ )! (!38!)!

! ∀T ∈ 1; C , «(π) = ®(5¨ " π


+ ó¨ ∏ πí%
+ ^¨ )! (!39!)!

Ce! réseau! a! été! réalisé! sous! Theano! en! partant! du! code! donné! dans! le! tutorial![39]! d’un! LSTM!
construit!pour!l’analyse!d’émotion!d’un!texte.!A!l’origine,!l’algorithme!avait!pour!but!de!transcrire!un!
fichier! texte! en! nombre! via! un! dictionnaire! de! 104! mots! et! de! passer! chaque! texte! (de! longueur!
variable)!dans!le!LSTM.!Chaque!mot!d’une!séquence!était!donc!considéré!comme!un!nouvel!instant!
temporel.!En!sortie,!on!obtenait!une!seule!sortie!par!texte!en!entrée,!et!cette!sortie!correspondait!à!
une!émotion!positive!ou!négative.!!

Il!a!fallu!effectuer!un!bon!nombre!de!changement!dans!le!code!pour!se!l’approprier,!concernant!:!!

F! Les!données!d’entrée!du!RNN,!enlever!le!dictionnaire!initial!fait!pour!le!traitement!de!mots,!
pour!mettre!directement!nos!variables.!
F! Le!type!de!variable,!car!afin!de!pouvoir!passer!certaines!variables!dans!une!fonction!Theano!et!
qu’elles!soient!acceptées!dans!le!graphe!il!leur!faut!un!certain!type!:!certaines!sont!partagées!
alors!que!d’autres!ne!sont!que!des!tenseurs!Theano!de!différentes!dimensions.!Il!faut!qu’une!
variable!partagée!ait!une!valeur!donnée!mais!pas!un!tenseur.!C’est!très!long!à!créer!et!savoir!
pourquoi!ce!ne!marche!pas!quand!Theano!est!en!train!de!faire!le!graphe.!
F! Les!données!de!sortie!du!RNN,!afin!d’en!obtenir!une!par!instant!de!la!séquence!d’entrée!et!
non!par!séquence!car!l’objectif!était!de!faire!des!prévisions!en!temps!réel.!Avant!il!n’y!avait!
qu’une!sortie!par!séquence.!
F! La! fonction! de! coût! qui! ne! passait! plus! dans! la! fonction! de! prédiction,! car! les! variables!
d’entrées!avaient!changé!de!type.!

Page'63'
!
Mémoire'de'Fin'd’Etudes' !
!

Nous!avons!utilisé!ADADELTA![8]!comme!dans![39]!afin!d’effecteur!l’apprentissage!du!réseau.!

4.3.4.2! Les-résultats-
!

Nous!avons!fait!tourner!le!LSTM!sur!de!petites!quantités!de!données,!et!nous!pouvons!voir!qu’il!
apprenait! bien! car! l’erreur! diminuait! sur! cette! petite! partie! de! l’ensemble! d’apprentissage.! Ensuite!
lorsque! nous! l’avons! testé! sur! tout! le! corpus! le! coût! ne! parvenait! pas! à! diminuer! malgré! des!
changements!dans!les!hyperparamètres!et!oscillait!autour!de!sa!valeur!initiale!de!manière!erratique.!!

Finalement,!après!plusieurs!essais!le!LSTM!à!réussi!à!obtenir!des!résultats!un!peu!meilleurs!que!
ceux!du!RNN!sans!aucun!traitement!postérieur!avec!la!configuration!suivante!:!!

4.3.5! Denoising*Autoencoder*
!

Comme!la!tentative!avec!le!LSTM!n’a!pas!du!tout!fonctionné!et!que!faute!de!temps!pour!tester!
tous!les!hyperparamètres!qui!pourrait!être!les!plus!efficaces!je!n’ai!pas!pu!continuer!sur!cette!piste,!
j’ai!cherché!à!d’améliorer!le!RNN!simple!qui!marchait!déjà.!Pour!cela,!j’ai!choisi!une!technique!qui!a!
prouvé! son! efficacité! sur! un! RNN! appliqué! au! traitement! de! la! parole! dans! [40].! Cette! technique!
consiste!à!entrainer!avec!les!données!une!couche!de!denoising#autoencodeur!(dA)!et!de!la!placer!en!
amont!du!RNN.!

Après!avoir!construit!le!dA!sous!Theano,!j’ai!utilisé!une!transformation!linéaire!sur!les!données!
pour! qu’elles! soient! compris! entre! 0! et! 1,! puis! j’ai! effectué! plusieurs! tests! en! changeant! certaines!
valeurs!afin!d’obtenir!une!meilleure!convergence!:!!

F! Le!learning!rate!:!meilleure!valeur!8.10F3!!
F! Le!nombre!de!neurones!cachés!:!meilleure!valeur!10!
F! Le!taux!de!corruption!des!données!:!meilleure!valeur!0,15!

A!la!suite!d’un!entrainement!de!20!époques,!le!dA!donnait!une!erreur!de!débruitage!de!0.0069!sur!
le!set!d’entrainement!et!de!0.0077!sur!le!set!de!test.!J’ai!donc!mis!cette!autoencodeur!en!entrée!d’un!
RNN!qui!donnait!les!meilleurs!résultats!pour!voir!l’amélioration.!

Malheureusement!les!résultats!sont!sortis!encore!moins!bon!qu’à!l’origine!:!après!50!époques!le!
RNN!donnait!des!erreurs!de!0.307!sur!la!valence!et!de!0.314!sur!l’arousal!pour!un!cout!de!0.119!sur!le!
jeu!d’entrainement.!!

Ceci!est!surement!du!au!fait!que!pour!utiliser!le!dA!j’ai!transformé!les!données!linéairement!pour!
qu’elles!soient!comprise!entre!0!et!1.!Or,!les!valeurs!maximums!et!minimums!se!rapprochaient!de!100!
alors!que!la!plupart!des!autres!étaient!proches!de!1,!voir!beaucoup!plus!petites.!Toutes!mes!valeurs!
devaient!tourner!autour!de!0,5!et!mon!dA!ne!devait!pas!faire!de!liens!entre!différentes!variables!mais!
simplement! tout! sortir! à! 0,5.! Cette! technique! me! faisait! simplement! perdre! énormément!

Page'64'
!
Mémoire'de'Fin'd’Etudes' !
!

d’information,!ce!qui!était!constatable!puisque!la!couche!cachée!du!dA!ne!possédait!que!10!neurones!
par!rapport!aux!260!en!entrée!et!en!sortie.!

J’ai! donc! choisi! de! changer! la! normalisation! et! normalisant! par! paramètre! et! non! de! manière!
globale.!Ceci!amenant!de!nouveaux!tests!afin!de!trouver!les!hyperparamètres!adaptés.!

Les!meilleurs!résultats!obtenus!avec!des!hyperparamètres!adaptés!n’ont!pas!dépassés!l’efficacité!
du!RNN!sans!denoising#autoencoder.!On!a!eu!pour!:!!

F! Pour!la!valence!:!une!erreurFtype!de!0.270!et!un!coefficient!de!corrélation!de!0.648!
F! Pour!l’arousal!:!une!erreurFtype!de!0.255!et!un!coefficient!de!corrélation!de!0.649!

4.4! Résultats*
!

! Valence! Arousal!
Type!de!mesure! RMSE! Corrélation! RMSE! Corrélation!
Régression!linéaire! 0,275! 0,637! 0,254! 0,646!
RNN! 0,261! 0,675! 0,246! 0,670!
RNNF1!+!RNNF2!! 0,257! 0,698! 0,240! 0,687!
(avec!preds!du!1er!)!
RNNFLSTM! 0.258! 0.675! 0.244! 0.657!
RNN+Denoising! 0,270! 0,648! 0,255! 0,649!
Autoencodeur!
!

Premièrement! la! régression! linéaire! nous! a! donné! une! baseline! permettant! de! comparer! les!
résultats!ultérieurs!que!l’on!s’apprêtait!à!faire.!

Deuxièmement,!l’approche!avec!le!RNN!nous!a!permis!d’obtenir!une!première!vague!de!résultats!
positifs.!En!effet,!il!est!possible!d’observer!une!diminution!de!l’erreurFtype!par!rapport!à!l’approche!
précédente!de!0.018!pour!la!valence!et!de!0.014!pour!l’arousal!!

Troisièmement,!nous!nous!sommes!intéressés!à!un!type!particulier!de!RNN,!le!LSTM!qui!promettait!
des! résultats! encore! meilleurs! que! son! prédécesseur! grâce! à! ses! facultés! pour! utiliser! les! données!
séquentielles!longues.!!Malheureusement,!cette!tentative!n’a!pas!été!fructueuse!faute!de!temps.!!

4.5! Conclusion*
!

L’objectif! de! cette! partie! était! d’implémenter! et! tester! différents! algorithmes! susceptibles!
d’extraire!des!caractéristiques!de!contenus!musicaux.!Nous!nous!sommes!essayés!à!des!méthodes!plus!
ou!moins!complexes!qui!ont!donné!des!résultats!mitigés.!!

Nous!n’avons!pas!réussi!à!entrainer!correctement!le!LSTM!car!il!y!a!des!possibilités!d’amélioration,!
et!les!meilleurs!résultats!restent!donc!ceux!obtenus!avec!un!RNN.!!

Page'65'
!
Mémoire'de'Fin'd’Etudes' !
!

Finalement,! nous! avons! essayé! d’améliorer! les! résultats! de! notre! réseau! le! plus! performant! en!
utilisant! un! autoencodeur! capable! de! détecter! des! caractéristiques! entre! nos! différentes! variables.!
Malheureusement!cette!technique!s’est!avéré!infructueuse.!

On!peut!penser!comme!possibilité!d’amélioration!:!!

F! Passer!plus!de!temps!sur!les!modèles!du!LSTM!et!de!l’Autoencodeur!
F! Bien! que! les! réseaux! doivent! avoir! des! précisions! similaires,! ils! doivent! faire! des! erreurs!
différentes,!dues!à!des!initialisations!différentes.!Faire!un!vote!parmi!5!résultats!de!réseaux!
s’étant!entrainés!sur!les!même!jeux!de!données!peut!améliorer!la!précision!

! !

Page'66'
!
Mémoire'de'Fin'd’Etudes' !
!

! Conclusion*Générale*
!

!!!!!!!Mon!stage!au!sein!de!l’IRIT!comportait!plusieurs!objectifs!:!faire!un!état!de!l’art!sur!les!réseaux!de!
neurones,!utiliser!les!connaissances!acquises!pour!proposer!des!méthodes!dans!le!cas!du!traitement!
de!la!parole,!puis!dans!le!cadre!de!l’extraction!d’information!en!musique.!!

!!!!!!!Après!avoir!étudié!et!rendu!compte!de!ce!qu’était!fondamentalement!un!NN,!dans!quels!cas!les!
appliquer!et!les!différentes!manières!de!les!utiliser,!j’ai!pu!étudier!les!limites!d’une!approche!récente!
très!utilisée!en!traitement!des!images!sur!des!données!de!parole.!Cette!étude!m’a!permis!de!conclure!
que!:!

F! !Il!est!difficile!de!créer!un!corpus!d’apprentissage!via!des!données!brutes!car!les!données!ne!
contiennent!pas!d’informations!pertinentes!dans!leur!ensemble!
F! Le!CNN!a!donné!des!résultats!prometteurs!
F! Il! faudrait! coupler! cette! approche! avec! un! ou! plusieurs! systèmes! qui! utilisent! d’autres!
caractéristiques!du!signal!

!!!!!!!Dans! la! troisième! partie! de! mon! stage,! nous! avons! cette! fois! utilisé! des! réseaux! adaptés! à!
l’information!séquentielle!afin!de!tester!les!résultats!qu’ils!pouvaient!avoir!sur!une!tache!d’extraction!
d’informations!en!musique.!Nous!avons!pu!conclure!que!:!

F! Le!modèle!du!LSTM!que!l’on!a!utilisé!n’était!pas!adapté!
F! Le!RNN!a!donné!de!bons!résultats!
F! Mettre!des!réseaux!en!chaine!permet!de!lisser!les!prédictions!et!d’accorder!plus!d’importance!
au!lien!temporel!entre!les!informations!
F! Il!aurait!fallu!plus!de!temps!pour!tester!d’autres!configurations!!

Les!perspectives!que!nous!proposons!pour!les!études!à!venir!sont!:!!

F! Sur!la!tache!de!parole!:!détecter!les!moments!les!plus!«!bruyants!»!en!utilisant!au!préalable!un!
algorithme!donnant!l’intelligibilité!du!locuteur!!
F! Sur!la!tache!de!musique!:!travailler!l’approche!par!modèle!LSTM!

!!!!!!!D’un! point! de! vue! personnel,! ce! stage! s’est! montré! bénéfique! et! formateur! pour! mon! futur!
parcours!professionnel!:!

F! J’ai!pu!développer!des!connaissances!théoriques!et!pratiques!en!Deep#Learning!
F! Me!former!à!des!techniques!que!je!ne!connaissais!pas,!et!des!outils!comme!le!langage!Python!
et!Theano!
F! Etendre!les!connaissances!que!j’avais!en!Matlab!et!Machine#Learning!
F! Découvrir!le!monde!de!la!recherche!

Page'67'
!
Mémoire'de'Fin'd’Etudes' !
!

! !

Page'68'
!
Mémoire'de'Fin'd’Etudes' !
!

! Glossaire*
!

DNN!:!Réseau!de!neurones!profond!

MLP!:!Perceptron!multicouches!

SVP!:!Machines!à!vecteurs!de!support!

CNN!:!Réseau!de!neurones!convolutionnel!

RNN!:!Réseau!de!neurones!récurrent!

NN!:!Réseau!de!neurones!

VFA!:!ValenceFArousal!

SGD!:!Descente!du!gradient!

RBM!:!Restricted#Boltzmann#Machine#

PCA!:!Analyse!par!composantes!principales!

CRF!:!Champs!conditionnels!aléatoires!

GPU!:!Processeur!graphique!

API!:!Bibliothèque!de!fonctions!

LOSO!:!LeaveLOneLSubjectLOut!

! !

Page'69'
!
Mémoire'de'Fin'd’Etudes' !
!

! *

Page'70'
!
Mémoire'de'Fin'd’Etudes' !
!

! Bibliographie*
!

[1]! BARTLETT,!Marian!Stewart,!LITTLEWORT,!Gwen,!FRANK,!Mark,!et#al.Recognizing!facial!
expression:!machine!learning!and!application!to!spontaneous!behavior.!In!:!Computer#Vision#and#
Pattern#Recognition,#2005.#CVPR#2005.#IEEE#Computer#Society#Conference#on.!IEEE,!2005.!p.!568F573.!

[2]! PERMUTER,!Haim,!FRANCOS,!Joseph,!et!JERMYN,!Ian.!A!study!of!Gaussian!mixture!models!of!
color!and!texture!features!for!image!classification!and!segmentation.!Pattern#Recognition,!2006,!vol.!
39,!no!4,!p.!695F706.!

[3]! LEHMAN,!Joel!et!MIIKKULAINEN,!Risto.!Extinction!Events!Can!Accelerate!Evolution.!PloS#one,!
2015,!vol.!10,!no!8,!p.!e0132886.!

![4]! CONSTANTINOU,!Anthony!C.,!FENTON,!Norman!E.,!et!NEIL,!Martin.!piFfootball:!A!Bayesian!
network!model!for!forecasting!Association!Football!match!outcomes.!KnowledgeLBased#Systems,!
2012,!vol.!36,!p.!322F339.!

[5]! RUMELHART,! David! E.,! HINTON,! Geoffrey! E.,! et! WILLIAMS,! Ronald! J.Learning# internal#
representations#by#error#propagation.!CALIFORNIA!UNIV!SAN!DIEGO!LA!JOLLA!INST!FOR!COGNITIVE!
SCIENCE,!1985.!!

[6]! STOBER,!Sebastian,!CAMERON,!Daniel!J.,!et!GRAHN,!Jessica!A.!Does!the!beat!go!on?:!identifying!
rhythms!from!brain!waves!recorded!after!their!auditory!presentation.!In!:!Proceedings#of#the#9th#Audio#
Mostly:#A#Conference#on#Interaction#With#Sound.!ACM,!2014.!p.!23.!

[7]! GLOROT,!Xavier!et!BENGIO,!Yoshua.!Understanding!the!difficulty!of!training!deep!feedforward!
neural!networks.!In!:!International#conference#on#artificial#intelligence#and#statistics.!2010.!p.!249F256.!

![8]! ZEILER,! Matthew! D.! ADADELTA:! An! adaptive! learning! rate! method.! arXiv# preprint#
arXiv:1212.5701,!2012.!

[9]! SRIVASTAVA,! Nitish,! HINTON,! Geoffrey,! KRIZHEVSKY,! Alex,! et# al.! Dropout:! A! simple! way! to!
prevent!neural!networks!from!overfitting.!The#Journal#of#Machine#Learning#Research,!2014,!vol.!15,!no!
1,!p.!1929F1958.!

[10]! VINCENT,!Pascal,!LAROCHELLE,!Hugo,!BENGIO,!Yoshua,!et#al.!Extracting!and!composing!robust!
features! with! denoising! autoencoders.! In! :! Proceedings# of# the# 25th# international# conference# on#
Machine#learning.!ACM,!2008.!p.!1096F1103.!

![11]! LISA!lab,!http://deeplearning.net/tutorial/rbm.html!

Page'71'
!
Mémoire'de'Fin'd’Etudes' !
!

[12]! SCHLUTER,! Jan! et! BOCK,! Sebastian.! Improved! musical! onset! detection! with! convolutional!
neural! networks.! In! :! Acoustics,! Speech! and! Signal! Processing! (ICASSP),! 2014! IEEE! International!
Conference!on.!IEEE,!2014.!p.!6979F6983.!

[13]! BÖCK,! Sebastian! et! WIDMER,! Gerhard.! Maximum! filter! vibrato! suppression! for! onset!
detection.! In! :! Proceedings# of# the# 16th# International# Conference# on# Digital# Audio# Effects# (DAFxL13),#
Maynooth,#Ireland.!2013.!

[14]! MIROWSKI,! Piotr! W.,! LECUN,! Yann,! MADHAVAN,! Deepak,! et# al.! Comparing! SVM! and!
convolutional!networks!for!epileptic!seizure!prediction!from!intracranial!EEG.!In!:!Machine#Learning#
for#Signal#Processing,#2008.#MLSP#2008.#IEEE#Workshop#on.!IEEE,!2008.!p.!244F249.!

[15]! MESNIL,! Grégoire,! HE,! Xiaodong,! DENG,! Li,! et# al.! Investigation! of! recurrentFneuralFnetwork!
architectures!and!learning!methods!for!spoken!language!understanding.!In!:!INTERSPEECH.!2013.!p.!
3771F3775.!

[16]! BOULANGERFLEWANDOWSKI,! Nicolas,! BENGIO,! Yoshua,! et! VINCENT,! Pascal.! Audio! Chord!
Recognition!with!Recurrent!Neural!Networks.!In!:!ISMIR.!2013.!p.!335F340.!

![17]! COUTINHO,! Eduardo,! WENINGER,! Felix,! SCHULLER,! Björn,! et! al.! The! Munich! LSTMFRNN!
Approach!to!the!MediaEval!2014!“Emotion!in!Music”!Task.!In!:!MediaEval!Workshop.!2014.!p.!5F6.!

[18]! LECUN,! Yann,! BOSER,! Bernhard,! DENKER,! John! S.,! et# al.! Backpropagation! applied! to!
handwritten!zip!code!recognition.!Neural#computation,!1989,!vol.!1,!no!4,!p.!541F551.!

[19]! LECUN,!Yann,!HAFFNER,!Patrick,!BOTTOU,!Léon,!et#al.!Object!recognition!with!gradientFbased!
learning.!In!:!Shape,#contour#and#grouping#in#computer#vision.!Springer!Berlin!Heidelberg,!1999.!p.!319F
345.!

![20]! CUN,!Y.!Le.!Une!procedure!d'apprentissage!pour!reseau!a!seuil!assymetrique.Proceedings#of#
Cognitiva,!1985,!vol.!85,!p.!599F604.!

![21]! LECUN,! Yann,! CORTES,! Corinna,! et! BURGES,! C.! The! MNIST! database! of! handwritten! digits,!
1998.!Available#electronically#at#http://yann.#lecun.#com/exdb/mnist,!2012.!

[22]! EYBEN,! Florian,! BÖCK,! Sebastian,! SCHULLER,! Björn,! et! al.! Universal! Onset! Detection! with!
Bidirectional!Long!ShortFTerm!Memory!Neural!Networks.!In!:!ISMIR.!2010.!p.!589F594.!

[23]! HANNUN,!Awni,!CASE,!Carl,!CASPER,!Jared,!et#al.!DeepSpeech:!Scaling!up!endFtoFend!speech!
recognition.!arXiv#preprint#arXiv:1412.5567,!2014.!

[24]! MOORE,!R.,!et#al.!Hidden!Markov!model!decomposition!of!speech!and!noise.!In!:!Acoustics,#
Speech,#and#Signal#Processing,#1990.#ICASSPL90.,#1990#International#Conference#on.!IEEE,!1990.!p.!845F
848.!

![25]! LECUN,! Yann! A.,! BOTTOU,! Léon,! ORR,! Genevieve! B.,! et# al.! Efficient! backprop.! In! :! Neural#
networks:#Tricks#of#the#trade.!Springer!Berlin!Heidelberg,!2012.!p.!9F48.!

Page'72'
!
Mémoire'de'Fin'd’Etudes' !
!

[26]! LI,! F.,! KARPATHY,! A.,! ! CS231n# :# Convolutional# Neural# Networks# for# Visual# Recognition,!
http://cs231n.stanford.edu/!

[27]! LISA!lab,!http://deeplearning.net/tutorial/lenet.html!

[28]! BARRIERE,! V.,! PELLEGRINI,! T.! “Don't! speak! and! eat,! we'll! detect! it!! “,!
https://vimeo.com/134095747!

![29]! HOCHREITER,!Sepp!et!SCHMIDHUBER,!Jürgen.!Long!shortFterm!memory.Neural#computation,!
1997,!vol.!9,!no!8,!p.!1735F1780.!

[30]! HOCHREITER,!Sepp,!BENGIO,!Yoshua,!FRASCONI,!Paolo,!et#al.!Gradient!flow!in!recurrent!nets:!
the!difficulty!of!learning!longFterm!dependencies.!2001.!

[31]! GERS,! Felix! A.,! SCHMIDHUBER,! Jürgen,! et! CUMMINS,! Fred.! Learning! to! forget:! Continual!
prediction!with!LSTM.!Neural#computation,!2000,!vol.!12,!no!10,!p.!2451F2471.!

[32]! MARSELLA,!Stacy,!GRATCH,!Jonathan,!et!PETTA,!Paolo.!Computational!models!of!emotion.!A#
Blueprint#for#Affective#ComputingLA#sourcebook#and#manual,!2010,!p.!21F46.!

[33]! RUSSELL,!J.A.!“A!circumspect!model!of!affect,”!Journal!of!Psychology!and!Social!Psychology,!
vol.!39,!no.!6,!p.!1161,!1980.!

[34]! JUSLIN,!P.,!SLOBODA,!J.!Music!and!Emotion:!theory!and!research.!Oxford!Univ.!Press,!2001!

[35]! LAURIER,! Cyril,! SORDO,! Mohamed,! SERRA,! Joan,! et# al.! Music! Mood! Representations! from!
Social!Tags.!In!:!ISMIR.!2009.!p.!381F386.!

[36]! MORTON,!Brandon!G.,!SPECK,!Jacquelin!A.,!SCHMIDT,!Erik!M.,!et#al.Improving!music!emotion!
labeling! using! human! computation.! In! :! Proceedings# of# the# acm# sigkdd# workshop# on# human#
computation.!ACM,!2010.!p.!45F48.!

[37]! FAN,!Yuchao!et!XU,!Mingxing.!MediaEval!2014:!THUFHCSIL!Approach!to!Emotion!in!Music!Task!
using!MultiFlevel!Regression.!In!:!MediaEval#Workshop.!2014.!p.!6F7.!

[38]! EYBEN,!Florian,!WÖLLMER,!Martin,!et!SCHULLER,!Björn.!Opensmile:!the!munich!versatile!and!
fast!openFsource!audio!feature!extractor.!In!:!Proceedings#of#the#international#conference#on#
Multimedia.!ACM,!2010.!p.!1459F1462,!http://www.audeering.com/research/opensmile!

[39]! LISA!lab,!http://deeplearning.net/tutorial/lstm.html!

[40]! MAAS,!Andrew!L.,!LE,!Quoc!V.,!O'NEIL,!Tyler!M.,!et#al.!Recurrent!Neural!Networks!for!Noise!
Reduction!in!Robust!ASR.!In!:!INTERSPEECH.!2012.!

! !

Page'73'
!
Mémoire'de'Fin'd’Etudes' !
!

Page'74'
!
Mémoire'de'Fin'd’Etudes' !
!

! Références*Web*
!

http://www.biomedcentral.com/1471F2105/13/S16/S3/figure/F4?highres=y!

https://www.coursera.org/learn/machineFlearning!

http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/!

http://deeplearning.net/tutorial/rbm.html!

http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/!

http://deeplearning.net/tutorial/lenet.html!

ttp://cs231n.github.io/convolutionalFnetworks/!

http://www.mdpi.com/2076F328X/3/3/501/htm!

https://en.wikipedia.org/wiki/Mel_scale!

Page'75'
!
Mémoire'de'Fin'd’Etudes' !
!

Page'76'
!
Mémoire'de'Fin'd’Etudes' !
!

! Annexe*
Fonction!sigmoïde!:!!

1
® , = , lim ® , = 1 , lim ® , = 0(!
1 + N íò ò→? ò→í

®′ , = (1 − ® , )® , !

Fonction!tanh:!!

N ò − N íò
TÅ@ℎ , = , lim tanh , = ±1(!
N ò + N íò ò→±

TÅ@ℎ2 , = 1 − ( TÅ@ℎ , 0 !

Fonction!ReLU:!!

ÃN;Õ , = max(0, ,)!


ò

1 + Sö@ ,
ÃN;Õ 2 (,) = !
2
! !

Page'77'
!
Mémoire'de'Fin'd’Etudes' !
!

%%================================================================
randsel = randi(size(x,2),200,1); % A random selection of samples for
visualization
%% Step 0: Zero-mean the data

x_norm = mean(x,1);
x = bsxfun(@minus, x, x_norm);

%%================================================================

%% Step 1: Implement PCA to obtain xRot


[n, m] = size(x);
sigma = 1/m*(x*x');

% In S : eigenvalues in the diag, in U eigenvectors


[U, S, ~] = svd(sigma);

% In order to obtain the most weighty eigenvect : U(1,1)


xRot = U'*x;

%%================================================================
%% Step 2: Find k, the number of components to retain
purcent = 0.99;

k = find(cumsum(diag(S)) / sum(diag(S)) >= purcent, 1);


fprintf('%d components left on %d\n', k, size(S, 1))

%%================================================================
%% Step 3: Implement PCA with dimension reduction
alz = zeros(n-k,m);
xHat = U*[xRot(1:k,:); alz];

figure('name',['PCA processed images ',...


sprintf('(%d / %d dimensions)', k, size(x, 1)),'']);
display_network(xHat(:,randsel));

%%================================================================
%% Step 4: Implement PCA with whitening and regularisation

epsilon = 1e-1;
xPCAWhite = bsxfun(@rdivide, xRot, sqrt(diag(S) + epsilon));

%%================================================================
%% Step 5: Implement ZCA whitening

xZCAWhite = U*xPCAWhite;
!
Figure!A.1!:!Code!d’une!ZCA!Whitening!

Page'78'
!
Mémoire'de'Fin'd’Etudes' !
!

MATLAB/Octave! NumPy!

>> A = [1 2 3; 4 5 6; 7 8 9] >> A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])


Creating!
A = >> A
Matrices!!
1 2 3 array([[1, 2, 3],
(here:!3x3!
4 5 6 [4, 5, 6],
matrix)!
7 8 9 [7, 8, 9]])

>> A = [1 2 3; 4 5 6]
>> A = np.array([ [1,2,3], [4,5,6] ])
Getting!the! A =
>> A
dimension! 1 2 3
array([[1, 2, 3],
of!a!matrix! 4 5 6
[4, 5, 6]])
(here:!2D,! >> size(A)
>> A.shape
rows!x!cols)! ans =
(2, 3)
2 3

>> b = [1 2 3] >> b = np.array([1,2,3])


Creating!an!
b = >> b
1D!row!vector!
1 2 3 array([1, 2, 3])

>> b = np.array([1, 2, 3])


>> b = [1 2 3]' >> b = b[np.newaxis].T
Converting!! b = # alternatively b = b[:,np.newaxis]
row!to!column! 1 >> b
vectors! 2 array([[1],
3 [2],
[3]])

>> A = np.array([[1, 2, 3], [4, 5, 6]])


>> A = [1 2 3; 4 5 6]
>> B = np.array([[7, 8, 9],[10,11,12]])
>> B = [7 8 9; 10 11 12]
>> C = np.concatenate((A, B), axis=0)
>> C = [A; B]
Concatenating! >> C
1 2 3
matrices! array([[ 1, 2, 3],
4 5 6
[ 4, 5, 6],
7 8 9
[ 7, 8, 9],
10 11 12
[10, 11, 12]])

Page'79'
!
Mémoire'de'Fin'd’Etudes' !
!

>> rand(3,2)
>> np.random.rand(3,2)
Creating!a!! ans =
array([[ 0.29347865, 0.17920462],
random!m!x!n! 0.21977 0.10220
[ 0.51615758, 0.64593471],
matrix! 0.38959 0.69911
[ 0.01067605, 0.09692771]])
0.15624 0.65637

>> zeros(3,2)
>> np.zeros((3,2))
Creating!a! ans =
array([[ 0., 0.],
zero!m!x!n! 0 0
[ 0., 0.],
matrix!! 0 0
[ 0., 0.]])
0 0

>> a = [1 2 3]
>> diag(a) >> a = np.array([1,2,3])
Creating!a! ans = >> np.diag(a)
diagonal! Diagonal Matrix array([[1, 0, 0],
matrix! 1 0 0 [0, 2, 0],
0 2 0 [0, 0, 3]])
0 0 3

>> A = [1 2 3; 4 5 6; 7 8 9]
>> A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
>> A * A
>> np.dot(A,A) # or A.dot(A)
MatrixAmatrix! ans =
array([[ 30, 36, 42],
multiplication! 30 36 42
[ 66, 81, 96],
66 81 96
[102, 126, 150]])
102 126 150

>> A = [1 2 3; 4 5 6; 7 8 9]
>> B = [ 1; 2; 3 ] >> A = np.array([ [1,2,3], [4,5,6], [7,8,9] ])
>> A * B >> B = np.array([ [1], [2], [3] ])
MatrixAvector!
ans = >> np.dot(A,B) # or A.dot(B)
multiplication!
14
32 array([[14], [32], [50]])
50

Figure!A.2!:!Feuille!de!passage!de!Matlab!à!Numpy!

! !

Page'80'
!
Mémoire'de'Fin'd’Etudes' !
!

import!numpy!as!np!
import!theano!
import!theano.tensor!as!T!
!
import!lasagne!
!
def!build_custom_mlp(input_var=None,!depth=2,!width=800,!drop_input=.2,!
!!!!!!!!!!!!!!!!!!!!!drop_hidden=.5):!
!
#!Input!layer!and!dropout!(with!shortcut!`dropout`!for!`DropoutLayer`):!
network!=!lasagne.layers.InputLayer(shape=(None,!1,!28,!28),!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!input_var=input_var)!
if!drop_input:!
!!!!network!=!lasagne.layers.dropout(network,!p=drop_input)!
#!Hidden!layers!and!dropout:!
nonlin!=!lasagne.nonlinearities.rectify!
for!_!in!range(depth):!
!!!!network!=!lasagne.layers.DenseLayer(!
!!!!!!!!!!!!network,!width,!nonlinearity=nonlin)!
!!!!if!drop_hidden:!
!!!!!!!!network!=!lasagne.layers.dropout(network,!p=drop_hidden)!
#!Output!layer:!
softmax!=!lasagne.nonlinearities.softmax!
network!=!lasagne.layers.DenseLayer(network,!10,!nonlinearity=softmax)!
return!network!

Figure!A.3!:!Fonction!de!construction!d’un!MLP!de!lasagne!

! !

Page'81'
!
Mémoire'de'Fin'd’Etudes' !
!

layer {
name: "ip1"
type: "InnerProduct"
param { lr_mult: 1 }
param { lr_mult: 2 }
inner_product_param {
num_output: 500
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
bottom: "pool2"
top: "ip1"
}

layer {
name: "relu1"
type: "ReLU"
bottom: "ip1"
top: "ip1"
}

layer {
name: "ip2"
type: "InnerProduct"
param { lr_mult: 1 }
param { lr_mult: 2 }
inner_product_param {
num_output: 10
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
bottom: "ip1"
top: "ip2"
}

Figure!A.4!:!Exemple!de!la!définition!de!couches!en!Caffe!

! !

Page'82'
!
Mémoire'de'Fin'd’Etudes' !
!

!
Figure!A.5!:!Description!interne!d’une!couche!de!convolution!

! !

Page'83'
!
Mémoire'de'Fin'd’Etudes' !
!

function pooledFeatures = cnnPool(poolDim, convolvedFeatures)

numImages = size(convolvedFeatures, 4);


numFilters = size(convolvedFeatures, 3);
convolvedDim = size(convolvedFeatures, 1);

pooledFeatures = zeros(convolvedDim / poolDim, ...


convolvedDim / poolDim, numFilters, numImages);

for i = 1 : convolvedDim / poolDim


for j = 1 : convolvedDim / poolDim
index_vert = (i-1)*poolDim+1:i*poolDim;
index_hor = (j-1)*poolDim+1:j*poolDim;

alz = convolvedFeatures(index_vert,index_hor,:,:);
alz = reshape ( alz, poolDim^2,numFilters, numImages);

pooledFeatures(i,j,:,:) = mean(alz,1);
end
end

end

Figure!A.6!:!Code!d’une!couche!de!pooling!carré!

Page'84'
!
Mémoire'de'Fin'd’Etudes' !
!

% Here changement for the last delta ; also special for softmax !
% WARNING !!! This is a matrix ! We cannot just sum it since we need
each
% delta to calculate the next ones
delta = - (Y - probs) ;

% delta of the layer nl-1


%delta_2 is now of size hidden_size*numImages
delta_2 = (Wd'*delta);

% delta must be reshaped since we reshaped activations_pooled


delta_reshape =
reshape(delta_2,outputDim,outputDim,numFilters,numImages);

delta_pool = zeros(size(activations));
delta_rot = zeros(size(activations));
delta_conv = zeros(filterDim,filterDim,numFilters,numImages);

% Upsample the incoming error using kron


KRON = (1/poolDim^2) * ones(poolDim);

for i = 1 : numFilters
for j = 1 : numImages

delta_pool(:,:,i,j) = kron(delta_reshape(:,:,i,j),KRON).*
der_tresh(activations(:,:,i,j), 'logistic');
delta_rot(:,:,i,j) = rot90(delta_pool(:,:,i,j),2);
delta_conv(:,:,i,j) = conv2(images(:,:,j),delta_rot(:,:,i,j),'valid') ;

end
end

%%======================================================================
%% STEP 1d: Gradient Calculation

% Wc_grad -> filterDim x filterDim x numFilters


% bc_grad -> numFilters x 1

% Since we divided J by numImages (to avoid overflows) we need to divide


% the grads too ! Division for Wd and mean for the others!
Wd_grad = delta * activationsPooled'/numImages;
bd_grad = mean(delta,2);

delta_bias = mean(delta_pool,4);
delta_bias = reshape(delta_bias,convDim^2,numFilters);
bc_grad = sum(delta_bias);

Wc_grad = mean(delta_conv,4);
!
!

Figure!A.7!:!Code!Matlab!implémenté!lors!de!ce!stage!d’une!rétropropagation!et!calcul!de!
gradient!sur!un!CNN!avec!1!couche!de!convolution,!1!couche!totalement!connectée!et!un!
softmax !

Page'85'
!
Mémoire'de'Fin'd’Etudes' !
!

Annexe!A.8:!Echantillon!des!autres!expériences!effectuées!sur!la!parole!:!

F! Configuration!2!:!1!couche!convolutionnel!et!2!couches!MLP!et!un!softmax!:!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 58!! 18!! 13!! 8!! 8!! 30!! 4!!
Banane!! 14!! 61!! 7!! 4!! 23!! 26!! 3!!
Biscuit!! 10!! 8!! 91!! 9!! 5!! 8!! 1!!
Chips!! 3!! 5!! 11!! 115!! 4!! 1!! 1!!
Haribo!! 11!! 27!! 7!! 7!! 51!! 14!! 2!!
Nectarine!! 29!! 33!! 9!! 3!! 9!! 47!! 1!!
Rien!! 1!! 5!! 0!! 3!! 4!! 0!! 116!!
!

Tableau!12!F!Précision!:!54.5!%!

F! Configuration!3!:!2!couches!convolutionnel!et!1!couche!MLP!et!un!softmax!
!
F! ! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!
Pomme!! 71!! 18!! 10!! 5!! 3!! 31!! 1!!
Banane!! 24!! 51!! 4!! 1!! 26!! 31!! 1!!
Biscuit!! 13!! 6!! 95!! 11!! 2!! 4!! 1!!
Chips!! 6!! 2!! 9!! 116!! 2!! 3!! 2!!
Haribo!! 22!! 35!! 6!! 7!! 37!! 10!! 2!!
Nectarine!! 44!! 28!! 6!! 2!! 7!! 44!! 0!!
Rien!! 2!! 6!! 2!! 2!! 2!! 2!! 127!!
!

Tableau!13!F!Précision!:!57.3!%!

F! Configuration!5!:!Configuration!4!avec!deux!fois!plus!de!filtres!de!convolution!dans!la!première!
couche!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 54!! 11!! 15!! 14!! 12!! 30!! 3!!
Banane!! 13!! 56!! 8!! 5!! 20!! 24!! 12!!
Biscuit!! 5!! 3!! 99!! 9!! 4!! 10!! 2!!
Chips!! 1!! 5!! 5!! 121!! 5!! 0!! 3!!
Haribo!! 8!! 21!! 2!! 6!! 61!! 13!! 8!!
Nectarine!! 24!! 22!! 7!! 4!! 13!! 57!! 4!!
Rien!! 1!! 4!! 2!! 2!! 2!! 1!! 128!!

Page'86'
!
Mémoire'de'Fin'd’Etudes' !
!

Tableau!14!F!Précision!:!60.4!%!

F! Configuration!6!:!Configuration!4!avec!des!filtres!plus!grands!(7*7)!pour!la!première!couche!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 71!! 13!! 12!! 6!! 8!! 27!! 2!!
Banane!! 20!! 55!! 2!! 4!! 21!! 30!! 6!!
Biscuit!! 9!! 4!! 100!! 11!! 3!! 4!! 1!!
Chips!! 4!! 5!! 6!! 119!! 3!! 1!! 2!!
Haribo!! 18!! 36!! 7!! 6!! 45!! 4!! 3!!
Nectarine!! 26!! 25!! 5!! 6!! 10!! 57!! 2!!
Rien!! 0!! 3!! 2!! 2!! 2!! 2!! 130!!
!

Tableau!15!F!Précision!:!61.3!%!

F! Configuration!10!:!Configuration!4!avec!ReLU!comme!fonction!d’activation!de!la!1ère!couche!
MLP.!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 54! 15! 20! 9! 12! 23! 6!
Banane!! 15! 35! 13! 12! 17! 29! 17!
Biscuit!! 16! 6! 72! 13! 6! 12! 7!
Chips!! 4! 2! 8! 114! 5! 3! 4!
Haribo!! 5! 20! 8! 13! 51! 13! 9!
Nectarine!! 28! 17! 17! 6! 9! 48! 6!
Rien!! 3! 6! 5! 4! 8! 2! 112!
!

Tableau!16!F!Précision!:!51.8!%!

F! Configuration!11!:!Configuration!4!avec!une!couche!finale!de!type!SVM!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 59! 11! 18! 9! 12! 25! 5!
Banane!! 13! 56! 7! 6! 19! 29! 8!
Biscuit!! 12! 3! 90! 8! 8! 9! 2!
Chips!! 5! 3! 12! 101! 5! 6! 8!
Haribo!! 10! 22! 7! 8! 54! 12! 6!
Nectarine!! 33! 18! 8! 6! 7! 54! 5!
Rien!! 4! 4! 6! 2! 3! 3! 118!

Page'87'
!
Mémoire'de'Fin'd’Etudes' !
!

Tableau!17!F!Précision!:!56.7!%!

F! Configuration! 12! :! Configuration! 1! avec! tanh! comme! fonction! d’activation! de! la! couche!
convolutionnelle!"!Best!!

! Pomme!! Banane!! Biscuit!! Chips!! Haribo!! Nectarine!! Rien!!


Pomme!! 59! 12! 22! 11! 9! 21! 5!
Banane!! 17! 51! 8! 11! 18! 23! 10!
Biscuit!! 5! 8! 96! 9! 5! 7! 2!
Chips!! 5! 2! 5! 110! 9! 3! 6!
Haribo!! 13! 14! 11! 9! 50! 13! 9!
Nectarine!! 27! 24! 6! 8! 8! 54! 4!
Rien!! 2! 7! 7! 3! 3! 4! 114!
!

Tableau!18!F!Précision!:!56.9!%!

Page'88'
!

Vous aimerez peut-être aussi