Градыентны спуск

глыбокае навучанне
матэматыка
градыентны спуск
Градыентны спуск cover image

Уводзіны

Уявіце, што ў нас ёсць функцыя f(x)f(x) і мы хочам знайсці яе мінімум. Што б вы зрабілі?

Проста так? Нам трэба толькі вырашыць наступнае ўраўненне:

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

Справа ў тым, што знайсці формулу ff' не заўсёды проста, бо яны, як правіла, вельмі складаныя, асабліва ў глыбокім навучанні, дзе мы маем справу са складанымі функцыямі. Такім чынам, нам трэба знайсці іншы метад, які можа даць нам мінімум функцыі без неабходнасці знаходзіць формулу вытворнай ff'.

Давайце пабудуем інтуіцыю

Дапусцім, што ў нас ёсць функцыя f з адпаведным графікам:

Graph 1

Пачнем са выпадковай кропкі x0x_{0}. Мэта складаецца ў тым, каб перамясціць гэты пункт і зрабіць яго ўсё бліжэй і бліжэй да xx* так, каб f(f'(x*)=0) = 0. Такім чынам, праблему можна падзяліць на дзве часткі:

  • У які бок трэба перамясціць пункт xx ? Налева або направа?

  • На колькі нам гэта трэба рухацца?

Напрамак

Давайце пабудуем інтуіцыю, каб адказаць на першае пытанне. Звярніце ўвагу на наступны пункт:

Graph 2

Graph 3

Звярніце ўвагу, што:

  • калі кропка x0x_{0} знаходзіцца справа ад аптымальнай кропкі xx*, яе датычная лінія ідзе ўверх.

  • калі кропка x0x_{0} знаходзіцца справа ад аптымальнай кропкі xx*, яе датычная ідзе ўніз.

Напрамак прамой вызначаецца знакам яе нахілу:

  • Лінія ідзе ўверх     \implies, што нахіл aa дадатны.

  • Лінія ідзе ўніз     \implies, нахіл aa адмоўны.

Звярніце ўвагу, што: \

Нахіл датычнай да функцыі ў пэўным пункце x0x_{0} не большы за вытворную ў гэтым пункце 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})

Такім чынам, у якасці адказу на пытанне "Куды мы павінны перанесці x0x_{0}?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} справа ад xx*     \implies Нам трэба перамясціць x0x_{0} улева.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} злева ад xx*     \implies Нам трэба перамясціць x0x_{0} справа.

Крокі

А цяпер другое пытанне: Колькі мы павінны перанесці x0x_{0}?

Зірніце на наступныя прыклады:

Graph 4

Graph 5

Мы можам зрабіць выснову, што:

  • x0x_{0} блізка да xx* => Нахіл датычнай малы => f(x0)f'(x_{0}) малы.

  • x0x_{0} аддалены ад xx* => Нахіл датычнай вялікі => f(x0)f'(x_{0}) вялікі.

Адказаўшы на абодва пытанні, мы прыйшлі да высновы, што толькі веданне вытворнай у пункце x0x_{0} можа даць нам шмат інфармацыі аб напрамку і адлегласці аптымальнага пункта x0x_{0}.

Градыентны спуск

Градыентны спуск - гэта фармулёўка адказаў на папярэднія два пытанні. Гэта ітэрацыйны алгарытм аптымізацыі, які набліжае мінімум xx* функцыі, пачынаючы з выпадковай пачатковай кропкі x0x_{0}. Алгарытм дзеянняў гучыць так:

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

дзе:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} не больш чым вытворная ff у пункце xnx*{n}.

  • lrlr - гэта станоўчая канстанта, якая вызначае, наколькі вялікімі будуць крокі.

Звярніце ўвагу, што:

  • xnx_{n} знаходзіцца справа ад xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnстаноўчыx_{n+ 1} = x_{n} - станоўчы => xnx_{n} рухаецца ўлева.

  • xnx_{n} знаходзіцца злева ад xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+станоўчыx*{n +1} = x*{n} + станоўчы => xnx_{n} рухаецца ўправа.

  • xnx_{n} блізка да xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} блізка да 00 => Невялікае абнаўленне да xnx_{ n}.

Віктарына

  • Калі градыентны спуск спыняе ітэрацыю:

  • Калі xnx_{n} дастаткова малы.

  • Калі xnx_{n} блізка да x0x_{0}.

  • Калі dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Як мы выбіраем x0x_{0}:

  • Мы выбіраем гэта выпадкова. XXX

  • Мы прымаем гэта ў раёне xnx_{n}.

— Гэта залежыць ад праблемы.

  • Навошта нам градыентны спуск:

— Таму што кампутары недастаткова магутныя, каб вылічваць вытворныя.

  • Таму што вельмі цяжка знайсці формулы вытворных мадэляў глыбокага навучання. XXX

  • Таму што функцыі маюць больш чым адзін лакальны мінімум.


Асвойце Навуку аб дадзеных і штучны інтэлект з Code Labs Academy! Далучайцеся да нашага онлайн-курса навучання – даступныя гнуткія варыянты няпоўнага і поўнага працоўнага дня.


Career Services background pattern

Кар'ерныя паслугі

Contact Section background image

Давайце заставацца на сувязі

Code Labs Academy © 2025 Усе правы абароненыя.