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

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

traincgf

Алгоритм Флетчера – Ривса CGF

Синтаксис:

[net,TR,Ac,El] = traincgf(NET,Pd,Tl,Ai,Q,TS,VV)

info = traincgf(code)

Описание:

Функция traincgf обучает нейронную сеть, используя метод сопряженного градиента с обратным распространением ошибки в модификации Флетчера – Ривса.

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

info = traincgf'pdefaults')'

info =

epochs:

100

scale_tol:

20

maxstep:

100

show:

25

alpha:

0.001

minstep:

1.0 e–006

goal:

0

beta:

0.1

bmax:

26

time:

Inf

delta:

0.01

min_grad:

1.0e–006

gama:

0.1

max_fail:

5

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:

100

scale_tol:

20

maxstep:

100

show:

25

alpha:

0.001

minstep:

1.0 e–006

goal:

0

beta:

0.1

bmax:

26

time:

Inf

delta:

0.01

min_grad:

1.0e–006

gama:

0.1

max_fail:

5

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:

100

scale_tol:

20

maxstep:

100

show:

25

alpha:

0.001

minstep:

1.0 e–006

goal:

0

beta:

0.1

bmax:

26

time:

Inf

delta:

0.01

min_grad:

1.0e–006

gama:

0.1

max_fail:

5

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:

100

sigma:

5.0e–5

show:

25

lambda:

5.0e–7

goal:

0

time:

Inf

min_grad:

1.0e–006

max_fail:

5

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

Функция обучения 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.