цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Как обучить многослойную нейронную сеть



Как обучить многослойную нейронную сеть

Автор: Mike(admin) от 5-02-2020, 13:35

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


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


Как обучить многослойную нейронную сеть

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


Давайте посмотрим на правило обучения, которое мы использовали для обучения однослойного перцептрона в предыдущей статье.


правило обучения

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


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


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


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


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


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


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


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

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


Стандартный метод количественного определения ошибки нейронной сети состоит в том, чтобы возвести в квадрат разницу между ожидаемым (или «целевым») значением и рассчитанным значением для каждого выходного узла, а затем суммировать все эти квадратичные различия. Вы можете назвать это «сумма квадратов разности» или «сумма квадратов ошибок» или, возможно, различные другие вещи, и в будущем вы также увидите в литературе аббревиатуру LMS, которая обозначает наименьшее среднеквадратичное значение, потому что цель обучения состоит в том, чтобы минимизировать среднее значение квадрата ошибки. Эта функция ошибок (обозначаемая E) может быть математически выражена следующим образом.


функция ошибок

Здесь k указывает диапазон выходных узлов, t является целевым выходным значением, а o является рассчитанным выходным значением.


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




© digitrode.ru


Теги: нейронная сеть, искусственный интеллект, машинное обучение




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

Комментарии:

Оставить комментарий