Radial Basis Function Neural Network - the Algorithm

rbfnn.gif

Step 0: read file of feature vector and label (target) data {(x(q), t(q)): q = 1,...,Q}

 

Step 1: draw random weights {wmj: m=1,...,M, j=1,...,J} between 0.0 and 0.5

            set step sizes η = 0.5,, set stopping criterion ε = 0.000001

            select M centers in feature space so Gaussians cover it

            for m = 1 to M do

                compute σm = 1/(2M)1/N

 

Step 2: compute {ym: m=1,...,M} as given above in Equation (1)      //One-time computation

 

Step 3: compute {zj: j=1,...,J} from Equation (3)

 

Step 4: compute E from above from Equation (2) and put Enew = E

 

Step 5: for m = 1 to M do                   //Adjust all weights by steepest descent

                 for j = 1 to J do

                         wmj = wmj - η(2/MQ)Σq=1,Q (zj(q) - tj(q))ym(q)

                        {if one of every 10th iteration (if adjusting biases)

                              bj = bj - α(2/Q)Σq=1,Q (zj(q) - tj(q)) }

 

Step 6: put E = Enew

            compute Enew from Equation (2) above with new weights

            if Enew < E then η = 1.2η

            else η = 0.9η

 

Step 7: if Enew > ε

                  compute {zj: j=1,...,J} from Equation (3)

                 goto Step 5

            else stop