Градыентны спуск
Абноўлены на November 15, 2024 3 Прачытаныя хвіліны

Уводзіны
Уявіце, што ў нас ёсць функцыя $f(x)$ і мы хочам знайсці яе мінімум. Што б вы зрабілі?
Проста так? Нам трэба толькі вырашыць наступнае ўраўненне:
$$f’(x) = 0$$
Справа ў тым, што знайсці формулу $f’$ не заўсёды проста, бо яны, як правіла, вельмі складаныя, асабліва ў глыбокім навучанні, дзе мы маем справу са складанымі функцыямі. Такім чынам, нам трэба знайсці іншы метад, які можа даць нам мінімум функцыі без неабходнасці знаходзіць формулу вытворнай $f’$.
Давайце пабудуем інтуіцыю
Дапусцім, што ў нас ёсць функцыя f з адпаведным графікам:
Пачнем са выпадковай кропкі $x_{0}$. Мэта складаецца ў тым, каб перамясціць гэты пункт і зрабіць яго ўсё бліжэй і бліжэй да $x*$ так, каб $f’($x*$) = 0$. Такім чынам, праблему можна падзяліць на дзве часткі:
-
У які бок трэба перамясціць пункт $x$ ? Налева або направа?
-
На колькі нам гэта трэба рухацца?
Напрамак
Давайце пабудуем інтуіцыю, каб адказаць на першае пытанне. Звярніце ўвагу на наступны пункт:
Звярніце ўвагу, што:
-
калі кропка $x_{0}$ знаходзіцца справа ад аптымальнай кропкі $x*$, яе датычная лінія ідзе ўверх.
-
калі кропка $x_{0}$ знаходзіцца справа ад аптымальнай кропкі $x*$, яе датычная ідзе ўніз.
Напрамак прамой вызначаецца знакам яе нахілу:
-
Лінія ідзе ўверх $\implies$, што нахіл $a$ дадатны.
-
Лінія ідзе ўніз $\implies$, нахіл $a$ адмоўны.
Звярніце ўвагу, што: \
Нахіл датычнай да функцыі ў пэўным пункце $x_{0}$ не большы за вытворную ў гэтым пункце $f’(x_{0})$:
$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$
Такім чынам, у якасці адказу на пытанне “Куды мы павінны перанесці $x_{0}$?”:
-
$f’(x_{0}) < 0$ $\implies$ $x_{0}$ справа ад $x*$ $\implies$ Нам трэба перамясціць $x_{0}$ улева.
-
$f’(x_{0}) > 0$ $\implies$ $x_{0}$ злева ад $x*$ $\implies$ Нам трэба перамясціць $x_{0}$ справа.
Крокі
А цяпер другое пытанне: Колькі мы павінны перанесці $x_{0}$?
Зірніце на наступныя прыклады:
Мы можам зрабіць выснову, што:
-
$x_{0}$ блізка да $x*$ => Нахіл датычнай малы => $f’(x_{0})$ малы.
-
$x_{0}$ аддалены ад $x*$ => Нахіл датычнай вялікі => $f’(x_{0})$ вялікі.
Адказаўшы на абодва пытанні, мы прыйшлі да высновы, што толькі веданне вытворнай у пункце $x_{0}$ можа даць нам шмат інфармацыі аб напрамку і адлегласці аптымальнага пункта $x_{0}$.
Градыентны спуск
Градыентны спуск - гэта фармулёўка адказаў на папярэднія два пытанні. Гэта ітэрацыйны алгарытм аптымізацыі, які набліжае мінімум $x*$ функцыі, пачынаючы з выпадковай пачатковай кропкі $x_{0}$. Алгарытм дзеянняў гучыць так:
$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$
дзе:
-
$ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ не больш чым вытворная $f$ у пункце $x*{n}$.
-
$lr$ - гэта станоўчая канстанта, якая вызначае, наколькі вялікімі будуць крокі.
Звярніце ўвагу, што:
-
$x_{n}$ знаходзіцца справа ад $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - станоўчы $ => $x_{n}$ рухаецца ўлева.
-
$x_{n}$ знаходзіцца злева ад $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + станоўчы $ => $x_{n}$ рухаецца ўправа.
-
$x_{n}$ блізка да $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ блізка да $0$ => Невялікае абнаўленне да $x_{ n}$.
Віктарына
-
Калі градыентны спуск спыняе ітэрацыю:
-
Калі $x_{n}$ дастаткова малы.
-
Калі $x_{n}$ блізка да $x_{0}$.
-
Калі $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX
-
Як мы выбіраем $x_{0}$:
-
Мы выбіраем гэта выпадкова. XXX
-
Мы прымаем гэта ў раёне $x_{n}$.
— Гэта залежыць ад праблемы.
- Навошта нам градыентны спуск:
— Таму што кампутары недастаткова магутныя, каб вылічваць вытворныя.
-
Таму што вельмі цяжка знайсці формулы вытворных мадэляў глыбокага навучання. XXX
-
Таму што функцыі маюць больш чым адзін лакальны мінімум.
Асвойце Навуку аб дадзеных і штучны інтэлект з Code Labs Academy! Далучайцеся да нашага онлайн-курса навучання – даступныя гнуткія варыянты няпоўнага і поўнага працоўнага дня.