Hello HTM Community,
I’m relatively new to HTM and currently working with the community fork of NuPIC core on Python3. My main challenge is manually tuning the parameters to optimize performance, which I find quite difficult.
I’m interested in learning about the swarming approach to automatically select the best parameters for HTM models. Can anyone guide me on how to get started with this method or provide any resources or tips for a beginner in this area?
Any advice or pointers would be greatly appreciated.
Thanks in advance!
Welcome! I’d first ask, are you seeing unexpectedly low performance on your application? If so there are other things I would check before the hyper parameters, especially the encoding parameters (like your resolution value if you’re using RDSE) and the data sampling rate (how many new data points per second/unit time).
I know hyper parameter explanation is a big part of most ML, though it generally isn’t done with HTM anymore. You’re right that the swarming process was designed to optimize model parameters, but as I understand it is rarely used anymore. I’m actually not sure if this functionality was ported over into htm.core from NuPIC.
I know that HTM’s major anomaly detected benchmark NAB doesn’t use swarming, but rather uses the same hyperparater values for all models which are applied to vastly different data sets, and the performance was solid across the board. I believe that HTM’s SDR data structure and TM make its learning very robust, and thus less sensitive to hyper parameter values than most other ML algorithms. That’s not to say that you couldn’t screw up performance with wacky hyperparam values or that it isn’t worth learning what the hyperparams actually do - it is! You can’t fully understand HTM (or any alg I guess) without understand what the hyperparam values mean.
Practically speaking you generally shouldn’t need to worry much about hyperparamer values, I’d worry instead about the signal-to-noise ratio in the data. If you are seeing poor or unexpected performance though feel free to describe it and we can try to diagnose.
Hope this helps and best of luck!