Создание сети

Для формирования слоя Кохонена предназначена М-функция newc. Покажем, как она работает, на простом примере. Предположим, что задан массив из четырех двухэлементных векторов, которые надо разделить на 2 класса:

p = [.1.8.1.9;.2.9.1.8]

p =

0.1000 0.8000 0.1000 0.9000

0.2000 0.9000 0.1000 0.8000

В этом примере нетрудно видеть, что 2 вектора расположены вблизи точки (0,0) и 2 вектора – вблизи точки (1, 1). Сформируем слой Кохонена с двумя нейронами для анализа двухэлементных векторов входа с диапазоном значений от 0 до 1:

net = newc([0 1; 0 1],2);

Первый аргумент указывает диапазон входных значений, второй определяет количество нейронов в слое. Начальные значения элементов матрицы весов задаются как среднее максимального и минимального значений, т. е. в центре интервала входных значений; это реализуется по умолчанию с помощью М-функции midpoint при создании сети.
Убедимся, что это действительно так:

wts = net.IW{1,1}

wts =

0.5000 0.5000

0.5000 0.5000

Определим характеристики слоя Кохонена:

net.layers{1}

ans =

dimensions: 2

distanceFcn: 'dist'

distances: [2´2 double]

initFcn: 'initwb'

netInputFcn: 'netsum'

positions: [0 1]

size: 2

topologyFcn: 'hextop'

transferFcn: 'compet'

userdata: [1´1 struct]

Из этого описания следует, что сеть использует функцию евклидова расстояния dist, функцию инициализации initwb, функцию обработки входов netsum, функцию активации compet и функцию описания топологии hextop.

Характеристики смещений следующие:

net.biases{1}

ans =

initFcn: 'initcon'

learn: 1

learnFcn: 'learncon'

learnParam: [1´1 struct]

size: 2

userdata: [1´1 struct]

Смещения задаются функцией initcon и для инициализированной сети равны

net.b{1}

ans =

5.4366

5.4366

Функцией настройки смещений является функция learncon, обеспечивающая настройку с учетом параметра активности нейронов.

Элементы структурной схемы слоя Кохонена показаны на рис. 7.2, а-б и могут быть получены с помощью оператора

gensim(net)

Они наглядно поясняют архитектуру и функции, используемые при построении слоя Кохонена.

а
б

Рис. 7.2

Теперь, когда сформирована самоорганизующаяся нейронная сеть, требуется обучить ее решению задачи кластеризации данных. Напомним, что каждый нейрон блока compet конкурирует за право ответить на вектор входа p. Если все смещения равны 0, то нейрон
с вектором веса, самым близким к вектору входа p, выигрывает конкуренцию и возвращает на выходе значение 1; все другие нейроны возвращают значение 0.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: