Szacowanie średniej w czasie wielomianowym

20

Niech f:{0,1}n(2n,1] będzie funkcją. Chcemy oszacować średnią f ; to znaczy: E[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!)

Niech E będzie (randomizowanym) algorytmem estymatora. Załóżmy, że E ma dostęp do czarnej skrzynki do f . Oznaczamy to przez Ef .

Są dwa warunki:

1) Czas działania estymatora: Istnieje jeden wielomian p() taki, że dla wszystkich n i wszystkich f czas działania Ef(1n) jest ograniczony przez p(n)E[f(n)] .

2) Precyzja estymatora z pewnością δ : Istnieje jeden wielomian q() , taki, że dla wszystkich n i wszystkich f mamy 1q(n)<Ef(1n)E[f(n)]<q(n)z prawdopodobieństwem co najmniejδ.

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.

Czy istnieją takie estymatory?

Tło i motywacja

Na początku nie wspomniałem o mojej motywacji, ponieważ wymaga ona dużej wiedzy podstawowej. W każdym razie, dla entuzjastów, krótko to opisuję: Potrzeba takich estymatorów powstaje w kontekście „Dowodów zdolności”, jak określono w następującym artykule:

Mihir Bellare, Oded Goldreich. Proving Computational Ability , 1992. Niepublikowany rękopis.

W szczególności na dole strony 5 autorzy domyślnie zakładali istnienie takich estymatorów (nie ma wzmianki o precyzji, a czas działania nie jest precyzyjnie określony; jednak kontekst jasno wszystko określa).

Moja pierwsza próba polegała na przeczytaniu „ Próbki próbników --- perspektywa obliczeniowa próbkowania ”. Dotyczy bardzo podobnego problemu, ale zdefiniowane prawdopodobieństwo błędu jest addytywne, podczas gdy nasze jest multiplikatywne. (Nie przeczytałem w pełni tego artykułu, może wspomina gdzieś, czego potrzebuję.)

EDYCJA (zgodnie z prośbą Tsuyoshi): W rzeczywistości definicja „Dowodu zdolności obliczeniowej” wymaga istnienia „ekstraktora wiedzy”, którego (oczekiwany) czas działania wynosi . Ponieważ nie znamyE[f(n)], chcemy to oszacować; nie może to jednak znacząco zmienić czasu działania: powinno zmienić go na czynnik wielomianowy. Warunek dokładności próbuje uchwycić takie wymaganie.p(n)E[f(n)]E[f(n)]

MS Dousti
źródło
Nie rozumiem warunku precyzji. Co uniemożliwia algorytmowi E zawsze wyprowadzanie 1? Czy chodziło Ci o 1 / q (n) <(wartość rzeczywista) / (wartość szacunkowa) <q (n)?
Tsuyoshi Ito,
Wydaje się, że p (n) = q (n) = O (1) i trywialny algorytm który wyprowadza „1”, powinien działać. Jego czas działania to O (1), który jest ograniczony przez p ( n )Ef(1n) . I jego precyzja wynosi <= 1, czyli mniej niż q (n). p(n)E[f(n)]
Robin Kothari,
@Tsuyoshi & Robin: Przepraszam chłopaki, brakowało mi jednego warunku precyzji. Sprawdź to teraz!
MS Dousti
Wydaje mi się również, że estymator jest losowy (tylko dlatego, że inaczej wygląda inaczej). Czy tak jest w przypadku? A jeśli tak, to czego dokładnie wymagają warunek czasu wykonywania i warunek dokładności?
Tsuyoshi Ito
1
Myślę, że nie rozumiem jasno pytania. Dlaczego naiwny sampler z ograniczeniem Chernoffa nie jest dobrym oszacowaniem?
Sylvain Peyronnet

Odpowiedzi:

15

EDYCJA: Rozwiązuje to wersję problemu, w której f wyprowadza tylko 0 lub 1. Myślę jednak, że rozwiązanie można dostosować, aby działało w bardziej ogólnym przypadku.

Może źle zrozumiałem pytanie, ale nie wygląda to zbyt ostro.

Zamiast szacować średnią, zastanówmy się nad oszacowaniem liczby 1 i nazwijmy tę liczbę k. Niech . Więc średnia to k / N. Chcesz to oszacować w ramach wielomianowego współczynnika multiplikatywnego w czasie O (N polilog (N) / k).N=2n

Myślę, że można tego dokonać również w ramach dowolnego stałego współczynnika multiplikatywnego. Na przykład, powiedzmy, że chcesz to oszacować z dokładnością do 2. Współczynnik wyjściowy algorytmu będzie wynosił od k / 2 do 2k.k

Naszkicuję algorytm, który powinien mieć odpowiedni czas działania. Najpierw sprawdź, czy k jest pomiędzy N / 2 a N. To łatwe, po prostu próbkuj kilka losowych wartości, a jeśli otrzymasz więcej niż połowę 1, to w tym przedziale. Masz więc przybliżenie 2. Jeśli nie, sprawdź, czy jest pomiędzy N / 4 a N / 2. I tak dalej. Za każdym razem, gdy zmniejszasz interwał, bardziej kosztowne jest oszacowanie, czy k leży w tym zakresie. Ale koszt jest odwrotnie proporcjonalny do tego, jak mały jest odstęp.

Na przykład, jeśli sprawdzasz, czy wartość k wynosi od do 2 N / 2 q , musisz wykonać zapytania dotyczące O ( 2 q ) . W każdym razie, po powtórzeniu tej procedury wystarczająco wiele razy, powinieneś otrzymać przedział, w którym k leży. Powiedz k leży pomiędzy N / 2 q a 2 N / 2 q . Zatem k wynosi około N / 2 q . Więc 2 qN/2q2N/2qO(2q)N/2q2N/2qN/2q2qdotyczy k / N. Na tym etapie wydawalibyśmy zapytania O (k / N). Ale przejście do tego kroku wymagało q innych kroków, ale to tylko dodatkowy czynnik polilog (N). Zatem całkowity czas pracy wynosi O (N polilog (N) / k), dla przybliżenia 2.

(W rzeczywistości należałoby wykonać wzmocnienie błędu, aby uzyskać przyzwoitą precyzję na każdym etapie. Ale to tylko dodatkowy czynnik polilogu).


Powodem, dla którego lubię o tym myśleć w tym kilkuetapowym procesie, jest podkreślenie tego procesu jako odgadnięcie i sprawdzenie precedensu. Jeśli ktoś powiedział ci, że wynosi od N / 2 q do 2 n / 2 q , możesz to oszacować z jeszcze większą dokładnością, znając ten fakt, w obiecanym czasie. Musimy więc wyeliminować etap zgadywania k . Odbywa się to poprzez wyszukiwanie binarne we wszystkich możliwych interwałach tego typu.kN/2q2n/2qk

Aby to zadziałało w przypadku wyjść innych niż boolowskie, zamiast zliczać liczbę 1, po prostu zsumuj widoczne wartości. Spróbuję znaleźć odniesienie, aby pokazać, że to działa rygorystycznie.

Robin Kothari
źródło
(1) Ponieważ funkcja f może przyjmować wartości niecałkowite, prawdopodobnie chcesz użyć sumy wartości zamiast liczby 1s. (2) Czy musimy oceniać etap po etapie? Zgaduję, że możemy to zrobić w jednym etapie, po prostu powtarzając, aż suma przekroczy ustalony wielomian. Zobacz także mój komentarz do pytania.
Tsuyoshi Ito
Och, nie zauważyłem, że zakres wynosi [0,1]. Myślałem, że to {0,1}. Ale chyba ta sama procedura działa. Być może możemy zredukować jeden problem do drugiego, ponieważ możemy „policzyć” liczbę 1 w określonej pozycji binarnej reprezentacji wyniku z wystarczającą precyzją. O (2) myślę, że twoja procedura jest równoważna. Myślę o tym w ten sposób, ponieważ wydaje się to procesem zgadywania i sprawdzania, tj. Biorąc pod uwagę kiepskie oszacowanie k, uzyskaj lepszy. Dodam to do mojej odpowiedzi.
Robin Kothari,
Zgadzam się, że oba algorytmy są zasadniczo takie same. Podobnie, jak w przypadku [0,1] i {0,1}, twój algorytm prawdopodobnie działa tak, jak stwierdzono po zastąpieniu każdej oceny wartości niecałkowitej f (x) rzutem monety (1 wp f (x) i 0 wp 1 − f (x)).
Tsuyoshi Ito
@Robin: Dzięki za odpowiedź. Coś też jest dla mnie niejasne: Powiedziałeś: „Po prostu próbkuj kilka losowych wartości, a jeśli uzyskasz więcej niż połowę 1, to w tym przedziale”. Uważam, że należy to określić ilościowo: ile próbek daje dokładność? (Zmieniłem OP, aby wziąć pod uwagę takie zaufanie. W przeciwnym razie niemożliwe byłoby zaprojektowanie wymaganego samplera!)
MS Dousti
@Sadeq: to granica chernoffa. jeśli spodziewasz się, że k będzie wynosić n / 2 (na przykład uczciwa moneta), możesz szybko zapisać granicę ogona, aby zobaczyć więcej niż n (1 + eps) / 2 i podobnie dla dolnej granicy.
Suresh Venkat
3

f1,f2,f{0,1}nki=1kfiMMM=polylog(n)M/k

kμE(f)klowkhighμ1δja=1klowfaja<M. i ja=1khjasolhfaja>M.. Te sumyfajamożna ograniczyć za pomocą Chernoffa. Wynika, żeklow<k<khigh with probability at least 1δ and therefore the estimator M/k is well concentrated.

Warren Schudy
źródło