Dale Patterson
dpatte3@cs.umbc.edu
Description
This page lists two programs backpropagation written in MATLAB take from chapter 3 of .
the textbook, "Elements of Artificial Neural Networks".
Please note that they are generalizations, including momentum and the option to include
as many layers of hidden nodes as desired. If you plan on using either of these, it is
recommended to hard code the number of layers and nodes at each layer (remembering that
more than two is usually undesirable, unrecemmonded, unnessary, and inefficient). Likewise,
if you are not using momentum it is recommended to remove the momentum code as this will
result in a faster algorithm. I have left these as generalizations because they are easy
to use initially when the values of parameters are unknown and you want to determine
appropriated parameters.
Source Code
per-epoch backpropagation in MATLAB
per-period backpropagation in MATLAB
Both of these files use the hyperbolic tangent function, for bipolar data. If you want
to use a binary sigmoid function, replace the following lines
For the feedforward phase
line 146 in bbackprop.m with a{i+1} = [1./(1+exp(-net{i}(:,1:end-1))) ones(P,1)];
line 148 in bbackprop.m with a{i+1} = 1 ./ (1 + exp(-net{i}));
and
line 131 in backprop.m with a{i+1} = [1./(1+exp(-net{i}(1:end-1))) ; 1];
line 133 in backprop.m with a{i+1} = 1./(1+exp(-net{i}));
For the error propagation phase
line 162 in bbackprop.m with delta = err .* a{end} .* (1 - a{end});
line 166 in bbackprop.m with delta = a{i} .* (1-a{i}) .* (delta*w{i});
and
line 145 in backprop.m with delta = (Dp-a{end}) .* a{end} .* (1-a{end});
line 150 in backprop.m with delta = (1+a{i}) .* a{i}.*(delta'*w{i})';