Идея обучения НС градиентным алгоритмом

Смотреть материал на YouTube | RuTube

На предыдущих занятиях мы с вами подробно познакомились с общей структурой полносвязной нейронной сети прямого распространения:

в которой использовалась исключительно пороговая функция активации:

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

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

Пусть имеется следующая двухслойная сеть:

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

где:

 - матрица весов связей скрытого слоя;

 - матрица весов связей выходного слоя.

Ту же самую формулу, можно кратко представить в виде:

или в более общей записи:

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

Но что нам это дает? Смотрите. Если в нашем распоряжении будет множество различных входных данных:

с известными (требуемыми) выходными значениями:

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

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

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

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

Идея градиентного алгоритма обучения

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

Для измерения рассогласования между векторами  и  вводится функция потерь:

которая минимальная (обычно 0), если векторы равны и увеличивается, при увеличении рассогласования между  и .

Например, в задачах регрессии часто используется квадратическая функция потерь:

А в задачах бинарной (двухклассовой) классификации – бинарная кросс-энтропия:

где  - число (метка класса i-го образа);  - выходное числовое значение для i-го входного образа .

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

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

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

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

Расписывая функционал качества, получим:

Или, учитывая, что:

 и

имеем:

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

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

Какие же функции выбрать? На сегодняшний день, одной из наиболее распространенных функций активаций для скрытых слоев, является функция вида (ReLU):

На заре нейронных сетей, в основном, применялись:

  •  - сигмодиная функция;
  •  - гиперболический тангенс.

А на выходном слое часто используют следующие:

  •  - линейная функция активация; для задач регрессии;
  •  - сигмодиная функция активации; для задач бинарной классификации;
  •  - функция softmax для задач M-классовой классификации.

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

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

Видео по теме