Introduction to the theory of neural computation. (2018)