Сделай Сам Свою Работу на 5

Пример процедуры обучения

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

Рассмотрим одно из типичных приложений нейронных сетей в медицинских исследованиях. Для этого примера используем данные из медицинского приложения [35]. Требуется разработать вычислительный инструмент, который может определять уровни липидных составляющих холестерина на основе измерений спектра крови. Имеется статистика измерения 21 волны спектра крови для 264 пациентов. Кроме того, известны уровни hdl, ldl и vldl липидных составляющих холестерина, основанных на сепарации сыворотки.
Необходимо определить состоятельность нового способа анализа крови, основанного
на измерении ее спектра.

Данные измерений спектра должны быть загружены из МАТ-файла choles_all и подвергнуты факторному анализу:

load choles_all

% Нормировка обучающего множества

[pn,meanp,stdp,tn,meant,stdt] = prestd(p,t);

[ptrans,transMat] = prepca(pn, 0.001);% Выделение главных компонентов

В этом случае сохраняются только те компоненты, которые объясняют 99.9 % изменений в наборе данных. Проверим, сколько же компонентов из первоначальных 21 являются состоятельными:

[R,Q] = size(ptrans)

R = 4

Q = 264

Оказывается, что всего 4.

Теперь сформируем из исходной выборки обучающее, контрольное и тестовое множества. Для этого выделим половину выборки для обучающего множества ptr и по четверти для контрольного v и тестового t:

iitst = 2:4:Q;

iival = 4:4:Q;

iitr = [1:4:Q 3:4:Q];

v.P = ptrans(:,iival); v.T = tn(:,iival);

t.P = ptrans(:,iitst); t.V = tn(:,iitst);

ptr = ptrans(:,iitr); ttr = tn(:,iitr);

Теперь необходимо сформировать и обучить нейронную сеть. Будем использовать сеть с двумя слоями, с функциями активации: в скрытом слое – гиперболический тангенс,
в выходном слое – линейная функция. Такая структура эффективна для решения задач аппроксимации и регрессии. В качестве начального приближения установим 5 нейронов
в скрытом слое. Сеть должна иметь 3 выходных нейрона, поскольку определено 3 цели.
Для обучения применим алгоритм LM:



net = newff(minmax(ptr),[5 3],{'tansig' 'purelin'},'trainlm')

[net,tr]=train(net,ptr,ttr,[],[],v,t);

Обучение, остановлено после 15 итераций, потому что контрольная ошибка в 5 раз превысила ошибку обучения. Построим графики всех ошибок:

plot(tr.epoch,tr.perf,’–‘,tr.epoch,tr.vperf,’—–‘,tr.epoch,tr.tperf,’:’)

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

Рис. 3.27

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

an = sim(net,ptrans); % Моделирование сети

a = poststd(an,meant,stdt); % Восстановление выходов

t = poststd(tn,meant,stdt); % Восстановление целей

for i=1:3

figure(i)

[m(i),b(i),r(i)] = postreg(a(i,:),t(i,:)); % Расчет регрессии

end % Рис. 3.28,а-в

а б в

Рис. 3.28

Первые 2 выхода сети (hdl- и ldl-составляющие) хорошо отслеживают целевое множество, значение близко к 0.9, и это означает, что эти липидные характеристики могут быть определены по измерениям спектра крови. Третий выход (vldl-составляющая) восстанавливается плохо (коэффициент корреляции около 0.6), и это означает, что решение задачи должно быть продолжено.

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


Персептроны

C этой главы начинается систематический анализ конкретных нейронных сетей, и первой из них является нейронная сеть, называемая персептроном. Большое количество моделей персептрона представлено в основополагающей работе Розенблатта [37]. Простейшая из таких моделей – однослойный персептрон, веса и смещение которого могут быть настроены таким образом, чтобы решить задачу классификации входных векторов, что позволит в дальнейшем решать сложные проблемы анализа коммутационных соединений, распознавания образов и других задач классификации с высоким быстродействием и гарантией правильного результата.

По команде help percept можно получить следующую информацию об М-функциях, входящих в состав ППП Neural Network Toolbox и относящихся к построению нейронных сетей на основе персептронов:

 

Perceptrons Персептроны
New networks Формирование нейронной сети
newp Создание персептрона
Using networks Работа с нейронной сетью
sim Моделирование сети
init Инициализация сети
adapt Адаптация сети
train Обучение сети
Weight functions Функции взвешивания
dotprod Скалярное произведение
Net input functions Функции накопления
netsum Сумма взвешенных входов
Transfer functions Функции активации
hardlim Ступенчатая функция с жесткими ограничениями
hardlims Симметричная ступенчатая функция с жесткими ограничениями
Initialization functions Функции инициализации
initlay Инициализация слоев
initwb Инициализация весов и смещений
initzero Инициализация нулевых весов и смещений
Performance functions Функции оценки качества сети
mae Средняя абсолютная погрешность
Learning functions Функции настройки параметров персептрона
learnp Абсолютная функция настройки
learnpn Нормированная функция настройки
Adapt functions Функции адаптации
adaptwb Адаптация весов и смещений
Training functions Функции обучения
trainwb Правило обучения весов и смещений
Demonstrations Демонстрационные примеры
demop1 Классификация с использованием персептрона с двумя входами
demop2 Классификация с использованием персептрона с тремя входами
demop3 Классификация с использованием персептрона с двумя нейронами
demop4 Формирование входных векторов внешнего слоя
demop5 Обучение с использованием нормированной функции настройки
demop6 Пример линейно неразделимых векторов
demop7 Классификация с использованием двухслойного персептрона

Следует обратить внимание, что в версии ППП Neural Network Toolbox Version 3.0.1 (R11) представлены только демонстрационные примеры demop1, demop4, demop5, demop6.

Архитектура персептрона

Нейрон персептрона. Нейрон, используемый в модели персептрона, имеет ступенчатую функцию активации hardlim с жесткими ограничениями (рис. 4.1).

Каждый элемент вектора входа персептрона взвешен с соответствующим весом w1j,
и их сумма является входом функции активации. Нейрон персептрона возвращает 1, если вход функции активации n ³ 0, и 0, если n < 0.

Рис. 4.1

Функция активации с жесткими ограничениями придает персептрону способность классифицировать векторы входа, разделяя пространство входов на 2 области, как это показано на рис. 4.2 для персептрона с двумя входами и смещением.

Рис. 4.2

Пространство входов делится на 2 области разделяющей линией L, которая для двумерного случая задается уравнением

(4.1)

Эта линия перпендикулярна к вектору весов w и смещена на величину b. Векторы входа выше линии L соответствуют положительному потенциалу нейрона, и, следовательно, выход персептрона для этих векторов будет равен 1; векторы входа ниже линии L соответствуют выходу персептрона, равному 0. При изменении значений смещения и весов граница линии L изменяет свое положение. Персептрон без смещения всегда формирует разделяющую линию, проходящую через начало координат; добавление смещения формирует линию, которая не проходит через начало координат, как это показано на рис. 4.2. В случае, когда размерность вектора входа превышает 2, разделяющей границей будет служить гиперплоскость.

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

Архитектура сети. Персептрон состоит из единственного слоя, включающего S нейронов, как это показано на рис. 4.3, а и б в виде соответственно развернутой и укрупненной структурных схем; веса wij – это коэффициенты передачи от j-го входа к i-му нейрону.

Уравнение однослойного персептрона имеет вид:

. (4.2)

а б

Рис. 4.3

Модель персептрона

Для формирования модели однослойного персептрона предназначена функция newp

net = newp(PR, S)

со следующими входными аргументами: PR – массив минимальных и максимальных значений для R элементов входа размера R´2; S – число нейронов в слое.

В качестве функции активации персептрона по умолчанию используется функция hardlim.

Пример:

Функция

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

создает персептрон с одноэлементным входом и одним нейроном; диапазон значений входа – [0 2].

Определим некоторые параметры персептрона, инициализируемые по умолчанию.

Веса входов:

inputweights = net.inputweights{1,1}

inputweights =

delays: 0

initFcn: 'initzero'

learn: 1

learnFcn: 'learnp'

learnParam: []

size: [1 1]

userdata: [1x1 struct]

weightFcn: 'dotprod'

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

Смещения:

biases = net.biases{1}

biases =

initFcn: 'initzero'

learn: 1

learnFcn: 'learnp'

learnParam: []

size: 1

userdata: [1´1 struct]

Нетрудно увидеть, что начальное смещение также установлено в 0.



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.