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

11.6.1. Функции одномерного поиска

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

Рассмотренные алгоритмы обучения и настройки – это стратегии, которые обеспечивают минимизацию некоторого функционала качества. В процессе работы этих алгоритмов, как правило, возникает задача одномерного поиска минимума вдоль заданного направления. Это могут быть направления антиградиента или сопряженные направления. В рамках ППП Neural Network Toolbox используется 5 функций одномерного поиска. При работе того или иного алгоритма они задаются параметром srchFcn, который определяет имя функции поиска. Для многих процедур эта функция задается по умолчанию, но она может быть изменена по желанию пользователя при определении процедуры обучения или функции настройки.

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

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

net – нейронная сеть;

X – вектор текущих параметров сети;

Pd – векторы входа с учетом запаздывания;

Tl – векторы целей для слоя;

Ai – начальные значения на ЛЗ;

Q – количество реализаций векторов входа;

TS – шаг по времени;

dX – вектор приращений настраиваемых параметров;

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

perf – значение функционала качества для текущего вектора настраиваемых параметров X;

dperf – производная функционала качества в текущей точке X в направлении dX;

delta – начальный размер шага;

tol – допустимая точность поиска экстремума;

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

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

A – размер шага, доставляющий минимум функционалу качества;

gX – градиент в точке минимума;

perf – значение функционала качества в точке минимума;

retcode – трехэлементный код завершения. Первые 2 элемента определяют, сколько вычислений функции потребовалось на каждом из двух этапов минимизации; третий элемент – код возврата, который фиксирует следующие события:

Код возврата

Событие

0

Нормальное завершение

1

Использован минимальный шаг

2

Использован максимальный шаг

3

Условие выбора шага не выполнено

delta – новое значение шага поиска;

tol – обновленная допустимая точность при поиске.

Используемые массивы имеют следующие размеры:

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

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

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

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

Параметр описания

Параметр сети

Назначение

Ni

net.numInputs

Количество векторов входа

Nl

net.numLayers

Количество слоев

No

net.numOutputs

Количество выходов

LD

net.numLayerDelays

Максимальные значения задержек для слоев

Ri

net.inputs{i}.size

Количество элементов i-го вектора входа

Si

net.layers{i}.size

Количество нейронов i-го слоя

Vi

net.targets{i}.size

Количество элементов i-го вектора цели

Dij

Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j:

Ri * length(net.inputWeights{i, j}.delays)

SRCHGOL

Одномерная минимизация методом золотого сечения

Синтаксис:

[A,gX,perf,retcode,delta,tol] = srchgol(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)

Описание:

Функция srchgol реализует одномерный поиск минимума функционала в заданном направлении. Программа использует метод золотого сечения.

Процедура srchgol имеет следующие параметры:

Параметр

Назначение

alpha

Коэффициент, определяющий порог уменьшения критерия качества

bmax

Максимальный размер шага

scal_tol

Параметр, связывающий погрешность tol с шагом delta

Значения для этих параметров устанавливаются по умолчанию при выборе одной из следующих функций обучения: traincgf,traincgb,traincgp,trainbfg,trainoss.

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

Функция одномерного поиска srchgol используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.

Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchgol, следует:

  • установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;

  • установить свойство net.trainParam.searchFcn равным 'srchgol'.

Пример:

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

p = [0 1 2 3 4 5];

t = [0 0 0 1 1 1];

Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchgol:

net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');

net.trainParam.searchFcn = 'srchgol';

net.trainParam.epochs = 50;

net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

net = train(net,p,t);

a = sim(net,p)

a = 0.0041 0.0042 0.0133 0.9840 0.9983 0.9984

Алгоритм:

Функция srchgol находит минимум функционала ошибки обучения в направлении dX, используя метод золотого сечения, реализованный в виде алгоритма, предложенного в работе [41].

Сопутствующие функции: SRCHBAC, SRCHBRE, SRCHCHA, SRCHHYB.

SRCHBRE

Одномерная минимизация методом Брента

Синтаксис:

[A,gX,perf,retcode,delta,tol] = srchbre(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)

Описание:

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

Процедура srchbre имеет следующие параметры:

Параметр

Назначение

alpha

Коэффициент, определяющий порог уменьшения критерия качества

beta

Коэффициент, определяющий выбор шага

bmax

Максимальный размер шага

scal_tol

Параметр, связывающий погрешность tol с шагом delta

Значения для этих параметров устанавливаются по умолчанию при выборе одной из следующих функций обучения: traincgf,traincgb,traincgp,trainbfg,trainoss.

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

Функция одномерного поиска srchbre используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.

Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchbre, следует:

  • установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;

  • установить свойство net.trainParam.searchFcn равным 'srchbre'.

Функция srchbreможет использоваться с любой из перечисленных обучающих функций:traincgf,traincgb,traincgp,trainbfg,trainoss.

Пример:

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

p = [0 1 2 3 4 5];

t = [0 0 0 1 1 1];

Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchbre:

net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');

net.trainParam.searchFcn = 'srchbre';

net.trainParam.epochs = 50;

net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

net = train(net,p,t);

a = sim(net,p)

a = 0.0013 0.0013 0.0104 0.9954 0.9981 0.9981

Алгоритм:

Функция srchbre находит минимум ошибки обучения в направлении dX, используя алгоритм Брента, который является комбинацией метода золотого сечения и квадратичной интерполяции [4].

Сопутствующие функции: SRCHBAC, SRCHCHA, SRCHGOL, SRCHHYB.

SRCHHYB

Одномерная минимизация на основе гибридного метода

Синтаксис:

[A,gX,perf,retcode,delta,tol] = srchhyb(net,X,P,T,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)

Описание:

Функция srchhyb реализует одномерный поиск минимума функционала в заданном направлении. Программа использует гибридный метод половинного деления и кубической интерполяции.

Процедура srchhyb имеет следующие параметры:

Параметр

Назначение

alpha

Коэффициент, определяющий порог уменьшения критерия качества

beta

Коэффициент, определяющий выбор шага

bmax

Максимальный размер шага

scale_tol

Параметр, связывающий погрешность tol с шагом delta

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

Функция одномерного поиска srchhyb используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.

Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchhyb, следует:

  • установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;

  • установить свойство net.trainParam.searchFcn равным 'srchhyb'.

Функция srchhyb может использоваться с любой из следующих обучающих функций: traincgf,traincgb,traincgp,trainbfg,trainoss.

Пример:

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

p = [0 1 2 3 4 5];

t = [0 0 0 1 1 1];

Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchhyb:

net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');

net.trainParam.searchFcn = 'srchhyb';

net.trainParam.epochs = 50;

net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

net = train(net,p,t);

a = sim(net,p)

a = 0.0000 0.0000 0.0001 1.0000 1.0000 1.0000

Алгоритм:

Функция srchhyb находит минимум ошибки обучения в направлении dX, используя гибридный алгоритм, который является комбинацией метода золотого сечения и кубической интерполяции [41].

Сопутствующие функции: SRCHBAC, SRCHBRE, SRCHCHA, SRCHGOL.

SRCHCHA

Одномерная минимизация на основе метода Чараламбуса

Синтаксис:

[A,gX,perf,retcode,delta,tol] = srchcha(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)

Описание:

Функция srchcha реализует одномерный поиск минимума функционала в заданном направлении. Программа использует метод Чараламбуса.

Процедура srchcha имеет следующие параметры:

Параметр

Назначение

alpha

Коэффициент, определяющий порог уменьшения критерия качества

beta

Коэффициент, определяющий выбор шага

gama

Параметр, регулирующий изменение критерия качества

scale_tol

Параметр, связывающий погрешность tol с шагом delta

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

Функция одномерного поиска srchcha используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.

Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchcha, следует:

  • установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;

  • установить свойство net.trainParam.searchFcn равным 'srchcha'.

Функция srchcha может использоваться с любой из следующих обучающих функций: traincgf,traincgb,traincgp,trainbfg,trainoss.

Пример:

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

p = [0 1 2 3 4 5];

t = [0 0 0 1 1 1];

Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchcha:

net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');

net.trainParam.searchFcn = 'srchcha';

net.trainParam.epochs = 50;

net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

net = train(net,p,t);

a = sim(net,p)

a = 0.0020 0.0021 0.0115 0.9897 0.9972 0.9973

Алгоритм:

Функция srchhyb находит минимум ошибки обучения в направлении dX, используя метод Чараламбуса [8].

Сопутствующие функции: SRCHBAC, SRCHBRE, SRCHGOL, SRCHHYB.

SRCHBAC

Одномерная минимизация на основе метода перебора с возвратами

Синтаксис:

[a,gX,perf,retcode,delta,tol] = srchbac(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)

Описание:

Функция srchbac реализует одномерный поиск минимума функционала в заданном направлении. Программа использует метод перебора с возвратами.

Процедура srchbac имеет следующие параметры:

Параметр

Назначение

alpha

Коэффициент, определяющий порог уменьшения критерия качества

beta

Коэффициент, определяющий выбор шага

low_lim

Нижняя граница изменения шага

up_lim

Верхняя граница изменения шага

maxstep

Максимальное значение шага

minstep

Минимальное значение шага

scale_tol

Параметр, связывающий погрешность tol с шагом delta

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

Функция одномерного поиска srchbac используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.

Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchbac, следует:

  • установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;

  • установить свойство net.trainParam.searchFcn равным 'srchbac'.

Функция srchcha может использоваться с любой из следующих обучающих функций: traincgf,traincgb,traincgp,trainbfg,trainoss.

Пример:

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

p = [0 1 2 3 4 5];

t = [0 0 0 1 1 1];

Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchbac:

net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');

net.trainParam.searchFcn = 'srchbac';

net.trainParam.epochs = 50;

net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

net = train(net,p,t);

a = sim(net,p)

a = 0.0024 0.0025 0.0119 0.9851 0.9951 0.9952

Алгоритм:

Функция srchbac находит минимум функционала качества обучения в направлении dX,используя алгоритм перебора с возвратами [9].

Сопутствующие функции: SRCHBRC, SRCHCHA, SRCHGOL, SRCHHYB.