Domanda

Per uno studio, ho un sistema (Black-Box) che richiede un ingresso sotto forma di un array con 4 valori (input_array) e a seconda dei valori che produce un segnale di uscita (risposta).

 Block Diagram

Il input_array contiene 4 valori reali (parametri P1-4), con intervalli indicati e separati. La qualità del segnale di uscita viene misurata calcolando il suo rapporto segnale-rumore (SNR). Ogni variante input_array può essere applicata al sistema una volta ogni 3 secondi (non più veloce di 3 s).

Devo trovare il input_array ottimale che produce il più grande SNR (preferibilmente, nella minor quantità di tempo). Cioè, la combinazione dei 4 valori reali che massimizzano la SNR (una soluzione ottimale è sufficiente; una soluzione assoluta è accolta favorevolmente, ma non necessariamente richiesta). Se utile nel trovare una soluzione, i 4 parametri possono essere discretizzati, ma i loro intervalli includono centinaia di possibili valori (discreti).

I valori possono essere considerati indipendenti, nessuna conoscenza preliminare è disponibile per loro tranne che le loro gamme e la loro influenza individuale sullo SNR è sconosciuta. L'SNR è un valore reale che è influenzato dal rumore (quindi, per lo stesso input_array applicato consecutivamente, può avere valori diversi (ma vicini)).

Quale soluzione / i può essere applicata a questo problema?

    .
  1. La soluzione più semplice che viene in mente è di eseguire un Ricerca esauriente del dominio dei parametri , ma non è applicabile perché il tempo richiesto sarà troppo lungo.

  2. Inizialmente, stavo considerando di applicare l'apprendimento Rinforzo Algoritmi per spazi d'azione continui, considerando ciascuno parametro un'azione separata e restituire una ricompensa positiva / negativa Quando la SNR aumenta / diminuisce (ad esempio, +/- 1). Tuttavia, penso loro richiederebbe troppo tempo; Nondimeno, posso fermare l'apprendimento Processo in qualsiasi momento ritengo che il input_array produce un SNR accettabile

  3. Dopo aver pensato ulteriore, questo problema sembrava un problema di ricerca, Quindi ho pensato che (euristico) alla ricerca di algoritmi potrebbe essere appropriato.

  4. Qualcuno ha un'idea quale sarebbe la soluzione più appropriata a questo problema?

È stato utile?

Soluzione

Sembra che tu abbia una funzione $ f: \ mathbb {r} ^ 4 \ to \ mathbb {r} $ e vuoi trovare $ x $ che massimizza $ f (x) $ , ma non puoi calcolare $ f $ direttamente; Puoi solo ottenere una stima rumorosa del suo valore.

Molti Metodi di ottimizzazione può essere adattato a questa impostazione. Una cosa semplice che potresti provare sarebbe un metodo iterativo come scendenza gradiente o Metodo di Newton , ma con più iterazioni per tenere conto del rumore; L'idea è che il rumore di cui la media verrà data abbastanza iterazioni.

Ad esempio, la gradiente è richiede di essere in grado di calcolare il gradiente $ \ nabla f (x) $ per qualsiasi punto della tua scelta. Nel tuo caso, questo può essere fatto stima di

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

dove $ e_1= (1,0,0,0) $ , $ e_2= (0,1, 0,0) $ , e così via. Ora data la possibilità di calcolare $ f $ su un punto a scelta, computing $ f $ su 8 ingressi, è possibile stimare $ \ nabla f (x) $ e quindi prendere un singolo passo della salita di gradiente; e ripeti fino alla convergenza.

Un approccio più sofisticato sarebbe quello di provare a utilizzare l'ottimizzazione bayesiana, come Google Vizier .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top