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

Введение в глубокое обучение на Python

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

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

ch2_2.003.png

Введение в глубокое обучение на Python

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

ch2_2.004.png

Введение в глубокое обучение на Python

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

ch2_2.005.png

Введение в глубокое обучение на Python

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

ch2_2.006.png

Введение в глубокое обучение на Python

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

ch2_2.008.png

Введение в глубокое обучение на Python

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

ch2_2.009.png

Введение в глубокое обучение на Python

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

ch2_2.010.png

Введение в глубокое обучение на Python

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

ch2_2.011.png

Введение в глубокое обучение на Python

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

ch2_2.012.png

Введение в глубокое обучение на Python

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

ch2_2.013.png

Введение в глубокое обучение на Python

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

ch2_2.014.png

Введение в глубокое обучение на Python

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

  • Если наклон положительный:
    • Движение против наклона означает уменьшение значения
    • Вычтите наклон из текущего значения
    • Слишком большой шаг может привести к ошибке
  • Решение: скорость обучения
    • Обновляйте каждый вес, вычитая скорость обучения * наклон
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.022.png

  • Для вычисления наклона для веса необходимо перемножить:
    • Наклон функции потерь относительно значения в узле, которому мы передаём данные
    • Значение узла, который передаёт данные в наш вес
    • Наклон функции активации относительно значения, которое мы передаём
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.028.png

  • Для вычисления наклона для веса необходимо перемножить:
    • Наклон функции потерь относительно значения в узле, которому мы передаём данные
    • Значение узла, который передаёт данные в наш вес
    • Наклон функции активации относительно значения, которое мы передаём
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.029.png

  • Наклон функции среднеквадратичных потерь относительно предсказания:
    • 2 (Предсказанное значение - Фактическое значение) = 2 Ошибка
    • 2 * -4
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.033.png

  • Для вычисления наклона для веса необходимо перемножить:
    • Наклон функции потерь относительно значения в узле, которому мы передаём данные
    • Значение узла, который передаёт данные в наш вес
    • Наклон функции активации относительно значения, которое мы передаём
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.035.png

  • Для вычисления наклона для веса необходимо перемножить:
    • Наклон функции потерь относительно значения в узле, которому мы передаём данные
    • Значение узла, который передаёт данные в наш вес
    • Наклон функции активации относительно значения, которое мы передаём
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.037.png

  • Для вычисления наклона для веса необходимо перемножить:
    • Наклон функции потерь относительно значения в узле, которому мы передаём данные
    • Значение узла, который передаёт данные в наш вес
    • Наклон функции активации относительно значения, которое мы передаём
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.038.png

  • Для вычисления наклона для веса необходимо перемножить:
    • Наклон функции потерь относительно значения в узле, которому мы передаём данные
    • Значение узла, который передаёт данные в наш вес
    • Наклон функции активации относительно значения, которое мы передаём
Введение в глубокое обучение на Python

Пример вычисления наклона

ch2_2.044.png

  • 2 * -4 * 3
  • -24
  • Если скорость обучения равна 0.01, новый вес будет
  • 2 - 0.01(-24) = 2.24
Введение в глубокое обучение на Python

Сеть с двумя входами, влияющими на предсказание

ch2_2.045.png

Введение в глубокое обучение на Python

Код для вычисления наклонов и обновления весов

import numpy as np
weights = np.array([1, 2])
input_data = np.array([3, 4])
target = 6
learning_rate = 0.01
preds = (weights * input_data).sum()
error = preds - target

print(error)
5
Введение в глубокое обучение на Python

Код для вычисления наклонов и обновления весов

gradient = 2 * input_data * error

gradient
array([30, 40])
weights_updated = weights - learning_rate * gradient
preds_updated = (weights_updated * input_data).sum()
error_updated = preds_updated - target

print(error_updated)
2.5
Введение в глубокое обучение на Python

Давайте потренируемся!

Введение в глубокое обучение на Python

Preparing Video For Download...