Tuesday, April 1, 2014

HTK..again

So after now having read quite some papers about I-Vector, Eigenvoices, Cluster Adaptive Training and UBM , I finally started to do something at least.


I am training a UBM Model with HTK right now, I did that already for a different task last semester, but this time it's simpler ( UBM has just 1 HMM state, yet massive amount of Gaussians ).
Naturally this model should be initialized with every Gaussian mixture, but experiments show that an increase in mixtures during the training actually improve performance and reduce the training time.



There already did exist a script (of Phil Woodland), which does the job of initializing the first prototypes and parameters. Furthermore it can estimate a whole model by re-estimation during constant increase of mixture components.
To speed up the process ( and hopefully do not loose too much accuracy ) I need to implement a different step size.
The usual step size is 4, so the amount of mixtures go in the sequence of : 1,4,8,12....MIXTURES, where MIXTURES is the maximum amount of Mixtures ( in my case 512/1024).

I changed the step size to the following sequence: 1,4,8,12,16,32,48,64,128,256...MIXTURES. So I still do begin with little mixture counts at the beginning and double them when the count reaches 16 ( 48 is an empirical exception ).





The script is then run on a GridEngine Cluster, which submits the .bat files, which are created by the script. It turns out that GridEngine is a easy to use Cluster Framework, since it doesn't require a parallelization of the code, rather than just executing a bunch of different scripts. Of course this is still inferior to a proper parallelized code, but it's powerful enough to speed up the calculation process.

So after some hours, the hmms were estimated with a mixture of 512.


No comments:

Post a Comment