Discussione:
Approssimazione per erf
(troppo vecchio per rispondere)
Tetis
2012-03-03 22:04:47 UTC
Permalink
Cercando manualmente una funzione semplice che approssimasse la
funzione d'errore e giocando con la sigmoide 1/(1+e^x) con un programma
di plot che implementa erf ho trovato una combinazione di parametri non
malvagia:

1-2/(1+e^(5x/2))

Era nota? E' inutile?
Pangloss
2012-03-04 09:41:07 UTC
Permalink
Post by Tetis
Cercando manualmente una funzione semplice che approssimasse la
funzione d'errore e giocando con la sigmoide 1/(1+e^x) con un programma
di plot che implementa erf ho trovato una combinazione di parametri non
1-2/(1+e^(5x/2))
Era nota? E' inutile?
Da Tetis siamo abituati a leggere interventi di ben maggiore spessore!
Che i grafici di Erf(x) e di Tanh(x) (o meglio Tanh(a*x) con a opportuno)
abbiano una vaga rassomiglianza appare certamente intuitivo a molti, ma
altrettanto certamente e' un'osservazione inutile... ;-)
--
Elio Proietti
Valgioie (TO)
cometa_luminosa
2012-03-04 10:46:54 UTC
Permalink
Post by Pangloss
Post by Tetis
Cercando manualmente una funzione semplice che approssimasse la
funzione d'errore e giocando con la sigmoide 1/(1+e^x) con un programma
di plot che implementa erf ho trovato una combinazione di parametri non
1-2/(1+e^(5x/2))
Era nota? E' inutile?
Da Tetis siamo abituati a leggere interventi di ben maggiore spessore!
Che i grafici di Erf(x) e di Tanh(x) (o meglio Tanh(a*x) con a opportuno)
abbiano una vaga rassomiglianza appare certamente intuitivo a molti, ma
altrettanto certamente e' un'osservazione inutile...            ;-)
Ei, calma, non ci sminuire il Tetis, per favore!
:-))

Questa e' piu' carina (come grafico soltanto):

1 - 2/(1+e^(100x))

Incollare nel campo di ricerca di google.
Giorgio Pastore
2012-03-04 10:58:12 UTC
Permalink
... ho trovato una combinazione di parametri non
Post by Pangloss
Post by Tetis
1-2/(1+e^(5x/2))
Era nota? E' inutile?
Da Tetis siamo abituati a leggere interventi di ben maggiore spessore!
Che i grafici di Erf(x) e di Tanh(x) (o meglio Tanh(a*x) con a opportuno)
abbiano una vaga rassomiglianza appare certamente intuitivo a molti, ma
altrettanto certamente e' un'osservazione inutile... ;-)
Tetis non ha fatto un' osservazione intuitivo/qualitativa sulla
somiglianza tra erf e tanh, nel qual caso il tuo commento poteva essere
giustificato. Ha proposto una formula con dei coefficienti numerici e
per di piu' costituita da valori "semplici". L' osservazione non e'
quindi inutile.

Nel merito, sul fatto che sia nota, non so, proverei a cercare sull'
Abramowitz & Stegun. Dal punto di vista pratico, ovviamente l' utilita'
e' legata all' accuratezza. La mia sensazione e' che potrebbe avere una
limitata utilita' per rapide stime numeriche. Per calcoli numerici
intensivi, se la velocita' e' cruciale si preferisce utilizzare una
semplice formula di interpolazione (operazioni elementari invece di
"chiamata a funzione"). Per stime legata a maggiorazioni, ovviamente
risente di un andamento troppo "lento" dell' esponenziale rispetto all' erf.

Giorgio
superpollo
2012-03-04 11:33:06 UTC
Permalink
Post by Giorgio Pastore
... ho trovato una combinazione di parametri non
Post by Pangloss
Post by Tetis
1-2/(1+e^(5x/2))
Era nota? E' inutile?
Da Tetis siamo abituati a leggere interventi di ben maggiore spessore!
Che i grafici di Erf(x) e di Tanh(x) (o meglio Tanh(a*x) con a opportuno)
abbiano una vaga rassomiglianza appare certamente intuitivo a molti, ma
altrettanto certamente e' un'osservazione inutile... ;-)
Tetis non ha fatto un' osservazione intuitivo/qualitativa sulla
somiglianza tra erf e tanh, nel qual caso il tuo commento poteva essere
giustificato. Ha proposto una formula con dei coefficienti numerici e
per di piu' costituita da valori "semplici". L' osservazione non e'
quindi inutile.
Nel merito, sul fatto che sia nota, non so, proverei a cercare sull'
Abramowitz & Stegun. Dal punto di vista pratico, ovviamente l' utilita'
e' legata all' accuratezza. La mia sensazione e' che potrebbe avere una
limitata utilita' per rapide stime numeriche. Per calcoli numerici
intensivi, se la velocita' e' cruciale si preferisce utilizzare una
semplice formula di interpolazione (operazioni elementari invece di
"chiamata a funzione"). Per stime legata a maggiorazioni, ovviamente
risente di un andamento troppo "lento" dell' esponenziale rispetto all' erf.
ecco il mio contributo minimo alla discussione. ho preso una ventina di
campioni equispaziati da x=0 a x=2 per erf(x):

0 0
0.1 0.112463
0.2 0.222703
0.3 0.328627
0.4 0.428392
0.5 0.5205
0.6 0.603856
0.7 0.677801
0.8 0.742101
0.9 0.796908
1 0.842701
1.1 0.880205
1.2 0.910314
1.3 0.934008
1.4 0.952285
1.5 0.966105
1.6 0.976348
1.7 0.98379
1.8 0.989091
1.9 0.99279
2 0.995322

e ho provato a fittare con un algoritmo standard questi dati con la
funzione "1-a/(1+exp(b*x))" rispetto ai parametri "a" e "b". dopo
quattro iterazioni ottengo a=2.04 b=2.44 con un chiquadro ridotti di
inferiore a 0.0002

non siamo lontani dalla funzione proposta da tetis. dal grafico:

http://imagebin.org/index.php?mode=image&id=201942

in cui la tratteggiata indica la funzione di tetis, si puo' notare che
la sua funzione approssima meglio i dati nella seconda parte
dell'intervallo, quella fittata li approssima meglio nella prima.

SE&O

bye
--
L' IP di Roma appartiene alla Tunze S.P.A.
cometa_luminosa
2012-03-05 19:29:04 UTC
Permalink
Post by superpollo
http://imagebin.org/index.php?mode=image&id=201942
in cui la tratteggiata indica la funzione di tetis, si puo' notare che
la sua funzione approssima meglio i dati nella seconda parte
dell'intervallo, quella fittata li approssima meglio nella prima.
Allora facciamo una media aritmetica delle due e cosi' accontentiamo
tutti :-)
Tetis
2012-03-10 13:35:12 UTC
Permalink
Post by cometa_luminosa
Post by superpollo
http://imagebin.org/index.php?mode=image&id=201942
in cui la tratteggiata indica la funzione di tetis, si puo' notare che
la sua funzione approssima meglio i dati nella seconda parte
dell'intervallo, quella fittata li approssima meglio nella prima.
Allora facciamo una media aritmetica delle due e cosi' accontentiamo
tutti :-)
sigmoidal wavelets :-)

Pangloss
2012-03-04 16:51:50 UTC
Permalink
Post by Giorgio Pastore
Tetis non ha fatto un' osservazione intuitivo/qualitativa sulla
somiglianza tra erf e tanh, nel qual caso il tuo commento poteva essere
giustificato. Ha proposto una formula con dei coefficienti numerici e
per di piu' costituita da valori "semplici". L' osservazione non e'
quindi inutile.
Suppongo che tutti abbiano notato che:

1 - 2/(1+e^(5x/2)) = tanh(5x/4)

Se Tetis non si riduce ad un'osservazione intuitivo/qualitativa riguardo
alla ben nota "somiglianza" tra i grafici di erf e tanh, evidentemente mi
sfugge qualcosa di piu' profondo. Cosa?
--
Elio Proietti
Valgioie (TO)
Tetis
2012-03-04 16:52:58 UTC
Permalink
Post by Giorgio Pastore
... ho trovato una combinazione di parametri non
Post by Pangloss
Post by Tetis
1-2/(1+e^(5x/2))
Era nota? E' inutile?
Da Tetis siamo abituati a leggere interventi di ben maggiore spessore!
Che i grafici di Erf(x) e di Tanh(x) (o meglio Tanh(a*x) con a opportuno)
abbiano una vaga rassomiglianza appare certamente intuitivo a molti, ma
altrettanto certamente e' un'osservazione inutile... ;-)
Tetis non ha fatto un' osservazione intuitivo/qualitativa sulla somiglianza
tra erf e tanh, nel qual caso il tuo commento poteva essere giustificato. Ha
proposto una formula con dei coefficienti numerici e per di piu' costituita
da valori "semplici". L' osservazione non e' quindi inutile.
Nel merito, sul fatto che sia nota, non so, proverei a cercare sull'
Abramowitz & Stegun.
E' proprio perché avevo provato ad usare alcune interpolazioni
polinomiali-esponenziali da quel volume (accuratissime) che mi ero poi
rivolto ad una approssimazione più semplice.
Post by Giorgio Pastore
Dal punto di vista pratico, ovviamente l' utilita' e'
legata all' accuratezza. La mia sensazione e' che potrebbe avere una limitata
utilita' per rapide stime numeriche.
Dipende infatti dall'intervallo d'interesse, per gli andamenti
asintotici nelle code è pessima, a me invece importa che vada bene
nell'intervallo fino ad una frazione significativa (diciamo entro il 2%
di area complementare della gaussiana associata) cioè per y da 0.02 a
0.98. Per una prima stima ho usato una molto più semplice e rozza
approssimazione lineare a tratti (del tipo che si usa in ingegneria
elettronica per le caratteristiche dei diodi) come perfezionamento
dell'approssimazione on/off.

In pratica quello che devo sturiare, in prima approssimazione è
descritto da una somma del tipo:

(k+erf(-a0+a)+erf(-a0+2a)+erf(-a0+3a)+...+erf(-a0+k a))/2k

k è una costante, mentre a ed a0 sono variabili ed io voglio una stima
di turn-on legato a questa somma al variare di a ed a0. Per piccoli
valori di a con a0 = 0 ad esempio risulterebbe un andamento asintotico:

[k+(k(k+1))a/sqrt(pi)]/(2k)

ma ad un certo punto l'andamento, al crescere di a diventa:

1

Il problema concreto comunque consiste essenzialmente nello studiare la
transizione al variare di a0 (è più complicato ma per accennare va
bene) in particolare quando il valor medio della somma vale una
frazione significativa dell'unità, questa frazione può variare fra il
2% ed il 40%.

Se a0 è negativo ed inizialmente grande in modulo rispetto alla
larghezza della erf, allora la somma vale zero finché ka-a0 è a sua
volta spostato molto a sinistra dello zero. Se faccio l'approssimazione
lineare ottengo un andamento quadratico in a0, ma l'andamento corretto
non somiglia affatto ad una parabola. Con questa approssimazione riesco
invece a stimare discretamente bene il punto di switch.

(in concreto da un termine all'altro cambia la larghezza della
gaussiana ed anche la spaziatura fra i termini non è costante)
Post by Giorgio Pastore
Per calcoli numerici intensivi, se la
velocita' e' cruciale si preferisce utilizzare una semplice formula di
interpolazione (operazioni elementari invece di "chiamata a funzione").
Ricordo le funzioni di smearing nella statistica elettronica e per
altri problemi di statistica degli eventi rari, qui invece sono nel
regime degli eventi frequenti.

Comunque vi dico anche che in questo caso il contesto del problema è
pressoché ludico. Magari in seguito, a soluzioni pubblicate, vi
racconto tutta la questione e scoprirete subito che questo aspetto è
marginale e magari lo tratterete senza le complicazioni in cui mi sono
imbattuto.
Post by Giorgio Pastore
Per
stime legata a maggiorazioni, ovviamente risente di un andamento troppo
"lento" dell' esponenziale rispetto all' erf.
Infatti, in quel caso sono preferibili le approssimazioni di Taylor o
altre approssimazioni ad hoc che convergono un poco più velocemente.
Post by Giorgio Pastore
Giorgio
Tetis
2012-03-04 17:21:03 UTC
Permalink
Post by Pangloss
Post by Tetis
Cercando manualmente una funzione semplice che approssimasse la
funzione d'errore e giocando con la sigmoide 1/(1+e^x) con un programma
di plot che implementa erf ho trovato una combinazione di parametri non
1-2/(1+e^(5x/2))
Era nota? E' inutile?
Da Tetis siamo abituati a leggere interventi di ben maggiore spessore!
Che i grafici di Erf(x) e di Tanh(x) (o meglio Tanh(a*x) con a opportuno)
abbiano una vaga rassomiglianza appare certamente intuitivo a molti, ma
altrettanto certamente e' un'osservazione inutile... ;-)
Beh quel che dici mi conforta, nel senso che mi sembra di averne
trovato un'utile applicazione, che ho descritto in risposta a Giorgio.
Magari si può far meglio, comunque da un primo test vedo che
l'approssimazione standard, che prevede di mettere come parametro in
luogo di 5/2 il coefficiente 4/Sqrt[Pi], fa molto peggio nel caso di
mio interesse. Con quel valore irrazionale risulta che Tanh ed Erf
hanno esattamente la stessa derivata nel centro e quindi va benissimo
per interpolazioni al centro ma male appena ci sia allontani un poco.

Questa proprietà quindi sarebbe risultata affatto inutile nel caso
concreto della mia applicazione e di fatti peggiora notevolmente
l'accordo grafico sui risultati negli intervalli di interesse.

Osservazione di cultura generale, se avessi usato l'approssimazione del
papiro di Rhind per pi-greco 256/81 avrei dovuto usare 9/4 in luogo di
5/2, ed a ritroso 5/2 dà luogo ad una peggiore approssimazione di
pi-greco, il punto è che il coefficiente 9/4 dà una peggiore
approssimazione delle code di quanto non faccia invece 5/2.
Loading...