Stima media nel tempo polinomiale


20

Lascia che sia una funzione. Vogliamo stimare la media di , ovvero: .f E [ f ( n ) ] = 2 - nx { 0 , 1 } n f ( x )f:{0,1}n(2n,1]fE[f(n)]=2nx{0,1}nf(x)

NOTE: In the OP, the range of f was [0,1]. I changed this a bit for technical reasons. (This should simplify the problem; if not, forget it!)

Sia E l'algoritmo dello stimatore (randomizzato). Supponiamo che E abbia accesso in black box a f . Lo denotiamo con Ef .

Vi sono due condizioni:

1) Tempo di esecuzione dello stimatore: esiste un singolo polinomio p() tale che per tutto n e tutto f , il tempo di esecuzione di Ef(1n) è limitato da p(n)E[f(n)] .

2) Precisione dello stimatore con sicurezza δ : esiste un singolo polinomio q() , tale che per tutti n e tutti f , abbiamo 1q(n)<Ef(1n)E[f(n)]<q(n) con probabilità almeno δ .

NOTE: The confidence δ was not in the OP. The parameter δ is in (0,1), and may depend on n. For instance, it may be 1-1/2^n.

Esistono tali stimatori?

Contesto e motivazione

All'inizio non ho menzionato la mia motivazione poiché richiede una grande conoscenza di base. Ad ogni modo, per gli appassionati, lo descrivo brevemente: la necessità di tali stimatori emerge nel contesto di "Prove di abilità", come definito nel seguente articolo:

Mihir Bellare, Oded Goldreich. Dimostrando capacità computazionale , 1992. Manoscritto non pubblicato.

In particolare, nella parte inferiore della pagina 5, gli autori hanno assunto implicitamente l'esistenza di tali stimatori (Non si fa menzione della precisione e il tempo di esecuzione non è definito con precisione; tuttavia il contesto definisce chiaramente tutto.)

Il mio primo tentativo è stato quello di leggere " Un campione di campionatori --- Una prospettiva computazionale sul campionamento ". Riguarda un problema molto simile, ma la probabilità di errore definita è additiva, mentre la nostra è moltiplicativa. (Non ho letto completamente il documento, forse menziona ciò di cui ho bisogno da qualche parte.)

EDIT (secondo la richiesta di Tsuyoshi): in effetti, la definizione di "Prove di abilità computazionale" richiede l'esistenza di un "estrattore di conoscenza" il cui tempo di esecuzione (previsto) è . Dato che non conosciamo , vogliamo stimarlo; tuttavia ciò non deve modificare notevolmente il tempo di esecuzione: dovrebbe modificarlo fino a un fattore polinomiale. La condizione di precisione cerca di acquisire tale requisito. E[f(n)]p(n)E[f(n)]E[f(n)]


Non riesco a capire la condizione di precisione. Cosa impedisce all'algoritmo E di emettere sempre 1? Intendevi 1 / q (n) <(valore reale) / (valore stimato) <q (n)?
Tsuyoshi Ito,

Sembra che p (n) = q (n) = O (1) e l'algoritmo banale che genera "1" dovrebbe funzionare. Il tempo di esecuzione è O (1), che è limitato da . E la precisione è <= 1, che è inferiore a q (n). Ef(1n)p(n)E[f(n)]
Robin Kothari,

@Tsuyoshi & Robin: scusate ragazzi, ho perso una condizione nella precisione. Controlla adesso!
MS Dousti,

Inoltre, immagino che lo stimatore sia randomizzato (solo perché altrimenti sembra impossibile). È questo il caso? Inoltre, se lo è, cosa richiedono esattamente la condizione di tempo di funzionamento e la condizione di precisione?
Tsuyoshi Ito,

1
Penso di non capire chiaramente la domanda. Perché un campionatore ingenuo con un limite di chernoff non è un buon stimatore?
Sylvain Peyronnet,

Risposte:


15

EDIT: Questo risolve la versione del problema in cui f produce solo 0 o 1. Ma penso che la soluzione possa essere adattata per farla funzionare nel caso più generale.

Forse ho frainteso la domanda, ma questo non sembra troppo difficile.

Invece di stimare, la media, pensiamo di stimare il numero di 1s e chiamiamo quel numero k. Sia . Quindi la media è k / N. Si desidera stimare ciò all'interno di un fattore moltiplicativo polinomiale nel tempo O (N polillog (N) / k).N=2n

Penso che ciò possa essere fatto anche all'interno di qualsiasi fattore moltiplicativo costante. Ad esempio, supponiamo che si desideri stimare questo valore entro un fattore 2. Quindi l'output dell'algoritmo sarà compreso tra k / 2 e 2k.k

Disegnerò un algoritmo, che dovrebbe avere il tempo di esecuzione appropriato. Per prima cosa controlla se k è compreso tra N / 2 e N. Questo è facile, basta campionare alcuni valori casuali e se ottieni più di mezzo 1s, allora è in questo intervallo. Quindi hai un'approssimazione 2. In caso contrario, controlla se è compreso tra N / 4 e N / 2. E così via. Ogni volta che riduci l'intervallo, è più costoso stimare se k si trova in quell'intervallo. Ma il costo è inversamente proporzionale a quanto piccolo è l'intervallo.

Ad esempio, se si sta verificando se k è compreso tra e , è necessario eseguire query . Ad ogni modo, dopo aver ripetuto questa procedura abbastanza volte, dovresti ottenere l'intervallo in cui si trova k. Di 'k si trova tra e . Quindi k è circa . Quindi è circa k / N. Quindi in questo passaggio spenderemo le query O (k / N). Ma arrivare a questo passaggio ha richiesto q altri passaggi, ma questo è solo un ulteriore fattore di polilogo (N). Quindi il tempo di esecuzione complessivo è O (N polilogo (N) / k), per un'approssimazione di 2.N/2q2N/2qO(2q)N/2q2N/2qN/2q2q

(Uno dovrebbe effettivamente fare l'amplificazione degli errori per ottenere una precisione decente in ogni fase. Ma questo è solo un ulteriore fattore polilogo.)


La ragione per cui mi piace pensarci in questo processo in diverse fasi è che evidenzia il processo come un'ipotesi e un controllo precedente. Se qualcuno ti dicesse che è compreso tra e , allora potresti stimarlo con una precisione ancora maggiore conoscendo questo fatto, nel tempo promesso. Quindi dobbiamo eliminare il passaggio di un'ipotesi per . Questo viene fatto dalla ricerca binaria su tutti i possibili intervalli di quel tipo.KN/2q2n/2qK

Per farlo funzionare nel caso di output non booleani, invece di contare il numero di 1s, basta sommare i valori visti. Proverò a trovare un riferimento per dimostrare che funziona rigorosamente.


(1) Poiché la funzione f può assumere valori non integrali, probabilmente si desidera utilizzare la somma dei valori anziché il numero di 1s. (2) Dobbiamo stimare fase per fase? Immagino che possiamo farlo in una sola fase, solo ripetendo fino a quando la somma supera un polinomio fisso. Vedi anche il mio commento alla domanda.
Tsuyoshi Ito,

Oh, non ho notato che l'intervallo è [0,1]. Ho pensato che fosse {0,1}. Ma credo che la stessa procedura funzioni. Forse possiamo ridurre un problema all'altro poiché possiamo "contare" il numero di 1 in una posizione particolare della rappresentazione binaria dell'output con sufficiente precisione. Circa (2), penso che la tua procedura sia equivalente. Ci penso in questo modo poiché sembra un processo di indovinare e controllare, cioè, data una pessima stima di k, ottenerne uno migliore. Aggiungerò questo nella mia risposta.
Robin Kothari,

Concordo sul fatto che i due algoritmi sono essenzialmente gli stessi. Inoltre, come per [0,1] e {0,1}, il tuo algoritmo probabilmente funziona come indicato dopo aver sostituito ogni valutazione di un valore non integrale f (x) con un lancio della moneta (1 wp f (x) e 0 wp 1-f (x)).
Tsuyoshi Ito,

@Robin: grazie per la risposta. Qualcosa non è chiaro anche per me: hai detto: "Basta campionare alcuni valori casuali e se ottieni più di mezzo 1s, allora è in questo intervallo". Credo che questo debba essere quantificato: quanti campioni si traducono in quale precisione? (Ho cambiato OP per considerare tale confidenza. Altrimenti sarebbe impossibile progettare il campionatore richiesto!)
MS Dousti

@Sadeq: questo è un limite di chernoff. se ti aspetti che k sia n / 2 (una moneta equa, per esempio), puoi scrivere rapidamente un limite di coda per vedere più di n (1 + eps) / 2 e allo stesso modo per il limite inferiore.
Suresh Venkat,

3

Sia denoti i valori di f applicati a una sequenza infinita di campioni casuali (con sostituzione) da { 0 , 1 } n . Sia k il numero intero meno positivo in modo che k i = 1 f iM per un certo valore M , forse M = p o l y l o g ( n ) . Immagino che lo stimatore M /f1,f2,...f{0,1}nKΣio=1KfioMMM=polylog(n) dovrebbe realizzare ciò che vuoi.M/K

Per l'analisi non è possibile applicare i limiti di Chernoff direttamente alla variabile casuale ma esiste comunque un trucco che consente di utilizzare Chernoff. Lascia che μ denoti l'aspettativa sconosciuta E ( f ) . Trova le costanti k l o w e k h i g h (funzioni di μ ) in modo che con probabilità almeno 1 - δ abbiamo k l o w i = 1 f i < M e k hKμE(f)KlowKhioghμ1-δΣio=1Klowfio<M. Quelle somme difis possono essere delimitate con Chernoff. Ne consegue cheklow<k<khighcon probabilità almeno1-δe quindi lo stimatoreM/kè ben concentrato.Σio=1Khioghfio>MfioKlow<K<Khiogh1-δM/K

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.