Introduction
An open and visible approach
Quick Launch
The introduction below discusses my reasons and drivers for building this web site. However, if you would like to dive right in then you can start by reading the series on early neural computing, or you can learn or brush up your C programming skills. Don't forget to go to the build environment to help you setup your development system first. I hope you find this web site informative and enjoyable. Happy Hacking!
TLDR ?
This web site is intentionally verbose. I have taken a lot of time to write it and to convey many details about how the technology works at a very low level. This is the way I have always worked ... detail! If you find this too much for you to take in then perhaps this web site is not for you. There are plenty of other more succinct on-line resources for you to skim over should you prefer.
Finally, I am a firm believer that there are no short-cuts in life. If you wish to use an LLM to précis these pages then don't be surprised if you miss the critical details or steps required to fully understand the technology. Everything you need to get started and progress is on this web site. Please take your time to digest what I have prepared for you. Thank you.
Ethos
My first contact with machine learning was around 1990 during my masters degree. Shortly after that I did some research into implementing the back propagation algorithm using some custom micro electronics. This was only a short project before I moved into software engineering as a career. At that point in time reliable data was scarce, and you had to collect and label your own data sets for your experiments. Fast forward thirty odd years and things are quite different. Machine learning is a big technology gaining a lot of attention and momentum. There are frameworks and SaaS offerings popping up like mushrooms all over the globe making big promises about how it can change your world. Most of this has been powered by the advent of the modern Internet and cloud computing. The Internet seems to offer unlimited amounts of data, whilst cloud computing seems to offer limitless computing power to process it. Put these two items together and you have accelerated growth in machine learning technologies.
The majority of machine learning systems and solutions these days use large frameworks from large global organisations. Usually the programming interface is used with rapid development languages such as Python, Java, Java Script or R. Many of these languages are quick and easy to learn and use, offering the ability for almost anyone to be able to build an impressive system around machine learning technology. So you may now be asking why cover all of the basics again? and why in the C language? If you look on Google or Amazon you will see scores of books and tutorials that show you how to build a machine learning system and they all tend use one of the many frameworks on offer. As a novice you can build up a model using nothing more than a few lines of code. However, none of this really explains why the model works in the first place. None of this explains very well how the data is used. Especially if you use off the shelf data sets. The aim of this project is to unlock all of that and to show you how it all works.
One of the issues with using any of the big frameworks is you have to import an awful lot of third party libraries and packages that form part of the framework. Whilst most of these have been tested and validated for distribution, and most of them all play quite happily together, you can not really be sure what you are putting on your system, or what you are using. For this reason the Machine Learning In C project aims to use no libraries at all. Just the C runtime library. In this project all of the necessary libraries are built in the project from scratch. Whilst the implementations may not be the best or most efficient, they do provide complete visibility on how the mathematics works, and how the technology works. Thus you can see for yourself that there is no magic in machine learning; just maths and code. This is the ethos behind the Machine Learning In C project.
Adam Tuaima B.Eng. M.Sc.