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

Градиентные алгоритмы обучения

 

traingd Алгоритм градиентного спуска GD

Синтаксис:

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

info = traingd(code)

Описание:

Функция traingd обучает нейронную сеть, используя алгоритм градиентного спуска GD.

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

info = traingd('pdefaults')'

info =

epochs: min_grad: 1.0e–006
show: max_fail:
goal: searchFcn: 'srchbac'
time: Inf lr: 0.01

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

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

Для того чтобы подготовить сеть к обучению, необходимо:

· установить свойство сети net.trainFcn равным 'traingd'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.

Для того чтобы фактически обучить сеть, необходимо:

· инициализировать нейронную сеть;

· присвоить, если это необходимо, требуемые значения параметрам обучения;

· применить функцию train.

Алгоритм:

Функция traingd выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения (perf) по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с методом градиентного спуска вектор настраиваемых переменных получает следующие приращения:

dX = lr * dperf/dX.

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

· значение функции качества стало меньше предельного;

· градиент критерия качества стал меньше значения min_grad;

· достигнуто предельное число циклов обучения;

· превышено максимальное время, отпущенное на обучение;

· ошибка контрольного подмножества превысила ошибку обучающего более чем
в max_fail раз.

Пример:

Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5];

T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала;
в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traingd.



Формирование сети:

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

Обучение сети:

net.trainParam.epochs = 500;

net.trainParam.goal = 0.01;

[net,TR] = train(net,P,T); % Рис.11.44

На рис. 11.44 показано, как изменяется точность в процессе обучения; требуемое значе­ние обеспечивается на 332-м цикле обучения.

 

Рис. 11.44

Выполним моделирование сети:

Y = sim(net,P)

Y = 0.0669 0.0962 0.1284 0.8350 0.9640 0.9657

Требуемое соответствие между входом и выходом нейронной сети обеспечивается
с заданной среднеквадратичной погрешностью.

Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM.

 

traingda Обучение нейронной сети методом GDA

Синтаксис:

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

info = traingda(code)

Описание:

Функция traingda обучает нейронную сеть, используя алгоритм градиентного спуска
с выбором параметра скорости настройки GDA.

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

info = traingda('pdefaults')'

info =

epochs: lr: 0.01
show: lr_inc: 1.05
goal: lr_dec: 0.7
time: Inf max_perf_inc: 1.04
min_grad: 1.0e–006    
max_fail:    

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

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

Для того чтобы подготовить сеть к обучению, необходимо:

· установить свойство сети net.trainFcn равным 'traingda'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.

Для того чтобы фактически обучить сеть, необходимо:

· инициализировать нейронную сеть;

· присвоить, если это необходимо, требуемые значения параметрам обучения;

· применить функцию train.

Алгоритм:

Функция traingda выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с методом градиентного спуска вектор настраиваемых переменных получает следующие приращения:

dX = lr * dperf/dX.

Однако в данном случае, в отличие от алгоритма градиентного спуска, параметр скорости настройки выполняет адаптивную функцию. Он увеличивается в lr_inc раз, если критерий качества обучения сети уменьшается, и это реализуется на каждом цикле обучения. С другой стороны, если критерий качества увеличился более чем в max_perf_inc раз, то начинается коррекция параметра скорости настройки в сторону уменьшения с коэффициентом lr_dec.

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

· значение функции качества стало меньше предельного;

· градиент критерия качества стал меньше значения min_grad;

· достигнуто предельное число циклов обучения;

· превышено максимальное время, отпущенное на обучение;

· ошибка контрольного подмножества превысила ошибку обучающего более чем
в max_fail раз.

Пример:

Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5];

T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала;
в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traingda.

Формирование сети:

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

Обучение сети:

net.trainParam.epochs = 500;

net.trainParam.goal = 0.01;

[net,TR] = train(net,P,T); % Рис.11.45

TR =

epoch: [1´94 double]

perf: [1´94 double]

vperf: [1´94 double]

tperf: [1´94 double]

lr: [1´94 double]

Рис. 11.45

На рис. 11.45 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 93-м цикле обучения; при этом параметр скорости настройки постоянно растет и достигает значения приблизительно 0.93 (рис. 11.46).

Рис. 11.46

Выполним моделирование сети:

Y = sim(net,P)

Y = 0.0376 0.1069 0.1922 0.9121 0.9774 0.9783

Требуемое соответствие между входом и выходом нейронной сети обеспечивается
с заданной среднеквадратичной погрешностью.

Сопутствующие функции: NEWFF, NEWCF, TRAINGD, TRAINGDM, TRAINGDX, TRAINLM.

 

TRAINGDM Алгоритм градиентного спуска с возмущением GDM

Синтаксис:

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

info = traingdm(code)

Описание:

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

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

info = traingdm('pdefaults')'

info =

epochs: lr: 0.01
show: max_perf_inc: 1.04
goal: mc: 0.9
time: Inf    
min_grad: 1.0e–006    
max_fail:    

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

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

Для того чтобы подготовить сеть к обучению, необходимо:

· установить свойство сети net.trainFcn равным 'traingdm'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.

Для того чтобы фактически обучить сеть, необходимо:

· инициализировать нейронную сеть;

· присвоить, если это необходимо, требуемые значения параметрам обучения;

· применить функцию train.

Алгоритм:

Функция traingdm выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с методом градиентного спуска с возмущением вектор настраиваемых переменных получает следующие приращения:

dX = mc*dXprev + lr*mc*dperf/dX,

где dXprev – вектор возмущения весов и смещений с коэффициентом mc.

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

· значение функции качества стало меньше предельного;

· градиент критерия качества стал меньше значения min_grad;

· достигнуто предельное число циклов обучения;

· превышено максимальное время, отпущенное на обучение;

· ошибка контрольного подмножества превысила ошибку обучающего более чем
в max_fail раз.

Пример:

Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5];

T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала;
в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traingdm и увеличим параметр скорости настройки до 0.1.

Формирование сети:

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

Обучение сети:

net.trainParam.epochs = 500;

net.trainParam.goal = 0.01;

net.trainParam.lr = 0.1;

[net,TR] = train(net,P,T); % Рис.11.47

Рис. 11.47

На рис. 11.47 показано, как изменяется точность в процессе обучения; требуемое
значение обеспечивается на 120-м цикле обучения.

Выполним моделирование сети:

Y = sim(net,P)

Y = 0.0787 0.0393 0.1006 0.8696 0.8883 0.8884

Требуемое соответствие между входом и выходом нейронной сети обеспечивается
с заданной среднеквадратичной погрешностью.

Сопутствующие функции: NEWFF, NEWCF, TRAINGD, TRAINGDA, TRAINGDX, TRAINLM.

 

traingdx Обучение нейронной сети методом GDX

Синтаксис:

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

info = traingdx(code)

Описание:

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

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

info = traingdx('pdefaults')'

info =

epochs: lr: 0.01
show: lr_inc: 1.05
goal: lr_dec: 0.7
time: Inf max_perf_inc: 1.04
min_grad: 1.0e–006 mc: 0.9
max_fail:    

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

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

Для того чтобы подготовить сеть к обучению, необходимо:

· установить свойство сети net.trainFcn равным 'traingdx'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.

Для того чтобы фактически обучить сеть, необходимо:

· инициализировать нейронную сеть;

· присвоить, если это необходимо, требуемые значения параметрам обучения;

· применить функцию train.

Алгоритм:

Функция traingdx выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с методом градиентного спуска с возмущением вектор
настраиваемых переменных получает следующие приращения:

dX = mc*dXprev + lr*mc*dperf/dX,

где dXprev – вектор возмущения весов и смещений с коэффициентом mc.

Однако в данном случае, в отличие от алгоритма traingdm, параметр скорости настройки выполняет адаптивную функцию. Он увеличивается в lr_inc раз, если критерий качества обучения сети уменьшается, и это реализуется на каждом цикле обучения.
С другой стороны, если критерий качества увеличился более чем в max_perf_inc раз,
то начинается коррекция параметра скорости настройки в сторону уменьшения с коэф­фи­циентом lr_dec.

Обучение прекращается, когда выполнено одно из следующих условий:

· значение функции качества стало меньше предельного;

· градиент критерия качества стал меньше значения min_grad;

· достигнуто предельное число циклов обучения;

· превышено максимальное время, отпущенное на обучение;

· ошибка контрольного подмножества превысила ошибку обучающего более чем
в max_fail раз.

Пример:

Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5];

T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала;
в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traingdx.

Формирование сети:

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

Обучение сети:

net.trainParam.epochs = 500;

net.trainParam.goal = 0.01;

[net,TR] = train(net,P,T); % Рис.11.48

TR =

epoch: [1´106 double]

perf: [1´106 double]

vperf: [1´106 double]

tperf: [1´106 double]

lr: [1´106 double]

Рис. 11.48

На рис. 11.48 показано, как изменяется точность в процессе обучения; требуемое значение обеспечивается на 105-м цикле обучения; при этом параметр скорости настройки постоянно растет и достигает значения приблизительно 1.7 (рис. 11.49).

Рис. 11.49

Выполним моделирование сети:

Y = sim(net,P)

Y = 0.0787 0.0393 0.1006 0.8696 0.8883 0.8884

Требуемое соответствие между входом и выходом нейронной сети обеспечивается
с заданной среднеквадратичной погрешностью.

Сопутствующие функции: NEWFF, NEWCF, TRAINGD, TRAINGDM, TRAINGDA, TRAINLM.

 

trainrp Алгоритм обучения Rprop

Синтаксис:

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

info = trainrp(code)

Описание:

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

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

info = trainrp('pdefaults')'

info =

epochs: delt_inc: 1.2
show: delt_dec: 0.5
goal: delta0: 0.07
time: Inf deltamax:
min_grad: 1.0e–006    
max_fail:    

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

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

Для того чтобы подготовить сеть к обучению, необходимо:

· установить свойство сети net.trainFcn равным 'trainrp'. Это автоматически установит значения параметров обучения, соответствующие значениям свойства net.trainParam по умолчанию.

Для того чтобы фактически обучить сеть, необходимо:

· инициализировать нейронную сеть;

· присвоить, если это необходимо, требуемые значения параметрам обучения;

· применить функцию train.

Алгоритм:

Функция trainrp выполняет процедуру обучения, если функции взвешивания, накопления и активации имеют производные. Для вычисления производных критерия качества обучения по переменным веса и смещения используется метод обратного распространения ошибки. В соответствии с пороговым алгоритмом обратного распространения вектор настраиваемых переменных получает следующие приращения:

dX = deltaX.*sign(gX),

где вектору deltaX присваиваются начальные значения delta0, а вектор gX – градиент критерия качества. На каждой итерации элементы deltaX изменяются. Если некоторый элемент вектора gX изменяет знак при переходе к следующей итерации, то соответствующий элемент вектора deltaX умножается на коэффициент delta_dec. Если элемент вектора gX сохраняет знак, то соответствующий элемент вектора deltaX умножается на коэффициент delta_inc [36].

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

· значение функции качества стало меньше предельного;

· градиент критерия качества стал меньше значения min_grad;

· достигнуто предельное число циклов обучения;

· превышено максимальное время, отпущенное на обучение;

· ошибка контрольного подмножества превысила ошибку обучающего более чем
в max_fail раз.

Пример:

Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5];

T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала;
в первом слое используем 2 нейрона с функцией активации tansig, а во втором – 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainrp.

Формирование сети:

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

Обучение сети:

net.trainParam.epochs = 50;

net.trainParam.show = 10;

net.trainParam.goal = 0.01;

[net,TR] = train(net,P,T); % Рис.11.50

На рис. 11.50 показано, как изменяется точность в процессе обучения; требуемое
значение обеспечивается на 10-м цикле обучения.

Рис. 11.50

Выполним моделирование сети:

Y = sim(net,P)

Y = 0.0696 0.0704 0.1339 0.8934 0.9390 0.9399

Требуемое соответствие между входом и выходом нейронной сети обеспечивается
с заданной среднеквадратичной погрешностью.

Сопутствующие функции: NEWFF, NEWCF, TRAINGDM, TRAINGDA, TRAINGDX, TRAINLM, TRAINCGP, TRAINCGF, TRAINCGB, TRAINSCG, TRAINOSS, TRAINBFG.



©2015- 2020 stydopedia.ru Все материалы защищены законодательством РФ.