2

I'm training a MLP Neural Network using Particle Swarm Optimization for classification using datasets from UCI. I'm using PyBrain to construct NNs and my custom code to train the network. My question is, how do I choose the Xmax, Xmin parameter for the PSO (i.e., the range of the weights of the NN)?

sham
  • 33
  • 4
  • Are you sure that you want to use a derivative-free optimization algorithm for supervised learning? Optimization algorithms that exploit gradient information are usually much faster. – alfa Mar 23 '12 at 22:42
  • @alfa My research is about using other training algorithm to train NNs. In this case, I'm using PSO as opposed to GA and BP. Hence, PSO. :) – sham Mar 24 '12 at 09:59
  • For reinforcement learning it makes sense (neuroevolution). But for supervised learning, algorithms that use gradient information are usually more efficient with respect to memory and time complexity. But if you want to do it and try different derivative-free algorithms I can recommend CMA-ES. This optimization algorithm works very well e. g. in reinforcement learning. – alfa Mar 24 '12 at 15:09
  • Thanks for the suggestion @alfa. I'll look into CMA-ES. If my understanding is correct (as far as the readings I've done), the range of weights for NNs is unbounded so Xmax for PSO trained NNs is up to the user. – sham Mar 26 '12 at 17:48
  • Yes usually the weights are unbounded but some people set the range e. g. to [-100;100]. – alfa Mar 26 '12 at 20:45

1 Answers1

1

Particle Swarm Optimization doesn't have an inherent notion of bounds. One traditional approach is to impose a penalty for exiting the feasible region. The penalty will work better if it increases continuously with the distance from the feasible region than if there is a sharp discontinuity. The actual neural network weights can use values clipped to the feasible region.

amcnabb
  • 2,161
  • 1
  • 16
  • 24
  • Does that mean I can use an arbitrary range of weights that will be optimized by PSO? [Here](http://www.eit.uni-kl.de/koenig/deutsch/Neucom_Project_Peters.pdf), the author used a range of [-1,1] for the weights but I can't find a source that relates the choice of range of weights to "things" specific to the problem (network inputs, for example). – sham Mar 23 '12 at 17:25
  • @sham, if I understand correctly, I think that might be better asked as a separate question: What range of weights should be used in an MLP Neural Network? PSO will optimize whatever you tell it to. :) – amcnabb Mar 23 '12 at 17:29
  • Thanks. I'll try setting the range to something I find in the net (there's another paper that set the range to [-50,50]) and go from there. – sham Mar 23 '12 at 18:25