Цель этого блога — понять, можно ли использовать метод Ньютона для оптимизации обучения нейронной сети и сравнить его с Gradient Decent. Нейронные сети используются, например, в финансовых службах для прогнозирования, машинного обучения и искусственного интеллекта, представляя собой алгоритмы, имитирующие мозг человека, использующие в качестве входных данных большой объем данных. Цель состоит в том, чтобы представить связь между нейронами и синапсами в нашем мозгу.

Простая нейронная сеть обычно состоит из входного слоя, скрытого слоя (𝑵𝒏) и выходного слоя.

Нейронные сети принимают некоторые существующие значения и генерируют прогнозы на основе этих значений или параметров. Например, если вы хотите научить машину распознавать собаку, вам нужно дать машине как можно больше информации об изображении собак и найти способ сообщить машине, что она неверна, когда догадка не соответствует ожидаемому значению и является правильным, когда ожидаемое значение является правильным.

Пример нейронной сети

В этом примере значения, данные нейронной сети, — это ширина и длина, и на основе этих значений в следующий раз, когда будут предоставлены только эти два фрагмента информации, они должны быть в состоянии угадать, является ли объект автомобилем или мотоциклом.

В этом примере нейронная сеть должна быть в состоянии определить, является ли данный объект автомобилем или мотоциклом, получая только два входа: ширину и длину.

V = значение (ширина, длина) W = вес
B = термин смещения
P = прогноз

Параметр (w1, w2 и b) является случайным, и найти правильный может помочь функция стоимости. Функция стоимости принимает текущие данные и прогнозы и сообщает, насколько далеко наш прогноз от заданного набора данных.

Данный набор данных должен быть минимизирован, чтобы определить, близок ли наш прогноз к данным.

Чтобы получить помощь в этой части, мы собираемся сравнить Gradient Descente и метод Ньютона.

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

Градиентный спуск - это метод оптимизации, когда он подходит к линии с помощью линейной регрессии, он оптимизирует точку пересечения и наклон.

Пример с набором данных, где ось X — это вес, а оси Y — высота.

Если мы расширим линию в наборе данных, мы сможем использовать линию для прогнозирования некоторых данных. Например, если у нас есть вес 1,5, мы можем сказать, что рост равен 1,9.

Градиентный спуск помогает подогнать линию к данным, найдя оптимальные значения точки пересечения и наклона.

Прогноз Y = точка пересечения + наклон * вес
Мы вставляем 0,64в качестве наклона, используя оценку методом наименьших квадратов, и используем

метод градиентного спуска, чтобы найти лучшее значение для точки пересечения.

Первым шагом является выбор случайного значения для перехвата, это значение будет использоваться приличным градиентом для улучшения предположения.

Начальное значение = 0
Теперь наша строка имеет начальное значение, равное нулю.

Прогноз Y = 0 + 0,64 * вес

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

Первый остаток (x1, y2) (0,5, 1,4) дает прогноз путем подстановки веса (X1) в уравнение.

Прогноз Y = 0 + 0,64 * 0,5 = 0,32

Остаток получается путем вычисления наблюденной высоты и вычитания прогнозируемой высоты.

Остаток = высота — прогноз или
Остаток = 1,4–0,32 = 1,1

Используя остаток 1,1, нам нужно возвести его в квадрат и просуммировать с оставшимся остатком, чтобы получить сумму квадратов остатков.

𝑺𝒖𝒎 𝒐𝒇 𝒔𝒒𝒖𝒂𝒓𝒆𝒅 𝒓𝒆𝒔𝒊𝒅𝒖𝒂𝒍𝒔 = 𝑌𝑛 − (𝑦𝑛 − (𝑖𝑛𝑡𝑒𝑟𝑐𝑒𝑝𝑡 + 𝑠𝑙𝑜𝑝𝑒 ∗ 𝑤𝑒𝑖𝑔h𝑡)) 𝑺𝒖𝒎 𝒐𝒇 𝒔𝒒𝒖𝒂𝒓𝒆𝒅 𝒓𝒆𝒔𝒊𝒅𝒖𝒂𝒍𝒔 = (1.1)2 + (0.4)2 + (1.3)2 = 3.1

На приведенном ниже графике показано, как изменение точки пересечения изменяет сумму квадратов остатков, увеличение от 0 до 1 дает меньшую сумму квадратов остатков, увеличение от 1 до 2 приводит к увеличению суммы квадратов остатков.

Градиентный приличный делает меньше вычислений, когда значение далеко от оптимального решения, и увеличивает количество вычислений, когда приближается к лучшему значению.

Теперь возьмем производную уравнения кривой (𝑂𝑏𝑠𝑒𝑟𝑣𝑒𝑑 — 𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑒𝑑)2, чтобы определить наклон при любом значении точки пересечения.

Взяв производную от суммы квадратов остатков, можно использовать градиентный спуск, чтобы найти самую низкую точку для остатков. Значение находится путем небольших шагов от начального предположения, пока не будет найдено наилучшее значение. Чем ближе оптимальное значение от точки пересечения, тем ближе к нулю наклон. Если шаги слишком велики, точка может оказаться на другой стороне кривой, если шаги слишком малы, это может занять целую вечность. Чтобы определить градиентный спуск с размером шага, умножьте наклон на скорость обучения, например 0,1.

Размер шага= Наклон * Скорость обучения
Следующий отрезок= Старый отрезок — Размер шага

Алгоритм остановится, используя либо максимальную итерацию, например 1000, либо когда она приблизится к нулю.

Формула:

Δ = разница между прогнозируемой и фактической точкой данных

1𝑛 𝑀𝑒𝑎𝑛 𝑆𝑞𝑢𝑎𝑟𝑒𝑑 𝑒𝑟𝑟𝑜𝑟 𝑜𝑟 𝑐𝑜𝑠𝑡 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛:

Найдите частную производную по m и b, чтобы получить наклон

Код:

определение gradiant_d(x, y): m=0

b=0
n_iterations = 10000
n = len(x)
learning_r = 0,08
для i в диапазоне (n_iterations):

pred_y = m * x + b
cost = (1/n) * sum([vl**2 для vl в (y-pred_y)])

md = -(2/n)* сумма(x*(y-pred_y)) bd = -(2/n)* сумма(y-pred_y)

m = m — Learning_r *md b = b — Learning_r *bd

Метод Ньютона

Метод Ньютона основан на наблюдении, что использование второй производной в дополнение к первой может помочь получить лучшее приближение. Полученная функция уже не линейная, а квадратичная.

Чтобы найти корень, он сначала выбирает случайную точку (X1) и выясняет, что функция оценивает при этом значении f(X1).

Теперь, когда f(x = X1) будет равно высоте в точке, наклон будет производной этой функции, оцениваемой в этой точке.

Наклон = f’(x = X1)
Используя наклон линии, мы можем найти вторую точку (X2)

Следующая точка — это X2, чтобы найти ее, нужно получить X1 минус ∆𝑥 или отношение между

Теперь, чтобы найти следующую точку X3, процесс можно повторить.

Метод Ньютона применительно к оптимизации дает возможность найти минимум или максимум. Он считался методом 2-го порядка, потому что он использует не только первую производную и градиент, но и 2-ю производную 𝑓''(𝑥), также называемую Хассиеном в многомерной переменной.

Вместо того, чтобы найти производную от 𝑓(𝑥), он пытается найти производную от функции, оцененной в X.

Пример кода:

Заключение Метод Ньютона и градиентный спуск

Приличный градиент — это функция первого порядка, которая использует производную этой функции для нахождения минимума. Метод Ньютона — это алгоритм поиска корня, который использует производную второго порядка для нахождения минимума этой функции. Производная второго порядка может быть быстрее, только если она известна и может быть легко вычислена, но в большинстве случаев это потребует больших вычислений и может быть дорогостоящим. Если для первой производной требуется 𝑁, то для нахождения второй потребуется 𝑁2.

Gradient Decent чувствителен к скорости обучения, и в случае стационарных точек алгоритмы будут работать непрерывно. Вместо этого метод Ньютона требует разработки

𝑓′(𝑥)/𝑓′′(𝑥) 𝑓𝑜𝑟 𝑓′(𝑥) = 𝑓′′(𝑥) = 0 означает, что программа остановится с ошибкой деления на ноль.

Ссылка

Лекция по машинному обучению 12 «Градиентный спуск / метод Ньютона» -Cornell CS4780 SP17,

добавил Килиан Вайнбергер. Доступно по URL-адресу [https://www.youtube.com/watch?v=o6FfdP2uYh4].

Ребентрост, П., 2022 г. Проверка безопасности ShieldSquare. [онлайн] Iopscience.iop.org. Доступны на:

‹https://iopscience.iop.org/article/10.1088/1367-2630/ab2a9e› [По состоянию на 2 января 2022 г.].

Флетчер, Р. (2005). «О методе Барзилаи-Борвейна». Ин Ци, Л.; Тео, К .; Ян, X. (ред.). Оптимизация и

Управление с помощью приложений. Прикладная оптимизация. Том. 96. Бостон: Спрингер. стр. 235–256.

Авриэль, Мордехай (2003). Нелинейное программирование: анализ и методы. Довер Паблишинг