Introduktion
Föreställ dig att vi har en funktion och vi skulle vilja hitta dess minimum. Vad skulle du göra ?
Enkelt eller hur? Vi behöver bara lösa följande ekvation:
Saken är den att det inte alltid är lätt att hitta formeln eftersom de tenderar att vara extremt komplicerade, särskilt i djupinlärning där vi hanterar komplexa funktioner. Så vi måste hitta en annan metod som kan ge oss minimum av en funktion utan att behöva hitta formeln för derivatan .
Låt oss bygga lite intuition
Låt oss anta att vi har en funktion f med motsvarande graf:
Låt oss börja med en slumpmässig punkt . Målet är att flytta denna punkt och göra den närmare och närmare så att x*. Så problemet kan delas upp i två delar:
-
I vilken riktning ska vi flytta punkten ? Vänster eller höger ?
-
Hur mycket ska vi flytta den?
Riktningen
Låt oss bygga lite intuition för att svara på den första frågan. Ta en titt på följande punkt:
Anteckna det:
-
när punkten ligger till höger om den optimala punkten går dess tangentlinje uppåt.
-
när punkten ligger till höger om den optimala punkten går dess tangentlinje nedåt.
Riktningen på en linje bestäms av tecknet på dess lutning:
-
En linje går upp lutningen är positiv.
-
En linje går ner lutningen är negativ.
Observera att: \
Lutningen för tangentlinjen för en funktion i en viss punkt är inte mer än derivatan i den punkten :
Så som ett svar på frågan "Vart ska vi flytta ?":
-
till höger om Vi måste flytta åt vänster.
-
till vänster om Vi måste flytta åt höger.
Stegen
Nu till den andra frågan, Hur mycket ska vi flytta ?
Ta en titt på följande exempel:
Vi kan dra slutsatsen att:
-
är nära => Tangensens lutning är liten => är liten.
-
är långt från => Tangensens lutning är stor => är stor.
Genom att svara på båda frågorna drog vi slutsatsen att endast kunskapen om derivatan i punkten kan ge oss mycket insikt om riktningen och avståndet för den optimala punkten .
Gradientnedstigning
Gradient descent är formuleringen av svaren på de två föregående frågorna. Det är en iterativ optimeringsalgoritm som approximerar minsta funktion med början från en slumpmässig startpunkt . Algoritmen anges enligt följande:
var:
-
är inte mer än derivatan av i punkten .
-
är en positiv konstant som avgör hur stora stegen kommer att bli.
Lägg märke till att:
-
är till höger om => => => flyttas till vänster.
-
är till vänster om => => => flyttas åt höger.
-
nära => nära => Liten uppdatering till .
Frågesport
-
När slutar gradientnedstigning att iterera:
-
När är tillräckligt liten.
-
När är nära .
-
När . XXX
-
Hur väljer vi :
– Vi väljer det slumpmässigt. XXX
- Vi tar det i närheten av .
– Det beror på problemet.
- Varför behöver vi gradientnedstigning:
– För att datorer inte är tillräckligt kraftfulla för att beräkna derivator.
- För att det är extremt svårt att hitta derivatformlerna för modeller för djupinlärning. XXX
– Eftersom funktioner har mer än ett lokalt minimum.