Alterna · учебный материал

03.5 Как меняется сам наклон

Чтобы понять изгиб поверхности ошибки, исследуем производные производных. Таблица вторых производных называется матрицей Гессе.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: много входов и много выходов.
Чтобы понять изгиб поверхности ошибки, исследуем производные производных. Таблица вторых производных называется матрицей Гессе.
Поверхность f=x²+3y².
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Производная градиента является матрицей
Для скалярной дважды дифференцируемой функции Hessian содержит вторые частные производные:
H
f
(
x
)
=
[
∂
2
f
/
∂
x
1
2
⋯
∂
2
f
/
∂
x
1
∂
x
n
⋮
⋱
⋮
∂
2
f
/
∂
x
n
∂
x
1
⋯
∂
2
f
/
∂
x
n
2
]
.
H_f(x)=
\begin{bmatrix}
\partial^2f/\partial x_1^2&\cdots&\partial^2f/\partial x_1\partial x_n\\
\vdots&\ddots&\vdots\\
\partial^2f/\partial x_n\partial x_1&\cdots&\partial^2f/\partial x_n^2
\end{bmatrix}.
H
f
​
(
x
)
=
​
∂
2
f
/
∂
x
1
2
​
⋮
∂
2
f
/
∂
x
n
​
∂
x
1
​
​
⋯
⋱
⋯
​
∂
2
f
/
∂
x
1
​
∂
x
n
​
⋮
∂
2
f
/
∂
x
n
2
​
​
​
.
Если смешанные вторые производные непрерывны, Hessian симметричен. Локальная модель второго порядка имеет вид
f
(
z
+
δ
)
≈
f
(
z
)
+
∇
f
(
z
)
T
δ
+
1
2
δ
T
H
f
(
z
)
δ
.
f(z+\delta)\approx
f(z)+\nabla f(z)^T\delta+\frac{1}{2}\delta^TH_f(z)\delta.
f
(
z
+
δ
)
≈
f
(
z
)
+
∇
f
(
z
)
T
δ
+
2
1
​
δ
T
H
f
​
(
z
)
δ
.
Для
f
=
x
2
+
3
y
2
f=x^2+3y^2
f
=
x
2
+
3
y
2
:
H
=
[
2
0
0
6
]
.
H=\begin{bmatrix}2&0\\0&6\end{bmatrix}.
H
=
[
2
0
​
0
6
​
]
.
При
z
=
[
2
,
1
]
T
z=[2,1]^T
z
=
[
2
,
1
]
T
,
δ
=
[
0.01
,
0.02
]
T
\delta=[0.01,0.02]^T
δ
=
[
0.01
,
0.02
]
T
второй порядок равен
1
2
δ
T
H
δ
=
1
2
(
2
⋅
0.01
2
+
6
⋅
0.02
2
)
=
0.0013.
\frac12\delta^TH\delta
=\frac12\left(2\cdot0.01^2+6\cdot0.02^2\right)
=0.0013.
2
1
​
δ
T
Hδ
=
2
1
​
(
2
⋅
0.0
1
2
+
6
⋅
0.0
2
2
)
=
0.0013.
Именно столько не хватало линейному предсказанию. Поскольку функция квадратична, членов третьего и более высокого порядка нет, поэтому модель второго порядка здесь точна.
Eigenvalues Hessian классифицируют невырожденную стационарную точку
В стационарной точке
∇
f
=
0
\nabla f=0
∇
f
=
0
знак квадратичной формы
δ
T
H
δ
\delta^TH\delta
δ
T
Hδ
определяет локальную картину:
положительно определённый
H
H
H
даёт строгий локальный минимум;
отрицательно определённый
H
H
H
даёт строгий локальный максимум;
eigenvalues разных знаков дают седло.
У
x
2
+
3
y
2
x^2+3y^2
x
2
+
3
y
2
eigenvalues 2 и 6 положительны. У
x
2
−
y
2
x^2-y^2
x
2
−
y
2
H
=
diag
⁡
(
2
,
−
2
)
,
H=\operatorname{diag}(2,-2),
H
=
diag
(
2
,
−
2
)
,
поэтому в одном направлении функция растёт, а в другом убывает: начало является седлом, хотя gradient там нулевой.
Полуопределённость не завершает анализ
Функции
x
4
x^4
x
4
и
−
x
4
-x^4
−
x
4
в нуле имеют одинаковые
f
′
(
0
)
=
0
,
f
′
′
(
0
)
=
0
,
f'(0)=0,\qquad f''(0)=0,
f
′
(
0
)
=
0
,
f
′′
(
0
)
=
0
,
но первая имеет минимум, а вторая максимум. Нулевой Hessian не видит первый ненулевой член четвёртого порядка. Поэтому тест второго порядка при нулевых eigenvalues может быть неразрешающим.
Отношение наибольшей и наименьшей положительных eigenvalues квадратики описывает conditioning. Для
H
=
diag
⁡
(
2
,
6
)
H=\operatorname{diag}(2,6)
H
=
diag
(
2
,
6
)
оно равно 3. Более крутое направление ограничивает стабильный общий шаг gradient descent, а более плоское может сходиться медленнее.
Newton step использует локальную квадратичную модель
Минимизируя модель второго порядка по
δ
\delta
δ
, получаем условие
∇
f
+
H
δ
=
0
,
H
δ
=
−
∇
f
.
\nabla f+H\delta=0,
\qquad H\delta=-\nabla f.
∇
f
+
Hδ
=
0
,
Hδ
=
−
∇
f
.
В точке
(
2
,
1
)
(2,1)
(
2
,
1
)
:
[
2
0
0
6
]
δ
=
−
[
4
6
]
,
δ
=
[
−
2
,
−
1
]
T
.
\begin{bmatrix}2&0\\0&6\end{bmatrix}
\delta=-\begin{bmatrix}4\\6\end{bmatrix},
\qquad \delta=[-2,-1]^T.
[
2
0
​
0
6
​
]
δ
=
−
[
4
6
​
]
,
δ
=
[
−
2
,
−
1
]
T
.
Один шаг приводит точно в начало, потому что исследуемая функция сама является положительно определённой квадратикой. Для общего nonconvex loss Hessian может быть indefinite, плохо обусловленным или меняться вдоль шага; одного точного перехода никто не гарантирует.
Плотный Hessian для
P
P
P
параметров содержит
P
2
P^2
P
2
элементов. При
P
=
10
6
P=10^6
P
=
1
0
6
это
10
12
10^{12}
1
0
12
float32, то есть около 4 TB payload без overhead. Поэтому крупные модели используют Hessian-vector products, диагональные или структурные приближения, а не хранят полный массив.
В лаборатории увеличьте отношение
b
/
a
b/a
b
/
a
. Эллипсы станут уже, а один общий gradient step будет сильнее ограничен крутой осью. Отрицательные коэффициенты лаборатория намеренно не принимает: седло показано отдельно, без ложной демонстрации «сходимости».
g = [4, 6]
H = [[2, 0], [0, 6]]
newton_delta = [-g[0]/H[0][0], -g[1]/H[1][1]]
assert newton_delta == [-2, -1]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Вторые производные описывают изменение наклонов. Они не являются самой ошибкой и не доказывают качество нейросети.
Изменение проходит через цепочку. Как этот вопрос продолжает полученный результат?
Python-примеры главы 03
Академическая база →

Структурная карта учебников