Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 300095.doc
Скачиваний:
15
Добавлен:
30.04.2022
Размер:
345.6 Кб
Скачать

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

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