2.5. Алгоритмы обучения нейронных сетей с учителем

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

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

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

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

Рассмотрим алгоритм обучения с учителем (рис. 2.11).

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

Рассмотрим более подробно алгоритм обучения НС с учителем для однослойной нейронной сети, примером которой является однослойный персептрон (см. рис. 2.7).

1) Проинициализировать элементы весовой матрицы (обычно небольшими случайными значениями).

Рис. 2.11. Схема процесса обучения нейросети с учителем

2) Подать на входы один из входных векторов, которые сеть должна научиться различать, и вычислить ее выход.

3) Если выход правильный, перейти на шаг 4.

Иначе вычислить разницу между идеальным  и полученным  значениями выхода:

.

Модифицировать веса в соответствии с формулой

,

где t и t+1 – номера соответственно текущей и следующей итераций;  – коэффициент скорости обучения, 0< <1; i – номер входа; j – номер нейрона в слое.

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

4) Цикл с шага 2, пока сеть не перестанет ошибаться.

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

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

Алгоритм обратного распространения

(Error Back Propagation)

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

,                                     (2.15)

где  – реальное выходное состояние нейрона j выходного слоя Q нейронной сети при подаче на ее входы p-го образа;  – идеальное (желаемое) выходное состояние этого нейрона.

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

.                                                (2.16)

Здесь wij – весовой коэффициент синаптической связи, соединяющей i-й нейрон слоя q-1 с j-м нейроном слоя q; h – коэффициент скорости обучения, 0 < h < 1.

В соответствии с правилом дифференцирования сложной функции

.                                         (2.17)

Здесь под yj, как и раньше, подразумевается выход нейрона j, а под sj – взвешенная сумма его входных сигналов, то есть аргумент активационной функции. Так как множитель dyj/dsj является производной этой функции по ее аргументу, из этого следует, что производная активационной функции должна быть определена на всей оси абсцисс. В связи с этим функция единичного скачка и прочие активационные функции с неоднородностями не подходят для рассматриваемых НС. В них применяются такие гладкие функции, как гиперболический тангенс или классический сигмоид с экспонентой. В случае гиперболического тангенса

.                                                     (2.18)

Третий множитель ¶sjwij, очевидно, равен выходу нейрона предыдущего слоя yi(q-1). Что касается первого множителя в (2.17), он легко раскладывается следующим образом:

.                      (2.19)

Здесь суммирование по k выполняется среди нейронов слоя q+1. Введя новую пере-менную

,                                                (2.20)

мы получим рекурсивную формулу для расчетов величин dj(q) слоя q из величин dk(q+1) более старшего слоя q+1.

.                                         (2.21)

Для выходного же слоя

.                                                     (2.22)

Теперь мы можем записать (2.16) в раскрытом виде:

.                                                     (2.23)

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

,                 (2.24)

где m – коэффициент инерционности; t – номер текущей итерации.

Данный алгоритм используется в двух вариантах [1]. В стохастическом варианте веса пересчитываются каждый раз после просчета очередного образца, а в эпохальном веса меняются после просчета всего обучающего множества (эпохи).

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

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

,                                              (2.25)

где M – число нейронов в слое q-1 с учетом нейрона с постоянным выходным состоянием +1, задающего смещение; yi(q-1) = xij(q) i-й вход нейрона j слоя q.

yj(q) = f(sj(q)),                                                      (2.26)

где f() – сигмоид

yr(0) = xr,                                                           (2.27)

где xrr-я компонента вектора входного образа.

2) Рассчитать d(Q) для выходного слоя по формуле (2.22).

Рассчитать по формуле (2.23) или (2.24) изменения весов Dw(Q) слоя Q.

3) Рассчитать по формулам (2.21) и (2.23) (или (2.21) и (2.24)) соответственно d(n) и Dw(q) для всех остальных слоев, q = Q-1,…,1.

4) Скорректировать все веса в НС

.                                 (2.28)

5) Если ошибка сети существенна, перейти на шаг 1. В противном случае – конец.

Сети на шаге 1 попеременно в случайном порядке предъявляются все тренировочные образы, чтобы сеть, образно говоря, не забывала одни по мере запоминания других. Алгоритм иллюстрируется рис. 2.12.

Из выражения (2.23) следует, что, когда выходное значение yi(q-1) стремится к нулю, эффективность обучения заметно снижается. При двоичных входных векторах в среднем половина весовых коэффициентов не будет корректироваться, поэтому область возможных значений выходов нейронов [0,1] желательно сдвинуть в пределы [-0.5, +0.5], что достигается простыми модификациями логистических функций. Например, сигмоид с экспонентой преобразуется к виду

.                                           (2.29)

Рис. 2.12. Диаграмма сигналов в сети при обучении по алгоритму

обратного распространения

Теперь коснемся вопроса емкости НС, то есть числа образов, предъявляемых на ее входы, которые она способна научиться распознавать. Для сетей с числом слоев больше двух, он остается открытым. Для НС с двумя слоями, то есть выходным и одним скрытым слоем, детерминистская емкость сети Cd оценивается так:

Nw/Ny  < Cd  < Nw/Ny×log(Nw/Ny),                                     (2.30)

где Nw – число подстраиваемых весов; Ny – число нейронов в выходном слое.

Следует отметить, что данное выражение получено с учетом некоторых ограничений. Во-первых, число входов Nx и нейронов в скрытом слое Nh должно удовлетворять неравенству Nx + Nh  > Ny. Во-вторых, Nw/Ny > 1000. Однако вышеприведенная оценка выполнялась для сетей с активационными функциями нейронов в виде порога, а емкость сетей с гладкими активационными функциями, например (2.29), обычно больше. Кроме того, фигурирующее в названии емкости прилагательное "детерминистский" означает, что полученная оценка емкости подходит абсолютно для всех возможных входных образов, которые могут быть представлены Nx входами. В действительности распределение входных образов, как правило, обладает некоторой регулярностью, что позволяет НС проводить обобщение и, таким образом, увеличивать реальную емкость. Так как распределение образов, в общем случае, заранее не известно, мы можем говорить о такой емкости только предположительно, но обычно она раза в два превышает емкость детерминистскую.

В продолжение разговора о емкости НС логично затронуть вопрос о требуемой мощности выходного слоя сети, выполняющего окончательную классификацию образов. Дело в том, что для разделения множества входных образов, например, по двум классам достаточно всего одного выхода. При этом каждый логический уровень – "1" и "0" – будет обозначать отдельный класс. На двух выходах можно закодировать уже 4 класса и так далее. Однако результаты работы сети, организованной таким образом, можно сказать – "под завязку", – не очень надежны. Для повышения достоверности классификации желательно ввести избыточность путем выделения каждому классу одного нейрона в выходном слое или, что еще лучше, нескольких, каждый из которых обучается определять принадлежность образа к классу со своей степенью достоверности, например: высокой, средней и низкой. Такие НС позволяют проводить классификацию входных образов, объединенных в нечеткие (размытые или пересекающиеся) множества. Это свойство приближает подобные НС к условиям реальной жизни.

Рассматриваемая НС имеет несколько "узких мест". Во-первых, в процессе обучения может возникнуть ситуация, когда большие положительные или отрицательные значения весовых коэффициентов сместят рабочую точку на сигмоидах многих нейронов в область насыщения. Малые величины производной от логистической функции приведут в соответствие с (2.21) и (2.22) к остановке обучения, что парализует НС. Во-вторых, применение метода градиентного спуска не гарантирует, что будет найден глобальный, а не локальный минимум целевой функции. Эта проблема связана еще с одной, а именно – с выбором величины скорости обучения. Доказательство сходимости обучения в процессе обратного распространения основано на производных, то есть приращения весов и, следовательно, скорости обучения должны быть бесконечно малыми, однако в этом случае обучение будет происходить неприемлемо медленно. С другой стороны, слишком большие коррекции весов могут привести к постоянной неустойчивости процесса обучения. Поэтому в качестве h обычно выбирается число меньше 1, но не очень маленькое, например, 0.1, и оно, вообще говоря, может постепенно уменьшаться в процессе обучения. Кроме того, для исключения случайных попаданий в локальные минимумы иногда, после того как значения весовых коэффициентов застабилизируются, h кратковременно сильно увеличивают, чтобы начать градиентный спуск из новой точки. Если повторение этой процедуры несколько раз приведет алгоритм в одно и то же состояние НС, можно более или менее уверенно сказать, что найден глобальный максимум, а не какой-то другой.

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