Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

It_Kompyuterny_Praktikum

.Pdf
Скачиваний:
46
Добавлен:
21.03.2016
Размер:
2 Мб
Скачать
☆

n_t=length(r_test);

X=[ones(n,1) r_set(:,1) r_set(:,2) r_set2(:,1) r_set2(:,2)]; A=X\r_set(:,3);

%Несоответствие на обучающей выборке

Out_m=X*A;

r_tr=norm(r_set(:,3)-Out_m)/sqrt(n);%ошибка

%Несоответствие на тестовой выборке

X_test=[ones(n_t,1) r_test(:,1) r_test(:,2) r_test2(:,1) r_test2(:,2)]; A=X_test\r_test(:,3);

Out_m=X_test*A;

r_check=norm(r_test(:,3)-Out_m)/sqrt(n_t); %ошибка,

где r_set2 и r_test2 – это матрицы, все элементы которых равны квадратам элементов матриц r_set и r_test соответственно. Для приведенного примера ошибки обучающей и тестовой выборок составили 5.9873 и 3.4317 соответственно.

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

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

Вывод (пример):

В ходе выполнения лабораторной работы я научился работать с ANFISредактором для построения нечетких нейронных сетей.

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

1.Что представляют собой нечеткие нейронные сети?

2.Какая нечеткая система лежит в основе систем ANFIS?

3.Как можно просмотреть базу знаний синтезированной системы ANFIS?

4.Какие методы генерации ANFIS-систем предусмотрены в ANFISредакторе?

5.Какие опции необходимо ввести при выборе метода субтрактивной кластеризации для генерации нечеткой системы?

Приложение 1. Функции пакета «Fuzzy Logic Toolbox» системы MATLAB для работы с системами нечеткой логики

Ниже перечислены основные из них:

101

addmf – добавление функции принадлежности в FIS (Fuzzy Inference System – Нечеткая система вывода);

addrule – добавление правила в FIS;

addvar – добавление переменной в FIS;

anfis – обучение FIS типа Сугено (Sugeno type);

convertfis – преобразование FIS-матрицы (Fuzzy Logic Toolbox v.1) в FIS-структуру (Fuzzy Logic Toolbox v.2);

defuzz – дефаззификация нечеткого множества;

discfis – дискретизация функций принадлежности всех термов, входящих в FIS;

dsigmf – функция принадлежности в виде разности между двумя сигмоидными функциями;

evalfis – выполнение нечеткого логического вывода;

evalmf – вычисление значений произвольной функции принадлежности;

evalmmf – расчет степеней принадлежностей для нескольких функций принадлежностей;

fcm – поиск кластеров по алгоритму fuzzy c-means;

findrow – нахождение строки в матрице, совпадающей с входной строкой;

fstrvcat – конкатенация матриц различного размера;

fuzarith – нечеткий калькулятор;

gauss2mf – двухсторонняя гауссовская функция принадлежности;

gaussmf – гауссовская функция принадлежности;

gbellmf – обобщенная колокообразная функция принадлежности;

genfis1 – генерирование из данных исходной FIS типа Сугено без использования кластеризации;

genfis2 – генерирование из данных исходной FIS типа Сугено с использованием субтрактивной (вычитающей) кластеризации;

genparam – генерирование исходных параметров функций принадлежности для обучения ANFIS (Adaptive-Network-based Fuzzy Inference System – Адаптивная сеть основанная на нечеткой системе вывода);

gensurf – генерирование поверхности «входы-выход», соответствующей FIS;

getfis – получение свойств FIS;

mam2sug – преобразование FIS типа Мамдани в FIS типа Сугено;

mf2mf – пересчет параметров встроенных функций принадлежности различных типов;

newfis – создание новой FIS;

parsrule – вставка в FIS правил, заданных в виде предложений на естественном языке;

pimf – -подобная функция принадлежности;

102

plotfis – вывод основных параметров FIS в виде графической схемы;

plotmf – вывод графиков функций принадлежности термов одной переменной;

probor – вероятностная реализация логической операции ИЛИ;

psigmf – произведение двух сигмоидных функций принадлежности;

readfis – загрузка FIS из файла;

rmmf – удаление функции принадлежности терма из FIS;

rmvar – удаление переменной из FIS;

setfis – назначение свойств FIS;

showfis – вывод на экран в текстовом формате данных, составляющих FIS-структуру;

showrule – вывод базы знаний FIS;

sigmf – сигмоидная функция принадлежности;

smf – s-подобная функция принадлежности;

subclust – оценка количества кластеров в субтрактивной (вычитающей) кластеризации;

sugmax – нахождения диапазона изменения выходной переменной в FIS типа Сугено;

trapmf – трапециевидная функция принадлежности;

trimf – треугольная функция принадлежности;

writefis – сохранение FIS на диске;

zmf – z-подобная функция принадлежности;

distfcm – расчет расстояния по Эвклиду;

initfcm – генерирование исходной матрицы степеней принадлежности для нечеткой c-means кластеризации;

isfis – проверка структуры данных системы нечеткого логического вывода.

103

Приложение 2. Функции пакета «Neural Network Toolbox» системы MATLAB для работы с нейронными сетями

Функции создания новой сети

network – создание нейронной сети пользователя Запись:

net=network

net=network(numInputs, numLayers, biasConnect, inputConnect, layerConnect, outputConnect, targetConnect) – функция возвращает созданную нейронную сеть с именем net и со следующими характеристиками (в скобках даны значения по умолчанию):

numInputs – количество входов (0), numLayers – количество слоев (0),

biasConnect – булевский вектор с числом элементов, равным количеству слоев (нули),

inputConnect – булевская матрица с числом строк, равным количеству слоев и числом столбцов, равным количеству входов (нули),

layerConnect – булевская матрица с числом строк и столбцов, равным количеству слоев (нули),

outputConnect – булевский вектор-строка с числом элементов, равным количеству слоев (нули),

targetConnect – вектор-строка, такая же, как предыдущая (нули).

newc – создание конкурентного слоя

net=newc(PR, S, KLR, CLR) – функция создания слоя Кохонена. Аргументы функции:

PR – R 2 матрица минимальных и максимальных значений для R входных элементов,

S – число нейронов,

KLR – коэффициент обучения Кохонена (по умолчанию 0.01), CLR – коэффициент «справедливости» (по умолчанию 0.001).

newcf – создание каскадной направленной сети

net=newcf(PR, [S1 S2…SNI], {TF1 TF2…TFNI}, BTF, BLF, PF) –

функция создания разновидности многослойной нейронной сети с обратным распространением ошибки – так называемой каскадной нейронной сети. Такая сеть содержит скрытых N1 слоев, использует входные функции типа dotprod и netsum, инициализация сети осуществляется функцией initnw.

Аргументы функции:

PR – R 2 матрица минимальных и максимальных значений для R входных элементов,

Si – размер i-го скрытого слоя, для N1 слоев,

TFi – функция активации нейронов i-го слоя, по умолчанию 'tansig',

104

BTF – функция обучения сети, по умолчанию 'traingd',

BLF – функция настройки весов и смещений, по умолчанию 'learngdm', PF – функция ошибки, по умолчанию 'mse'.

newelm – создание сети обратного распространения Элмана (Elman) net=newelm(PR, [S1 S2…SNI], {TF1 TF2…TFNI}, BTF, BLF, PF) –

функция создания сети Элмана. Аргументы такие же, как и у предыдущей функции.

newff – создание однонаправленной сети

net=newff(PR, [S1 S2…SNI], {TF1 TF2…TFNI}, BTF, BLF, PF) –

функция создания «классической» многослойной нейронной сети с обучением по методу обратного распространения ошибки.

newfftd – создание однонаправленной сети с входными задержками net=newfftd(PR, ID, [S1 S2…SNI], {TF1 TF2…TFNI}, BTF, BLF, PF) – то же, что и предыдущая функция, но с наличием задержек по входам. Дополнительный аргумент ID – вектор входных задержек.

newgrnn – создание обобщенной регрессионной нейронной сети net=newgrnn(P, T, spread) – функция создания обобщенно-регрессионной сети.

Аргументы:

P – R Q матрица Q входных векторов,

T – S Q матрица Q целевых векторов, spread – отклонение (по умолчанию 1.0).

newhop – создание рекуррентной сети Хопфилда

net=newhop(T) – функция создания сети Хопфилда. Использует только один аргумент

T – R Q матрица Q целевых векторов (значения элементов должны быть

+1 или -1).

newlin – создание линейного слоя

net=newlin(PR, S, ID, LR) – функция создания слоя линейных нейронов. Аргументы:

PR – R 2 матрица минимальных и максимальных значений для R входных элементов,

S – число элементов в выходном векторе,

ID – вектор входной задержки (по умолчанию [0]),

LR – коэффициент обучения (по умолчанию 0.01). Возвращается новый линейный слой.

При записи в форме net=newlin(PR, S, 0, P) используется аргумент P – матрица входных векторов,

105

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

newlind – конструирование линейного слоя

net=newlind(P, T) – функция проектирования нового линейного слоя. Данная функция по матрицам входных и выходных векторов методом наименьших квадратов определяет веса и смещения линейной нейронной сети.

newlvq – создание квантованной сети

net=newlvq(PR, S1, PC, LR, LF) – функция создания сети встречного распространения.

Аргументы:

PR – R 2 матрица минимальных и максимальных значений для R входных элементов,

S1 – число скрытых нейронов,

PC – S2 элементов вектора, задающих доли принадлежности к различным классам,

LR – коэффициент обучения, по умолчанию 0.01, LF – функция обучения, по умолчанию 'learnlv2'.

newp – создание перцептрона

net=newp(PR, S, TF, LF) – функция создания персептрона. Аргументы:

PR – R 2 матрица минимальных и максимальных значений для R входных элементов,

S – число нейронов,

TF – функция активации, по умолчанию 'hardlim', LF – функция обучения, по умолчанию 'learnp'.

newpnn – конструирование вероятностной нейронной сети net=newpnn(P, T, spread) – функция создания вероятностной нейронной сети. Аргументы – как у функции newgrnn.

newrb – конструирование сети с радиальным базисом

net=newrb(P, T, goal, spread) – функция создания сети с радиальными базисными элементами. Аргументы P, T, spread – такие же, как у функции newgrnn; аргумент goal – заданная среднеквадратическая ошибка.

newrbe – конструирование точной сети с радиальными базисными функциями

net=newrbe (P, T, spread) – функция создания сети с радиальными базисными элементами с нулевой ошибкой на обучающей выборке.

106

newsom – создание самоорганизующейся карты

net=newsom(PR, [D1, D2,…], TFCN, DFCN, OLR, OSTEPS, TLR, TND)

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

I – размеры i-го слоя, по умолчанию [5 8],

TFCN – топологическая функция, по умолчанию 'hextop', DFCN – функция расстояния, по умолчанию 'linkdist',

OLR – коэффициент обучения фазы упорядочивания, по умолчанию 0.9, OSTEPS – число шагов фазы упорядочивания, по умолчанию 1000, TLR – коэффициент обучения фазы настройки, по умолчанию 0.02, TND – расстояние для фазы настройки, по умолчанию 1.

Функции обучения

[net, tr]=trainbfg(net, Pd, Tl, Ai, Q, TS, VV, TV) – функция обучения,

реализующая разновидность квазиньютоновского алгоритма обратного распространения ошибки (BFGS). Аргументы функции:

net – имя обучаемой нейронной сети,

Pd – наименование массива задержанных входов обучающей выборки, Tl – массив целевых значений выходов,

Ai – матрица начальных условий входных задержек,

Q – количество обучающих пар в одном цикле обучения (размер «пачки»), TS – вектор временных интервалов,

VV – пустой ([]) массив или массив проверочных данных, TV – пустой ([]) массив или массив тестовых данных.

Функция возвращает обученную нейронную net сеть и набор записей tr для каждого цикла обучения (tr.epoch – номер цикла, tr.perf – текущая ошибка обучения, tr.vperf – текущая ошибка для проверочной выборки, tr.tperf – текущая ошибка для тестовой выборки).

Процесс обучения происходит в соответствии со значениями следующих параметров (в скобках приведены значения по умолчанию): net.trainParam.epochs (100) – заданное количество циклов обучения, net.trainParam.show (25) – количество циклов для показа промежуточных

результатов,

net.trainParam.goal (0) – целевая ошибка обучения, net.trainParam.time (∞) – максимальное время обучения в секундах, net.trainParam.min_grad (10-6) – целевое значение градиента,

net.trainParam.max_fail (5) – максимально допустимая кратность превышения ошибки проверочной выборки по сравнению с достигнутым минимальным значением,

net.trainParam.searchFcn ('srchcha') – имя используемого одномерного алгоритма оптимизации.

Структуры и размеры массивов:

107

Pd – No Ni Ts – клеточный массив, каждый элемент которого P{i, j, ts} есть матрица Dij Q,

Tl – N1 TS – клеточный массив, каждый элемент которого P{i, ts} есть матрица Vi Q,

Ai – N1 LD – клеточный массив, каждый элемент которого Ai{i, k} есть матрица Si Q,

где

Ni=net.numInputs (количество входов сети), N1=net.numLayers (количество ее слоев), LD=net.numLayerDelays (количество слоев задержки),

Ri=net.inputs{i}.size (размер i–го входа), Si=net.layers{i}.size (размер i–го слоя),

Vi=net.targets{i}.size (размер целевого вектора), Dij=Ri*length(net.inputWeights{i, j}.delays).

Если массив VV – непустой, то он должен иметь структуру, определяемую следующими компонентами:

VV.PD – задержанные значения входов проверочной выборки, VV.Tl – целевые значения,

VV.Ai – начальные входные условия,

VV.Q – количество проверочных пар в одном цикле обучения, VV.TS – временные интервалы проверочной выборки.

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

Структуру, аналогичную структуре массива VV, имеет массив TV. Рассматриваемая функция, заданная в форме trainbfg(code), возвращает для значений аргумента, соответственно, 'phames' и 'pdefaults', имена параметров обучения и их значения по умолчанию.

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

2)установить параметр net.trainFcn='trainbfg' (при этом параметры алгоритма будут заданы по умолчанию);

3)установить требуемые значения параметров (net.trainParam).

Процесс обучения останавливается в случае выполнения любого из следующих условий:

превышено заданное количество циклов обучения

(net.trainParam.epochs),

превышено заданное время обучения

(net.trainParam.time),

ошибка обучения стала меньше заданной

(net.trainParam.goal),

градиент стал меньше заданного

(net.trainParam.min_grad),

108

возрастание ошибки проверочной выборки по сравнению с достигнутым минимальным превысило заданное значение

(net.trainParam.max_fail).

[net, tr]=trainbr(net, Pd, Tl, Ai, Q, TS, VV) – функция, реализующая так называемый Байесовский метод обучения, сущность которого заключается в подстройке весов и смещений сети на основе алгоритма Левенберга-Марквардта. Данный алгоритм минимизирует комбинацию квадратов ошибок и весов с выбором наилучшей такой (для получения наилучших обобщающих свойств сети). Эта процедура известна как Байесовская регуляризация, откуда следует название метода.

Аргументы, параметры, возвращаемые величины и использование – такие же, как у предыдущей функции. Сказанное остается в силе для всех остальных функций данной группы.

[net, tr]=traincgb(net, Pd, Tl, Ai, Q, TS, VV) – функция обучения нейронной сети, реализующая разновидность алгоритма сопряженных градиентов (так называемый метод Powell-Beale).

[net, tr]=traincgf(net, Pd, Tl, Ai, Q, TS, VV) – функция обучения нейронной сети, реализующая разновидность алгоритма обратного распространения ошибки в сочетании с методом оптимизации ФлетчераПоуэлла.

[net, tr]=traincgp(net, Pd, Tl, Ai, Q, TS, VV) – то же, что и в предыдущем случае, но с использованием метода Polak-Ribiere.

[net, tr]=traingd(net, Pd, Tl, Ai, Q, TS, VV) – функция, реализующая

«классический » алгоритм обратного распространения ошибки.

[net, tr]=traingda(net, Pd, Tl, Ai, Q, TS, VV) – то же, что и в предыдущем случае, но с адаптацией коэффициента скорости обучения.

[net, tr]=traingdm(net, Pd, Tl, Ai, Q, TS, VV) – функция, реализующая модифицированный алгоритм обратного распространения ошибки с введенной «инерционностью» коррекции весов и смещений.

[net, tr]=traingdx(net, Pd, Tl, Ai, Q, TS, VV) – функция, реализующая комбинированный алгоритм обучения, объединяющий особенности двух вышеприведенных.

[net, tr]=trainlm(net, Pd, Tl, Ai, Q, TS, VV) – данная функция возвращает веса и смещения нейронной сети, используя алгоритм оптимизации Левенберга-Марквардта.

[net, tr]=trainoss(net, Pd, Tl, Ai, Q, TS, VV) – функция, реализующая разновидность алгоритма обратного распространения ошибки с использованием метода секущих.

[net, tr]=trainrp(net, Pd, Tl, Ai, Q, TS, VV) – функция, реализующая разновидность алгоритма обратного распространения ошибки, так называемый упругий алгоритм обратного распространения (resilient backpropagation algorithm, RPROP).

109

[net, tr]=trainscg(net, Pd, Tl, Ai, Q, TS, VV) – данная функция возвращает веса и смещения нейронной сети, используя алгоритм масштабируемых сопряженных градиентов.

[net, tr]=trainwb(net, Pd, Tl, Ai, Q, TS, VV) – данная функция корректирует веса и смещения нейронной сети в соответствии с заданной функцией обучения нейронов.

[net, tr]=trainb1(net, Pd, Tl, Ai, Q, TS, VV) – то же, что и предыдущая функция, но одновременно на вход сети предъявляется только один вектор входа.

[net, Ac, El]=adaptwb(net, Pd, Tl, Ai, Q, TS) – функция адаптации весов и смещений нейронной сети. Используется совместно с функциями newp и newlin. Возвращает массив выходов слоев Ac и массив ошибок слоев El.

Функции использования сети

sim – моделирование нейронной сети

[Y, Pf, Af]=sim(net, P, Pi, Ai) – функция, моделирующая работу сети. Аргументы функции:

net – имя сети, P – ее входы, Pi – массив начальных условий входных задержек (по умолчанию они нулевые), Ai – массив начальных условий задержек слоя нейронов (по умолчанию они нулевые). Функция возвращает значения выходов Y и массивы конечных условий задержек.

Аргументы Pi, Ai, Pf, Af используются только в случаях, когда сеть имеет задержки по входам или по слоям нейронов.

Структура данных аргументов:

P – массив размера Ni TS, каждый элемент которого P{i, ts} является матрицей размера Ri Q.

Pi – массив размера Ni ID, каждый элемент которого Pi{i, k} (i-й вход в момент ts=k-ID) является матрицей размера Ri Q (по умолчанию – нуль). Ai – массив размера Nl LD, каждый элемент которого Ai{i, k} (выход i-го слоя в момент ts=k-LD) является матрицей размера Si Q (по умолчанию – нуль).

Y – массив размера NO TS, каждый элемент которого Y{i, ts} является матрицей размера Ui Q.

Pf – массив размера Ni ID, каждый элемент которого Pf{i, k} (i-й вход в момент ts=TS+k-ID) является матрицей размера Ri Q.

Af – массив размера Nl LD, каждый элемент которого Af{i, k} (выход i- го слоя в момент ts=TS+k-LD) является матрицей размера Si Q,

при этом

Ni=net.numInputs (количество входов сети), Nl=net.numLayers (количество ее слоев), No=net.numOutputs (количество выходов сети),

ID=net.numInputDelays (входные задержки), LD=net.numLayerDelays (задержки слоя),

TS=Number of time steps (число временных интервалов),

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]