Сделай Сам Свою Работу на 5

Алгоритмы метода сопряженных градиентов

 

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- 2020 stydopedia.ru Все материалы защищены законодательством РФ.