Estimation de la moyenne en temps polynomial


20

Soit une fonction. Nous voulons estimer la moyenne de ; c'est-à-dire: .f E [ f ( n ) ] = 2 - nx { 0 , 1 } n f ( x )F:{0,1}n(2-n,1]FE[F(n)]=2-nX{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!)

Soit l'algorithme d'estimation (randomisé). Supposons que ait accès à la boîte noire à . Nous désignons cela par .E f E fEEfEf

Il y a deux conditions:

1) Temps d'exécution de l'estimateur: Il existe un seul polynôme tel que pour tout et tout , le temps d'exécution de est délimité par .n f E f ( 1 n ) p ( n )p()nfEf(1n)p(n)E[f(n)]

2) Précision de l'estimateur avec confiance :δ Il existe un seul polynôme , tel que pour tout et tout , on a avec probabilité au moins \ delta .n f 1q()nfδ1q(n)<Ef(1n)E[f(n)]<q(n)δ

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.

De tels estimateurs existent-ils?

Contexte et motivation

Je n'ai pas mentionné ma motivation au début car elle nécessite beaucoup de connaissances de base. Quoi qu'il en soit, pour les passionnés, je le décris brièvement: Le besoin de tels estimateurs se pose dans le contexte des «preuves de capacité», telles que définies dans l'article suivant:

Mihir Bellare, Oded Goldreich. Proving Computational Ability , 1992. Manuscrit non publié.

Plus précisément, au bas de la page 5, les auteurs ont implicitement supposé l'existence de tels estimateurs (il n'y a aucune mention de précision, et le temps d'exécution n'est pas défini avec précision; mais le contexte définit clairement tout.)

Ma première tentative a été de lire « Un échantillon d'échantillonneurs --- Une perspective informatique sur l'échantillonnage ». Il s'agit d'un problème très similaire, mais la probabilité d'erreur définie est additive, tandis que la nôtre est multiplicative. (Je n'ai pas entièrement lu le document, peut-être qu'il mentionne ce dont j'ai besoin quelque part.)

EDIT (selon la demande de Tsuyoshi): En fait, la définition de "preuves de capacité de calcul" nécessite l'existence d'un "extracteur de connaissances" dont le temps d'exécution (prévu) est de . Puisque nous ne connaissons pas , nous voulons l'estimer; cependant, cela ne doit pas modifier considérablement le temps de fonctionnement: il doit le changer jusqu'à un facteur polynomial. La condition de précision tente de capturer une telle exigence. E[f(n)]p(n)E[f(n)]E[f(n)]


Je ne comprends pas la condition de précision. Qu'est-ce qui empêche l'algorithme E de toujours sortir 1? Voulez-vous dire 1 / q (n) <(valeur vraie) / (valeur estimée) <q (n)?
Tsuyoshi Ito du

Il semble que p (n) = q (n) = O (1) et l'algorithme trivial qui produit "1" devrait fonctionner. Son temps d'exécution est O (1), qui est délimité par p ( n )EF(1n) . Et sa précision est <= 1, ce qui est inférieur à q (n). p(n)E[F(n)]
Robin Kothari

@Tsuyoshi & Robin: Désolé les gars, j'ai manqué une condition dans la précision. Découvrez-le maintenant!
MS Dousti

De plus, je suppose que l'estimateur est aléatoire (simplement parce qu'il semble impossible autrement). Est-ce le cas? Si tel est le cas, que nécessitent exactement la condition de durée de fonctionnement et la condition de précision?
Tsuyoshi Ito du

1
Je pense que je ne comprends pas clairement la question. Pourquoi un échantillonneur naïf avec une limite de chernoff n'est pas un bon estimateur?
Sylvain Peyronnet

Réponses:


15

EDIT: Cela résout la version du problème où f ne produit que 0 ou 1. Mais je pense que la solution peut être adaptée pour la faire fonctionner pour le cas plus général.

J'ai peut-être mal compris la question, mais cela ne semble pas trop difficile.

Au lieu d'estimer la moyenne, pensons à estimer le nombre de 1 et appelons ce nombre k. Soit . La moyenne est donc k / N. Vous voulez estimer cela dans un facteur multiplicatif polynomial dans le temps O (N polylog (N) / k).N=2n

Je pense que cela peut être fait à l'intérieur de tout facteur multiplicatif constant aussi. Par exemple, supposons que vous souhaitiez estimer cela à un facteur égal à 2. Ainsi, la sortie de l'algorithme sera comprise entre k / 2 et 2k.k

Je vais esquisser un algorithme, qui devrait avoir le temps d'exécution approprié. Vérifiez d'abord si k est compris entre N / 2 et N. C'est facile, il suffit d'échantillonner quelques valeurs aléatoires et si vous obtenez plus de la moitié des 1, alors c'est dans cet intervalle. Vous avez donc une approximation 2. Sinon, vérifiez s'il se situe entre N / 4 et N / 2. Etc. Chaque fois que vous réduisez l'intervalle, il est plus coûteux d'estimer si k se situe dans cette plage. Mais le coût est inversement proportionnel à la taille de l'intervalle.

Par exemple, si vous vérifiez si k est compris entre et 2 N / 2 q , alors vous devez effectuer environ O ( 2 q ) requêtes. Quoi qu'il en soit, après avoir répété cette procédure suffisamment de fois, vous devriez obtenir l'intervalle dans lequel se trouve k. Disons que k se situe entre N / 2 q et 2 N / 2 q . Alors k est approximativement N / 2 q . Donc 2 qN/2q2N/2qO(2q)N/2q2N/2qN/2q2qest d'environ k / N. Donc, dans cette étape, nous dépenserions des requêtes O (k / N). Mais pour arriver à cette étape, il fallait q d'autres étapes, mais ce n'est qu'un facteur polylog (N) supplémentaire. Le temps de fonctionnement global est donc O (N polylog (N) / k), pour une approximation 2.

(Il faudrait en fait faire une amplification d'erreur pour obtenir une précision décente à chaque étape. Mais ce n'est qu'un facteur polylog supplémentaire.)


La raison pour laquelle j'aime à y penser dans ce processus en plusieurs étapes, c'est qu'il met en évidence le processus comme une supposition et une vérification. Si quelqu'un vous a dit que est compris entre N / 2 q et 2 n / 2 q , alors vous pourriez l'estimer avec une précision encore meilleure en sachant ce fait, dans le délai promis. Nous devons donc éliminer l'étape consistant à donner une estimation de k . Cela se fait par une recherche binaire sur tous les intervalles possibles de ce type.kN/2q2n/2qk

Pour que cela fonctionne pour le cas des sorties non booléennes, au lieu de compter le nombre de 1, additionnez simplement les valeurs vues. Je vais essayer de trouver une référence pour montrer que cela fonctionne rigoureusement.


(1) Puisque la fonction f peut prendre des valeurs non intégrales, vous souhaiterez probablement utiliser la somme des valeurs au lieu du nombre de 1. (2) Faut-il estimer étape par étape? Je suppose que nous pouvons le faire en une seule étape, en répétant simplement jusqu'à ce que la somme dépasse un polynôme fixe. Voir aussi mon commentaire sur la question.
Tsuyoshi Ito du

Oh, je n'ai pas remarqué que la plage est [0,1]. Je pensais que c'était {0,1}. Mais je suppose que la même procédure fonctionne. Peut-être pouvons-nous réduire un problème à l'autre car nous pouvons "compter" le nombre de 1 dans une position particulière de la représentation binaire de la sortie avec suffisamment de précision. À propos de (2), je pense que votre procédure est équivalente. J'y pense de cette façon car cela ressemble à un processus de supposition et de vérification, c'est-à-dire, étant donné une mauvaise estimation de k, en obtenir un meilleur. Je vais ajouter ceci dans ma réponse.
Robin Kothari

Je suis d'accord que les deux algorithmes sont essentiellement les mêmes. De plus, comme pour [0,1] et {0,1}, votre algorithme fonctionne probablement comme indiqué après avoir remplacé chaque évaluation d'une valeur non intégrale f (x) par un lancer de pièce (1 wp f (x) et 0 wp 1 − f (x)).
Tsuyoshi Ito

@Robin: Merci pour la réponse. Quelque chose n'est pas clair pour moi: vous avez dit: "Échantillonnez simplement quelques valeurs aléatoires et si vous obtenez plus de la moitié des 1, alors c'est dans cet intervalle." Je crois que cela doit être quantifié: combien d'échantillons donne quelle précision? (J'ai changé d'OP pour tenir compte d'une telle confiance. Sinon, il serait impossible de concevoir l'échantillonneur requis!)
MS Dousti

@Sadeq: c'est une limite chère. si vous vous attendez à ce que k soit n / 2 (une pièce de monnaie équitable, par exemple), alors vous pouvez rapidement écrire une limite de queue pour voir plus de n (1 + eps) / 2 et de même pour la borne inférieure.
Suresh Venkat

3

Soit désignent les valeurs de f appliquées à une séquence infinie d'échantillons aléatoires (avec remplacement) de { 0 , 1 } n . Soit k le nombre entier le moins positif tel que k i = 1 f iM pour une valeur M , peut-être M = p o l y l o g ( n ) . Je suppose que l'estimateur M /F1,F2,F{0,1}nkje=1kFjeMMM=polylog(n) devrait accomplir ce que vous voulez.M/k

Pour l'analyse, vous ne pouvez pas appliquer les limites de Chernoff directement à la variable aléatoire mais il y a une astuce pour vous permettre d'utiliser quand même Chernoff. Soit μ la valeur de l'espérance inconnue E ( f ) . Trouver les constantes k l o w et k h i g h (fonctions de μ ) de sorte qu'avec une probabilité d'au moins 1 - δ nous avons k l o w i = 1 f i < M et k hkμE(F)klowkhjeghμ1-δje=1klowFje<M. Ces sommes defis peuvent être limitées à l'aide de Chernoff. Il s'ensuit queklow<k<khighavec une probabilité d'au moins1-δet donc l'estimateurM/kest bien concentré.je=1khjeghFje>MFjeklow<k<khjegh1-δM/k

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.