Gradiento nusileidimas

gilus mokymasis
matematika
nusileidimas nuo gradiento
Gradiento nusileidimas cover image

Įvadas

Įsivaizduokite, kad turime funkciją f(x)f(x) ir norėtume rasti jos minimumą. ka darytum tu?

Paprasta tiesa? Mums tereikia išspręsti šią lygtį:

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

Reikalas tas, kad rasti f f' formulę ne visada lengva, nes jos būna labai sudėtingos, ypač gilaus mokymosi metu, kai susiduriame su sudėtingomis funkcijomis. Taigi turime rasti kitą metodą, kuris galėtų suteikti mums funkcijos minimumą, nerandant išvestinės ff' formulės.

Sukurkime intuiciją

Tarkime, kad turime funkciją f su atitinkamu grafiku:

Graph 1

Pradėkime nuo atsitiktinio taško x0x_{0}. Tikslas yra perkelti šį tašką ir padaryti jį vis arčiau xx*, kad f(f'(x*)=0) = 0. Taigi problemą galima suskirstyti į dvi dalis:

  • Kuria kryptimi turėtume perkelti tašką xx? Kairė ar dešinė?

  • Kiek turėtume jį perkelti?

Kryptis

Sukurkime intuiciją, kad galėtume atsakyti į pirmąjį klausimą. Pažvelkite į šį punktą:

Graph 2

Graph 3

Atkreipkite dėmesį, kad:

  • kai taškas x0x_{0} yra į dešinę nuo optimalaus taško xx*, jo liestinės linija pakyla aukštyn.

  • kai taškas x0x_{0} yra į dešinę nuo optimalaus taško xx*, jo liestinės linija nusileidžia.

Linijos kryptis nustatoma pagal jos nuolydžio ženklą:

  • Linija kyla aukštyn     \implies, nuolydis aa yra teigiamas.

  • Linija nusileidžia     \implies, nuolydis aa yra neigiamas.

Atkreipkite dėmesį, kad: \

Funkcijos liestinės linijos nuolydis tam tikrame taške x0x_{0} yra ne didesnis kaip išvestinė tame taške 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})

Taigi kaip atsakymą į klausimą "Kur turėtume perkelti x0x_{0}?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} į dešinę nuo xx*     \implies Turime perkelti x0x_{0} į kairę.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} kairėje nuo xx*     \implies Turime perkelti x0x_{0} į dešinę.

Žingsniai

Dabar antras klausimas: Kiek turėtume perkelti x0x_{0}?

Pažvelkite į šiuos pavyzdžius:

Graph 4

Graph 5

Galime daryti tokią išvadą:

  • x0x_{0} yra artimas xx* => liestinės nuolydis mažas => f(x0)f'(x_{0}) mažas.

  • x0x_{0} yra nutolusi nuo xx* => Liestinės nuolydis didelis => f(x0)f'(x_{0}) yra didelis.

Atsakydami į abu klausimus padarėme išvadą, kad tik žinios apie išvestinę taške x0x_{0} gali suteikti mums daug informacijos apie optimalaus taško x0x_{0} kryptį ir atstumą.

Gradiento nusileidimas

Gradiento nusileidimas yra dviejų ankstesnių klausimų atsakymų formulavimas. Tai optimizavimo iteracinis algoritmas, kuris apytiksliai apskaičiuoja minimalų funkcijos xx* dydį, pradedant nuo atsitiktinio pradinio taško x0x_{0}. Algoritmas nurodytas taip:

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

kur:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} yra ne daugiau kaip ff išvestinė taške xnx*{n}.

  • lrlr yra teigiama konstanta, kuri lemia, kokie dideli žingsniai bus.

Atkreipkite dėmesį, kad:

  • xnx_{n} yra dešinėje nuo xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnteigiamasx_{n+ 1} = x_{n} – teigiamas => xnx_{n} juda į kairę.

  • xnx_{n} yra kairėje nuo xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+teigiamasx*{n +1} = x*{n} + teigiamas => xnx_{n} juda į dešinę.

  • xnx_{n} arti xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} arti 00 => nedidelis xatnaujinimasnx_{ atnaujinimas n} .

Viktorina

– Kada gradiento nusileidimas nustoja kartotis:

– Kai xnx_{n} yra pakankamai mažas.

– Kai xnx_{n} yra arti x0x_{0} .

– Kai dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

– Kaip pasirinkti x0x_{0}:

– Renkamės atsitiktinai. XXX

  • Paimame jį netoli xnx_{n}.

– Tai priklauso nuo problemos.

  • Kodėl mums reikia gradiento nusileidimo:

– Todėl, kad kompiuteriai nėra pakankamai galingi, kad skaičiuotų išvestines.

– Nes labai sunku rasti giluminio mokymosi modelių išvestines formules. XXX

– Kadangi funkcijos turi daugiau nei vieną vietinį minimumą.


Įvaldykite Data Science and AI su Code Labs Academy! Prisijunkite prie mūsų internetinės „Bootcamp“ – galimi lankstūs parinktys ne visą darbo dieną ir visą darbo dieną.


Career Services background pattern

Karjeros paslaugos

Contact Section background image

Palaikykime ryšį

Code Labs Academy © 2025 Visos teisės saugomos.