paint-brush
‘I want to learn Artificial Intelligence and Machine Learning. Where can I start?’by@mrdbourke
177,149 reads
177,149 reads

‘I want to learn Artificial Intelligence and Machine Learning. Where can I start?’

by DANIEL BOURKESeptember 8th, 2018
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

I was working at the Apple Store and I wanted a change. To start building the tech I was servicing.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - ‘I want to learn Artificial Intelligence and Machine Learning. Where can I start?’
DANIEL BOURKE HackerNoon profile picture

How I went from Apple Genius to Startup Failure to Uber Driver to Machine Learning Engineer

I was working at the Apple Store and I wanted a change. To start building the tech I was servicing.

I began looking into Machine Learning (ML) and Artificial Intelligence (AI).

There’s so much going on in the field.

Every week it seems like Google or Facebook are releasing a new kind of AI to make things faster or improve our experience.

And don’t get me started on the number of self-driving car companies. This is a good thing though. I’m not a fan of driving and roads are dangerous.

Even with all this happening, there’s still yet to be an agreed definition of what exactly artificial intelligence is.

Some argue deep learning can be considered AI, others will say it’s not AI unless it passes the Turing Test.

This lack of definition really stunted my progress in the beginning. It was hard to learn something which had so many different definitions.

Enough with the definitions.

How did I get started?

My friends and I were building a web startup. It failed. We gave up due to a lack of meaning. But along the way, I was starting to hearing more and more about ML and AI.

“The computer learns the things for you?” I couldn’t believe it.

I stumbled across Udacity’s Deep Learning Nanodegree. A fun character called Siraj Raval was in one of the promo videos. His energy was contagious. Despite not meeting the basic requirements (I had never written a line of Python before), I signed up.

Three weeks before the course start date I emailed Udacity support asking what the refund policy was. I was scared I wouldn’t be able to complete the course.

I didn’t get a refund. I completed the course within the designated timeline. It was hard. Really hard at times. My first two projects were handed in four days late. But the excitement of being involved in one of the most important technologies in the world drove me forward.

Finishing the Deep Learning Nanodegree, I had guaranteed acceptance into either Udacity’s AI Nanodegree, Self-Driving Car Nanodegree or Robotics Nanodegree. All great options.

I was a little lost. “Where do I go next?”

I needed a curriculum. I’d built a little foundation with the Deep Learning Nanodegree, now it was time to figure out where I’d head next.

My Self-Created AI Masters Degree

I didn’t plan on going back to university anytime soon. I didn’t have $100,000 for a proper Masters Degree anyway.

So I did what I did in the beginning. Asked my mentor, Google, for help.

I’d jumped into deep learning without any prior knowledge of the field. Instead of climbing to the tip of the AI iceberg, a helicopter had dropped me off on the top.

After researching a bunch of courses, I put a list of which ones interested me the most in Trello.

Trello is my personal assistant/course coordinator.

I knew online courses had a high drop out rate. I wasn’t going to let myself be a part of this number. I had a mission.

To make myself accountable, I started sharing my learning journey online. I figured I could practice communicating what I learned plus find other people who were interested in the same things I was. My friends still think I’m an alien when I go on one of my AI escapades.

I made the Trello board public and wrote a blog post about my endeavours.

The curriculum has changed slightly since I first wrote it but it’s still relevant and I visit the Trello board multiple times per week to track my progress.

Getting a job

I bought a plane ticket to the US with no return flight. I’d been studying for a year and I figured it was about time I started putting my skills into practice.

My plan was to rock up to the US and get hired.

Then Ashlee messaged me on LinkedIn, “Hey I’ve seen your posts and they’re really cool, I think you should meet Mike.”

I met Mike.

I told him my story of learning online, how I loved healthtech and my plans to go to the US.

“You may be better off staying here a year or so and seeing what you can find, I’ think you’d love to meet Cameron.”

I met Cameron.

We had a similar chat what Mike and I talked about. Health, tech, online learning, US.

“We’re working on some health problems, why don’t you come in on Thursday?”

Thursday came. I was nervous. But someone once told me being nervous is the same as being excited. I flipped to being excited.

I spent the day meeting the Max Kelsen team and the problems they were working on.

Two Thursday’s later, Nick, the CEO, Athon, lead machine learning engineer, and I went for coffee.

“How would you like to join the team?” Asked Nick.

“Sure.” I said.

So it turns out, my US flight got pushed back a couple months and now I’ve got a return ticket.

Sharing your work

Learning online, I knew it was unconventional. All the roles I’d gone to apply for had Masters Degree requirements or at least some kind of technical degree.

I didn’t have either of these. But I did have the skills I’d gathered from a plethora of online courses.

Along the way, I was sharing my work online. My GitHub contained all the projects I’d done, my LinkedIn was stacked out and I’d practiced communicating what I learned through YouTube and articles on Medium.

I never handed in a resume for Max Kelsen. “We checked you out on LinkedIn.”

My body of work was my resume.

Regardless if you’re learning online or through a Masters Degree, having a portfolio of what you’ve worked on is a great way to build skin in the game.

ML and AI skills are in demand but that doesn’t mean you don’t have to showcase them. Even the best product won’t sell without any shelf space.

Whether it be GitHub, Kaggle, LinkedIn or a blog, have somewhere where people can find you. Plus, having your own corner of the internet is great fun.

How do you start?

Where do you go to learn these skills? What courses are the best?

There’s no best answer. Everyone’s path will be different. Some people learn better with books, others learn better through videos.

What’s more important than how you start is why you start.

Start with why.

  • Why do you want to learn these skills?
  • Do you want to make money?
  • Do you want to build things?
  • Do you want to make a difference?

Again, no right reason. All are valid in their own way.

Start with why because having a why is more important than how. Having a why means when it gets hard and it will get hard, you’ve got something to turn to. Something to remind you why you started.

Got a why? Good. Time for some hard skills.

I can only recommend what I’ve tried.

I’ve completed courses from (in order):

They’re all world class. I’m a visual learner. I learn better seeing things being done/explained to me on. So all of these courses reflect that.

If you’re an absolute beginner, start with some introductory Python courses and when you’re a bit more confident, move into data science, machine learning and AI. DataCamp is great for beginners learning Python but wanting to learn it with a data science and machine learning focus.

How much math?

The highest level of math education I’ve had was in high school. The rest I’ve learned through Khan Academy as I’ve needed it.

There are many different opinions on how much math you need to know to get into machine learning and AI. I’ll share mine.

If you want to apply machine learning and AI techniques to a problem, you don’t necessarily need an in-depth understanding of the math to get a good result. Libraries such as TensorFlow and PyTorch allow someone with a bit of Python experience to build state of the art models whilst the math is taken care of behind the scenes.

If you’re looking to get deep into machine learning and AI research, through means of a PhD program or something similar, having an in-depth knowledge of the math is paramount.

In my case, I’m not looking to dive deep into the math and improve an algorithm’s performance by 10%. I’ll leave that to people smarter than me.

Instead, I’m more than happy to use the libraries available to me and manipulate them to help solve problems as I see fit.

What does a machine learning engineer actually do?

What a machine engineer does in practice might not be what you think.

Despite the cover photos of many online articles, it doesn’t always involve working with robots that have red eyes.

Here are a few questions an ML engineer has to ask themselves daily.

  • Context — How can ML be used to help learn more about your problem?
  • Data — Do you need more data? What form does it need to be in? What do you do when data is missing?
  • Modeling — Which model should you use? Does it work too well on the data (overfitting)? Or why doesn’t it work very well (underfitting)?
  • Production — How can you take your model to production? Should it be an online model or should it be updated at time intervals?
  • Ongoing — What happens if your model breaks? How do you improve it with more data? Is there a better way of doing things?

I borrowed these from a great article by Rachel Thomas, one of the co-founders of fast.ai, she goes into more depth in the full text.

For more, I made a video of what we usually get up to on Monday’s at Max Kelsen.

No set path

There’s no right or wrong way to get into ML or AI.

The beautiful thing about this field is we have access to some of the best technologies in the world, all we’ve got to do is learn how to use them.

You could begin by learning Python code.

You could begin by studying calculus and statistics.

You could begin by learning about the philosophy of decision making.

Machine learning and AI fascinates me because of this intersection of fields.

The more I learn about it, the more I realise there’s plenty more to learn. And this hypes me up.

Sometimes I get frustrated when my code doesn’t run. Or I don’t understand a concept. So I give up temporarily. I give up by letting myself walk away from the problem and take a nap. Or go for a walk. When I come back it feels like I’m looking at it with different eyes. The excitement comes back. I keep learning.

There’s so much happening in the field it can be daunting to get started. Too many options lead to no options. Ignore this.

Start wherever interests you most and follow it. If it leads to a dead end, great, you’ve figured out what you’re not interested in. Retrace your steps and take the other fork in the road instead.

Computers are smart but they still can’t learn on their own. They need your help.

PS if you want have any questions, feel free to reach out to me anytime at mrdbourke.com.