Упругое обратное распространение
net.trainFcn = 'trainrp'
[net,tr] = train(net,...)
trainrp
является сетевой функцией обучения, которая обновляет значения веса и смещения в соответствии с алгоритмом упругого обратного распространения (Rprop).
net.trainFcn = 'trainrp'
устанавливает сетевую trainFcn
свойство.
[net,tr] = train(net,...)
обучает сеть с trainrp
.
Обучение происходит согласно trainrp
параметры обучения, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000 | Максимальное количество эпох для обучения |
net.trainParam.show | 25 | Эпохи между отображениями ( |
net.trainParam.showCommandLine | false | Сгенерируйте выход в командной строке |
net.trainParam.showWindow | true | Показать обучающий графический интерфейс пользователя |
net.trainParam.goal | 0 | Цель эффективности |
net.trainParam.time | inf | Максимальное время обучения в секундах |
net.trainParam.min_grad | 1e-5 | Минимальный градиент эффективности |
net.trainParam.max_fail | 6 | Максимальные отказы валидации |
net.trainParam.lr | 0.01 | Скорость обучения |
net.trainParam.delt_inc | 1.2 | Шаг к изменению веса |
net.trainParam.delt_dec | 0.5 | Уменьшение на изменение веса |
net.trainParam.delta0 | 0.07 | Начальное изменение веса |
net.trainParam.deltamax | 50.0 | Максимальное изменение веса |
Можно создать стандартную сеть, которая использует trainrp
с feedforwardnet
или cascadeforwardnet
.
Чтобы подготовить пользовательскую сеть для обучения с trainrp
,
Задайте net.trainFcn
на 'trainrp'
. Это устанавливает net.trainParam
на trainrp
параметры по умолчанию.
Задайте net.trainParam
свойства к желаемым значениям.
В любом случае вызов train
с полученной сетью обучает сеть с trainrp
.
Вот задача, состоящая из входов p
и целевые t
быть решенным сетью.
p = [0 1 2 3 4 5]; t = [0 0 0 1 1 1];
Двухслойная сеть прямого распространения с двумя скрытыми нейронами и эта функция обучения создается.
Создайте и протестируйте сеть.
net = feedforwardnet(2,'trainrp');
Здесь сеть обучена и протестирована.
net.trainParam.epochs = 50; net.trainParam.show = 10; net.trainParam.goal = 0.1; net = train(net,p,t); a = net(p)
См. help feedforwardnet
и help cascadeforwardnet
для других примеров.
trainrp
может обучать любую сеть, пока ее вес, чистый вход и передаточные функции имеют производные функции.
Backpropagation используется для вычисления производных от perf
эффективности относительно переменных веса и смещения
X
. Каждая переменная регулируется согласно следующему:
dX = deltaX.*sign(gX);
где элементы deltaX
все инициализированы в delta0
, и gX
- градиент. При каждой итерации элементы deltaX
изменяются. Если элемент gX
изменяет знак с одной итерации на следующий, затем соответствующий элемент deltaX
уменьшается на delta_dec
. Если элемент gX
поддерживает тот же знак от одной итерации к следующей, затем соответствующий элемент deltaX
увеличивается на delta_inc
. См. Ридмиллер, М. и Х. Браун, «Прямой адаптивный метод для более быстрого обучения с подкреплением: алгоритм RPROP», Труды Международной конференции IEEE по нейронной Networks,1993, стр. 586-591.
Обучение останавливается, когда происходит любое из следующих условий:
Максимальное количество epochs
(повторения) достигается.
Максимальное количество time
превышено.
Эффективность минимизирована до goal
.
Градиент эффективности падает ниже min_grad
.
Эффективность валидации увеличилась более чем max_fail
раз с момента последнего уменьшения (при использовании валидации).
Ридмиллер, М. и Х. Браун, «Прямой адаптивный метод для более быстрого обучения с подкреплением: Алгоритм RPROP», Труды Международной конференции IEEE по нейронной Networks,1993, стр. 586-591.
trainbfg
| traincgb
| traincgf
| traincgp
| traingda
| traingdm
| traingdx
| trainlm
| trainoss
| trainscg