Обучение слоя Кохонена: настройка весовых коэффициентов

Обучение слоя Кохонена: настройка весовых коэффициентов

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

Вращение весового вектора в процессе обучения

При обучении слоя Кохонена на вход подается входной вектор и вычисляются его скалярные произведения с векторами весов, связанными со всеми нейронами Кохонена. Нейрон с максимальным значением скалярного произведения объявляется «победителем» и его веса подстраиваются. На рис. 1 этот процесс показан геометрически в двумерном виде (vec{W_C} – вектор старых весовых коэффициентов, vec{W_H} – вектор новых весовых коэффициентов). Сначала находится вектор vec{X}~-~vec{W_C}, для этого проводится отрезок из конца vec{W_C} в конец vec{X}. Затем этот вектор укорачивается умножением его на скалярную величину beta, меньшую единицы, в результате чего получается вектор изменения vec{N}~=~(vec{X}~-~vec{W_C}). Окончательно новый весовой вектор vec{W_H} является отрезком, направленным из начала координат в конец вектора . Отсюда можно видеть, что эффект обучения состоит во вращении весового вектора в направлении входного вектора без существенного изменения его длины.

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

Если бы с каждым нейроном Кохонена ассоциировался один входной вектор, то слой Кохонена мог бы быть обучен с помощью одного вычисления на вес. Веса нейрона-победителя приравнивались бы к компонентам обучающего вектора. Как правило, обучающее множество включает много сходных между собой входных векторов, и сеть должна быть обучена активировать один и тот же нейрон Кохонена для каждого из них. В этом случае веса этого нейрона должны получаться усреднением входных векторов, которые должны его активировать. Постепенное уменьшение величины beta уменьшает воздействие каждого обучающего шага, так что окончательное значение будет средней величиной от входных векторов, на которых происходит обучение. Таким образом, веса, ассоциированные с нейроном (образующие так называемое «ядро» класса), примут значение вблизи «центра» входных векторов, для которых данный нейрон является «победителем».

Итак, классический алгоритм обучения слоя Кохонена выглядит следующим образом:

  • Присвоение весовым коэффициентам некоторых начальных значений. Общепринятой практикой при работе с нейронными сетями является присваивание весам небольших случайных значений.
  • Подать на вход нейронной сети вектор vec{x_i} из обучающего множества X.
  • Рассчитать выход слоя Кохонена и определить «выигравший» нейрон k, т.е. нейрон с максимальным выходом.
  • Произвести корректировку весов «выигравшего» нейрона по следующей формуле:
vec{w_{k}}~=~vec{w_{k}}~+~beta(vec{x_i}~-~vec{w_k})

где:

  • beta – коэффициент скорости обучения.

Коррекция весов записана в виде векторного выражения. Часто используют расписание с обучением, когда beta~=~beta(t) монотонно убывает. Требования к beta(t) те же, что и в случае многослойного персептрона.

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

Прокрутить вверх