---
status: seed
type: concept
tags:
  - machine-learning
  - neural-networks
  - clustering
  - self-organizing-maps
created: 2026-05-07
updated: 2026-05-07
title: Алгоритм обучения сети Кохонена
---

# Алгоритм обучения сети Кохонена

**Алгоритм обучения сети Кохонена** - процедура самообучения, при которой нейроны топологической карты постепенно становятся прототипами групп похожих входных объектов. Алгоритм относится к [[Нейронная сеть Кохонена|сетям Кохонена]] и связан с задачами [[Кластерный анализ|кластеризации]].

## Общая схема

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 - наличие топологической карты: обновляется не только победитель, но и его соседи, поэтому карта сохраняет отношения близости между областями данных.

## Связанные заметки

- [[Нейронная сеть Кохонена]]
- [[Нейронные сети]]
- [[Кластерный анализ]]
- [[Расстояние между объектами]]
- [[Итерационная классификация. Метод K-средних (K-means)]]
