4 ms·
A few days ago in the description of a paper found on hackernews (https://news.ycombinator.com/item?id=18346943 https://news.ycombinator.com/item?id=18346943) :
by nestorD 8y ago
A few days ago in the description of a paper found on hackernews (https://news.ycombinator.com/item?id=18346943 https://news.ycombinator.com/item?id=18346943) :
> We also noticed significant improvements in performance of RND every time we discovered and fixed a bug [...]. Getting such details right was a significant part of achieving high performance even with algorithms conceptually similar to prior work.
They call bugs 'details' which, I find, is a frightening state of mind for someone publishing an algorithm.
- geezerjay 8y ago> They call bugs 'details' which, I find, is a frightening state of mind for someone publishing an algorithm. It really depends on the algorithm. For example, a bug in the random number generator of a stochastic search algorithm that affects, say, the variance of a distribution won't have a relevant impact on the outcome.
- mlthoughts2018 8y agoThat could have a huge impact. For example if it affected random draws of a hyperparameter in a Bayesian model, leading to incorrect credible intervals ultimately in the posterior distribution. Or worse, if the RNG bug was affecting the variance of randon samples in some deep component of an MCMC algorithm like NUTS or even simple Metropolis. Depending on the exact nature of the bug, it could even cause the model to violate Detailed Balance, and entirely invalidate sampling based inferences or conclusions.
- riskneutral 8y agoWell that is why you would always run statistical validity tests on the RNG and other intermediate values whenever using a Monte Carlo model in production. Ideally the tests should run as part of a Continuous Integration workflow.
- mlthoughts2018 8y agoIf you (dubiously) write your own RNG, sure. But you should never do that. And for library RNGs, you should execute the unit tests of the library. Frankly, running it as part of CI is at best overkill and at worst adds complexity that costs you. If you pin versions of your dependency and isolate the artifact into an in-house artifact repository, so that the library code is literally never changing unless you explicitly modify the version, then you should test it up front, then again only occasionally if you actually have evidence of a bug. And as part of any code review of the code change that introduces a version change.