Synthese par apprentissage
- 56 réponses
- 6 participants
- 3 356 vues
- 2 followers
Choc
Je trippe actuellement sur la recherche de nouveau moyen de synthese du son (du moins j'essaye...) et je reste skocthé par l'algorithme de descente du gradient dans sa version stochastique....(deja utilisé en audio pour faire de la reduction de bruit par exemple)
Principe:
un signal de reference x(t) qui passe dans un modele inconnu (de nous) et qui sonne d(t)...
en parallele on construit un modele type filtre FIR initialisé aleatoirement et on lui met en entree x(t).....on obtient un signal en sortie de ce modele que l'on appele e(t) de t (e pour estimation)...
ensuite on compare d(t) et e(t) puis on recalibre les coefficient du filtre de facon a minimiser cette erreur....ce travail est fait recursivement...(d'ou le terme apprentissage le modele apprend)
Ca m'a donné plein d'idee....que j'ai commencé a exploité au niveau musicale...il y a encore plein de taf...
Imaginez ...x(t) un bruit....et d(t) un son type piano....bon l'algo c'est pas non plus un outil magique il va pas nous sortie e(t) un son de piano....mais par contre on entend une sorte de bruit filtré interessant...lorsque on superpose e(t) et d(t) c'est meme agreable
Il faut que j'etudie ca plus en profondeur mais je pense que ca peut etre un outil interessant pour les sound designer orientés "noise"...synthese par apprentissage, synthese adaptative, je lui ai toujours pas donné son petit nom
Voila des commentaires ? des suggestions ? des idée ? des connaissances ? je suis souvert a toutes critiques
Site personnel: https://www.enib.fr/~choqueuse/
arza
Choc
DOnc Matlab pour l'instant et apres un VST pourquoi pas ?....
Site personnel: https://www.enib.fr/~choqueuse/
o-x-o
Je vois que tu es bien motivé
Citation : Je trippe actuellement sur la recherche de nouveau moyen de synthese du son (du moins j'essaye...) et je reste skocthé par l'algorithme de descente du gradient dans sa version stochastique....(deja utilisé en audio pour faire de la reduction de bruit par exemple)
--> je n'ai jamais joué avec ca pour faire du son, par contre j'ai joué avec des reseaux de neurones et des algos genetiques (pour faire vivre des petits robots virtuels
L'interet par rapport a des systemes comme la descente du gradient est que l'apprentissage est automatique... Tu definis des regles de selections et seuls les individus correspondant au mieux a tes regles survivent (a la Darwin quoi
C'est peut etre une autre piste a creuser ?
@+
o-X-o
Choc
Toi tu parles des reseaux de neurones dans leur application puremement "classification"...
ET bingo, c'est un truc qui marche bien par exemple pour les problemes de reconnaissance de hauteur de son polyphoniques....(la ou la recherche butte depuis des annees)
Transcription of polyphonic piano music with neural networks,Marolt, M. 2000 10th Mediterranean Electrotechnical Conference. Information Technology and Electrotechnology for the Mediterranean Countries. Proceedings. MeleCon 2000
Automatic Transcription of Music.Phd Thesis.Anssi Klapuri 1999
https://www.cs.tut.fi/~klap/iiro/
Moi ce qui m'interesse c'est plus la regression et la prediction..
Site personnel: https://www.enib.fr/~choqueuse/
o-x-o
Citation : Toi tu parles des reseaux de neurones dans leur application puremement "classification"...
Ouais, peut etre ! je n'ai pas forcement le vocabulaire qui va bien...
C'etait juste une remarque sur le fait de coupler le principe des reseaux de neurone a des algo genetiques pour eviter d'avoir a faire un apprentissage dit "manuel" ... dans le sens, je fournis des entrées, j'obtiens une reponse, j'utilise la descente du gradient, pour approcher le resultat, ...., je recommence, ...
Mais tu me parais assez calé, pour avoir deja joué avec tout ca...
Choc
Citation : je fournis des entrées, j'obtiens une reponse, j'utilise la descente du gradient, pour approcher le resultat, ...., je recommence, ...
Avec les algo adaptatif c'est la meme chose, sauf que l'architecture et beaucoup plus simple (la je cherche un simple modele lineaire du type filtre FIR alors qu'un reseaux MLP va me sortir des choses tres complexes -approxmimation de n'importe quel fonction de Rn - causé notamment par l'utilisation des fonctions d'activation non lineaires et lesenurones des differentes couches)
EN tout cas, je suis sur qu'on peut faire plein de chose avec ces outils en nottament en synthese de son...(je sais pas comment marche reelement le Hartman neuron...utilisant une synthese neuronale...il faut que je m'y mette plus serieusement
Site personnel: https://www.enib.fr/~choqueuse/
arza
je crois que je vais faire une tite recherche sur les progs de ce type!
arza
je crois que je vais faire une tite recherche sur les progs de ce type!
Willy_77
Citation : Toi tu parles des reseaux de neurones dans leur application puremement "classification".
Il faut peut être démystifier ce qu'est un réseau de neurones :
Ce n'est qu'un réseau de cellules multiplicatives que l'on additionne ...
Une somme de produits, donc ...
Il se comporte d'une certaine manière pour un problème donné en fonction de son architecture, entrées/sorties, couches cachées etc ...
ET
de l'apprentissage que l'on a effectué qui à détrerminé la valeur des coeficients (poids) multiplicatifs de chaque branche (descente de gradient pour faire converger les coefficients et réduire l'erreur de sortie désirée)
Ensuite, tout dépend ce qu'on veut faire avec :
En classifieur, on dispose d'un ensemble de vecteurs d'entrée représentatifs d'une "classe" de données, chacun associés à une "sortie" désirée
C'est le mode "Supervisé".
Une fois "appris", un nouveau vecteur est présenté, et la sortie calculée dira s'il fait partie de la même classe ou non.
Mais dans ce mode on peut aussi faire autre chose que de la classification :
C'est alors un polynôme interpolateur :
Pendant l'apprentissage, la sortie demandée pour chaque vecteur d'entrée de l'ensemble d'apprentissage correspond à la valeur de sortie d'une "Fonction" qui est celle à "Modéliser" ...
Une fois appris, le réseau saura calculer une nouvelle sortie pour un nouveau vecteur d'entrée inconnu, et cette valeur de sortie sera une sorte d'interpolation de la fonction modélisée...
Là ça devient intéressant parceque le réseau commence à générer des valeurs de sorties "inconnues" mais corrélées avec les vecteurs d'apprentissage...
Ca peut être intéressant pour de la synthèse, mais il n'y a pas de paramètre à faire varier , bof bof ...
Autre mode possible : Mode NON-Supervisé :
On a toujours un ensemble de vecteurs d'entrée constituant l'ensemble d'apprentissage, correspondant généralement à une même classe, mais cette fois la structure du réseau n'est pas de N entrées vers m cellules cachées vers 1 ou plusieurs sorties, mais N entrées vers m cellules cachées (m<n) et encore N sorties.
L'apprentissage (dans tout les cas c'est une descente de gradient classique) consiste alors à faire converger les poids du réseau de telle sorte que pour chaque vecteur d'entrée, le réseau apprenne à reconstruire le MEME vecteur en sortie !!!!
C'est là le coté génial, parceque comme il passe par une couche interne comprenant beaucoup moins de cellules, en fait le réseau agit comme une sorte en compression, c.a.d. qu'il a trouvé une représentation plus petite pour les même vecteurs d'entrée.
Coté synthèse, ce qui pourrait être intéressant, c'est qu'un fois appris un modèle (de forme d'onde par exemple), alors en faisant varier les coefficients de cette couche cachée on modifie le type de compression/decompression que le réseau réalise, et on a qqchose proche du morphing, où les paramètres que l'on touche ne sont ni l'amplitude du signal, ni sa forme d'onde, mais plutôt les coefficients d'une sorte de filtre (de type incinnu), comme si dans un FIR on allait modifier certains coefficients sans se soucier de la fonction de transfert ...
Ce type de réseau "auto-supervisé" s'appelle aussi le "Diabolo".
C'est en gros le principe du Neuron, qui modélise un son à travers un filtre neuronal mais dont on ne connait pas précisemment la signification de chacun des paramètres, que l'on fait ensuite varier pour obtenir de nouveau sons, ou autre appli possible, avec 2 jeux de coefficients correspondants chacun à un type de son, on peut "interpoler" tout simplement les coefficients progrssivement pour obtenir un morphing d'un type nouveau, puisque le chemin parcouru par le signal pendant le morphing entre le son A vers le son B n'est pas le chemin le plus court (morphing classique) mais UN chemin dans l'espace de représentation du réseau de neurones ...
Je pense aussi comme vous qu'il y a surement des méthodes de synthèse à tirer de tout ça, il faut s'y mettre et chercher un mode de fonctionnement original !!!
(ça pourrait faire un bon sujet de stage de DEA en traitement du signal, ou même de thèse ...)
Personellement je suis en traitement d'images et je n'ai malheureusement pas trop de temps pour ça, mais je veux bien participer si nécessaire à un projet en groupe.
Remarque: J'ai déja fait pas mal de choses avec des réseaux de neurones, mais la constante est qu'il faut beaucoup de données d'apprentissage, et passer du temps à "étiqueter les donnés" et faire beaucoup de tests ...
Mon dernier réseau mettait à peu près 10 heures pour converger vers une solution acceptable avec des vecteurs d'entrée de seulement 500 valeurs, et environ 1000 vecteurs d'apprentissage, en fait le temps de convergence dépend du problème posé ...
en Audio, Si la représentation des données est en échantillons audio, ça risque d'être mortel ... Il faufrait vectoriser, par FFT DCT ondelettes ou autres pour réduire l'espace de représentation à qqchose d'humain ...)
Choc
Citation : Je pense aussi comme vous qu'il y a surement des méthodes de synthèse à tirer de tout ça, il faut s'y mettre et chercher un mode de fonctionnement original !!!
(ça pourrait faire un bon sujet de stage de DEA en traitement du signal, ou même de thèse ...)
OK Willy, je le sais mais encore faut t-il trouver des financements ? Pourtant j'ai un profil traitement du signal / statistique avec un stage recherche dans le son (en projet de fin d'etude d'ingé)....mais voila je me vois mal debarquer dans des labos en disant, j'aimerai faire ca, pouvez vous me financer pendant trois ans
Et puis, je veux surtout pas me mettre a genou devant l'IRCAM
En tout cas ce que tu dis est tres interessant, je vais essayer de me chopper la toolbox neural networks de matlab pour mettre en application tout ca
peux tu me faire des commentaire sur ma doc:
http://fr.briefcase.yahoo.com/
compte : reaktor_af
mot de passe : cdelabombe
repertoire Choc, fichier MLP
Merci d'avance
Site personnel: https://www.enib.fr/~choqueuse/
Willy_77
J'ai jeté un oeil sur le pdf, c'est un document que tu écris ?
C'est bien mais court, et surtout tu ne parle que du fonctionnement du
réseau lui-même (c'est déja bien) et pas du tout du cadre et des limites
de son utilisation (dimensionnement, vectorisation ...)
Les RNs sont un outil de modélisation comme un autre et il est important
de savoir quand et comment on peut s'en servir ...
Pour un problème donné, pourquoi utiliser un RN et non pas une simple
modélisation polynomiale, ou même une ACP ou des SVMs ...
c'est le grand sujet de discussion sur les RNs et bien évidemment comme
d'habitude la communauté scientifique est partagée, chacun avec ses
arguments.
Les détracteurs des RNs disent que c'est un pis aller quand on ne sait pas
quoi faire d'autre (argument souvent utilisé pour les algos génétiques...)
Le problème intéressant à soulever concerne l'espace de représentation des
données et justement c'est là tout l'art du RN.
Entrer directement les données dans un RN est souvent catastrophique, ce qu'il
faut c'est effectuer un certain nombre de pré-traitements et surtout vectoriser
les données pour se ramener à un espace où l'on pense qu'il existe une solution
au problème de classification ou de prédiction suivant les cas.
Dans le document tu cites une utilisation possible en codant les pixels d'une
imagette pour faire de la détection de caractères pour le tri postal.
En fait, des gens ont bossé là dessus dans labo pendant près de 7 ans, et ils
ont montré que le vecteur d'entrée doit être formatté de telle sorte que le
codage du "caractère" soit invariant à certaines transformations (rotation,
facteur d'échelle etc ... ) ce qui n'est pas le cas si l'on code directement les
pixels d'une imagette ...
Ensuite il faut aussi que l'espace de représentation choisi soit homogène et continu,
par exemple dans le cas d'angles, on ne code pas la valeur des angles mais on
vectorise des couples de valeurs : sin(x) cos(x) et on réserve le couple (0,0)
pour coder l'absence d'angle ...
Il ne faut pas oublier que les RNs ne sont qu'une somme de produit, et il ne
faut pas s'attendre à ce qu'il puisse intégrer dans la solution des opérations
complexes de type Log, Sin, X^n etc ... et c'est pour ça que l'on doit concevoir
un codage des vecteurs d'entrée pour que la représentation des données soit
déja présente sous sa forme utile (sin et cos dans le cas des angles) sinon le
RN ne pourra pas modéliser le problème posé.
Je pense qu'un bon document parlant des RNs doit aborder les généralités comme
tu l'a fait, mais surtout traiter de ces problèmes de représentation et montrer
pourquoi il est important de consacrer les efforts sur la représentation et le codage
des vecteurs d'entrée pour ramener ces données dans un espace où l'on pense
que trouve la solution ...
Sinon, pour la synthèse je pencherais plutôt vers les Diabolos (auto-supervisé) qui
permettent à la fois d'extraire automatiquement l'information utile des données,
et surtout de s'affranchir de l'étiquettage nécessaire en mode supervisé classique.
(Surtout quand on sait qu'un réseau nécessite un très grand nombre de vecteurs
d'entrée pour bien converger vers une solution)
rem: on prend généralement le produit de la taille des vecteur d'entrée par le nombre
de cellules cachées comme nombre minimum de vecteurs, et comme le nombre
de cellules cachées idéal est le plus souvent egal à la racine du nombre d'entrées,
on a alors N vecteurs mini = longueur * racine(longueur) * K
En Audio, sur des echantillons, pour une portion de signal de 256 échantillons, ça fait
par exemple au minimum 4000 à 8000 vecteurs différents représentatifs de la même
classe, qu'il faudrait selectionner et étiqueter à la main ... pour chaque forme d'onde ou sonorité ...
Quand à la recherche de financement ou de partenaire, je sais c'est dùr, mais il y a
des pistes, nottament les fabriquants de matériel.
Il faut surtout brasser large et être très motivé (c'est le premier critère de sélection
dans ce genre d'approche, et il ne faut pas hésiter à relancer 10 fois le même gars
jusqu'à ce qu'il se rende compte de ton acharnement, et donc de son intérêt à travailler
avec toi puisque tu va te plonger corps et âme sur le sujet ...)
J'avais démarché Analog Devices (DSPs) et il y a 2 ans ils étaient presque OK pour
une thèse mais ils voulaient que j'aille 3 ans à Boston et ça ne me convenait pas trop ...
J'ai finalement trouvé mon bonheur mais après environ 5 touches sérieuses, et plus de
50 tentatives d'approche et presque 1 an de recherche de partenaire ...)
Sinon en France il y a des gens comme Guillemot ou France Telecom qui seraient potentiellement intéressés dans le milieu de l'audio civil.
Je ne connais pas trop les boites françaises dans le milieu audio, mais il faut savoir
que tu ne leur coùte qu' 1/3 environ d'un salaire d'ingénieur avec les aides (thèse CIFRE),
et c'est quand même très intéressant pour la boite ... bon courage!
Choc
Citation : France Telecom qui seraient potentiellement intéressés dans le milieu de l'audio civil.
Je l'ai connais tres bien, j'ai bossé 6 mois pour eux (departement Integration de la Parole et du son du centre de recherche basé a Lannion)...peut etre que je vais pouvoir continuer avec eux dans le domaine de la synthèse de son.
En fait, j'ai toujours voulus faire le DEA ATIAM de l'IRCAM, je me suis fais recallé apres la session d'entretien. Je pense que le jury se base trop sur la place de ton ecole d'ingé ou des choses comme ca. J'ai deja fais pas mal de truc en audio mais le jury s'en foutait royallement....ils preferent prendre quelqu'un venant d'une ecole placé 10 places au dessus de la tienne que de prendre quelqu'un de tres motivé avec un minimum d'experience en audio
Citation : c'est un document que tu écris ?
OUi, je vais prolongfer le document en abordant les themes que tu presentes (normalement je suis limité a 6 pages)...merci beaucoup
Site personnel: https://www.enib.fr/~choqueuse/
miles1981
Audio Toolkit: http://www.audio-tk.com/
Pov Gabou
Citation :
Pour un problème donné, pourquoi utiliser un RN et non pas une simple
modélisation polynomiale, ou même une ACP ou des SVMs ...
Les SVM, c'est plus a la mode
Concernant le neuron, ma petite idee, c'est qu'il utilise des methodes types approximations sur des representations redondantes, comme les matching pursuit (dont l'etape d'approximation peut etre vue comme une etapte d'update de reseaux de neurone).
miles1981
Audio Toolkit: http://www.audio-tk.com/
Pov Gabou
miles1981
Audio Toolkit: http://www.audio-tk.com/
Choc
Citation : Pourquoi un FIR ? Pourquoi pas un simple AR dont on sait facilement faire des filtres adaptatifs - voir les modems... - ?
Vous me faites mal au crane les gars
On peut obtenir facilement des filtres FIR ou filtre IIR avec des filtres adaptatifs (algo LMS, Newton etc) non
l'interet musical par FIR est limité (apres quelques essais de filtre adaptatif FIR)...
l'idée de Willy, emprunté au Neuron, d'apprentissage non-supervisé peut etre interessante..
Si j'ai bien compris le reseaux essaye de reconstruire en sortie un vecteur egal à l'entrée...le nombre de neurone de la couche cachée est inferieure aux nombres de neurones de sortie et d'entrée....
On obtient donc une sorte de compression du signal....qui peut etre resumé en deux etapes
entrée -> couche cachée (compression)
couche cachée -> sortie (decompression)
Je sais pas si j'ai bien saisit
Site personnel: https://www.enib.fr/~choqueuse/
Pov Gabou
Citation :
Ça a l'air assez costaud comme truc, quand même...
Ben visiblement, d'apres ce que j'en comprends, parce que moi je me tape la theorie, pour l'instant, c'est une maniere assez elegante de poser le probleme fondamental de la classification, le compromis bonne generalisation / bons resultats de classification, avec la notion de dimension de Vapnick qui permet de mettre une borne au risque risque theorique. En fait, c'est une amelioration par rapport au risque empirique, qui restait tres.... empirique, justement.
Tu peux voire la de la doc :
http://perso.enst.fr/~moulines/enseignement/masta/masta.html
Citation :
On obtient donc une sorte de compression du signal....qui peut etre resumé en deux etapes
Si on se place tres haut, j'ai l'impression que l'on se ramene toujours a un probleme de representation. Par exemple, les algo de type MP permettent de representer des espaces a l'aide de vecteurs qui ne sont pas independants ( exemple de base: vocoder de phase, avec des atomes sinusoidaux a enveloppe type fenetre de hamming, etc...). Ainsi, le meilleur algo que j'ai vu pour la detection d'harmonique jusqu'a maintenant, c'est un MP avec des atomes harmoniques: tu injectes dans tes vecteurs de 'base' un savoir a priori en relation avec ce que tu cherches. Le neuron doit avoir des bases de vecteurs fondamentaux et s'amuser avec ca.
Choc
Je sais pas si j'ai saisit leur fonctionnement car je pensais que ca pouvait uniquement réalsié des regions de sepration de type hyperplan
D'apres ce que j'ai compris dans le cas d'un probleme non lineairement séparable ou avec un ensemble d'apprentissage petit, les MLP par exemple ont a une region de separation qui peut etre proche des donnees marginales, le SVM resout ce probleme en considerant un nouveau critère d'erreur qui maximise la distance entre les données et la region de separation des classes ou un truc du genre
Dans le cas d'un ensemble d'apprentissage relativement petit ont se retrouve souvent dans le cas d'un problème lineairement séparable d'ou l'interet des SVM...
Site personnel: https://www.enib.fr/~choqueuse/
miles1981
Gabou > merci, je vais voir ça ;) Apparemment, d'après ce que j'en sais, c'est seulement les éléments près de la zone de transition qui feront évoluer la machine, les autres ne sont pas pris en compte.
Audio Toolkit: http://www.audio-tk.com/
Willy_77
Citation : Si j'ai bien compris le reseaux essaye de reconstruire en sortie un vecteur egal à l'entrée...le nombre de neurone de la couche cachée est inferieure aux nombres de neurones de sortie et d'entrée....
On obtient donc une sorte de compression du signal....qui peut etre resumé en deux etapes
entrée -> couche cachée (compression)
couche cachée -> sortie (decompression)
C'est exactement ça !
C'est le grand concurrent de l'ACP (Analyse en Composantes Principales)
Le coté génial, c'est qu'il te réduit le nombre de dimensions tout en gardant
l'information utile, mais comme c'est quand même un réseau, le modèle n'est pas
aussi rigide que dans le cas d'une ACP, et tu peux arriver à réduire l'espace de rprésentation là où l'ACP échoue ... !
Dans le cas de la synthèse, ce qui m'attire c'est la possibilité d'interpoler progressivement
les poids de plusieurs Diabolos pour passer d'une représentation à une autre mais dans
un espace complètement nouveau ...
Le problème c'est le codage des signaux en entrée ...
Choc
Site personnel: https://www.enib.fr/~choqueuse/
miles1981
Audio Toolkit: http://www.audio-tk.com/
- < Liste des sujets
- Charte