Материал: Нейронные сети. методические указания к лабораторным работам № 3, 4 по дисциплине Методы нечеткой логики и нейросетевого управления в робототехнике. Медведев В.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

3. ПРЕДВАРИТЕЛЬНОЕ ЗАДАНИЕ

3.1. Изучить структуру и математическую модель искусственного нейрона, а также функции активации нейронов.

3.2. Изучить структуру, принцип работы персептрона и алгоритм его обучения.

3.3. Изучить структурную схему и алгоритм функционирования сети Хопфилда.

3.4. Изучить структурную схему и алгоритм функционирования сети Хэмминга.

5.8. Обучение персептрона.

5.9. Структурная схема сети Хопфилда.

5.10. Задача, решаемая сетью Хопфилда.

5.11. Алгоритм функционирования сети Хопфилда.

    1. Структурная схема сети Хэмминга.

5.13. Задача, решаемая сетью Хэмминга.

5.14. Алгоритм функционирования сети Хэмминга.

Лабораторная работа № 4

ИССЛеДОВАние нейроннОЙ сетИ в пакете Matlab

1. Цель работы

Изучение основных функций пакета Neural Networks системы Matlab, выполнение основных этапов проектирования и исследование нейронной сети.

2. Теоретические сведения

2.1. Функции пакета Neural Networks Toolbox

Пакет MATLAB позволяет проектировать и исследовать работу нейронных сетей с отображением результатов обучения и функционирования сетей на экране [2].

В состав пакета Neural Networks входят более 150 различных функций, образуя своеобразный макроязык программирования и позволяя пользователю создавать, обучать и использовать различные НС. С помощью команды

>> help nnet

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

2.2. Функции активации в пакете Matlab

• hardlim(X) – пороговая функция активации с порогом = 0. Возвращает матрицу, размер которой равен размеру матрицы X, а элементы имеют значения 0 или 1 – в зависимости от знака соответствующего элемента X.

Пример:

>> X = [0.9 –0.6;0.1 0.4;0.2 –0.5;0 0.5];

>> hardlim(X)

ans =

  1. 0

1 1

1 0

  1. 1

• hardlims(X) – знаковая или сигнатурная функция активации (см. табл. 1); действует так же, как функция hardlim(X), но возвращает значения –1 или +1.

• logsig(X) – сигмоидальная логистическая функция. Возвращает матрицу, элементы которой являются значениями логистической функции от аргументов – элементов матрицы X.

• purelin(X) – возвращает матрицу значений линейной функции активации.

• dhardlim(X,Y) – производная пороговой функции активации. Аргументами являются матрица входов X и матрица выходов Y; матрицы имеют одинаковый размер. Возвращается матрица того же размера.

• dhardlms(X,Y) – производная знаковой функции активации. Возвращается матрица с нулевыми элементами.

• dlogsig(X,Y) – производная сигмоидальной логистической функции. Возвращается матрица с элементами yi,j(1yi,j).

Примеры:

>> X=[0.1; 0.8; –0.7];

>> Y=logsig(X)

Y =

0.5250

0.6900

0.3318

>> dY_dX=dlogsig(X,Y)

dY_dX =

0.2494

0.2139

0.2217

2.3. Функции обучения нейронных сетей

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

• [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 (inf) – максимальное время обучения в секундах;

• net.trainParam.min_grad (1e-6) – целевое значение градиента;

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

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

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

• Pd – массив ячеек размера NoNiTS, каждый элемент которого P{i,j,ts) есть матрица DijQ;

• Тl – массив ячеек размера NlTS, каждый элемент которого P{i,ts} есть матрица ViQ;

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

Здесь

Ni = net.numInputs (количество входов сети);

Nl = 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), возвращает для значений аргумента 'pnames' и 'pdefaults', соответственно, имена параметров обучения и их значения по умолчанию.

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

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

2. Установить требуемые параметры (net.trainParam).

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

• превышено заданное количество циклов обучения (net.trainParam.epochs);

• превышено заданное время обучения (net.trainParam.time);

• ошибка обучения стала меньше заданной (net.trainParam.goal);

• градиент стал меньше заданного (net.trainParam.min_grad);

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

Пример:

>> P = [0 1 2 3 4 5]; % Задание входного вектора

>> T = [0 0 0 1 1 1]; % Задание целевого вектора

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

>> net = newff([0 5],[2 1],{'tansig','logsig'},'trainbfg');

>> a = sim(net,P)

a =

0.0586 0.0772 0.0822 0.0870 0.1326 0.5901

>> % Обучение с новыми параметрами и повторное тестирование >> net.trainParam.searchFcn = 'srchcha';

>> net.trainParam.epochs = 50;

>> net.trainParam.show = 10;

>> net.trainParam.goal = 0.1;

>> net = train(net,P,T);

TRAINCGF-srchcha, Epoch 0/50, MSE 0.295008/0.1, Gradient 0.623241/le–006

TRAINCGF-srchcha, Epoch 1/50, MSE 0.00824365/0.1, Gradient 0.0173555/le-006

TRAINCGF, Performance goal met.

>> a = sim(net,P)

a =

0.0706 0.1024 0.1474 0.9009 0.9647 0.9655

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

2.4. Функции создания нейронных сетей

• network – функция создания нейронной сети пользователя. Запись:

net = network

net = network(numInputs, numLayers, biasConnect, inputConnect, 1ayerConnect, outputConnect, targetConnect)

Описание. Функция возвращает созданную нейронную сеть с именем net и со следующими характеристиками (в скобках даны значения по умолчанию):

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

numLayers – количество слоев (0);

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

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

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

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

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

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

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

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

KLR – коэффициент обучения Кохонена (по умолчанию 0,01);

CLR – коэффициент «справедливости» (по умолчанию 0,001).

Функция возвращает слой Кохонена с заданным именем.

• net = newcf(PR,[S1 S2…SN1],{TF1 TF2...TFN1},BTF, BLF,PF) – функция создания разновидности многослойной НС с обратным распространением ошибки – так называемой каскадной НС. Такая сеть содержит N1 скрытых слоев, использует входные функции типа dotprod и netsum, инициализация сети осуществляется функцией initnw. Аргументы функции:

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

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

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

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

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

PF – функция ошибки, по умолчанию 'mse'.

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

Т – матрица размера RQ, состоящая из Q целевых векторов (значения элементов должны быть +1 или –1).

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

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

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

TF – функция активации, по умолчанию 'hardlim';

LF – функция обучения, по умолчанию 'lеаrnр'.

2.5. Функции использования нейронных сетей

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

net – имя сети, Р – ее входы;

Pi – массив начальных условий входных задержек (по умолчанию они нулевые);

Ai – массив начальных условий задержек слоя нейронов (по умолчанию они нулевые).

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

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

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

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

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

Источник: https://studfile.net/preview/16566389/