Introduktion
Forestil dig, at vi har en funktion , og vi vil gerne finde dens minimum. Hvad ville du gøre ?
Simpelt ikke? Vi skal kun løse følgende ligning:
Sagen er, at det ikke altid er let at finde formlen for , da de har tendens til at være ekstremt komplicerede, især i deep learning, hvor vi beskæftiger os med komplekse funktioner. Så vi skal finde en anden metode, der kan give os minimum af en funktion uden behov for at finde formlen for den afledte .
Lad os bygge noget intuition
Lad os antage, at vi har en funktion f med den tilsvarende graf:
Lad os starte med et tilfældigt punkt . Målet er at flytte dette punkt og gøre det tættere og tættere på , således at x*. Så problemet kan opdeles i to dele:
-
I hvilken retning skal vi flytte punktet ? Venstre eller højre ?
-
Hvor meget skal vi flytte den?
Retningen
Lad os bygge noget intuition for at besvare det første spørgsmål. Tag et kig på følgende punkt:
Noter det:
-
når punktet er til højre for det optimale punkt , går dens tangentlinje op.
-
når punktet er til højre for det optimale punkt går dens tangentlinje ned.
Retningen af en linje bestemmes af tegnet for dens hældning:
-
En linje går op hældningen er positiv.
-
En linje går ned hældningen er negativ.
Bemærk at: \
Hældningen af tangentlinjen til en funktion i et bestemt punkt er ikke mere end den afledede i det punkt :
Så som svar på spørgsmålet "Hvor skal vi flytte ?":
-
til højre for Vi skal flytte til venstre.
-
til venstre for Vi skal flytte til højre.
Trinene
Nu til det andet spørgsmål, Hvor meget skal vi flytte ?
Tag et kig på følgende eksempler:
Vi kan konkludere, at:
-
er tæt på => Tangens hældning er lille => er lille.
-
er langt fra => Tangens hældning er stor => er stor.
Ved at besvare begge spørgsmål konkluderede vi, at kun viden om den afledede i punktet kan give os en masse indsigt i retningen og afstanden til det optimale punkt .
Gradientnedstigning
Gradient descent er formuleringen af svarene på de to foregående spørgsmål. Det er en iterativ optimeringsalgoritme, der tilnærmer minimum funktion startende fra et tilfældigt startpunkt . Algoritmen er angivet som følger:
hvor:
-
er ikke mere end den afledede af i punktet .
-
er en positiv konstant, der bestemmer, hvor store trinene bliver.
Læg mærke til det:
-
er til højre for => => => flytter til venstre.
-
er til venstre for => => => flytter til højre.
-
tæt på => tæt på => Lille opdatering til .
Quizz
-
Hvornår stopper gradientnedstigning med at iterere:
-
Når er lille nok.
-
Når er tæt på .
-
Når . XXX
-
Hvordan vælger vi :
-
Vi vælger det tilfældigt. XXX
-
Vi tager det i nærheden af .
-
Det kommer an på problemet.
-
Hvorfor har vi brug for gradientnedstigning:
-
Fordi computere ikke er kraftige nok til at beregne derivater.
-
Fordi det er ekstremt svært at finde de afledte formler for deep learning-modeller. XXX
-
Fordi funktioner har mere end ét lokalt minimum.