Лекция №5. Самоорганизующиеся карты Кохонена

В настоящей лекции мы рассмотрим нейронную сеть, которая называется самоорганизующейся картой Кохонена - Self Organization Map (SOM). Главной особенностью этой сети является то, что ее нейроны имеют определенное геометрическое расположение, и мы можем вычислять расстояние между нейронами сети.

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

Посмотрите нашу видео-лекцию, посвященную самоорганизующимся сетям Кохонена:

Опишем алгоритм построения карты Кохонена. Пусть исходные вектора, по которым мы будем строить карту представляют собой N-мерные вектора

X=[x1,x2,...,xN].

Карта Кохонена представляет собой набор нейронов, которые расположены на плоскости, например, прямоугольной сеткой. При этом важно, что для каждой пары этих нейронов можно вычислить геометрическое расстояние. Будем считать, что таких нейронов у нас M.

Каждый нейрон, кроме своего геометрического положения, описывается N-мерным числовым вектором

Wm=[wm1,wm2,...,wmN],

где wmn суть действительные числа.

Итак, алгоритм обучения сети:

  1. Инициализируем вектора Wm случайными числами, желательно, чтобы эти числа были порядка тем, которые в исходных данных.
  2. Положим параметр времени t = 1.
  3. Выбираем произвольный вектор из исходных данных X.
  4. Находим нейрон, который наиболее близок к вектору X. Близок по метрике N-мерного вектора. Обозначим этот нейрон через Wm*, где m* - номер этого нейрона.
  5. Корректируем все коэффициенты нейронов по следующей формуле

    wmn=wmn + η(t)h(t, ρ(m, m*))[xn-wmn],


    где η(t) = η0exp(-at), h(t, ρ)=exp[-(ρ2) / (2σ(t))], σ(t)=σ0exp(-bt). Здесь через ρ(m, m*) обозначено расстояние в геометрии расположения нейронов на плоскости для нейрона с номером m и m*.
  6. t = t + 1
  7. Если превышено максимальное время, то выход из алгоритма.
  8. Переход к шагу 3.

После построения карты SOM ее нужно градуировать. Для этого нужно выбрать эталонные значения входных данных (необязательно из тех, что использовались в обучении) и наложить их на карту. Наложить на карту означает найти нейрон, который будет ближе всего эталонному значению.

После градуированния карты ее можно использовать. Для любого вектора X определяем ближайший нейрон и его расположение покажет область, к которой относится этот вектор.

Рассмотрим пример работы программы, которая реализует карту SOM. Исходный текст программы на языке C# можно скачать AI-SOM.

Испытаем нашу программу на данных, которые мы использовали на прошлой лекции

Здесь мы градуировали следующие танки:

  • «Тигр»
  • Т-34
  • PzKpfw III
  • «Пантера»
  • PzKpfw I
  • ИС-3

В этой диаграмме мы видим, как расположены указанные танки.

Home | Лекции | Python | Видео | Скачать | Ссылки
Copyright (c) 2017, Roman Shamin
156
43536
77