Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.09.2026
Размер:
6 Мб
Скачать
Почему бы не использовать математику для непосредственного вычисления весов? Последний путь нам не подходит ввиду громоздкости соответствующих выкладок. Существует слишком много комбинаций весов и слишком много функций, зависящих от функций, зависящих от других функций и т.д., которые мы должны комбинировать в ходе анализа распространения сигнала по сети.
Представьте себе хотя бы небольшую нейронную сеть с тремя слоями и тремя нейронами в каждом слое, подобную той, с которой мы перед этим работали. Как отрегулировать весовой коэффициент для связи между первым входным узлом и вторым узлом скрытого слоя, чтобы сигнал на выходе третьего узла увеличился, скажем, на 0,5? Даже если бы нам повезло и мы сделали это, достигнутый результат мог бы быть разрушен настройкой другого весового коэффициента, улучшающего сигнал другого выходного узла. Как видите, эти расчеты далеко не тривиальны.
А не могли бы мы просто перебирать случайные сочетания весовых коэффициентов, пока не будет получен устраивающий нас результат?
Этот вопрос не столь уж наивен, как могло бы показаться, особенно когда задача действительно трудная. Такой подход называется методом грубой силы.
Представьте, что каждый весовой коэффициент может иметь
1000 возможных значений в диапазоне от –1 до +1, например 0,501, –0,203 или 0,999. Тогда в случае нейронной сети с тремя
слоями по три узла, насчитывающей 18 весовых коэффициентов, мы должны были бы протестировать 18 тысяч возможностей.
Если бы у нас была более типичная нейронная сеть с 500
узлами в каждом слое, то нам пришлось бы
протестировать 500 миллионов различных значений весов.
Если бы для расчета каждого набора комбинаций
требовалась одна секунда, то для обновления весов с
помощью всего лишь одного тренировочного примера
понадобилось бы примерно 16 лет. Тысяча тренировочных
примеров — и мы имели бы 16 тысяч лет!
Как видите, подход, основанный на методе грубой силы, практически нереализуем!
Математические выражения, позволяющие определить
f
NN
(x)
f1f
2
g
i
выходной сигнал нейронной сети при известных весовых коэффициентах, необычайно сложны, и в них нелегко разобраться. Количество различных комбинаций слишком велико для того, чтобы пытаться тестировать их поочередно.
y = f
NN
Функция - сложная функция и имеет вид:
y = f
NN
и - это векторные функции, которые определяются как
(x) = f3( f2( f1(x))))
def
(x)
(Wlz+bl)
fl(z)
l - индекс слоя, - функция активации, W -
матрица и b - вектор
= g
i
Проиллюстрируем суть наших рассуждений на следующем
примере
Представьте себе ландшафт с очень сложным рельефом, имеющим возвышения и впадины, а также холмы с предательскими буграми и ямами. Вокруг так темно, что ни зги не видно. Вы знаете, что находитесь на склоне холма, и вам нужно добраться до его подножия.Точной карты местности у вас нет. Но у вас есть фонарь. Что вы будете делать?
Света фонаря не хватит для дальнего обзора, и вы наверняка не сможете осмотреть весь ландшафт целиком. Но вы сможете увидеть, по какому участку проще всего начать спуск к подножию холма, и сделаете несколько небольших шагов в этом направлении.
Действуя подобным образом, вы будете медленно, шаг за шагом, продвигаться вниз, не располагая общей картой и заблаговременно проложенным маршрутом.
А теперь представьте, что этим сложным ландшафтом является математическая функция.
y = f
NN
Метод градиентного спуска позволяет находить минимум,
(x) = f3( f2( f1(x))))
даже не располагая знаниями свойств этой функции, достаточными для нахождения минимума математическими методами.
А какое отношение имеет этот действительно эффективный метод градиентного спуска к нейронным сетям?
Если упомянутой сложной функцией является ошибка сети, то спуск по склону для нахождения минимума означает, что мы минимизируем ошибку. Мы улучшаем выходной сигнал сети. Это именно то, чего мы хотим!
Рассмотрим использование метода градиентного спуска на простейшем примере. На следующем слайде приведен график простой функции:
2
y = (x − 1)
Если бы это была функция, описывающая ошибку, то мы должны были бы найти значение x, которое минимизирует эту функцию. (Представим на минуту, что мы имеем дело не
со столь простой функцией, а с гораздо более сложной).
+ 1
Соседние файлы в папке ML - Коротков (2 сем, мага)