Алгоритмы метода сопряженных градиентов
traincgf
| Алгоритм Флетчера – Ривса CGF
| Синтаксис:
[net,TR,Ac,El] = traincgf(NET,Pd,Tl,Ai,Q,TS,VV)
info = traincgf(code)
Описание:
Функция traincgf обучает нейронную сеть, используя метод сопряженного градиента с обратным распространением ошибки в модификации Флетчера – Ривса.
Функция при своей работе использует следующие параметры:
info = traincgf'pdefaults')'
info =
epochs:
|
| scale_tol:
|
| maxstep:
|
| show:
|
| alpha:
| 0.001
| minstep:
| 1.0 e–006
| goal:
|
| beta:
| 0.1
| bmax:
|
| time:
| Inf
| delta:
| 0.01
|
|
| min_grad:
| 1.0e–006
| gama:
| 0.1
|
|
| max_fail:
|
| low_lim:
| 0.1
|
|
| searchFcn:
| 'srchbac'
| up_lim:
| 0.5
|
|
| Применение функции:
Функция обучения traincgf используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
· установить свойство сети net.trainFcn равным 'traincgf'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
· инициализировать нейронную сеть;
· присвоить, если это необходимо, требуемые значения параметрам обучения;
· применить функцию train.
Алгоритм:
Функция traincgf выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с алгоритмом метода сопряженных градиентов вектор настраиваемых переменных получает следующие приращения:
X = X + a*dX,
где dX – направление поиска. Параметр a выбирается так, чтобы минимизировать критерий качества обучения в направлении поиска. Функция одномерного поиска searchFcn используется для вычисления минимума. Начальное направление поиска задается вектором, противоположным градиенту критерия качества. При успешных итерациях направление поиска определяется на основе нового значения градиента с учетом прежнего направления поиска согласно формуле
dX = –gX + dX_old*Z,
где gX – вектор градиента; параметр Z может быть вычислен отдельными различными способами. Для метода сопряженного градиента в модификации Флетчера – Ривса он рассчитывается согласно формуле [41]
Z = Normnew_sqr/norm_sqr,
где normnew_sqr – квадрат нормы текущего градиента; norm_sqr – квадрат нормы предыдущего градиента.
Обучение прекращается, когда выполнено одно из следующих условий:
· значение функции качества стало меньше предельного;
· градиент критерия качества стал меньше значения min_grad;
· достигнуто предельное число циклов обучения;
· превышено максимальное время, отпущенное на обучение;
· ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traincgf.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'traincgf');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.001;
[net,TR] = train(net,P,T); % Рис.11.51
На рис. 11.51 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 6-м цикле обучения.
Рис. 11.51
Выполним моделирование сети:
Y = sim(net,P)
Y = 0.0005 0.0005 0.0007 0.9862 0.9964 0.9964
Требуемое соответствие между входом и выходом нейронной сети обеспечивается с заданной среднеквадратичной погрешностью равной 0.001, т. е. с точностью на порядок большей, чем в предшествующих примерах.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINCGP, TRAINCGB, TRAINSCG, TRAINCGP, TRAINOSS, TRAINBFG.
traincgp
| Алгоритм Полака – Рибейры CGP
| Синтаксис:
[net,TR,Ac,El] = traincgp(NET,Pd,Tl,Ai,Q,TS,VV)
info = traincgp(code)
Описание:
Функция traincgp обучает нейронную сеть, используя метод сопряженного градиента с обратным распространением ошибки в модификации Полака – Рибейры CGP.
Функция при своей работе использует следующие параметры:
info = traincgp'pdefaults')'
info =
epochs:
|
| scale_tol:
|
| maxstep:
|
| show:
|
| alpha:
| 0.001
| minstep:
| 1.0 e–006
| goal:
|
| beta:
| 0.1
| bmax:
|
| time:
| Inf
| delta:
| 0.01
|
|
| min_grad:
| 1.0e–006
| gama:
| 0.1
|
|
| max_fail:
|
| low_lim:
| 0.1
|
|
| searchFcn:
| 'srchbac'
| up_lim:
| 0.5
|
|
| Применение функции:
Функция обучения traincgp используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
· установить свойство сети net.trainFcn равным 'traincgp'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
· инициализировать нейронную сеть;
· присвоить, если это необходимо, требуемые значения параметрам обучения;
· применить функцию train.
Алгоритм:
Функция traincgp выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с алгоритмом метода сопряженных градиентов вектор настраиваемых переменных получает следующие приращения:
X = X + a*dX,
где dX – направление поиска. Параметр a выбирается так, чтобы минимизировать критерий качества обучения в направлении поиска. Функция одномерного поиска searchFcn используется для вычисления минимума. Начальное направление поиска задается вектором, противоположным градиенту критерия качества. При успешных итерациях направление поиска определяется на основе нового значения градиента с учетом прежнего направления поиска согласно формуле
dX = –gX + dX_old*Z,
где gX – вектор градиента; параметр Z может быть вычислен отдельными различными способами. Для метода сопряженного градиента в модификации Полака – Рибейры он рассчитывается согласно формуле [41]
Z = ((gX – gX_old)’*gX)/norm_sqr,
где gX_old – вектор градиента на предыдущей итерации; norm_sqr – квадрат нормы вектора градиента.
Обучение прекращается, когда выполнено одно из следующих условий:
· значение функции качества стало меньше предельного;
· градиент критерия качества стал меньше значения min_grad;
· достигнуто предельное число циклов обучения;
· превышено максимальное время, отпущенное на обучение;
· ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traincgp.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'traincgp');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.001;
[net,TR] = train(net,P,T); % Рис.11.52
На рис. 11.52 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 13-м цикле обучения.
Рис. 11.52
Выполним моделирование сети:
Y = sim(net,P)
Y = 0.0000 0.0000 0.0000 0.9491 0.9883 0.9891
Требуемое соответствие между входом и выходом нейронной сети обеспечивается с заданной среднеквадратичной погрешностью, равной 0.001.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINRP, TRAINCGF, TRAINCGB, TRAINSCG, TRAINOSS, TRAINBFG.
traincgb
| Алгоритм обучения CGB
| Синтаксис:
[net,TR,Ac,El] = traincgb(NET,Pd,Tl,Ai,Q,TS,VV)
info = traincgb(code)
Описание:
Функция traincgb обучает нейронную сеть, используя метод сопряженного градиента с обратным распространением ошибки и рестартами в модификации Пауэлла – Биеле CGB.
Функция при своей работе использует следующие параметры:
info = traincgb'pdefaults')'
info =
epochs:
|
| scale_tol:
|
| maxstep:
|
| show:
|
| alpha:
| 0.001
| minstep:
| 1.0 e–006
| goal:
|
| beta:
| 0.1
| bmax:
|
| time:
| Inf
| delta:
| 0.01
|
|
| min_grad:
| 1.0e–006
| gama:
| 0.1
|
|
| max_fail:
|
| low_lim:
| 0.1
|
|
| searchFcn:
| 'srchbac'
| up_lim:
| 0.5
|
|
| Применение функции:
Функция обучения traincgb используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
· установить свойство сети net.trainFcn равным 'traincgb'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
· инициализировать нейронную сеть;
· присвоить, если это необходимо, требуемые значения параметрам обучения;
· применить функцию train.
Алгоритм:
Функция traincgb выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с алгоритмом метода сопряженных градиентов вектор настраиваемых переменных получает следующие приращения:
X = X + a*dX,
где dX – направление поиска; параметр a выбирается так, чтобы минимизировать критерий качества обучения в направлении поиска. Функция одномерного поиска searchFcn используется для вычисления минимума. Начальное направление поиска задается вектором, противоположным градиенту критерия качества. При успешных итерациях направление поиска определяется на основе нового значения градиента с учетом прежнего направления поиска согласно формуле
dX = –gX + dX_old*Z,
где gX – вектор градиента; параметр Z может быть вычислен различными способами. Метод сопряженного градиента в модификации Пауэлла – Биеле реализует стратегию рестартов для выбора правильного направления движения к минимуму [34].
Обучение прекращается, когда выполнено одно из следующих условий:
· значение функции качества стало меньше предельного;
· градиент критерия качества стал меньше значения min_grad;
· достигнуто предельное число циклов обучения;
· превышено максимальное время, отпущенное на обучение;
· ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traincgb.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'traincgb');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.001;
[net,TR] = train(net,P,T); % Рис.11.53
На рис. 11.53 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 5-м цикле обучения.
Рис. 11.53
Выполним моделирование сети:
Y = sim(net,P)
Y = 0.0034 0.0034 0.0038 0.9983 0.9999 0.9999
Требуемое соответствие между входом и выходом нейронной сети обеспечивается с заданной среднеквадратичной погрешностью, равной 0.001.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINCGP, TRAINCGF, TRAINCGB, TRAINSCG, TRAINOSS, TRAINBFG.
trainscg
| Алгоритм обучения SCG
| Синтаксис:
[net,TR,Ac,El] = trainscg(net,Pd,Tl,Ai,Q,TS,VV)
info = trainscg(code)
Описание:
Функция trainscg обучает нейронную сеть, используя комбинацию метода сопряженного градиента с квазиньютоновым подходом в модификации Моллера SCG.
Функция при своей работе использует следующие параметры:
info = trainscg'pdefaults')'
info =
epochs:
|
| sigma:
| 5.0e–5
| show:
|
| lambda:
| 5.0e–7
| goal:
|
|
|
| time:
| Inf
|
|
| min_grad:
| 1.0e–006
|
|
| max_fail:
|
|
|
| Применение функции:
Функция обучения trainscg используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к обучению, необходимо:
· установить свойство сети net.trainFcn равным 'trainscg'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.
Для того чтобы фактически обучить сеть, необходимо:
· инициализировать нейронную сеть;
· присвоить, если это необходимо, требуемые значения параметрам обучения;
· применить функцию train.
Алгоритм:
Функция trainscg выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки.
Этот алгоритм реализует упрощенную по сравнению с функциями traincgp, traincgf, traincgb стратегию метода сопряженных градиентов, предложенную Моллером [29].
Обучение прекращается, когда выполнено одно из следующих условий:
· значение функции качества стало меньше предельного;
· градиент критерия качества стал меньше значения min_grad;
· достигнуто предельное число циклов обучения;
· превышено максимальное время, отпущенное на обучение;
· ошибка контрольного подмножества превысила ошибку обучающего более чем в max_fail раз.
Пример:
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainscg.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'trainscg');
Обучение сети:
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.001;
[net,TR] = train(net,P,T); % Рис.11.54
На рис. 11.54 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 14-м цикле обучения.
Рис. 11.54
Выполним моделирование сети:
Y = sim(net,P)
Y = 0.0053 0.0061 0.0522 0.9629 0.9899 0.9906
Требуемое соответствие между входом и выходом нейронной сети обеспечивается с заданной среднеквадратичной погрешностью, равной 0.001.
Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINRP, TRAINCGF, TRAINCGB, TRAINBFG, TRAINCGP, TRAINOSS.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|