Question

Pour une étude, j'ai un système (boîte noire) qui nécessite une entrée sous la forme d'un tableau de 4 valeurs (input_array) et en fonction de leurs valeurs, il se produit une sortie (réponse) du signal.

Block diagram

L' input_array contient 4 valeurs réelles (paramètres P1-4), avec le et les plages séparées.Le signal de sortie de qualité est mesurée par le calcul de son signal-à-bruit (SNR).Chaque input_array variante peut être appliqué pour le système une fois toutes les 3 secondes (pas plus vite que 3 s).

J'ai pour trouver le meilleur input_array qui produit les plus grands SNR (de préférence, dans le minimum de temps).C'est la combinaison des 4 valeurs réelles qui maximise le rapport signal sur bruit (une solution optimale est suffisant;absolue solution est la bienvenue, mais pas forcément nécessaire).Si utile dans la recherche d'une solution, les 4 paramètres peuvent être discrétisées, mais leurs gammes comprendrait des centaines de possibilités (discret) des valeurs.

Les valeurs peuvent être considérés comme indépendants, aucune connaissance préalable n'est disponible pour eux à l'exception de leurs gammes, et leur influence sur le SNR est inconnue.Le SNR est une valeur réelle, qui est influencée par le bruit (ainsi, pour la même input_array appliqués de façon consécutive, il peut avoir différentes (mais proches) valeurs).

Quelle est la solution(s) peut être appliquée à ce problème?

  1. La solution la plus simple qui vient à l'esprit consiste à effectuer une la recherche exhaustive des paramètres de domaine, mais il n'est pas applicable parce que le temps requis peut être trop long.

  2. Au départ, j'envisageais de l'application de l'apprentissage par renforcement algorithmes pour l'action continue des espaces, en tenant compte de chacun paramètre d'une autre action et le retour positif/négatif de la récompense lorsque le SNR augmente/diminue (par exemple, +/-1).Cependant, je pense qu'ils faudrait trop de temps;néanmoins, je peux arrêter de l'apprentissage à tout moment, je considère que l' input_array produit un acceptable SNR.

  3. Après réflexion, ce problème est apparu comme un problème de recherche, donc j'ai pensé que (heuristique) algorithmes de recherche peut-être approprié.

Quelqu'un a une idée de ce qui serait la solution la plus appropriée à ce problème?

Était-ce utile?

La solution

Il semble que vous avez une fonction $f:\mathbb{R}^4 o \mathbb{R}$ et vous voulez trouver $x$ qui maximise $f(x)$, mais vous ne pouvez pas calculer $f$ directement;vous ne pouvez obtenir un bruyant estimation de sa valeur.

De nombreux les méthodes d'optimisation peut être adapté à ce paramètre.Une chose simple que vous pourriez essayer serait une méthode itérative comme gradient de montée ou La méthode de Newton, mais avec plus d'itérations de compte pour le bruit;l'idée est que le bruit sera la moyenne étant donné un nombre suffisant d'itérations.

Par exemple, le gradient de montée nécessite que vous soyez en mesure de calculer le gradient $ abla f (x)$ pour n'importe quel point de votre choix.Dans votre cas, cela peut être fait par l'estimation de

$$ abla f(x) = ((f(x+e_1)-f(x-e_1))/2, \dots, f(x+e_4)-f(x-e_4))/2),$$

$e_1=(1,0,0,0)$, $e_2=(0,1,0,0)$, et ainsi de suite.Maintenant, compte tenu de la capacité de calculer $f$ sur un point de votre choix, par le calcul $f$ sur les 8 entrées, vous pouvez estimer $ abla f(x)$ et puis faire un pas de gradient de montée;et répétez jusqu'à convergence.

Une approche plus sophistiquée serait d'essayer en utilisant Bayésienne d'optimisation, tels que Google Vizir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top