/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Minimer "ukendt" funktion
Fra : Will Jakobsen


Dato : 05-08-08 16:00

Jeg har en funcktion f(x) som jeg kan evaluere for enhver x, men som jeg
ikke kan opskrive nogen analytisk differentialfunktion for. Jeg kan finde
f(x) for enhver x, men langsomt, og x er en parametervektor på 20 parametre.
Hvis jeg ønsker at minimere denne funktion hvad er så en rimelig
fremgangsmåde?

Jeg tænker umiddelbart på finite difference, så jeg for hver parameter
finder funktionsværdien umiddelbart omkring mine startparametre og derefter
går et skridt ned ad gradienten og prøver igen og igen.

Hermed mener jeg altså at hvis det var f(a,b) så ville jeg finde
f(a+delta,b) , f(a-delta,b),f(a,b+delta),f(a,b-delta) og finde gradienten i
a,b på den led. Det er dog ret bekosteligt at evaluere funktionen 20*2 gange
i hvert skridt.

Nogle gode råd?


 
 
Michael Zedeler (06-08-2008)
Kommentar
Fra : Michael Zedeler


Dato : 06-08-08 21:13

Will Jakobsen wrote:
> Jeg har en funcktion f(x) som jeg kan evaluere for enhver x, men som jeg
> ikke kan opskrive nogen analytisk differentialfunktion for. Jeg kan
> finde f(x) for enhver x, men langsomt, og x er en parametervektor på 20
> parametre.
> Hvis jeg ønsker at minimere denne funktion hvad er så en rimelig
> fremgangsmåde?

Downhill simplex. Prøv at slå det op.

> Jeg tænker umiddelbart på finite difference, så jeg for hver parameter
> finder funktionsværdien umiddelbart omkring mine startparametre og
> derefter går et skridt ned ad gradienten og prøver igen og igen.

Det er nogenlunde det, downhill simplex gør.

Som sædvanlig er problemet at algoritmen kun finder et minimum - ikke
det globale minimum. Nu er det så lang tid siden at jeg ikke kan huske
om algoritmen overhovedet stopper med sikkerhed, eller om du kan få
problemer med saddelpunkter og stabile kredsløb.

Mvh. Michael.

Will Jakobsen (06-08-2008)
Kommentar
Fra : Will Jakobsen


Dato : 06-08-08 22:23

> Downhill simplex. Prøv at slå det op.

Takker. Jeg kender den. Det er jo en "simpel" metode som navnet antyder
Problemet er at den ikke er god til mange dimensioner. Ikke at jeg husker
det præcise bevis, men den beskrives generelt som brugbar i R^4 og lavere.

> Finite difference
> Det er nogenlunde det, downhill simplex gør.

Hnja. Jeg vil snare sige at den laver n samples og prøver at gøre det
værdste bud til det bedste i næste skridt ved projektion, men, ja, den går
da ned af bakke.

> Nu er det så lang tid siden at jeg ikke kan huske om algoritmen
> overhovedet stopper med sikkerhed, eller om du kan få problemer med
> saddelpunkter og stabile kredsløb.

Det skulle jeg mene den gør, stopper altså, da den jo trækker sig sammen
hvis ikke det nye samplepunkt er en forbedring. Det må vel betyde at enten
gør den det bedre end sidst, eller også skrumper søgerummet og den forsøger
igen.

Ang mit spørgsmål så tror jeg at jeg havde slået hovedet og mistet evnen til
at tænke. Der er masser af metoder som "bare" bruger gradienten i et punkt i
parameterrummet uden at kende det analytiske udtryk for denne gradient.
Dermed er man nede i at skulle finde gradienten og så bare minimere. Det vil
så sige almindelig finite difference, eller en backwards difference fra
nuværende til forrige sample. eller eller...




Anders (07-08-2008)
Kommentar
Fra : Anders


Dato : 07-08-08 11:37

Will Jakobsen skrev:
>> Downhill simplex. Prøv at slå det op.
>
> Takker. Jeg kender den. Det er jo en "simpel" metode som navnet antyder
> Problemet er at den ikke er god til mange dimensioner. Ikke at jeg
> husker det præcise bevis, men den beskrives generelt som brugbar i R^4
> og lavere.

Men nu har du vel nok info til et meningsfyldt google opslag. Fx giver
"downhill simplex dimensions"
<http://paula.univ.gda.pl/~dokgrk/simplex.html>

Mvh
Anders Lund

Will Jakobsen (07-08-2008)
Kommentar
Fra : Will Jakobsen


Dato : 07-08-08 15:58

> Men nu har du vel nok info til et meningsfyldt google opslag. Fx giver
> "downhill simplex dimensions"
> <http://paula.univ.gda.pl/~dokgrk/simplex.html>

Ok, så der er en forbedret udgave til mange dimensioner. "Mange" betyder dog
her 20 hvor jeg har 37, men den er måske værd at se på. Den er da simpel.
Når jeg nu pointerer at min funktionsevaluering er halvdyr, er den så stadig
det bedste bud?



jenspolsen@hotmail.c~ (08-08-2008)
Kommentar
Fra : jenspolsen@hotmail.c~


Dato : 08-08-08 13:15

On 5 Aug., 16:59, "Will Jakobsen" <w...@wjk.dk> wrote:
> Jeg har en funcktion f(x) som jeg kan evaluere for enhver x, men som jeg
> ikke kan opskrive nogen analytisk differentialfunktion for. Jeg kan finde
> f(x) for enhver x, men langsomt, og x er en parametervektor på 20 parametre.
> Hvis jeg ønsker at minimere denne funktion hvad er så en rimelig
> fremgangsmåde?
>
> Jeg tænker umiddelbart på finite difference, så jeg for hver parameter
> finder funktionsværdien umiddelbart omkring mine startparametre og derefter
> går et skridt ned ad gradienten og prøver igen og igen.
>
> Hermed mener jeg altså at hvis det var f(a,b) så ville jeg finde
> f(a+delta,b) , f(a-delta,b),f(a,b+delta),f(a,b-delta) og finde gradienten i
> a,b på den led. Det er dog ret bekosteligt at evaluere funktionen 20*2 gange
> i hvert skridt.
>
> Nogle gode råd?

Uden at kende funktionen er det jo svært at rådgive. Men du kunne jo
prøve at kaste nogle stokatiske metoder efter det, som f.eks.,
simuleret annealing.
Blot at koncentrer sig om hvordan du hurtigt finder det nærmest lokale
minima bringer dig nok ikke langt.

J.O.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408918
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste