Machine Learning Algorithms
Vector 12:1, page 51
Transcribed from the printed issue; not yet reviewed. Read it in the PDF of the issue, page 51
At the conference there were two three-hour seminars on two of the most popular current methodologies for machine learning — genetic algorithms and neural networks.
Genetic Machine Learning — Dr Andreas Geyer-Schulz¶
This seminar was well structured and well presented. It began with an introduction to a problem that Andreas gives his students (at the University of Vienna) to try to solve. The problem is the MIT beer distribution game. For those unfamiliar with the concept, it is made up of four decision makers/planners at four different levels in a supply chain — namely Retailer, Wholesaler, Distributor and Factory. Each level works independently and only sees the orders coming from the level above.
Only the retailer sees the true order pattern. The object of the game is to minimise stock holding. When four humans play the game they exhibit an inability to control the stock the further they get down the chain; once you get to the Factory level, the lag effects on the orders causes the factory production/stocks to be very uneven. It was shown that a very simple genetic algorithm could outperform the human effort by orders of magnitude.
Genetic algorithms were then introduced along with some simple APL code. It was noted that they rely heavily on the quality of the random number generator underpinning the system, and that poor random number generators will considerably slow the time it takes for the algorithm to converge on a solution. (It was noted that most APL random number generators exhibit cyclical effects which would be undesirable — Andreas mentioned he had some good random number generators — presumably in C.)
The schema theorem which underpins much of the GA theory was explained. This was done very well and I nearly understood it this time! Different variants of GAs were explained and a classification of these was introduced, including an indication of how you might choose between them, depending on how you choose to represent the problem.
The seminar then progressed further into some of the more explorative areas of the topic. Overall this was a well-structured and well-delivered seminar, covering both elementary and advanced areas of the subject. For further reading I recommend Andreas’s paper in the conference proceedings, and especially his supplementary slides that came with the supplementary proceedings.
Neural Networks in APL and J — Ben Best¶
This seminar was split into two halves — the first half was an introduction to the topic requiring no prior knowledge, the second half a more advanced tutorial building on the first half. A historical perspective was put on the topic and some of the biological inspiration behind the early research was presented (modelling the brain, the neurone etc.) A set of exercises was used to demonstrate how a single-layer network can solve simple linearly separable problems.
The last exercise required us to solve the EX-OR problem with a single-layer network — after five minutes of trying we still had not solved this simple problem. Of course, this is the simplest example of a non-linearly separable problem and can not be solved using a single-layer network! It was precisely this point that halted much of the research into Neural Networks through the 70s. It was not until the 80s when a method of teaching multi-layer Neural Networks how to learn was developed, that research restarted. This first part of the seminar was a very good hands-on introduction to the topic.
Unfortunately the rest was not so good. Lots of different variants of Neural Networks were introduced — but these just seemed to confuse the issue — there was very little why and how from this point onwards. I would have preferred it if the hands-on approach had been exploited further and we had stuck to ‘simple’ multi-layer networks. The end deliverable of a three-hour seminar like this should be that you would be able to build a Neural Network (in APL) and use it to solve a problem.
I came away with a good historical introduction and a lot of confusing / conflicting ideas on the more advanced stuff. It was explained why APL/J would be good for programming Neural Networks — but one felt a real opportunity was missed — we could have all tried to implement a simple Neural Network in APL if we had all had access to PCs. The back-propagation algorithm for teaching Neural Networks was explained, but was not put into the context of a real problem, hence I came away not really knowing how to tackle a problem from start to finish using Neural Network technology.