Алгоритм OSS (One Step Secant), или одношаговый алгоритм метода секущих плоскостей, описан в работе Баттити (Battiti) [1]. В нем сделана попытка объединить идеи метода сопряженных градиентов и схемы Ньютона. Алгоритм не запоминает матрицу Гессе, полагая ее на каждой итерации равной единичной. Это позволяет определять новое направление поиска не вычисляя обратную матрицу.
Вновь обратимся к сети, показанной на рис. 3.7, но будем использовать функцию обучения trainoss:
net = newff([–1 2; 0 5],[3,1],{'tansig','purelin'},'trainoss');
Функция trainoss характеризуется теми же параметрами, заданными по умолчанию, что и функция trainbfg.
Установим параметры обучающей процедуры по аналогии с предшествующими примерами:
net.trainParam.epochs = 300;
net.trainParam.show = 5;
net.trainParam.goal = 1e–5;
p = [–1 –1 2 2;0 5 0 5];
t = [–1 –1 1 1];
net=train(net,p,t); % Рис.3.17
На рис. 3.17 приведен график изменения ошибки обучения в зависимости от числа выполненных циклов обучения.
Рис. 3.17
a = sim(net,p)
a = –1.0020 –0.9988 0.9994 1.0002
Этот алгоритм требует меньших объемов памяти и вычислительных ресурсов на цикл по сравнению с алгоритмом BFGS, но больше, чем алгоритм CGF. Таким образом, алгоритм OSS может рассматриваться как некий компромисс между алгоритмами методов сопряженных градиентов и Ньютона.