Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

Графические утилиты

PLOTV

Отображение векторов в виде линий

Синтаксис:

plotv(P, LineStyle)

Описание:

Функция plotv(P,LineStyle) строит векторы столбцов массива входа Р размера RQ; строковая переменнаяLineStyleпозволяет задать тип линии согласно следующей таблице.

Тип линии

Значение LineStyle

Непрерывная

'', по умолчанию

Штриховая

'– –'

Двойной пунктир

':'

Штрихпунктирная

'–.'

Число строк R массива Р должно быть не меньше чем 2; при значениях R, больших, чем 2, для построения графика используются только первые 2 строки массива Р.

Пример:

P = [–0.4 0.7 0.2;

0.5 0.1 0.5];

plotv(P,'–'); % Рис.11.64

Результат построения представлен на рис. 11.64.

Рис. 11.64

Сопутствующие функции: PLOTVEC.

PLOTVEC

Отображение векторов входа в виде маркеров

Синтаксис:

plotvec(P,color,Marker)

plotvec(P)

hh = plotvec(...)

Описание:

Функция plotvec(P, color, Marker) отображает векторы столбцов массива входа Р размера RQ в виде маркеров, цвет каждого из которых задается элементами вектор-строки color; строковая переменная Marker позволяет задать тип маркера согласно следующей таблице.

Тип маркера

Значение Marker

Тип маркера

Значение Marker

Плюс

'+', по умолчанию

Пятигранник

'p'

Точка

'.'

Шестигранник

'h'

Звездочка

'*'

Стрелка вниз

'v'

Кружок

'o'

Стрелка вверх

'^'

Крест

'x'

Стрелка влево

'<'

Квадрат

's'

Стрелка вправо

'>'

Ромб

'd'

Число строк R массива Р должно быть не меньше чем 2; для отображения маркеров используются первые 2 или 3 строки массива Р. Графики строятся либо в двумерном, либо в трехмерном пространстве соответственно.

Функция plotvec(P) использует тип маркера по умолчанию, а элементы вектор-строкиcolorсоответствуют номеру столбца массива Р.

Функция hh = plotvec(...) возвращает вектор дескрипторов для всех маркеров.

Пример:

P =[ 0.1000 1.0000 0.5000 0.7000

1.0000 2.0000 0.5000 0.1000

1.0000 0.1000 0.7000 0.5000];

t = minmax(P)';

axis(t(:)')

c = [1 2 3 4];

plotvec(P,c,’o’) % Рис.11.65

Результат представлен на рис. 11.65.

Рис. 11.65

Сопутствующие функции: PLOTV.

PLOTPV

Отображение векторов входов и целей в виде маркеров

Синтаксис:

plotpv(P,T)

plotpv(P,T,v)

Описание:

Функция plotpv(P, T) отображает векторы столбцов массива входа Р размера RQ и массива целей размера SQ в виде маркеров различного типа. Число строк этих массивовRиSдолжно быть не более трех.

Функция plotpv(P, T, v) позволяет задать пределы построения графика:

  • для двумерных векторов в виде вектора [x_min x_max y_min y_max];

  • для трехмерных векторов в виде вектора [x_min x_max y_min y_max z_minz_max].

Пример:

Определим выходы и цели персептрона:

P = [0 0 1 1;

0 1 0 1;

1 0 0 1];

T = [0 0 0 1];

plotpv(P,T) % Рис.11.66

Результат представлен на рис. 11.66.

Рис. 11.66

Сопутствующие функции: PLOTPC.

PLOTPC

Построение разделяющей линии или плоскости в пространстве векторов входа для персептрона

Синтаксис:

plotpc(W,b)

plotpc(W,b,hh)

h = plotpc(…)

Описание:

Функция plotpc(W, b) строит разделяющую линию или плоскость, если заданы матрица весов Wразмера SR и вектор смещений размера S1, причем значениеRдолжно быть не более трех. Разделяющая линия или плоскость строятся в пространстве векторов входа, координатные оси которого предварительно формируются с помощью функции plotpv.

Функция plotpc(W, b,hh) иcпользует векторhhдескрипторов графических объектовLineпоследних построенных линий и удаляет их перед тем, как построить новую разделяющую линию или плоскость.

Функция h = plotpc(...) возвращает вектор дескрипторов вновь созданных графических объектовLine.

Примеры:

Определим векторы входов и целей и отобразим их в двумерном пространстве входов:

P = [0 0 1 1;

0 1 0 1];

T = [0 0 0 1];

plotpv(P,T)

Создадим персептрон со входами P, зададим произвольные значения весам и смещениям и построим разделяющую линию в пространстве входов:

net = newp(minmax(P),1);

net.iw{1,1} = [–1.2 –1];

net.b{1} = 1.3;

plotpc(net.iw{1,1},net.b{1}) % Рис.11.67

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

Рис. 11.67

Перейдем к построению разделяющей плоскости в трехмерном пространстве:

P = [0 0 1 1;

0 1 0 1;

1 0 0 1];

T = [0 0 0 1];

plotpv(P,T)

Следующие функции создают персептрон со входами, соответствующими значениям вектора P, назначают значения его весам и смещениям и строят разделяющую плоскость:

net = newp(minmax(P),1);

net.iw{1,1} = [–1.2 –1 –0.5];

net.b{1} = 1.3;

plotpc(net.iw{1,1},net.b{1}) % Рис.11.68

Результат представлен на рис. 11.68.

Рис. 11.68

Анализ рис. 11.68 позволяет сделать вывод, что векторы входов и цели в начальном состоянии находятся по разные стороны от плоскости.

Сопутствующие функции: PLOTPV.

HINTONW

Диаграмма Хинтона для весов

Синтаксис:

hintonw(W,maxw,minw)

hintonw(W)

Описание:

Функция hintonw(W, maxw, minw) отображает значения элементов матрицы весов Wразмера SR в видедиаграммы Хинтона; при этом аргумент maxw соответствует максимальному, а minw – минимальному элементу весовой матрицы. Диаграмма Хинтона – это прямоугольная сетка, в узлах которой изображаются квадраты, площадь которых пропорциональна значению соответствующего веса; цвет квадрата соответствует знаку веса: красный (темный) для отрицательных и зеленый (светлый) для положительных весов.

Функция hintonw(W) использует по умолчанию для аргумента maxwзначениеmax(max(abs(W))), а для аргумента minw значениеmaxw/100.

Пример:

Зададим случайную матрицу весов и построим для нее диаграмму Хинтона (рис. 11.69), используя значения дополнительных аргументов по умолчанию:

W = rands(4,5)

W =

0.9003 0.7826 0.6428 0.8436 0.8709

–0.5377 0.5242 –0.1106 0.4764 0.8338

0.2137 –0.0871 0.2309 –0.6475 –0.1795

–0.0280 –0.9630 0.5839 –0.1886 0.7873

hintonw(W) % Рис.11.69

Рис. 11.69

Сопутствующие функции: HINTONWB.

HINTONWB

Диаграмма Хинтона для весов и смещений

Синтаксис:

hintonwb(W,b,maxw,minw)

hintonwb(W,b)

Описание:

Функция hintonw(W, b, maxw, minw) отображает значения элементов матрицы весов W размера SR и вектора смещений размера S1 в виде диаграммы Хинтона; при этом аргумент maxw соответствует максимальному, а minw – минимальному элементу весовой матрицы. Элементы вектора смещений показаны в левой части диаграммы.

Функция hintonw(W, b) использует по умолчанию для аргументаmaxwзначениеmax(max(abs(W))), а для аргумента minw значениеmaxw/100.

Пример:

Зададим случайные матрицу весов и вектор смещений и построим для них диаграмму Хинтона (рис. 11.70), используя значения дополнительных аргументов по умолчанию:

W = rands(4,5);

b = rands(4,1);

hintonwb(W,b) % Рис.11.70

Рис. 11.70

Сопутствующие функции: HINTONW.

PLOTPERF

График функции качества обучения

Синтаксис:

plotperf(tr,goal,name,epoch)

plotperf(tr)

Описание:

Функция plotperf(TR, goal, name, epoch) предназначена для построения графиков критерия качества обучения, предельной точности и графиков точности обучения с учетом контрольного и тестового подмножеств. Функция имеет следующие входные аргументы:

TR – массив записей с характеристиками обучения, возвращаемый функцией train;

goal – предельная точность, по умолчанию NaN;

name – имя обучающей функции, по умолчанию ' ';

epoch – число циклов обучения.

Пример:

Зададим 8 значений вектора входа P, соответствующий им вектор целей T, а также контрольное подмножество в виде векторов VV.P и VV.T:

P = 1:8; T = sin(P); VV.P = P; VV.T = T+rand(1,8)*0.1;

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

net = newff(minmax(P),[4 1],{'tansig','tansig'});

[net,tr] = train(net,P,T,[],[],VV);

В процессе выполнения процедуры train для построения графика точности обучения также применяется функция plotperf, и во многих случаях этого бывает достаточно для оценки процедуры обучения.

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

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

plotperf(tr, 0.005) % Рис.11.71

Рис. 11.71

Для достижения требуемой точности обучения, равной 0.005, требуется не более 10 циклов.

Сопутствующие функции: TRAIN.

ERRSURF, PLOTES

Вычисление и построение графика поверхности ошибки для нейрона

Синтаксис:

ES = errsurf(p,t,wv,bv,f)

plotes(wv,bv,ES,v)

Описание:

Функция ES= errsurf(p, t, wv, bv, f) вычисляет массивES, описывающий поверхность ошибки для нейрона с одним вектором входаpразмера 1Q, одним вектором целейtразмера 1Q; также должны быть заданы векторы весовwvи смещенийbи функция активации нейрона f.

Функция plotes(wv, bv, ES, v) строит график поверхности ошибок и линий уровня для нейрона в зависимости от весов wvи смещенийb, если задан массив ES, вычисленный с помощью функции errsurf. Для удобства изображения поверхности в трехмерном пространстве можно изменять значение вектораv, который задает направление угла зрения, по умолчанию векторvравен [–37.5, 30].

Пример:

p = [3 2];

t = [0.4 0.8];

wv = –4:0.4:4; bv = wv;

ES = errsurf(p,t,wv,bv,'logsig');

plotes(wv,bv,es,[60 30]) % Рис.11.72

Результат построения представлен на рис. 11.72.

Рис. 11.72

Сопутствующие функции: PLOTEP.

PLOTEP

Построение траектории обучения на поверхности ошибки

Синтаксис:

h = plotep(w,b,e)

h = plotep(w,b,e,h)

Описание:

Функция h = plotep(w, b, e) строит изображающую точку на графиках поверхности ошибок и линий уровня, построенных с помощью функции plotes.

Входные аргументы:

w – текущий вектор весов;

b – текущий вектор смещений;

e – текущая ошибка.

Выходные аргументы:

h– дескриптор, содержащий информацию для построения изображающей точки.

Функция h = plotep(w, b, e, h) – это рекуррентная форма вышеописанной функции, которая позволяет построить траекторию движения изображающей точки.

Применение функции:

Возможность применения функции plotep для построения траектории обучения в пространстве настраиваемых параметров поясняется нижеприведенным script-файлом, который описывает сценарий построения такой траектории. Читатель может реализовать этот сценарий на своем компьютере. Авторы предполагают разместить наиболее интересные примеры расчета нейронных сетей в виде М-файлов на сайтеwww.mathworks.ru. Данный сценарий обязательно будет включен в число этих М-файлов.

Script

% Задание обучающей последовательности

P = 1:8; T = sin(P);

% Построение поверхности ошибок

w_range = –1:0.2:1; b_range = –1:0.2:1;

ES = errsurf(P, T, w_range, b_range, 'purelin');

plotes(w_range, b_range,ES);

% Формирование нейронной сети

maxlr = 0.40*maxlinlr(P, 'bias');

net = newlin([–2 2], 1, [0], maxlr);

% Задание начальной точки

subplot(1, 2, 2);

h = text(sum(get(gca, 'xlim'))*0.5

sum(get(gca, 'ylim'))*0.5, '*Укажите точку*');

set(h,'horizontal', 'center', 'fontweight', 'bold');

[net.IW{1,1} net.b{1}] = ginput(1);

delete(h);

% Построение траектории обучения

limiting = net.trainParam.epochs;

limloop = limiting+1;

net.trainParam.epochs = 1;

net.trainParam.goal = .001;

net.trainParam.show = Inf;

h = plotep(net.IW{1}, net.b{1}, mse(T–sim(net, P)));

[net, tr] = train(net, P, T);

r = tr;

epoch = 1; cont = 1;

while (length(r.epoch)<limloop & cont)

epoch = epoch+1;

[net, tr]=train(net, P, T);

if length(tr.epoch)>1

h = plotep(net.IW{1,1}, net.b{1}, tr.perf(2), h);

r.epoch = [r.epoch epoch];

r.perf = [r.perf tr.perf(2)];

r.vperf = [r.vperf NaN];

r.tperf = [r.tperf NaN];

else

cont = 0;

end;

end;

Рис. 11.73

На рис. 11.73 показан результат выполнения сценария для построения траектории обучения в пространстве настраиваемых параметров. Траектории обучения наглядно видны на графиках линий уровня.

Сопутствующие функции: ERRSURF, PLOTES.