Градієнтний спуск

глибоке навчання
математика
градієнтний спуск
Градієнтний спуск 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

  • Оскільки функції мають більше одного локального мінімуму.

Career Services background pattern

Кар'єрні послуги

Contact Section background image

Давайте залишатися на зв'язку

Code Labs Academy © 2025 Всі права захищені.