Вопрос или проблема
Я изучаю книгу Иана Гудфеллоу и др. под названием “Глубокое обучение”, и в Главе 4 – Численные вычисления, на странице 87, он упоминает, что, используя приближение функции цели с помощью разложения Тейлора второго порядка, мы можем найти лучший коэффициент обучения $\epsilon^*$:
$$\text{Для градиентного спуска, описываемого как: }\mathbf{x}^{(n+1)} = \mathbf{x}^{(n)} – \epsilon \mathbf{g}^{(n)}$$
$$\text{где, } \mathbf{g}^{(n)} =\nabla f(\mathbf{x}^{(n)})$$
$$\text{Используя матрицу Гессе }\mathbf{H}^{(n)} = \left[\frac{\partial^2 f (\mathbf{x}^{(n)})}{\partial x_i \partial x_j}\right]_{ij}$$
$$\text{Лучший коэффициент обучения }\epsilon^{*(n)} = \frac{\mathbf{g}^{(n)\top} \mathbf{g}^{(n)}}{\mathbf{g}^{(n)\top} \mathbf{H}^{(n)} \mathbf{g}^{(n)}}$$
Теперь из этого я вывел, что если $\mathbf{g}^{(n)}$ является собственным вектором $\mathbf{H}^{(n)}$ с собственным значением $\lambda$, тогда:
$$\text{Лучший коэффициент обучения }\epsilon^{*(n)} = \frac{1}{\lambda}$$
Таким образом, по сути, величина коэффициента обучения в одном из направлений его собственного вектора больше, если его собственное значение меньше по величине (также отмечая, что собственное значение представляет вторую производную в этом направлении).
Мои ожидания были, что скачок обучения будет больше, когда вторая производная направления $\mathbf{g}^{(n)}$ мала, и меньше, когда $\mathbf{g}^{(n)}$ стремится к собственному направлению с большей второй производной.
Перефразируя: скачки обучения меньше на более крутых склонах, чем наоборот, и поэтому это не лучший метод.
Для проверки этого я попробовал с функцией:
$$f([x\; y]^{\top}) = x^2 + 0.01y^2$$
$$\text{с располагационно независимой матрицей Гессе } \mathbf{H} = \begin{bmatrix}2&0\\0&0.02\end{bmatrix}$$
и получил эту диаграмму градиентного спуска:
Очевидно, что здесь вышеупомянутое наблюдение согласуется с тем, что коэффициент обучения невелик вдоль направления более крутого склона, однако диаграмма, приведенная в учебнике (используя аналогичную функцию цели, просто с другой ориентацией), кажется, говорит об обратном:
Что, кажется, делает противоположное: скачки обучения кажутся больше вдоль направлений более крутых склонов (больших вторых производных), даже если подписи к рисункам пытаются объяснить это наблюдение.
Когда я изначально попытался изменить свой код для построения собственной диаграммы, я понял, что моя диаграмма, по-видимому, согласуется с математикой.
Поэтому я хотел спросить, не упускаю ли я какой-нибудь факт, и верно ли наблюдение в учебнике.
Спасибо.
Приложение:
Код для градиентного спуска с использованием коэффициента обучения, корректируемого матрицей Гессе:
# Определение функции z = f(x, y)
def f(x, y):
"""
Целевая функция
"""
return (1*x**2 + 0.01*y**2)
def g(x, y):
"""
Градиент целевой функции
"""
return np.array([2*x, 0.02*y])
def H(x, y):
"""
Матрица Гессе целевой функции
"""
return np.array([[2, 0], [0, 0.02]])
def learningRate(x, y):
"""
Коэффициент обучения epsilon для градиентного спуска
на основе учета лучшего приближения второго порядка
Тейлора
"""
g_ = g(x, y)
# print(type(g_), g_, sep='\n')
H_ = H(x, y)
gTg = np.dot(g_, g_)
# print(type(gTg), gTg, sep='\n')
Hg = H_@g_
gTHg= np.dot(g_, Hg)
return gTg / gTHg
def gradientDescent(initialPoint, gradient, learningRate, steps = 5):
path = [initialPoint]
for i in range(1, steps+1):
x0 = np.array(path[i-1])
newPoint = tuple(x0 - learningRate(*x0)*gradient(*x0))
path.append(newPoint)
return path
Ответ или решение
В контексте оптимизации градиентным спуском в машинном обучении, важной концепцией является анализ числа обусловленности гессиана целевой функции и его влияние на выбор оптимальной скорости обучения. Рассмотрим этот вопрос более подробно.
### Число обусловленности гессиана и его влияние на обучение
Гессиан, обозначаемый как \(\mathbf{H}^{(n)}\), содержит вторые производные целевой функции и представляет собой матрицу, которая описывает кривизну функции. Число обусловленности гессиана – это отношение между его максимальным и минимальным собственными числами (\(\lambda_{\text{max}}\) и \(\lambda_{\text{min}}\)). Высокое число обусловленности указывает на большую анизотропию, то есть наличие «крутых» и «пологих» направлений в пространстве функции, что усложняет выбор универсального шага градиентного спуска.
### Формула для оптимальной скорости обучения
Оптимальная скорость обучения (\(\epsilon^{*(n)}\)) может быть вычислена по следующей формуле:
\[
\epsilon^{*(n)} = \frac{\mathbf{g}^{(n)\top} \mathbf{g}^{(n)}}{\mathbf{g}^{(n)\top} \mathbf{H}^{(n)} \mathbf{g}^{(n)}}
\]
где \(\mathbf{g}^{(n)}\) является градиентом функции в точке \(\mathbf{x}^{(n)}\).
Если \(\mathbf{g}^{(n)}\) совпадает с собственным вектором \(\mathbf{H}^{(n)}\) с собственным числом \(\lambda\), то оптимальная скорость обучения упрощается до:
\[
\epsilon^{*(n)} = \frac{1}{\lambda}
\]
### Интерпретация влияния собственных чисел
Собственные числа (\(\lambda\)) гессиана представляют собой скорости изменения функции во всех возможных направлениях. Большое собственное число указывает на крутой склон в соответствующем направлении, тогда как малое собственное число — на более пологий.
Таким образом, если \(\lambda\) велико, шаг градиентного спуска будет меньшим, чтобы предотвратить нестабильность, когда алгоритм сталкивается с крутыми участками. Это объясняет вашу наблюдаемую ситуацию, когда “прыжки” градиентного спуска малы в направлениях с большими собственными числами.
### Почему разные результаты в диаграммах
Ваши наблюдения в диаграмме связаны с традиционным представлением этой динамики. Однако, изображение из учебника предполагает возможность использования других методов или параметров для визуализации процесса, возможно, с использованием модификаций скорости обучения или повышенной адаптивности алгоритма. Это может обусловливаться тем, что иногда в текстовых материалах могут использоваться упрощенные модели для образовательных целей.
### Заключение
Ваши расчеты и диаграммы демонстрируют корректное понимание численного метода и его применения. Однако различия в визуализации из источников могут указывать на необходимость более глубокого анализа используемых в них допущений или параметров. Важно помнить, что интерпретация этих результатов может варьироваться в зависимости от исходных условий и предположений, заложенных в модели.
Такая концептуальная проработка темы условной численности и влияния гессиана должна обеспечить понимание того, как именно это влияет на скорость обучения и выбор оптимальных параметров в численной оптимизации.