Курс по нейронным сетям: https://stepik.org/a/227582
На предыдущих
занятиях мы с вами подробно познакомились с общей структурой полносвязной
нейронной сети прямого распространения:
в которой
использовалась исключительно пороговая функция активации:
и заранее
заданные весовые коэффициенты. Однако сразу указать нужные коэффициенты
для
большинства нейронных сетей просто невозможно, так как они состоят из огромного
числа нейронов и еще большего числа связей. В результате возникает задача
нахождения (автоматического вычисления) весовых коэффициентов для связей. Этот
процесс называется обучением нейронной сети.
Одну и ту же
сеть можно обучить для самых разных задач. Например, классификации кошек и
собак, или классификации мужчин и женщин, или наличие и отсутствие аномалий на
рентгеновских снимках и так далее. Что конкретно будет делать сеть, зависит от
значений весов связей
.
Но как их тогда подбирать? Для ответа на этот вопрос посмотрим на нейронную
сеть с несколько иного ракурса.
Пусть имеется следующая
двухслойная сеть:
с набором весов
для
первого (скрытого слоя),
-
для выходного слоя, и некоторыми функциями активации:
-
для нейронов первого (скрытого) слоя;
-
для нейронов выходного слоя. Работу такой сети математически можно записать следующим
образом:
где:
-
матрица весов связей скрытого слоя;
-
матрица весов связей выходного слоя.
Ту же самую
формулу, можно кратко представить в виде:
или в более
общей записи:
Здесь вектор
содержит
все весовые коэффициенты НС. То есть, изображение нейронной сети – это всего
лишь удобная визуализация многомерного нелинейного функционала
,
отображающего входные данные
в
выходные
.
А конкретный вид этого функционала зависит от значений параметров
.
И так можно представить любую нейронную сеть прямого распространения.
Но что нам это
дает? Смотрите. Если в нашем распоряжении будет множество различных входных
данных:
с известными
(требуемыми) выходными значениями:
то под эти
данные можно попытаться подобрать коэффициенты
функционала
так,
чтобы он для каждого входного вектора
выборки
выдавал
как можно более близкие значения к заданному вектору
выборки
.
Например, для
ранее рассмотренной НС, можно было бы сформировать матрицы
,
для
всех возможных исходов и по этим данным подобрать весовые коэффициенты
так,
чтобы эта НС корректно отображала все входы в требуемые (целевые) выходные
значения.
Напомню, что в
общем случае набор данных
называется
обучающей выборкой, так как часто служит для обучения различных алгоритмов, в
том числе, и НС. Такой подход к обучению, когда имеются входные данные и
контролируются выходные значения, называется обучение с учителем. Он
используется в подавляющем числе случаев. И мы также будем придерживаться этого
подхода.
Хорошо, у нас
имеется обучающая выборка, заданная структура нейронной сети, но как по этим
данным вычислять весовые коэффициенты
?
Подходов существует множество. Однако чаще всего, в качестве основного, применяется
градиентный алгоритм.
Идея градиентного алгоритма обучения
О градиентном
алгоритме я уже подробно рассказывал в курсе по машинному обучению. Поэтому
здесь углубляться в его работу не стану. Принцип заключается в следующем. Вначале
НС имеет некие, скорее всего, не подходящие значения весовых коэффициентов. И,
пропуская произвольный входной вектор
из
обучающей выборки
,
на выходе будет формироваться сигнал
,
отличающийся от требуемого (целевого)
.
Для измерения
рассогласования между векторами
и
вводится
функция потерь:
которая
минимальная (обычно 0), если векторы равны и увеличивается, при увеличении
рассогласования между
и
.
Например, в
задачах регрессии часто используется квадратическая функция потерь:
А в задачах
бинарной (двухклассовой) классификации – бинарная кросс-энтропия:
где
-
число (метка класса i-го образа);
-
выходное числовое значение для i-го входного образа
.
И так далее. Для
каждой текущей задачи подбирается своя, наиболее подходящая функция потерь.
Соответственно общий критерий качества работы НС по обучающей выборке можно
записать в виде:
То есть, весовые
коэффициенты
нужно
подобрать так, чтобы величина
была
как можно меньше. И, очевидно, этот функционал зависит от весовых
коэффициентов. Поэтому его также можно записать в виде:
Наверное,
некоторые из вас уже догадались, что точка минимума функционала
в
пространстве весовых коэффициентов
,
как раз ищется с помощью градиентного алгоритма. В общем случае его можно
записать в виде рекуррентного выражения:
где
-
некоторое небольшое положительное число (или вектор), определяющий скорость
сходимости градиентного алгоритма.
Расписывая
функционал качества, получим:
Или, учитывая,
что:
и
имеем:
Это общий вид
градиентного алгоритма для нахождения весовых коэффициентов
НС.
И отсюда хорошо видно, чтобы его реализовать, функция
должна
быть дифференцируемой, а значит, должны быть дифференцируемы и все функции
активации
,
используемые в нейронной сети. Поэтому пороговая функция:
не подходит для
реализации градиентного алгоритма обучения. Кроме того, ее производные до
порогового значения и после него равны нулю и из-за этого градиентный алгоритм
не сможет менять веса связей.
Какие же функции
выбрать? На сегодняшний день, одной из наиболее распространенных функций
активаций для скрытых слоев, является функция вида (ReLU):
На заре
нейронных сетей, в основном, применялись:
-
- сигмодиная
функция;
-
- гиперболический
тангенс.
А на выходном
слое часто используют следующие:
-
- линейная
функция активация; для задач регрессии;
-
- сигмодиная
функция активации; для задач бинарной классификации;
-
-
функция softmax для задач M-классовой
классификации.
Конечно, функций
активации огромное множество. С некоторыми из них мы с вами будем знакомиться
по мере прохождения этого курса.
Итак, чтобы
выполнить обучение НС с помощью градиентного алгоритма необходимо выбрать
дифференцируемые функции активации и дифференцируемую функцию потерь, на основе
которой определяются рассогласования между текущим выходным значением НС
и
требуемым целевым
.
На следующем занятии мы с вами подробно рассмотрим алгоритм обучения НС,
основанный на градиентном алгоритме, под названием back propagation.
Курс по нейронным сетям: https://stepik.org/a/227582