Часть II • Введение в TensorFlow.js
градиент, вычисленный локально в текущем узле. Это правило иногда называют
цепным правилом
(chain rule)
1
.
z
z
На ребре
e
2
мы вычисляем градиент
e
3
по
e
2
. А поскольку это простая операция
сложения, то градиент равен просто 1, вне зависимости от второго входного
значения (
-y
). Умножая эту 1 на градиент на ребре
e
3
, мы получаем градиент на
ребре
e
2
, то есть –10.
z
z
На ребре
e1
мы вычисляем градиент
e2
по
e1
. Выполняемая здесь операция —
x
*
v
. Значит, градиент
e
2
по
e
1
(то есть по
v
) равен
x
, то есть 2. Умножаем значе
ние 2 на градиент по ребру
e
2
и получаем итоговый градиент:
2
*
-10
=
-20
.
Пока мы получили градиент функции потерь по
v
, равный –20. Для градиентного
спуска нам нужно умножить отрицательное значение этого градиента на скорость об
учения. Пусть скорость обучения равна 0,01. Тогда получаем изменение градиента на:
-(-20) * 0.01 = 0.2
Именно на такую величину мы изменим
v
на этом шаге обучения:
v = 0 + 0.2 = 0.2
Поскольку
x
=
2
и
y
=
5
, а функция, параметры которой необходимо подобрать, —
y
'
=
v
*
x
, то оптимальное значение
v
равно
5/2
=
2.5
. После первого шага обучения
значение
v
меняется с 0 до 0,2. Другими словами, весовой коэффициент
v
чутьчуть
приближается к желаемому значению. На последующих шагах обучения он будет
постепенно приближаться еще больше (игнорируя шум в обучающих данных) на
основе описанного выше алгоритма обратного распространения ошибки.
Мы специально взяли такой простой пример, чтобы вам проще было следить за
его ходом. И хотя в этом примере можно уловить основную суть метода обратного
распространения ошибки, происходящее в настоящих нейронных сетях обратное
распространение ошибки несколько отличается следующими нюансами.
z
z
Вместо одного простого обучающего примера данных (в нашем случае
x
=
2
и
y
=
5
)
обычно передается сразу батч из множества входных примеров данных. А исполь
зуемое для вычисления градиента значение функции потерь представляет собой
арифметическое среднее значений функции потерь для всех отдельных примеров.
z
z
Обновляемые переменные обычно состоят из намного большего количества
элементов. Так, вместо простой производной по одной переменной часто при
меняется матричное дифференциальное исчисление.
z
z
Вместо вычисления градиента только по одной переменной обычно проводятся
вычисления для нескольких переменных. На рис. 2.10 приведен пример, пред
ставляющий собой несколько более сложную линейную модель с двумя опти
мизируемыми переменными. Помимо
k
, эта модель содержит еще и член для
смещения:
y
'
=
k
*
x
+
b
. Здесь приходится вычислять два градиента: один для
k
,
а второй для
b
. Оба пути обратного распространения ошибки начинаются с
loss
,
содержат часть общих ребер и формируют древовидную структуру.
1
Или просто правилом дифференцирования сложной функции. —
Примеч. пер.
Do'stlaringiz bilan baham: |