Today I decided to become a better engineer, especially in Artificial Intelligence (AI). And I’m determined to do something about it. I’m going to do deliberate practice in order to sharpen my technical and business skills, and eventually attain this goal. That’s why I’m starting this blog. Here I will scrutinise the contents of the AIMA book, from A to Z, implement its algorithms, and use them to reengineer commonplace intelligent systems, just for kicks. As it is commonly stated in the maker community: DIY cannot compete with commercial products, but it is very rewarding to learn and understand how things work by making them (and even get to make them a little better).
The big scope
Borrowing the words from Paul Arden: it’s not how good you are, it’s how good you want to be. As a telecoms engineer with 10 years of professional experience, now helping companies leverage data to improve their competitiveness, I feel it’s time to compile all the knowledge I’ve gained over this time and do something awesome. It is also my goal to do so in the context of a healthy competitive business market. If intelligent systems are indeed in growing demand at present, e.g., see Figure 1 below, let’s discover the needs of the prospect customers and target them to drive future research. Pragmatic AI is so prevalent in the industry nowadays that there are many insights that will be of my interest to explore here.
Figure 1. Aggregate usage of the “intelligent systems” bigram in books (case-insensitive). Source: Google Ngram Viewer.
And the deep understanding of AI is not only relevant for the technical issues from the trenches, management is also in great benefit of this. In the end, suppliers are only as good as you are. Nobody else will do the magic but you. Thus, acing it as a project manager entails knowing first about the problem scope and how to tackle it appropriately.
In this journey through AI, the use of the AIMA book as a main guiding reference will be most necessary (among other relevant references). Its contents are broad, comprehensive, of general purpose, and written in plain words. Then, in order to bring its ideas to tangible code, Octave will be used for several good reasons (as an approach to using a Matlab-like syntax with open-source software). Primarily, I aim to evaluate algorithms, avoiding to get bogged down in the details of an “actual” programming language. Also, it is wise to program with a language close to the problem domain, i.e., the pragmatic programming tip number 17. And no matter how fancy would it be to code AIMA in Python, this has already been done by Peter Norvig (one of its authors). You already use Python extensively at work, don’t you? Thus, let’s approach this differently. My will is to add value here by implementing this with a clear data-analysis-driven scripting language that has not been considered yet (as far as I know).
Matlab is a great tool, there’s no doubt about that, don’t get me wrong. In fact, it’s one the first tools that experienced a most rapid growth wrt the number of users for its convenience. Given its wide reach, it is the numerical computing platform that rules in academia, in the corporate world, and also within the maker scene. Some say that you ought to adopt the best tools that money can buy to increase productivity. I cherish this piece of advice, especially for my professional development, but I’m not paying the license fee myself to do the same work I can do with Octave, nor I want Matworks to ever sue me if I use a pirate version of their beloved product. So let’s give it a shot with Octave! In the end, it can be seamlessly blended into Matlab. Andrew Ng did a great job to prove this with the Machine Learning class.
Now, before I bring this first post to a close, let me just tell you that this is a most thrilling project for me, for the sake of knowledge, and that I’ll grind away at unravelling the details of such intelligent techniques, paying careful attention to detail. The only thing I ask of you is to give some feedback if you find this interesting. If you have similar personal deeds, please share them too! So feel free to collaborate, post your doubts, tips, quips, whatever. Everything is welcome. I’m eager to be of help if I can. Take it for a free consulting service as long as you openly discuss it here. On the downside, though, I’m afraid the posting rate won’t be much high or steady (perhaps @ai_maker is more adequate for such a more frequent usage), especially if experiments are to be conducted, but the fruitful discussions are another story. Enjoy.