Books

Short works

Books : reviews

James Kennedy, Russell C. Eberhart.
Swarm Intelligence.
Morgan Kaufmann. 2001

rating : 3.5 : worth reading
review : 18 August 2001

Much of the apparent intelligence of creatures' behaviour is due to their interaction with a complex environment, and the environment of social creatures includes others. So maybe intelligence, including human intelligence, is due mainly to interactions with those others, rather than purely internal cognitive processes?

This is the authors' thesis, leisurely and discursively expounded from two directions. Firstly, they explain various models and experiments of human intelligence and social psychology that demonstrate how important are interactions with others. Much of that interaction seems to involve learning from (copying) successful observed behaviours. So they take a second direction of using simple computer simulations to demonstrate this -- based on the "swarm algorithm". This is motivated also by flocking algorithms that show how complex and lifelike behaviour patterns can emerge from application of a few very simple rules: each particle in the swarm looks to its "neighbours", and moves towards the "better" ones. In addition to being a simple simulation of social intelligence, the swarm algorithm is also very successful at solving computationally hard problems -- where "better" is some externally-imposed fitness function to be optimised. Unlike the "flocking boids" style simulations, the identity of the neighbours are fixed -- the particles swarm around only in problem space, and look to a fixed topology of neighbours. This makes things a little easier to compute, as the algorithm doesn't have to search through the population to discover who is "closest", and allows a topologically nearby neighbour to be far away in problem space, with the possibility of it having found a much better solution. It also makes the algorithm look like a kind of cellular automaton.

This is all very interesting indeed, but does leave a slight feeling of incompleteness. On the one hand, we have all the fascinating discussion of human social interactions (and what about the octopus? it is rated as highly intelligent from its problem solving abilities, yet it is not a social creature), and on the other we have an incredibly simple algorithm used to optimise difficult functions. The two stories don't quite seem to meet in the middle. (Although, to be fair, the authors do note this is still early days in the development of the swarm algorithm, and that it is also a relatively small development of evolutionary algorithms.)

I was surprised, after the analogy with enormous "swarms" of insects, birds, fish, and so having a mental picture of thousands of particles, to discover quite late on that the algorithm tends to use population sizes of around 50. There is not much discussion of the effect of population size, so I don't know whether higher population sizes converge faster, but not fast enough to be computationally advantageous, or whether they converge slower, maybe because mob effects discourage further explorations? In either case, I merely note that the natural maximum size of effective human groups appears to be around 50-100. (This is probably not significant -- the 50 for human groups comes from the amount of networking we seem to be able to handle, yet the topology of the swarms is usually a ring, with a neighbourhood of three, and any influence from further afield being indirect. But it's a fun coincidence.)

So, there's lots here to think about, a nice new optimising algorithm to play with, and further information and code available on the Web.