102 lines
5.8 KiB
Markdown
102 lines
5.8 KiB
Markdown
---
|
|
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)]]
|