Gradient Ascent

The iterative optimization of the branch lengths follows a simple gradient ascent scheme. I found that for 4-species trees this is sufficiently fast, and it also is unlikley to get trapped in local maxima of the log likelihood surface. However, it does require you to play around with the step size or learning rate of the algorithm and to monitor the evolution of the log likelihood during training (see RUN). For example, I found that for the synthetic data a learning rate of 0.1 is fine, while for the Neisseria data this value is too large, bringing about wild fluctuations in the log likelihood due to overshooting of the algorithm. Reducing the step size to a value of 0.01 avoids this problem and leads to a smooth convergence.

Second-Order Methods

Second-order methods, like conjugate gradients and quasi-Newton, are based on an implicit or explicit approximation of the Hessian and are usually faster than gradient ascent . The MATLAB optimization toolbox contains second-order optimization routines, which can be called from my programs as an alternative to gradient ascent. In my simulation experiments, however, I did not find any significant improvement over simple gradient ascent, presumably because the line search used with conjugate gradients or quasi-Newton was computationally demanding. Also, using these routines requires you to have or buy the licence for the MATLAB optimization toolbox. I have therefore disabled this option in the current version of my programs. If you want to enable it again and explore these options yourself (I did, admittedly, not spend much time on it), change the following line in the method Training of the class Phylo :

if 0 % ---> TEMPORARILLY DISABLED


Last modified: Mon May 22 13:36:37 BST