Gradient Descent

djupinlärning
matematik
gradientnedstigning
Gradient Descent cover image

Introduktion

Föreställ dig att vi har en funktion f(x)f(x) och vi skulle vilja hitta dess minimum. Vad skulle du göra ?

Enkelt eller hur? Vi behöver bara lösa följande ekvation:

f(x)=0f'(x) = 0

Saken är den att det inte alltid är lätt att hitta formeln ff' 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 ff'.

Låt oss bygga lite intuition

Låt oss anta att vi har en funktion f med motsvarande graf:

Graph 1

Låt oss börja med en slumpmässig punkt x0x_{0}. Målet är att flytta denna punkt och göra den närmare och närmare xx* så att f(f'(x*)=0) = 0. Så problemet kan delas upp i två delar:

  • I vilken riktning ska vi flytta punkten xx? 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:

Graph 2

Graph 3

Anteckna det:

  • när punkten x0x_{0} ligger till höger om den optimala punkten xx* går dess tangentlinje uppåt.

  • när punkten x0x_{0} ligger till höger om den optimala punkten xx* går dess tangentlinje nedåt.

Riktningen på en linje bestäms av tecknet på dess lutning:

  • En linje går upp     \implies lutningen aa är positiv.

  • En linje går ner     \implies lutningen aa är negativ.

Observera att: \

Lutningen för tangentlinjen för en funktion i en viss punkt x0x_{0} är inte mer än derivatan i den punkten f(x0)f'(x_{0}):

tangent(x0):g(x)=f(x0).(xx0)+f(x0)tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0})

Så som ett svar på frågan "Vart ska vi flytta x0x_{0} ?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} till höger om xx*     \implies Vi måste flytta x0x_{0} åt vänster.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} till vänster om xx*     \implies Vi måste flytta x0x_{0} åt höger.

Stegen

Nu till den andra frågan, Hur mycket ska vi flytta x0x_{0} ?

Ta en titt på följande exempel:

Graph 4

Graph 5

Vi kan dra slutsatsen att:

  • x0x_{0} är nära xx* => Tangensens lutning är liten => f(x0)f'(x_{0}) är liten.

  • x0x_{0} är långt från xx* => Tangensens lutning är stor => f(x0)f'(x_{0}) är stor.

Genom att svara på båda frågorna drog vi slutsatsen att endast kunskapen om derivatan i punkten x0x_{0} kan ge oss mycket insikt om riktningen och avståndet för den optimala punkten x0x_{0}.

Gradientnedstigning

Gradient descent är formuleringen av svaren på de två föregående frågorna. Det är en iterativ optimeringsalgoritm som approximerar minsta xx* funktion med början från en slumpmässig startpunkt x0x_{0}. Algoritmen anges enligt följande:

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

var:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} är inte mer än derivatan av ff i punkten xnx*{n}.

  • lrlr är en positiv konstant som avgör hur stora stegen kommer att bli.

Lägg märke till att:

  • xnx_{n} är till höger om xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnpositivx_{n+ 1} = x_{n} - positiv => xnx_{n} flyttas till vänster.

  • xnx_{n} är till vänster om xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+positivx*{n +1} = x*{n} + positiv => xnx_{n} flyttas åt höger.

  • xnx_{n} nära xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} nära 00 => Liten uppdatering till xnx_{ n}.

Frågesport

  • När slutar gradientnedstigning att iterera:

  • När xnx_{n} är tillräckligt liten.

  • När xnx_{n} är nära x0x_{0} .

  • När dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Hur väljer vi x0x_{0}:

– Vi väljer det slumpmässigt. XXX

  • Vi tar det i närheten av xnx{n}.

– 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.


Career Services background pattern

Karriärtjänster

Contact Section background image

Låt oss hålla kontakten

Code Labs Academy © 2025 Alla rättigheter förbehållna.