Что такое ошибка нейросети

0
21

Нейронные сети обратного распространения ошибки

См. также

Алгоритмы обучаются на огромном объеме накопленных данных. Более того, они самообучаются, и ход этого процесса — во многом нерешенная загадка даже для разработчиков. Несмотря на то что многие люди не понимают, как именно работают нейросети, они повсеместно внедряются в рабочие процессы. Отчет Signal AI при участии 1000 руководителей по всему миру показал, что за 2021 год 79% компаний использовали для принятия решений искусственный интеллект, с эффективностью которого согласны 96% респондентов. При этом отказ от вовлечения ИИ стоил бизнесам 4,26 трлн долларов годового дохода.

В данной статье рассмотрен один из методов обучения многослойной нейронной сети – метод обратного распространения ошибки. Указана модель искусственного нейрона. Подробно проведены теоретические выкладки, лежащие в основе метода. Приведено их обобщение в векторном виде, что упрощает понимание и повышает наглядность процессов обучения и обработки информации в многослойных нейронных сетях.
Ключевые слова: нейрон, функция активации, нейронные сети, метод обратного распространения ошибки, обучение нейронной сети. № гос. регистрации 0420900096/0024 05.13.18 — Математическое моделирование, численные методы и комплексы программ

Из рис. 1 видно, что искусственный нейрон, так же, как и живой, состоит из синапсов, связывающих входы нейрона с ядром; ядро нейрона, которое осуществляет обработку входных сигналов и аксона, который связывает нейрон с нейронами следующего слоя. Каждый синапс имеет вес, который определяет, насколько соответствующий вход нейрона влияет на его состояние. Коль скоро нейрон получает на свои входы суммарный сигнал, превышающий некоторое пороговое значение, на его аксоне формируется выходной сигнал.
Таким образом, выход нейрона имеет следующий вид:
,
где – т.н. активационная функция,
— вес -го синапса,
а — значение -го входа нейрона.
Наиболее часто в качестве активационной функции используется сигмоид, который имеет следующий вид:

Основное достоинство этой функции в том, что она дифференцируема на всей оси абсцисс и имеет очень простую производную:

При уменьшении параметра сигмоид становится более пологим, вырождаясь в горизонтальную линию на уровне 0,5 при . При увеличении сигмоид все больше приближается к функции единичного скачка [1].
Как уже было сказано, здесь будут рассматриваться только многослойные нейросети. Такая сеть строится из нескольких слоев нейронов. В пределах слоя нейроны не связаны, однако между соседними слоями нейроны соединяются по принципу «каждый с каждым» так, что выходы предыдущего слоя являются входами следующего. Если же нужно подчеркнуть отсутствие связи между какими-либо нейронами, то просто полагают вес данного синапса равным нулю.

Чтобы получить от ИИ качественный результат, надо немало времени посвятить изучению той или иной нейросети. А это уже сопоставимо с изучением нового рабочего инструмента и напрямую связано с возникшей совсем недавно профессией — промпт-инженер. Промпт-инженерия включает в себя:

Чтобы обновить вес [math]w_[/math] используя градиентный спуск, нужно выбрать скорость обучения, [math]\eta \gt 0[/math] . Изменение в весах должно отражать влияние [math]E[/math] на увеличение или уменьшение в [math]w_[/math] . Если [math]\frac<\partial E><\partial w_> \gt 0[/math] , увеличение [math]w_[/math] увеличивает [math]E[/math] ; наоборот, если [math]\frac<\partial E><\partial w_> \lt 0[/math] , увеличение [math]w_[/math] уменьшает [math]E[/math] . Новый [math]\Delta w_[/math] добавлен к старым весам, и произведение скорости обучения на градиент, умноженный на [math]-1[/math] , гарантирует, что [math]w_[/math] изменения будут всегда уменьшать [math]E[/math] . Другими словами, в следующем уравнении, [math]- \eta \frac<\partial E><\partial w_>[/math] всегда изменяет [math]w_[/math] в такую сторону, что [math]E[/math] уменьшается:

где под звездочкой понимается покоординатное умножение векторов. Обозначая через выражение, стоящее в квадратных скобках, можно последовательно найти все .
Объединяя формулы (1) и (2), легко получить рекурсивную процедуру вычисления всех (однако, как легко заметить, никакого «обратного распространения ошибки» не происходит, а название метода связано лишь с тем, что коррекцию весов матриц на каждом уровне удобнее производить, двигаясь от самого последнего уровня).
Стоит отметить, что эта процедура позволяет выполнить лишь один шаг алгоритма градиентного спуска. Выбор параметра скорости обучения на каждом шаге можно осуществлять различными способами, например, из условия максимального убывания функции ошибки, или же считать постоянным, а шаги градиентного спуска выполнять до достижения некоторой степени точности решения одного примера. Но, вообще говоря, задача выбора размера шага является сложной и нетривиальной. Например, если размер шага фиксирован и очень мал, то сходимость будет слишком медленная; если же он фиксирован и слишком велик, то может возникнуть т.н. паралич сети (т.е. состояние, когда сеть теряет способность к обучению) или постоянная неустойчивость. В теоретическом отношении эта проблема изучена достаточно плохо [3]. Поэтому, как правило, параметры обучения сети подбираются экспериментально до достижения приемлемого результата распознавания образов.

В теории

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

Тогда очевидно, что при .
Остается рассмотреть лишь случай .
.
Напомним также, что все нам известны (они получены при предъявлении обучаемого образа). Если сеть однослойная, то остается лишь скорректировать веса согласно формуле . В противном случае необходимо продолжить вычисление .
Для этого воспользуемся полученными выше результатами. Обозначим через вектор с координатами . Тогда, к примеру, , или в векторном виде

Техническое задание в нейросетевом деле называется «промпт» (от англ. prompt — «побуждать») — инструкция или, иначе, запрос, передаваемый нейросети. Чтобы предложить релевантную информацию на выходе, нейросети требуется как можно больше вводных. Без конкретики она не сгенерирует результат, отвечающий вашей цели и задачам. Нейросеть — это инструмент, который будет в точности выполнять техническое задание. Чем подробнее оно будет, тем лучший результат получится.

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

ЧИТАТЬ ТАКЖЕ:  Как сделать трек через нейросеть

Входные значения [math]\text_j[/math] нейрона — это взвешенная сумма выходных значений [math]o_k[/math] предыдущих нейронов. Если нейрон в первом слое после входного, то [math]o_k[/math] входного слоя — это просто входные значения [math]x_k[/math] сети. Количество входных значений нейрона [math]n[/math] . Переменная [math]w_[/math] обозначает вес на ребре между нейроном [math]k[/math] предыдущего слоя и нейроном [math]j[/math] текущего слоя.

Изначально веса задаются случайно. Затем, нейрон обучается с помощью тренировочного множества, которое в этом случае состоит из множества троек [math](x_1, x_2, t)[/math] где [math]x_1[/math] и [math]x_2[/math] — это входные данные сети и [math]t[/math] — правильный ответ. Начальная сеть, приняв на вход [math]x_1[/math] и [math]x_2[/math] , вычислит ответ [math]y[/math] , который вероятно отличается от [math]t[/math] . Общепринятый метод вычисления несоответствия между ожидаемым [math]t[/math] и получившимся [math]y[/math] ответом — квадратичная функция потерь:

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

Умение работать с ИИ — важная составляющая технологического развития и характерная примета ближайшего будущего. Тем не менее не многие знают, как вести себя с новыми «помощниками» и извлечь максимум от взаимодействия с ними. О главных ошибках и заблуждениях рассказывает основатель онлайн-сервиса автоматической верстки печатных и электронных изданий «Метранпаж» Кир Витковский

Находим производную ошибки

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

Под влиянием технологического бума люди забывают главное: у нейросетей нет воображения. Фантазия, идея и эксперимент доступны только человеку. Кроме того, для развития нейросетей нужны целые отделы тренеров и тестировщиков. Это колоссальные расходы, к которым на сегодняшний день мало кто готов. При этом крупнейшие корпорации только увеличивают наем сотрудников: в 2022-м Walmart Global Tech — технологическое подразделение всемирно известного американского ретейлера — заявило об открытии 5000 вакансий. А по оценкам Всемирного экономического форума, ИИ и вовсе создаст почву для возникновения 97 миллионов новых рабочих мест к 2025 году.

Не единичны кейсы, когда в общении с нейросетями пользователи делятся сокровенным и, получая эмпатичные и поддерживающие ответы от искусственного интеллекта, проникаются к нему теплыми чувствами. Так, широкую известность приобрел роман 63-летнего Питера и 23-летней Андреа, чат-бота приложения Replika. И если эта история — со счастливым концом, то пример 40-летнего музыканта из США гораздо более печальный. После очередного обновления чат-бот Федра, с которой мужчина успел сильно сблизиться, вдруг стала холодно отвечать на романтические сообщения. Это принесло ему чувство глубокой потери и разочарования.

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

Множитель [math]\textstyle\frac[/math] добавлен чтобы предотвратить возникновение экспоненты во время дифференцирования. На результат это не повлияет, потому что позже выражение будет умножено на произвольную величину скорости обучения (англ. learning rate).

Следует остановиться на том, что понимают под слоем сети. В результате неразвитой терминологии нейронных сетей прошлых лет, резкой критики и непонимания задач исследования нейросетей, а иногда и ложного освещения прессой, изначальный смысл этого понятия исказился. В разных трактовках одна и та же сеть может называться и однослойной, и многослойной [2]. Здесь стоит вспомнить, что входной слой состоит, по сути, из нейронов-рецепторов, а однослойная сеть, состоящая лишь из таких нейронов, будет бесполезна. Поэтому следует рассматривать сети, состоящие как минимум из двух слоев – клеток-рецепторов и нейронов выходного слоя.
Однако, как легко заметить, на первом слое никакой обработки информации не происходит. Поэтому удобнее считать лишь те слои нейронов, на которых происходит суммация возбуждения. В этом случае упомянутую выше двухслойную сеть следует называть однослойной.
Для того чтобы сеть могла функционировать, ее необходимо обучить. Одним из алгоритмов обучения сетей является метод обратного распространения ошибки. Впервые этот метод был описан в 1974 г. А.И. Галушкиным, а также независимо и одновременно Полем Дж. Вербосом. Далее существенно развит в 1986 г. Дэвидом И. Румельхартом, Дж. Е. Хинтоном и Рональдом Дж. Вильямсом и независимо и одновременно С. И. Барцевым и В.А. Охониным (Красноярская группа). Это итеративный градиентный алгоритм, который используется с целью минимизации ошибки работы нейронной сети и получения желаемого выхода [3].
Существенным условием применимости метода является дифференцируемость активационной функции.
По сути, задача обучения НС сводится к нахождению некой функциональной зависимости , где – входной, а – выходной векторы. В общем случае такая задача при ограниченном наборе входных данных имеет бесконечное множество решений [1]. Для ограничения пространства поиска при обучении ставится задача минимизации целевой функции ошибки НС, которая находится, к примеру, по методу наименьших квадратов:

где
– значение -го выхода нейросети,
– целевое значение -го выхода,
– номер последнего слоя.
Обучение нейросети производится методом градиентного спуска [4, с. 108], т.е. на каждой итерации изменение веса производится по формуле
,
где
– параметр, определяющий скорость обучения,
– номер слоя.
Последняя задача сводится к вычислению частных производных . Это легко сделать явно, раскрывая производную сложной функции. Для последнего уровня запись будет выглядеть следующим образом:
.
Т.к. по определению
, ,
то входит как множитель только в выражение . Это можно видеть из рис. 3.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь