I have implemented in matlab a neural network that uses rprop's algorithm to update its weights.Strangely the error on the training set does not converge to a local minimum, but oscillates.Here is the graphics plot of the error function on trainingset:Here is the rprop's algorithm:function [net] = resilientBackPropagation(net, DW, DB, ETA_PLUS, ETA_MINUS)for i=1:length(net.W) % Ciclo sul Numero di Strati della Rete    % Calcolo il Prodotto tra le Derivate dei pesi e dei bias di E e E^-1 dell'i-esimo Strato    productDW = net.DW{i}.*DW{i};     productDB = net.DB{i}.*DB{i};    % Prelevo gli Indici dei pesi e dei bias dell'i-esimo Strato con Prodotto Positivo, Negativo e Nullo      indDW_gt_0 = find(productDW > 0);       indDB_gt_0 = find(productDB > 0);          indDW_lt_0 = find(productDW < 0);     indDB_lt_0 = find(productDB < 0);     indDW_eq_0 = find(productDW == 0);    indDB_eq_0 = find(productDB == 0);     % Calcolo i Margini dei pesi e dei bias con Prodotto Positivo    net.deltaMarginW{i}(indDW_gt_0) = min(ETA_PLUS.*net.deltaMarginW{i}(indDW_gt_0), 50);    net.deltaMarginB{i}(indDB_gt_0) = min(ETA_PLUS.*net.deltaMarginB{i}(indDB_gt_0), 50);     % Calcolo i Margini dei pesi e dei bias con Prodotto Negativo    net.deltaMarginW{i}(indDW_lt_0) = max(ETA_MINUS.*net.deltaMarginW{i}(indDW_lt_0), exp(-6));    net.deltaMarginB{i}(indDB_lt_0) = max(ETA_MINUS.*net.deltaMarginB{i}(indDB_lt_0), exp(-6));         % Aggiornamento dei pesi e dei bias della Rete con Prodotto Positivo    net.W{i}(indDW_gt_0) = net.W{i}(indDW_gt_0)-(sign(DW{i}(indDW_gt_0).*net.deltaMarginW{i}(indDW_gt_0)));    net.B{i}(indDB_gt_0) = net.B{i}(indDB_gt_0)-(sign(DB{i}(indDB_gt_0).*net.deltaMarginB{i}(indDB_gt_0)));       % Aggiornamento dei pesi e dei bias della Rete con Prodotto Negativo    DW{i}(indDW_lt_0) = 0;    DB{i}(indDB_lt_0) = 0;       % Aggiornamento dei pesi e dei bias della Rete con Prodotto Nullo    net.W{i}(indDW_eq_0) = net.W{i}(indDW_eq_0)-(sign(DW{i}(indDW_eq_0).*net.deltaMarginW{i}(indDW_eq_0)));    net.B{i}(indDB_eq_0) = net.B{i}(indDB_eq_0)-(sign(DB{i}(indDB_eq_0).*net.deltaMarginB{i}(indDB_eq_0)));       % Memorizzazione delle Derivate dei pesi e dei bias Aggiornati dell'Errore Totale nella Rete Neurale.    net.DW{i} = DW{i};    net.DB{i} = DB{i};endWhat is the problem?ps:the dataset used is banana_dataset and in the plot the x-axis represents the epoch of training and the y-axis the error.ETA_MINUS = 0.5;ETA_PLUS = 1.2
Oscillating convergence in my Resilient BackPropagation (RPROP) implementation
optimization;matlab;convergence;nonlinear programming;regression