Правило обучения сети Кохонена
Процесс обучения сети Кохонена состоит из циклического повторения ряда шагов:
1. Нормирование входных векторов.
2. Подача исходных данных на входы. Обычно это случайный выбор одного из входных векторов.
3. Нахождение выхода каждого нейрона.
4. Определение "выигравшего" нейрона (веса которого в наименьшей степени отличаются от соответствующих компонентов входного вектора), или нейрона-победителя.
5. Корректировка весов "выигравшего" нейрона.
6. Переход на шаг 1, если обучение не завершено.
Поясним перечисленные шаги обучения [2, 5]. В сети Кохонена входные значения желательно нормировать, например, по формуле
,
где — нормированный компонент входного вектора.
Нормирование входных данных положительным образом сказывается на скорости обучения сети.
После определения "выигравшего" нейрона происходит коррекция по формуле весов этого нейрона.
Таким образом, нейрон, чей вектор весов был ближе к входному вектору, обновляется, чтобы быть еще ближе. В результате этот нейрон скорее всего выиграет конкуренцию при подаче на вход близкого вектора и проиграет при подаче существенно отличающегося вектора. После многократной подачи обучающих векторов будет иметься нейрон, который выдает 1, когда вектор принадлежит кластеру, и 0, когда вектор не принадлежит кластеру. Таким образом, сеть учится классифицировать входные векторы.
Для настройки весов нейронов по формуле используется функция learnk.
При обучении сети Кохонена возникает проблема так называемых "мертвых" нейронов. Одно из ограничений всякого конкурирующего слоя состоит в том, что некоторые нейроны оказываются незадействованными. Это проявляется в том, что нейроны, имеющие начальные весовые векторы, значительно удаленные от векторов входа, никогда не выигрывают конкуренции, независимо от того, как долго продолжается обучение. В результате оказывается, что такие векторы не используются при обучении и соответствующие нейроны никогда не оказываются победителями. Такие "нейроны‑неудачники" называют "мертвыми" нейронами, поскольку они не выполняют никакой полезной функции. Таким образом, входные данные будут интерпретироваться меньшим числом нейронов. Поэтому надо дать шанс победить всем нейронам. Для этого алгоритм обучения модифицируют таким образом, чтобы нейрон‑победитель терял активность.
В Neural Network Toolbox соответствующее правило настройки, учитывающее нечувствительность мертвых нейронов, реализовано в виде функции learncon и заключается в следующем. В начале процедуры настройки всем нейронам конкурирующего слоя присваивается одинаковый параметр активности , где
— количество нейронов конкурирующего слоя, равное числу кластеров. В процессе настройки функция learncon корректирует этот параметр таким образом, чтобы его значения для активных нейронов становились больше, а для неактивных нейронов меньше. Соответствующая формула для вектора параметров активности выглядит следующим образом:
c = (1-lr)*c + lr*a,
где lr—параметр скорости настройки; a — выходной вектор.
Смещения вычисляются по формуле
b = exp(1-log(c)) – b.
Смещение для нейрона-победителя уменьшится, а смещения для остальных нейронов немного увеличатся.
Параметр скорости настройки lrпо умолчанию равен 0.001. Увеличение смещений для неактивных нейронов позволяет расширить диапазон покрытия входных значений, и неактивный нейрон начинает формировать кластер. В конечном счете, он может начать притягивать новые входные векторы. Это дает два преимущества. Если нейрон не выигрывает конкуренции, потому что его вектор весов существенно отличается от векторов, поступающих на вход сети, то его смещение по мере обучения становится достаточно большим, и он становится конкурентоспособным. Когда это происходит, его вектор весов начинает приближаться к некоторой группе векторов входа. Как только нейрон начинает побеждать, его смещение начинает уменьшаться. Таким образом, задача активизации "мертвых" нейронов оказывается решенной. Второе преимущество, связанное с настройкой смещений, состоит в том, что они позволяют выровнять значения параметра активности и обеспечить притяжение приблизительно одинакового количества векторов входа. Таким образом, если один из кластеров притягивает большее число векторов входа, чем другой, то более заполненная область притянет дополнительное количество нейронов и будет поделена на меньшие по размерам кластеры.