Простое пошаговое руководство с математическим примером

Самоорганизующаяся карта (SOM), предложенная Теуво Кохоненом, представляет собой метод визуализации данных. Это помогает понять многомерные данные за счет уменьшения размеров данных на карте. А также демонстрирует кластеризацию, объединяя похожие данные вместе. Эта способность к кластеризации была хорошо воспринята после того, как был представлен вариант SOM, Growing Self Organizing ma.

Мы можем резюмировать SOM как:

SOM уникален, поскольку он отклоняется от наиболее общего подхода «исправления ошибок» и, скорее, соответствует конкурентному обучению.

Что на самом деле происходит?

Точки данных будут соревноваться за свое представительство в Сети. Сначала сеть инициализируется весами. Данные из обучающих наборов данных выбираются случайным образом, и вычисляется расстояние между узлами (весами) и вектором выборки. Самым коротким из расстояний считается BMU. Затем находится окрестность узла-победителя или BMU. Обновляются веса или узлы соседей. Повторяйте процесс до тех пор, пока сеть не будет обучена для всех обучающих данных.

Единица наилучшего соответствия (BMU): узел-победитель (или вес), который имеет кратчайшее расстояние от себя до вектора выборки. Существует множество способов определения расстояния, однако наиболее часто используется метод Евклидово расстояние, который является наиболее распространенной метрикой для расчета расстояния между весами и вектором выборки.

Алгоритмический разрыв

  • Инициирование (рандомизация)
  • Соревнование (выберите узел победителя)
  • Сотрудничество (Определить район)
  • Адаптация (адаптация веса победителей и соседей)
  • Сглаживание (уменьшайте NR по мере увеличения итераций / вводите необязательную фазу сглаживания)

Параметры

R / C - количество строк / столбцов

N - количество нейронов

MaxIter - количество итераций.

MaxNR - максимальный радиус сетки.

nr (t) - радиус окрестности

ර (t) - скорость обучения

A - количество размеров

Расстояние между нейроном i и j = ›D (wi, wj)

Ввод - ›All_inputs = {x1, x2….}

wk = все веса или узлы

Пробуем алгоритм SOM ​​для конкретных данных

Начальные веса будут w1 = (0,45,0,89), w2 = (0,55,0,83), w3 = (0,95,0,32) и w4 = (0,62,0,78). И пусть четыре нейрона (N = 4) N1, N2, N3 и N4 расположены в сетке в положениях декартовой плоскости (0,0), (1,0), (1,0) и (1,1) соответственно. . И предположим, что сеть принимает двумерный (A = 2) входной вектор (x1, x2). Пусть w_i = (w1_i, w2_i) будет весом для нейрона i. nr = 0,6. Входной вектор (3,1). Предположим, что скорость обучения = 0,5, и она постоянна на всем протяжении. Примите начальные веса, как указано на диаграмме.

1-я итерация

  1. Вычислить радиус окрестности = ›nr = 0,6 (с первой итерации)
  2. Рассчитать скорость обучения = ›ර (t) = 0,5 (и постоянная)

3. Найдите ближайшего соседа или узел-победитель для данного векторного ввода (используйте евклидово расстояние).

d (V,N1) = (3–0.45)² + (1–0.89)² = 6.514

d (V,N2) = (3–0.55)² + (1–0.83)² = 6.03

d (V,N3) = (3–0.62)² + (1–0.78)² = 5.71

d (V,N4) = (3–0.95)² + (1–0.32)² = 4.66

4. Поскольку d (V, N4) - наименьшее расстояние, узел-победитель равен N4.

5. Рассчитайте расстояние между узлом-победителем и другими узлами.

d (N4, N1) = sqrt ((0,45–0,95) ² + (0,89–0,3) ²) = 0,75 (›nr)

d (N4, N2) = sqrt ((0,55–0,95) ² + (0,89–0,32) ²) = 0,648 (›nr)

d (N4, N3) = sqrt ((0,62–0,95) ² + (0,89–0,78) ²) = 0,566 (‹nr)

d (N4, N4) = sqrt ((0,95–0,95) ² + (0,89–0,89) ²) = 0 (‹nr)

6. Выберите узлы для обновления весов.

Поскольку d (N4, N3), d (N4, N4) ‹nr =› N3, N4 выбраны для обновления своих весов

7. обновить их вес, используя

w(t+1) = w(t) + Q(t) * ර(t) (x-w(t))

Обновление веса для N3:

Обновление веса для N4:

В этом блоге мы обсудили небольшой пример того, как веса добавляются для одного входа. Ручной расчет для каждого ввода и для каждой эпохи сложен и, следовательно, лишен этого. Но очень надеюсь, что что-нибудь можно объяснить на удачном примере, и попробовал это. Надеюсь, этот пример дает больше понимания алгоритма SOM и того, как он работает. Мы рады узнать здесь о любых проблемах и хотели бы добавить больше примеров в тот же блог, если это возможно.