The Dynamic Technical Guide to How I am Teaching Myself Machine Learning

Who do you envision yourself to be..?

So… you want to “learn machine learning”… where do you start?

There are two (in my view) directions to go. First, there is the technical track (which I will outline here). Secondly, there is the management track- the track that is most focused on how to strategically integrate machine learning and artificial intelligence technologies into day to day and long term enterprise operations. I now provide resources for both tracks as I continue my own studies and explorations, go here to check out my Dynamic Guide to Learning About AI for Business Executives.

Before you start… what are you really doing here asking yourself if you want to learn/learn about machine learning? This is an important question to ask yourself. What is motivating you to learn? What is your goal? What will you DO with the things you learn? And most importantly, how far are you willing to go?

Learning a new skill (I firmly believe) does not require a smart person… but a motivated hard worker. If you are that, then let’s go. If hard work scares you, I suggest backing away slowly.

With that out of the way, let’s begin…

If you do not have a background in Python, C++ or Java development, I would strongly recommend to start with this skillset.

The amount of how much you know about what models are doing can be divided into mathematical and technical knowledge. They converge at certain points. Going back to your original goal, identify which one (or both) are a comfortable place for you. If you are like me and want to know just about everything about the field, then go for it. But if you want to know enough to be dangerous, or build machine learning for application at the workplace and nothing more, there are options here for you too!

Well, you don’t have to learn all of the languages I mentioned above for starters. But if you want to actually understand what models are doing, then understanding how coding languages work will save you a lot of confusion and heartache.

If, at this point, you are not interested in learning how to code, check out Google’s AutoML . This product is now available to build your own translate and natural language processing models. The Google Cloud team has done a great job in packaging the hard parts of machine learning model development in a user-friendly user interface that requires only general knowledge on how machine learning development works. Would I recommend only developing models in a vacuum with AutoML? Absolutely not. Ignorance is not bliss if you are actually trying to make something work for you, let alone machine learning!

  1. I would highly recommend Python as a first language to tackle in general, but especially if you are interested in TensorFlow development (what I am currently teaching myself how to do). While Google has provided some Java support for TensorFlow development, the majority of the documentation supporting TensorFlow development is for Python development. Not just that- Python and its pandas library are essential to development when it comes to big data. Big data and data processing is actually essential to any machine learning development, so save yourself some time and just learn Python first!

Codeacademy is awesome for desktop based coding learning, and their Python course is solid. When I was trying to decide if coding was for me, I would turn on one episode of something (45 mins to one hour) in the evenings after work and just sit there with the TV running and code. It turned into the most enjoyable and relaxing time of my day, and having the TV episode running gave me a certain time window where I knew I needed to only be coding.

Grasshopper, Google’s Area 120 Incubator project that is a mobile app teaching adults how to code in Javascript

Grasshopper is an awesome app Google just developed to teach adults how to code in Javascript. Why does Javascript matter, one would ask, if you told me to learn Python? Javascript = coding essence, especially when it comes to algorithms you will see over and over again even in Python. As someone with a non-development background who jumped into development with little to no preparation, messing around with this app will only strengthen your understanding of your evenings in front of the TV with Python.

Instead of scrolling through Facebook/Instagram/name your vice app during your free time during the day, take five minutes to complete one module on the app while waiting or commuting.

2. Jump right in and get your hands dirty going through this series with me and build your own object classification model. The best way to learn anything technical, I have found, is to make sure you have a partner in life who will feed you during your hours of maze-navigating, but most importantly be prepared to struggle. Not just that- you must enjoy the process of struggling to find an answer, which makes finding an answer that much more gratifying. The ability to enjoy struggle and come out hungry for more is (in my opinion) how you will know if you are really cut out for this kind of exploration. This is also a conscious choice- if you decide you will fight through the struggle for the sake of machine learning, you will learn machine learning!

Once you dive right in and go ahead and build a model (and allow yourself to stray and struggle along the way) you will have a pretty good idea of what ML development looks like, on a very high level process wise. Even for the non-technical, the management or leadership types, having at least this much depth into what ML looks like from a process perspective is extremely valuable. It gives you insight into what types of people, how many, what types of data and how much time goes into the machine learning development process.

If you recall, the first version of this article recommended the Google’s ML Crash course next. About 5 modules into the crash course, I have decided to take a huge step back.

I needed more contextual knowledge, as it relates to Google Cloud specifically, since that is where I work for starters. Not just that though- I also felt like I was diving deeper than I wanted into the mathematical aspects of machine learning, which was lending a little less to my ability to actually crank away at hard problems that could be solved in the workplace with machine learning.

3. Now, I am dividing my learning track in two. One part is traditional and theoretical knowledge acquisition, the other being hands on projects. As I write this today, I am currently writing a thesis on how to apply the best machine learning techniques to network netflow classification for cybersecurity purposes, since that is what my degree is in currently. I am gaining a ton of good theoretical knowledge by researching this. See this doc for all of the technical papers I am slowly sifting through as my research resources- this is updated in real time, watch as my list grows!

What am I working on now?

I am pivoting to Coursera’s offering of Google Cloud Platform courses geared towards applying machine learning to actual problems and datasets at the workplace with Google tools. I will be starting with this specialization in the recommended order that Coursera suggests.

  • Read one article a day about machine learning on Medium. Just pick something that sounds interesting, even if it seems a bit over your head. Getting exposed to the language, the math, and various approaches to machine learning development will keep your mind open and prevent the problem of you becoming a biased (ha… ha…) machine learning developer.
  • One hour per day on learning something ML related. Whether that is me blogging about what I am learning or actually completing coursework on Coursera or the MLCC, one hour will happen. Block it off on your calendar, and let your friends/family/coworkers know that is sacred time for you.
  • A few pages out of Jason Brownlee’s Algorithms book once a week. Currently I am shooting for one Algorithm a month (a few pages in his book a week).
  • Always have a hands on project exploring something you are learning. Whether it is something for you that you are building, something for a customer, or a Qwiklab/Codelab/Tutorial you are working through, always keep a hands on project around.

Other Resources to Explore:

  1. Machine Learning Mastery is an awesome website in general with good resources. I just bought his basic machine learning algorithms e-book, and plan on trying to eek a set amount of work on the book per day. I love supporting folks who publish e-books to spread their knowledge and experience, especially small self-published writers. This one is bound to be awesome.
  2. 3 Blue 1 Brown has a channel specifically dedicated to deep learning, and also has other interesting channels when it comes to general mathematical concepts. I recommend running through the deep learning channel, and go through these videos multiple times until you feel like you understand how neural networks work (forward propagation), gradient descent, and backprop.
  3. If you want a thorough and in-depth place to look for specific ML options, I would take a look at this article. This guy did a VERY thorough job in evaluating learning options for ML!

Follow me on Twitter at @AminaAlSherif1 as I continue to update this guide and teach myself machine learning!

Originally published at on June 5, 2018.

Originally published at on June 5, 2018.