Добавить в корзинуПозвонить
Найти в Дзене

Самоорганизующаяся нейронная сеть (Self-Organizing Map, SOM) в MATLAB

Самоорганизующиеся нейронные сети (Self-Organizing Maps, SOM), также известные как карты Кохонена (Kohonen maps), — это тип искусственных нейронных сетей, используемых для неконтролируемого обучения (unsupervised learning). Их ключевая особенность — способность визуализировать многомерные данные путем проецирования их на низкоразмерное (обычно 2D) пространство, сохраняя при этом топологические свойства входных данных. MATLAB предоставляет удобные инструменты для построения и обучения SOM через Neural Network Toolbox (Deep Learning Toolbox). 1. Особенности построения SOM SOM отличается от многослойного перцептрона (MLP) своей архитектурой и методом обучения: Архитектура: Входной слой: получает вектор признаков от входных данных. Конкурентный слой (карта): представляет собой двумерную сетку нейронов (ячеек). Каждый нейрон на этом слое имеет вектор весов той же размерности, что и входной вектор. Эти веса можно рассматривать как прототипы или репрезентации кластеров входных данных. Тополо

Самоорганизующиеся нейронные сети (Self-Organizing Maps, SOM), также известные как карты Кохонена (Kohonen maps), — это тип искусственных нейронных сетей, используемых для неконтролируемого обучения (unsupervised learning). Их ключевая особенность — способность визуализировать многомерные данные путем проецирования их на низкоразмерное (обычно 2D) пространство, сохраняя при этом топологические свойства входных данных.

MATLAB предоставляет удобные инструменты для построения и обучения SOM через Neural Network Toolbox (Deep Learning Toolbox).

1. Особенности построения SOM

SOM отличается от многослойного перцептрона (MLP) своей архитектурой и методом обучения:

Архитектура:

Входной слой: получает вектор признаков от входных данных.

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

Топология: нейроны на карте связаны с их ближайшими соседями. Эта топологическая связь играет решающую роль в процессе обучения, заставляя соседние нейроны представлять схожие входные данные. Типичные топологии — прямоугольная (rect) или шестиугольная (hexa).

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

Построение в MATLAB:

В MATLAB для создания сети используется функция selforgmap:

% Размерность карты: 10 строк на 10 столбцов

размер_карты = [10 10];

net = selforgmap(размер_карты);

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

% net = selforgmap(размер_карты, 'topologyFcn', 'hextop');

2. Особенности обучения SOM

Процесс обучения SOM является итерационным и состоит из следующих ключевых этапов:

2.1. Конкуренция (Нахождение Победителя)

Для каждого входного вектора x сеть вычисляет, какой нейрон на карте имеет наиболее схожий с ним вектор весов. Этот нейрон называется Победившим Нейроном (Best-Matching Unit, BMU). Сходство обычно измеряется евклидовым расстоянием:

где w_i — вектор весов i-го нейрона.

2.2. Сотрудничество (Определение Соседства)

После нахождения BMU определяется область соседства вокруг этого победившего нейрона. Соседние нейроны также будут обновлять свои веса, но в меньшей степени. Радиус соседства \sigma со временем уменьшается (сжимается), что обеспечивает сначала грубую, а затем тонкую настройку карты:

где h_{c,i} — функция соседства, d_{c,i} — расстояние на сетке между BMU c и нейроном i.

2.3. Адаптация (Обновление весов)

Веса BMU и его соседей смещаются в сторону входного вектора x. Скорость обучения \alpha также со временем уменьшается:

Это гарантирует, что кластеры весов будут группироваться в соответствии с плотностью и топологией входных данных.

Обучение в MATLAB:

В MATLAB процесс обучения осуществляется функцией train:

% P - матрица входных данных (каждый столбец - отдельный пример)

[net, tr] = train(net, P);

Фазы обучения

Обучение в SOM часто разделяют на две фазы, которые MATLAB может выполнять автоматически:

Фаза упорядочения (Ordering Phase): используется большой радиус соседства и высокая скорость обучения. Цель — упорядочить веса сети в соответствии с топологией входных данных.

Фаза точной настройки (Tuning Phase): используется малый радиус соседства и низкая скорость обучения. Цель — точно настроить веса для отражения статистического распределения входных данных.

3. Анализ результатов и визуализация

После обучения SOM в MATLAB предоставляет ряд функций для анализа карты:

plotsomhits: показывает, сколько входных векторов сопоставляется каждому нейрону (распределение данных по кластерам).

plotsomplanes: Визуализирует веса каждого признака (компонента) входного вектора. Это полезно для понимания того, какие признаки наиболее влияют на формирование кластеров.

plotsomnd (U-matrix): показывает U-матрицу, которая отображает усредненное расстояние между вектором весов каждого нейрона и векторами весов его ближайших соседей. Яркие цвета (большие расстояния) указывают на границы между кластерами, а темные (малые расстояния) — на плотные области внутри кластера.

SOM в MATLAB является мощным инструментом для кластеризации, снижения размерности и визуализации сложных наборов данных.