Основы самоорганизующихся карт.




Алгоритм функционирования самообучающихся карт представляет собой один из вариантов кластеризации многомерных векторов. Примером таких алгоритмов может служить алгоритм ближайших средних (с-means). Важным отличием алгоритма SOM является то, что в нем все нейроны (узлы, центры классов) упорядочены в некоторую структуру (обычно двумерную сетку). При этом в ходе обучения модифицируется не только нейрон-победитель, но и его соседи, но в меньшей степени. За счет этого SOM можно считать одним из методов проецирования многомерного пространства в пространство с более низкой размерностью При использовании этого алгоритма вектора, схожие в исходном пространстве, оказываются рядом и на полученной карте. SOM подразумевает использование упорядоченной структуры нейронов. Обычно используются одно- и двумерные сетки. При этом каждый нейрон представляет собой n-мерный вектор-столбец wn, где п определяется размерностью исходного пространства (размерностью входных векторов). Применение одно- и двумерных сеток связано с тем, что возникают проблемы при отображении пространственных структур большей размерности (при этом опять возникают проблемы с понижением размерности до двумерной, представимой на мониторе).

Обычно нейроны располагаются в узлах двумерной сетки с прямоугольными или шестиугольными ячейками. При этом, как было сказано выше, нейроны также взаимодействуют друг с другом. Величина этого взаимодействия определяется расстоянием между нейронами на карте.

При реализации алгоритма SOM заранее задается конфигурация сетки (прямоугольная или шестиугольная), а также количество нейронов в сети. Некоторые источники рекомендуют использовать максимально возможное количество нейронов в карте. При этом начальный радиус обучения (neighborhood в англоязычной литературе) в значительной степени влияет на способность обобщения при помощи, полученной карты. В случае, когда количество узлов карты превышает количество примеров в обучающей выборке, то успех использования алгоритма в большой степени зависит от подходящего выбора начального радиуса обучения. Однако в случае, когда размер карты составляет десятки тысяч нейронов, время, требуемое на обучение карты, обычно бывает слишком велико для решения практических задач, таким образом, необходимо достигать допустимого компромисса при выборе количества узлов.

Перед началом обучения карты необходимо проинициализировать весовые коэффициенты нейронов. Удачно выбранный способ инициализации может существенно ускорить обучение и привести к получению более качественных результатов. Существуют три способа инициирования начальных весов:

1. инициализация случайными значениями, когда всем весам даются малые случайные величины;

2. инициализация примерами, когда в качестве начальных значений задаются значения случайно выбранных примеров из обучающей выборки;

3. линейная инициализация. В этом случае веса инициируются значениями векторов, линейно упорядоченных вдоль линейного подпространства, проходящего между двумя главными собственными векторами исходного набора данных. Собственные векторы могут быть найдены, например, при помощи процедуры Грама-Шмидта.

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

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

Для решения задачи классификации используются различные пакеты программного обеспечения: Statistiсa, Mahlab Simulink. Neirosolution, специализированные средства для решения определенных задач.

Рассмотрим примеры синтеза нейронных сетей в универсальных оболочках.

1. В пакете STATISTICA:

Для решения задач классификации используется Мастер решения задач.

Первый шаг: открывается подготовленный файл данных; ряд переменных (столбцов) являются значениями параметров, категорильная переменная (последний столбец) обозначает диагностический класс.

Второй шаг: открывается окно «Тип задачи» («Problem Tepe»); указывается тип задачи и нажимается кнопка «Next ».

Третий шаг: в окне выбирается зависимая переменная (диагностического класса) и нажимается кнопка «Next ».

Четвертый шаг: в окне выбираются входные (независимые) переменные; после нажатия кнопки «Next » Мастер решения автоматически разобьет выборку на обучающую, контрольную и тестовую подвыборки, выделив их черным, синим и красным цветом, соответственно, и производит перемешивание наблюдений для обеспечения репрезентативности подвыборок.

Пятый шаг: на экране появляется окно «Длительность поиска » («Duration of Design Process»), в котором задается длительность поиска: быстрый, средний, полный, ограниченный по времени.

Шестой шаг: в открывшемся окне «Сохранение сетей» («Saving Networks») определяется способ сохранения сетей, например: сохранить сети с лучшим качеством решения, максимальное число сохраняемых сетей и т.д.; затем, в следующем открывшемся окне указываются опции представления результатов.

Седьмой шаг: после нажатия кнопки «Finish » STATISTICA производит вычисления и предоставляет итоговый результат в виде таблицы - например, если был выбран на предыдущем шаге режим «сохранить 10 сетей с лучшим качеством», то на экране появятся следующие столбцы: – Type – указывается тип сетей, RBF – указываются радиальные базисные функции, Linear – линейные, MLP – многослойный персептрон, ошибка, входы, скрытые, Perfomance – качество (указаны доли правильно классифицированных диагностических состояний) – определяется по контрольному подмножеству (доля правильно классифицированных наблюдений – диагностическая эффективность).

Лучшая сеть отмечается знаком «*». Для удаления из набора сетей неудовлетворительного качества используется правая кнопка мыши и команда «Удалить » («Delete »).

Выделенная нейронная сеть делается активной с помощью команды всплывающего меню «Выбрать » («Select »).

Если набор нейронных сетей заполнен, то программа ST Neural Networks должна определить, какие из имеющихся сетей заменяются вновь создаваемые. После нажатия кнопки Options-Опции в диалоговом окне Редактор набора сетей – Network Set Editor. На экране появиться окно Параметры набора сетей – Network Set Options, в котором задается максимальное количество сетей в наборе (по умолчанию – 30). Установив необходимые значения параметров набора сетей нажимается кнопка Закрыть – Close.

Для исследования степени информативности входных переменных в обученной сети применяют анализ чувствительности – для этого используют команду Чувствительность – Sensitiivity из выпадающего меню. Программа строит таблицу, в которой указывается чувствительность сети по отношению к каждой переменной: ранг, ошибка и отношение. Показатели чувствительности определяются отдельно для обучающего и контрольного набора (подвыборки) наблюдений. В качестве столбцов в окне выступают переменные исходного файла данных.

2. Классификация с помощью персептрона в пакете MatLab.

Классификация состоит из этапов: ввод данных, обучение сети, классификация. Для оценки качества классификации (диагностики) первоночально результаты обследования (и-или результаты мониторинга за состоянием) биообъекта разделяются на две подвыборки: обучающая и тестовая. Если руководствоваться принципом «золотого сечения», то соотношение размеров указанных выборок -0,62:0,38.

Рассмотрим пример 1, реализованный в пакете MatLab 7 SP 2 + Simulink 6, для обучения персептрона:

>> % одному из двух классов

>> P=[-0.5 -0.5 +0.3 – 0.1;-0.5 +0.5 -0.5 +1.0];

>> T=[1 1 0 0];

>> plot (P,T);

>> % графическое представление исходных данных

>> % создание персептрона

>> % с указанием границ изменений и одним нейроном

>> My_net=new([1 1; -1 1], 1); % инициализация персептрона

>> % организация цикла адаптивной настройки персептрона

>> % с показом графика линии разделения классов

>> % while (sse(E))

[My_net, Y,E]=adapt(My_net, P, T);

Linehandle=plotpc(My_net.IW{1}, My_net.b{1});

Drawnow;

End;

 

В приведенной программе исходными данными являются входные векторы с указанием их принадлежности к одному из двух классов – с индексами 0 и 1. Р – матрица, столбцы которой соответствуют 4-м входным векторам, Т – вектор, элементы которого указывают на принадлежность вектора к нулевому или первому классу. Итоговый результат отображает обучающие вектора и разделяющую их линию, формируемую обученным персептроном.

Для проверки качества созданного классификатора подадим, например, на вход обученного персептрона контрольный вектор р={0.4; 0.5} и проанализируем реакцию сети. Моделирование иллюстрирует следующий программный фрагмент.

>> p=[0.4; 0.5];

>> = = sim(My-net,p);

>>a

a=

Его работа показывает, что последовала реакция сети а=0, т.е., предъявленный контрольный вектор относится к нулевому классу, что является правильным (и графически подтверждается рисунком).

Построение графика реализуется следующим программным фрагментом:

>> plot(p,a);

>> hold on;

>> plotpv(P,T);

>> Linehandle=plotpc(My_net.IW{1}, My_net.b{1});

>> hold off

 

Для оценки диагностического качества здесь и далее с помощью статистических вычислений ошибок первого и второго рода классификации необходимо на контрольной выборке для ряда объектов выполнить анализ правильности срабатывания персептрона и рассчитать значения показателей диагностических чувствительности, специфичности и эффективности.

Рассмотрим пример 2, реализованный в пакете MatLab 7 SP 2 + Simulink 6, для обучения сети со слоем Кохонена:

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

Для создания нейронной сети со слоем Кохонена воспользуемся встроенной в среду Matlab функцией newc:

X=[0 1; 0 1];

clusters=5;

points=5; %3адание количества точек в кластере

std_dev=0.01;

p=nngenc(X,clusters,points,std_dev);%Моделирование входных данных

h=newc([0 1;0 1],5,.1); % создание слоя Кохонена

h.trainParam.epochs=50; %3адание количества циклов обучения

h=init(h);

h=train(h,p);

w=h.IW{1}; % вывод графиков исходных данных и выявленных центров кластеров

plot(p(1,:),p(2,:),'^r'),grid;

hold on;

plot(w(:,1),w(:,2),'ob');

xlabel('p(1)');

ylabel('p(2)');

A=0.6

B=0.5

p=[A;B];

plot(A,B,'^k');

y=sim(h,p) %Onpoc сети

A =0.6000

B =0.5000

y = (2,1)

Результат работы программы отображается в командном окне.

Предъявленный вектор отнесен ко второму кластеру. Теперь данный алгоритм применим к реальной (хоть и элементарной) задаче кластеризации. На вход нейронной сети будем подавать данные весоростовых показателей людей и попробуем выявить три класса (кластера): нормальный весоростовой показатель; избыток веса; недостаток веса. Программный код выглядит следующим образом:

%входные данные (первая строка матрицы - рост; вторая - вес)

p=[175 180 182 175 183 176 183 176 183 176 175 180 178 180 178 182 178 182 179 174 172 179; 70 75 100 99 42 48 76 72 40 45 92 96 70 69 95 90 79 82 80 50 96 91] %создаем НС Кохонена с 3 кластерами (нормальный весоростовой показатель, избыток веса и недостаток веса)

h=newc([0 200;0 100],3,.1);

h.trainParam.epochs=500; %3адание количества циклов обучения

h=train(h,p);

w=h.IW{1};

plot(p(1,:),p(2,:),'^r');

hold on;

plot(w(:,1),w(:,2),'ob');

xlabel('Rost');

ylabel('Ves');

% Задание нового входного вектора

%Опрос сети

A=181

B=65

p=[A;B];

plot(A,B,'+r')

y=sim(h,p)

A =181

B = 65

y = (2,1) 1

 

Результат работы программы представлен в командном окне: у=(2,1) 1. Предъявленный вектор отнесен ко второму кластеру.

3. Теперь рассмотрим использование самоорганизующей карты

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

 

 

P=rands(2,100); %3адание случайных двухмерных входных векторов

figure(1);

hold on;

plot(P(1,:),P(2,:),'+r') %визуальное изображение входных векторов

%Создание НС с 3*4 нейронами

%По умолчанию функция TFCN = 'hextop', то есть нейроны располагаются в узлах двумерной сетки с шестиугольными ячейками

net=newsom([0 1;0 1],[3 4]);

net.trainParam.epoch=1 %3адание числа циклов настройки

net=train(net,P); % настройка сети

A=0.5

B=0.3

p=[A;B]; % Задание нового входного вектора

plot(A,B,'^k') %прорисовка на рисунке входного вектора (черный треугольник)

figure(2)

plotsom(net.iw{1,1},net.layers{1}.distances)

a=sim(net,p) %опрос сети

A = 0.5000

B = 0.3000

a = (5,1) 1

4. Результат работы программы представлен в командном окне: a = (5,1) 1/ Предъявленный вектор отнесен к пятому кластеру.

Порядок выполнения лабораторной работы:

1. Изучить теоретический материал и принципы построения искусственных нейронных сетей, включая язык программирования в MatLab 7 SP 2 + Simulink 6.

2. Сформировать выборки исходных данных по Таблице 1, характеризующие результаты общего анализа крови. Выборки состоят из:

- для пакета STATISTICA - матрицы, включающей три показателя крови (согласно варианта задания – определяется преподавателем) и идентификаторов состояния («здоров», «болен»), трех матриц типа «показатель», «состояние»;

- для MatLab 7 SP 2 + Simulink 6 - трех матриц типа «показатель», «состояние».

3. Построить нейронные сети в пакетах STATISTICA и MatLab 7 SP 2 + Simulink 6 (или иных версиях MatLab) – персептрон, сеть Кохонена, самоорганизующие карты для всех сформированных в п.2 матриц.

4. По результатам п.3 сравнить качество работы сетей – в качестве показателя качества использовать диагностическую эффективность.

5. По зафиксированным скрин-шотам работы с программными инструментариями (представляются в отчете по выполнению лабораторной работы) и результатами п.4 сделать выводы о перспективности применения полученных сетей для диагностического процесса.

6. Оформить отчет.

Контрольные вопросы:

1. Что понимается под кластеризацией?

2. Для чего применяются искусственные нейронные сети?

3. Каким образом классифицируются искусственные нейронные сети?

4. Для решения каких задач предназначены искусственные нейронные сети?

5. В чем заключается закон обучения Кохонена?

6. Опишите встроенные операторы Matlab для кластеризации.

7. Зачем используются самоорганизующиеся карты? Чем отличаются сети Кохонена от SOM?

8. Как устроен персептрон?

9. В чем заключается принцип обратного распространения ошибки в искусственных нейронных сетях?

10. Что такое – «скрытые слои» искусственной нейронной сети?

11. Как проверяется диагностическое качество работы искусственной нейронной сети?

12. Перечислите основные недостатки и преимущества применения искусственных нейронных сетей в диагностическом процессе?

13. В чем состоят отличия искусственных нейронных и иммунных сетей?

 

 

Таблица 1. Данные для построения искусственной нейронной сети.

Больные
№ п.п. эритроциты гемоглобин Цветовой показатель моноциты СОЭ
  4,6   0,93    
  4,2   0,82    
  3,4   0,94    
      1,02    
  3,6   0,88    
  5,3   0,61    
  4,16   0,95    
  4,3   1,01    
      0,96    
  3,1   1,05    
      0,93    
  5,1   0,96    
  4,25   0,97    
  4,3   1,05    
  4,8   0,96    
  3,6   0,95    
Здоровые
  4,2   0,98    
  4,05   0,93    
  3,9   0,96    
  3,85   0,94    
  4,2   0,96    
  3,65   0,96    
  4,4   0,995    
      0,92    
  4,7   0,96    
  4,6   0,94    
  4,26   0,99    
  4,2        
  4,5   0,93    
  4,5        
  4,4   1,01    
  4,4   0,98    
             

ПРАКТИЧЕСКАЯ работа №1:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: