Pregunta

Para un estudio, tengo un sistema (caja negra) que requiere una entrada en forma de matriz con 4 valores (input_array) y dependiendo de sus valores produce una señal de salida (respuesta).

Block diagram

El input_array contiene 4 valores reales (parámetros P1-4), con rangos dados y separados.La calidad de la señal de salida se mide calculando su relación señal-ruido (SNR).Cada input_array La variante se puede aplicar al sistema una vez cada 3 segundos (no más rápido que 3 s).

tengo que encontrar el optimo input_array que produce la mayor SNR (preferiblemente, en la menor cantidad de tiempo).Es decir, la combinación de los 4 valores reales que maximiza la SNR (una solución óptima es suficiente;una solución absoluta es bienvenida, pero no necesariamente necesaria).Si es útil para encontrar una solución, los 4 parámetros se pueden discretizar, pero sus rangos incluirían cientos de valores posibles (discretos).

Los valores pueden considerarse independientes, no se dispone de conocimiento previo sobre ellos excepto sus rangos y se desconoce su influencia individual en la SNR.La SNR es un valor real que está influenciado por el ruido (por lo tanto, para el mismo input_array aplicado consecutivamente, puede tener valores diferentes (pero cercanos).

¿Qué solución(es) se puede(n) aplicar a este problema?

  1. La solución más sencilla que se nos ocurre es realizar unabúsqueda exhaustiva del dominio de parámetros, pero no es aplicable porque el tiempo requerido será demasiado largo.

  2. Inicialmente, estaba considerando postularme aprendizaje reforzadoAlgoritmos para espacios de acción continua, al considerar cada parámetro una acción separada y devolver una recompensa positiva/negativa cuando la SNR aumenta/disminuye (por ejemplo, +/- 1).Sin embargo, creo que requerirían demasiado tiempo;Sin embargo, puedo detener el proceso de aprendizaje en cualquier momento que considero que el input_array produce una SNR aceptable.

  3. Después de pensar aún más, este problema parecía un problema de búsqueda, así que pensé que algoritmos de búsqueda (heurísticos) puede ser apropiado.

¿Alguien tiene una idea de cuál sería la solución más adecuada a este problema?

¿Fue útil?

Solución

Parece que tienes una función. $f:\mathbb{R}^4 \a \mathbb{R}$ y quieres encontrar $x$ que maximiza $f(x)$, pero no puedes calcular $f$ directamente;sólo se puede obtener una estimación ruidosa de su valor.

Muchos métodos de optimización se puede adaptar a este entorno.Una cosa sencilla que podrías probar sería un método iterativo como ascenso de gradiente o El método de Newton, pero con más iteraciones para tener en cuenta el ruido;la idea es que el ruido se promediará con suficientes iteraciones.

Por ejemplo, el ascenso del gradiente requiere que puedas calcular el gradiente $ abla f (x)$ para cualquier punto de su elección.En su caso, esto se puede hacer estimando

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

dónde $e_1=(1,0,0,0)$, $e_2=(0,1,0,0)$, etcétera.Ahora, dada la capacidad de calcular $f$ en un punto de su elección, calculando $f$ en 8 entradas, puedes estimar $ ablaf(x)$ y luego dar un solo paso de ascenso de gradiente;y repetir hasta convergencia.

Un enfoque más sofisticado sería intentar utilizar la optimización bayesiana, como Visir de Google.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top