--- status: seed type: concept tags: - machine-learning - neural-networks - clustering - self-organizing-maps created: 2026-05-07 updated: 2026-05-14 aliases: - Алгоритм обучения сети Кохонена --- # Алгоритм обучения сети Кохонена **Алгоритм обучения сети Кохонена** - процедура самообучения, при которой нейроны топологической карты постепенно становятся прототипами групп похожих входных объектов. Алгоритм относится к [[Нейронная сеть Кохонена|сетям Кохонена]] и связан с задачами [[Кластерный анализ|кластеризации]]. ## Общая схема 1. Инициализировать веса нейронов небольшими случайными значениями. 2. Подать на вход очередной обучающий объект. 3. Найти нейрон-победитель, чей вектор весов лучше всего соответствует входному вектору. 4. Скорректировать веса нейрона-победителя и, в классической SOM, нейронов из его окрестности. 5. Повторять предъявление объектов до стабилизации карты или достижения заданного числа эпох. Базовая формула корректировки веса: $$ w_{ij}(t)=w_{ij}(t-1)+\alpha(x_i-w_{ij}(t-1)) $$ где: - $w_{ij}$ - вес связи между входом $i$ и нейроном $j$; - $x_i$ - значение входного признака; - $\alpha$ - скорость обучения; - $t$ - номер шага обучения. ## Выбор нейрона-победителя Нейрон-победитель можно выбирать через меру близости входного вектора и вектора весов нейрона. ### Через скалярное произведение Если векторы нормализованы, близость можно оценивать скалярным произведением: $$ S_j=\sum\limits_{i=1}^{m}x_iw_{ij}=||x||\cdot||w^j||\cdot cos(\phi) $$ Побеждает нейрон с максимальным значением $S_j$. ### Через евклидово расстояние Чаще победителем считают нейрон с минимальным расстоянием до входного объекта: $$ D_j=\sqrt{\sum\limits_{i=1}^{m}(x_i-w_{ij})^2} $$ где $j$ - индекс нейрона, $i$ - индекс входного признака, $m$ - размерность входного вектора. Такой способ напрямую связан с заметкой [[Расстояние между объектами]]. ## Нормализация Перед обучением часто нормализуют входные данные и начальные веса, чтобы признаки с крупным масштабом не доминировали при выборе победителя. Нормализация входного вектора: $$ x_j=\frac{x_j}{\sqrt{\sum\limits_{l=1}^{m}x_l^2}} $$ Нормализация весов: $$ w_{ij}=\frac{w_{ij}}{\sqrt{\sum\limits_{l=1}^{k}w_{lj}^2}} $$ ## Отличие от K-means Алгоритм похож на [[Итерационная классификация. Метод K-средних (K-means)|K-means]] тем, что объект влияет на ближайший прототип. Главное отличие SOM - наличие топологической карты: обновляется не только победитель, но и его соседи, поэтому карта сохраняет отношения близости между областями данных. ## Метод выпуклой комбинации Случайная инициализация весов может ухудшить качество карты. Плотные классы могут слиться, а близкие образы одного класса - раздробиться на дополнительные подклассы. Один из способов смягчить эту проблему - метод выпуклой комбинации. Идея в том, что нормализованные входные образы сначала искусственно сближаются между собой, а затем постепенно возвращаются к исходному виду. Для этого используют коэффициент $\alpha(t)$, который в процессе обучения изменяется от $0$ до $1$. В начале обучения сеть видит почти одинаковые образы и формирует грубую структуру карты. Затем входы всё сильнее приближаются к исходным данным, и карта уточняет разделение классов. Этот приём снижает риск того, что начальные случайные веса слишком рано закрепят неудачное разбиение данных. ## Связанные заметки - [[Нейронная сеть Кохонена]] - [[Нейронные сети]] - [[Кластерный анализ]] - [[Расстояние между объектами]] - [[Итерационная классификация. Метод K-средних (K-means)]]