"How do you learn machine learning online?"

"How do you learn machine learning online?"


There’s so much going on.

Dozens of papers every week.

New releases from Facebook and Google every week which send the media into a frenzy.

Articles on the web showing the latest and greatest courses you should be doing.

Where do I even start?

A year ago, I was asking myself the same question. I quit my job to start a web startup with my friends. It failed. But along the way, I was hearing about this machine learning thing.

"The computer can learn things for you?" I said to myself. I knew I had to get involved but didn’t know how.

So I made my own curriculum to at least have some structure.

And then yesterday, I received these.

machine learning engineer business cards
From studying in my bedroom to working on machine learning projects with clients in every industry. Big dawg's gotta eat.

A) Start with why

All those courses you start but never finished. Why?

All those things you said you’d do but didn’t. Why?

It’s likely you didn’t have a strong enough reason to begin with.

Before you start learning machine learning before you start learning anything. Ask yourself, ‘why?’

‘Why do I want to learn these skills?’

Find a pen and some paper. Then take a walk. Alone.

Sit down at a nice quiet place.

Take the pen to the top of the page.

‘I want to learn machine learning because...’

Then write down everything that comes to mind.

‘I want a better salary.’

‘I want to build apps to help others.’

‘The technology fascinates me.’

‘I want to be a part of building the future.’

Anything goes. There’s no right or wrong answer. Write it all down.

Got a full page? Good.

Now read back over them. Are they enough to keep you going for the next 10-years?

Why 10-years? Because why sign up to anything if you’re not willing to commit to it?

If they’re not enough to keep you going for 10-years, find something else to learn.

If they are, tape the piece of paper to your wall. You’ve now got your why.

Every time studying gets hard or you think you’re not good enough, refer back to your why.

B) Go long-term. Ask yourself, what's not going to change?

So. Many. Papers.

I study this stuff every day. And I still can’t keep up.

It takes me 6-hours to properly read a paper. If I read full-time, that’s less than 5 a week.

Every couple of weeks there’s a new benchmark. A new way of doing things. A new model to try. A new network architecture which does 1% better than the last.

It’s easy to get lost paying attention to all of this. It can be daunting.

‘Why can’t I ever keep up with what’s going on?’

You shouldn’t not ever pay attention to what’s new. It’s important to know how the field is progressing. But to think you’ll be able to keep up with every single detail, especially when you’re starting out is stupid.

Trying to keep up with everything new will hold you back.

Think long term. The main drivers of machine learning have been around for decades. These aren’t going away anytime soon.

  • Programming (Python, R, Java) - Pick a language and stick with it. Personally, I’m a Python fan but it’s because I’ve never tried anything else.
  • Mathematics (linear algebra, calculus, matrix manipulation, optimisation, statistics) - The highest math education I’ve had is high school since then, I’ve been using Khan Academy to improve my skills.
  • Computing (local hardware, cloud computing, parallelism) - The cloud is abstracting away much of what you need to know about this but if you’re starting out, at least figure out how to activate a computer on the cloud.
  • Communication (what do you know and how can that benefit others?) - Communication is valuable everywhere. Your skills are no good if you can’t explain them to the person next to you.

Work on building a foundation of knowledge and skills around these topics. Then when something new comes out, you’ve got a solid platform to launch off.

Don’t expect to happen overnight. Getting good at these skills takes time and effort. Think months and years not days and weeks. There’s a reason machine learning skills are in demand.

When it gets hard, and it will refer back to A.

C) Do you really need college? Or are you curious enough to learn on your own?

Ron and I were looking up a Bachelor of Mathematics yesterday. 3-years with a major in Applied Mathematics and a minor in Bioinformatics — I love health.

The majority of my learning has been online but after spending a few months in the industry I’ve caught the learning bug.

I’m hungry to learn more. And math is everywhere. It’s the language of nature.

I graduated in 2015 with a Bachelor of Science, Dual Major in Food Science and Nutrition.

My why is to combine my love for health and technology. I don’t know how yet but it’ll come.

A few months after graduating, I went to an open day at my university.

‘How much is a Masters of Computer Science?’ I asked.

‘$42,000 per year,’ she said, ‘with a half payment up front.’

‘What can I study?’

She handed me the brochure.

I read through it and didn’t understand half the course names.

‘Thanks,’ I said.

I went home and consulted my mentor. Google is always there for me.

I typed ‘learn programming online’ or something of the like in the search bar.

Back came some results. I clicked on the first one.

It was Udacity. I spent over an hour looking through their offerings. The pretty colours lured me in.

Seeing all the things I could learn online was exciting. And all for far less than what I was quoted at the open day. I closed the browser.

Then it was a while later and we were building a website and I needed to learn something. Up came Udacity again. There were more offerings. This time with an entertaining character describing deep learning. Siraj Raval knows how to educate and entertain at the same time — the best way to teach.

I signed up for Udacity’s Deep Learning Nanodegree. It started in 3-weeks but I’d never done any Python. So I signed up for Treehouse’s Python Track.

It was hard but my why was strong enough. I was driving Uber on the weekends to pay for my courses. I had two whys. Combine technology and health and stop driving Uber.

After finishing the Deep Learning Nanodegree, I was a little lost. So I went back to my mentor and asked for some guidance. I really liked Udacity’s style of teaching so I found similar courses online and combined them to make my own AI Masters Degree.

I’m still going with it. It’s been a great challenge.

What’s the advantage of studying online?

  • It’s fulfilling to set out your own path and work through it.
  • It’s cheaper than university.
  • You can study when you want — no compulsory lectures.
  • You can study anywhere you want — no longer do you have to physically be at the location to learn from the best in the world.
  • You can learn exactly what you want — course not living up to your expectations? Choose another.

‘Alright, Daniel, all that sounds great but what are the downsides?’

  • Many hours spent alone in your room — it can get lonely sometimes.
  • No one is going to check up on you — you’re it.
  • No shiny certificate at the end — sure, digital certificates are great but real degrees still have more prestige.

To work around the downside of studying alone, I started sharing my journey online. So I’d find more people like me. And I found them. It’s great talking to people on a similar path. We help each other.

I’m a big promoter of online study because it’s what I’ve done. And the educational resources available there are growing every day.

But are you better off going down a more traditional route?

It took me 5-years to do a 3-year degree. I failed my first 2-years. I figured I’d spent enough time at university this decade.

Choose which is best for you.

Does your why require you to have a degree?

Would it help you reach your goals?

Or can you achieve what you want to achieve without going to university?

If you want to get into machine learning research and pursue a PhD program, university is probably the best for you.

If you learn best around a cohort of others learning the same things as you, university is probably the right option.

If you’re self-disciplined, can learn things on your own, and can’t afford university, you’ve got the internet.

What I really did during my first 5-years at university was to learn how to learn. Now I feel like I can learn anything.

All it takes is sustained effort over time.

There’s no best way to learn something other than the way that keeps you wanting more.

For reference, here are some of the courses I’ve done.

You can see more in my full curriculum.

D) Prove your abilities by showing your work

I knew my method of learning wouldn’t be recognised as much as more traditional options.

I had to do something to showcase where I could bring value.

I’ll never be the best engineer. But where I can bring value is by being a translator.

The communicative bridge between engineers and customers.

To get skin in the game, I started making videos about what I was learning. And writing articles on the same.

Be honest with yourself. And not only about your weaknesses. It’s easy to be your own biggest critique. Be honest about your strengths too. And show them, don’t just tell people about them.

If you’re a great engineer, show your code, explain it to others.

If you’re brilliant at math, write an article breaking down a proof.

My cards say machine learning engineer but if I think about where I can bring the most value in the future, it’ll be as the front man. I’ll help the people smarter than me communicate how their work can benefit the world.

Not good at anything yet? Show that too.

It’ll help you figure out what you need to improve on.

Show don’t tell.

E) Be the dumbest in the room without being the dumbest

When people introduced themselves in the Deep Learning Slack channel it scared me.

‘Hi everyone, I’m Paul, I’m a machine learning engineer at Google.’

‘Hello, my name is Sandra, I’m a software developer at Big Software Company & Co.’

Here I was 3-weeks into learning Python.

‘How am I going to ask a question?’ I thought to myself, ‘everyone is going think I’m dumb!’

Then I realised, being the dumbest in the room meant I could learn the most. If you’re the smartest person in the room, you’re in the wrong room.

I was in a room the other day with one of the lead Genomics researchers in the world. We’re doing a joint project with her team. And she told us, ‘the only stupid question is the one that isn’t asked.’

Don’t be like I was and afraid to ask stupid questions.

The same goes for Meetups. Online forums. People you follow who you look up to. Good questions will excel your learning faster than any kind of answer.

F) Are you a driver or a mechanic?

When you drive to the store, how often do you think about how much torque the engine is producing?

Or the amount of air flowing through it?

Or how the fuel pump delivers fuel to the combustion chamber?

A car can be useful to you without this knowledge.

However, if you want to be a mechanic, knowing about these things is a good idea.

The same goes for machine learning. You can learn how to use programming frameworks and libraries such as TensorFlow to build things which are useful without actually having to know what’s going on under the hood.

But if you want to be able to make your networks train faster, work better on different devices, be more computationally efficient, you’re going to have to get some grease on your jacket.

In the beginning, focus on being a driver. Get yourself around. Like driving from one store to the next, solve one machine learning problem after another.

When you’re comfortable driving the car you have, it’s time to upgrade, pop open the hood and dig a little deeper. Practice on a new problem you’ve never seen before. One where you don’t what the answer should look like.

The best thing? If you mess something up you can always reverse the code. There isn’t version control for car engines yet.

G) Every master knows they're a perpetual student

The learning never stops.

Every day is day one. When people ask what I do, I still reply with, ‘I’m a student.’

What’s the alternative?

Keep the same knowledge for the next few decades?

No thanks.

The more you learn, the more you realise you don’t know.

My maths skills aren’t as good as they could be.

My statistics knowledge isn’t top notch.

My programming is mediocre at best.

Communication is pretty good. But there’s always room for improvement.

All the real benefits in life come from compound interest. Especially knowledge. But it’s hard to realise it in the moment.

You could study all weekend and no one would notice or care. But you would. You refer back to your why.

Lay one knowledge brick a day and your future self with thank you for the beautiful library you’ve built.

H) The quick version

1. Start with why. Write your reasons down and make them concrete. When it gets hard. And it will. Refer back to that piece of paper you stuck to your wall.

2. In the beginning, focus on long-term knowledge gains rather than the flavour of the month.

3. Do you need that university degree? Or can you get the skills you’re after without it?

4. Showcase your work. Even if it’s bad. Explain why you did what you did. And how others can avoid your mistakes. Even the best products won’t sell if they don’t have any shelf space.

5. Become the smartest in the room by asking questions. Find people who have been through what you’re going through and ask them for advice. You don’t have to listen to it all, remix it with your own and make it better.

6. You don’t have to be a mechanic to drive a car. Take your new knowledge for a test drive as soon as possible. Don’t let it sit there going to waste in the archives of your brain.

7. Learning stops when your heart does.