Навигация по странице:
|
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6. В. Г. Потемкин
|
Название |
В. Г. Потемкин
|
Анкор |
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc |
Дата |
26.04.2017 |
Размер |
14.83 Mb. |
Формат файла |
|
Имя файла |
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc |
Тип |
Книга
#3790
|
страница |
44 из 50 |
|
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 – массив ячеек размера NoNiTS, каждый элемент которого Pd{i,j,ts} – числовой массив размера DijQ;
Tl – массив ячеек размера NlTS, каждый элемент которого Tl{i,ts} – числовой массив размера ViQ;
Ai – массив ячеек размера NlLD, каждый элемент которого Ai{i,k} – числовой массив размера SiQ.
Параметры описания массивов ячеек и их связь с параметрами сети представлены
в следующей таблице.
-
Параметр описания
|
Параметр сети
|
Назначение
|
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.
|
|
|