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