Recently I’ve become very interested in Machine Learning, and though I’ve dabbled in Artificial Intelligence for as long as I can remember, I’ve never really made any progress.
Some of my first experiences in the field were with the Prolog programming language around 25 years ago. The programming style was a completely different paradigm than what I was used to, but the possibilities thrilled me.
Years later I tried my hand at building “Artificial Intelligence” software using more conventional programming languages. Processors at the time just were not capable of the massive workload required.
Current computer systems are much faster and can run a neural network simulation very quickly.
Here’s the problem: Although a computer can run a neural network simulation, teaching a neural network is another issue entirely.
Teaching a neural network is a slow, painful process of feeding the neural network thousands, if not millions of data samples, having it predict the result and then punishing it when the prediction is incorrect.
I say punishing, but really it’s the processor that takes all the punishment. Most modern neural networks implement learning by calculating the error (how wrong the prediction was) and feeding that number back into the neural network in the other direction. (More on this later)
Even modern processors have it pretty rough dealing with all that math. However, modern-day gaming accelerator cards can be utilized to greatly increase the number-crunching capabilities of personal computers.
It still takes time though… I mean, how long did it take you before you were naming all the colors of the rainbow properly?
So, short story is: my neural network never did anything worthwhile.
And so I find myself again walking down that road. What do I do? Start from scratch, of course!
To a Developer, reinventing the wheel is like going in to the dentist and having them pull one of your good teeth. There’s just no reason to do it. Why would you waste all that time on something that someone has already done. They’ve already cleared all the pitfalls and made all the mistakes to get them this far, why would you endure all their pains and frustrations again!?
The answer? For Science!
Some of us are just gluttons for punishment. Some of us may be deluded into thinking we can do it better. But myself, I find that reinventing the wheel provides a priceless educational experience and though the result may be me throwing away my own product, I come away with a much deeper understanding than I would otherwise have had.
So I ‘d like to share what I’ve learned. Hopefully it will be of use to someone out there. Much of the information on Machine Learning is aimed at people with a strong math background. Which makes sense, since most of the people interested in the subject have strong math backgrounds. But I’m going to take a different approach. I’ve spent much of my career explaining technical details to the non-technical. It’s left it’s mark. I have a much more difficult time explaining things, using proper terminology, to my peers. Sometimes I fear that they look down on me because of it.
It is my hope that this can be of some assistance to those who desire to learn.
— Update —
If you’re interested in this series, I intend to post every Friday. Thanks!