Imagine that you have 200 hrs of your life to improve your career prospects in ML. What is the best use of this time? I'm betting on doing a portfolio project.
Let's compare different options:
1. You could go to meetups
2. You could do tutorials, follow template code and be the Github user # 2245 who has this same exercise
3. You could take classes or MOOCs
Option 1 relies on serendipity. Assume you meet a potential job opportunity every 5 meetups (which could be a bit optimistic!) You may well spend a year going to meetups and getting exactly zero job opportunities if:
- you are not looking amazing on paper/online, and
- you don't communicate very well in person
Assuming commuting to and attending the meetup takes 5hrs, How many meetups can you do? 40. That's 20 conversations worth having. Still, without some strong signal that you can perform (such as work experience, or a tangible ML project you built from scratch), you will not convert these random conversations into job offers.
Options 2 and 3 (tutorials and MOOCs) don't differentiate you enough from the masses. They are a prerequisite to reaching the level that would make a hiring manager take notice. Because work experience is hard to get when you are trying to get into a new field (chicken and egg problem) that leaves you with my preferred option, and the reason I wrote this series of posts: show the world what you can do by having an AI portfolio project.
A substantial project strongly dominates the other options
Once I asked Ted Dunning: "What is the one thing you care about as an interviewer?". His answer: "I only care about one thing: What you have done when nobody told you what to do."
Having a portfolio of projects shows creativity, which is extremely important in data problems.
Data cleaning, even model fitting, is somewhat grunt work. We will likely automate this in the future.
What is not automatable (and where you want to excel) is at:
• finding a problem
• That is worth solving (produces business value; helps someone)
• and is solvable with current tech
Ok, so you want to do a good AI project
The rest of this post is what I've learned after mentoring more than 150 AI projects over five years at the companies I've founded.
I've grouped what I know into four classes:
• Finding the problem
• Collecting data
• Working with data
• working with models
Finding the Problem
What human task is your project helping or displacing? If the task's decisions take longer than a second for a human, pick another one
Machines are good at helping humans with boring tasks. The rule of thumb (from Andrew Ng) is that you want to tackle tasks that take a human less than one second. Driving, for example, is a long series of sub-second decisions. There's little deep thinking there. Writing a novel is not like that. While NLP progress may look like we are getting closer and closer, writing a novel with AI is not a good project.
Myth: you need a lot of data. you need to be google to get value out of machine learning
When looking for problems, you are looking for data too. Often you feel there's no data to address the problem you found. Or not enough data. Data is valuable, and those who have data don't make them public. There's plenty of public data, but nothing that matches what you need.
You come up with hacks, of course. Maybe you can combine different sources? Maybe you generate and label the data yourself?
Then you read online that you need giant datasets. You are screwed. You are not going to label millions of images just by yourself.
It's true that for very complex deep learning models, you need those giant datasets. An excellent boost for ML in the 21st century is that now we have lots more data, and compute power, to train more complex models.
Many of the revolutionary results in computer vision and NLP come from having a lot of data.
Does this mean that you cannot do productive machine learning if you have no big compute clusters or datasets in the Terabyte range? Of course not.
Libraries contain pretrained models (like Inception V3, ResNet, AlexNet). You can use then to save computation time.
Take, for example, YOLO (you only look once). Anyone with an off the shelf GPU can do real-time object detection and segmentation in video. That is amazing. How many projects can you conceive with this feature? Make it an exercise: list 10 projects that you could build based on YOLO. By the time you read this, it's likely there's a new algorithm that does the task better. It's a beautiful time to be alive. You don't need terabyte-sized datasets to get value off of machine learning.
Pick a problem that passes 'the eyebrow test'
The skill of picking a problem is as useful as the skill to solve it. Some problems will capture your imagination, and some will leave you unmoved. Pick the first.
And then there are those projects that make people think that what you are saying is impossible. You want one of those.
How do you know you picked the right problem? Use 'the eyebrow test.' You want to see the eyebrows of the other person going up when they hear it. If they don't, keep looking.
Some problems are mere curiosities and can suck your resources. Don't go for those. There's tremendous potential for impact using ML right now. Why spend your time creating a translation algorithm from Klingon to Dothraki (both invented languages) when you can make people's lives easier?
At AI Deep Dive and Data Science Retreat we believe that because there are plenty of 'good problems,' there's no excuse to pick one that doesn't pass the eyebrow test. It takes time to find a good problem. How long should you spend? As much as needed to pass the eyebrow test.
It helps if you are in the surroundings of people who have found a good problem before. Sometimes, those with deep domain knowledge in ML are not as useful as you may think to pick up ideas.
You are selling the value of AI. When you do 'eyebrow test' projects, you help not only the people-who-have-that-problem (always keep them in mind) but… your fellow data scientists. The more impressive your projects are, the more the general public will appreciate how transformative AI is for society. And the more opportunities you create for everyone else in the field.
You only need to be in the ballpark of a good idea
One participant came to me saying that he was running late to pick up an idea and that he had exhausted all his possibilities. He had nothing.
"Ok, let's look at what you are passionate about. What's alive in you?"
"Well,… I hate waste."
So we googled 'waste trash machine learning.' Nothing too obvious, nor too exciting, came about. After some more search, we found a Stanford project that categorized trash. The students had a trash dataset, painfully labeled. Still, this was not exactly an idea that passes the 'eyebrow test.'
"What if instead of categorizing trash, we could build something that picks up trash?" (iterating on the idea)
"You mean something that goes around autonomously?"
"Yes, a self-driving toy car. There was one project in batch 08 of DSR that did exactly that. The car ran laps on a circuit. You would have to modify it to identify trash, get close to it, and pick it."
"That sounds amazing!" (eyebrow test passed)
With time, this ballpark idea morphed from general trash to picking up cigarette butts, which are terrible for the environment. Details about how to pick the cigarette butts improved with time: stabbing them, instead of trying to grab them with a robotic arm. We will talk more about this project later in this series.
Pick a problem that moves you. If nothing does, use 'watering holes' to listen to problems that move people
If you have the problem you want to tackle, you have a significant advantage. You understand the need. You can build the solution and know how well it works by applying it to yourself. You can tell between 'nice to have' and 'pain point.' At this point, what we are doing is no different from what startup founders and product managers do.
You have in your hands the closest thing to a shortcut: have the problem yourself. You will save time but not going into detours that don't help. You will have a keen sense of what to build.
In 2014 I was building a company that eventually failed doing customer lifetime value (CLV) predictions for e-commerce stores. The product CLV predictions, though, was something I could deliver myself as a consultant. So I became a 'CLV consultant.' One of my clients was hiring a data scientist, and they hired me fulltime, so I magically transitioned into data science.
Many others had the same problem: they had tech skills, maybe a Ph.D., and they wanted to become data scientists, but they didn't know how. Remember, this was 2014, before the web started boiling with advice on how to become a data scientist. I built a business around helping others solving this problem, and it's been working well for the last five years.
I knew well what the problem is; too much information, unclear guidelines, interviewers who don't know how to recognize talent. Every step of the way, I felt I knew what I was doing with this business; a feeling that is extremely valuable. Transitioning to data science is an excellent problem; 5 years later, people still struggle with it.
I don't play golf. If I wanted to build a product for golfers, I'd be lost entirely. I would build features nobody need; I would miss the pain points. Even if I ran interviews and listened to the market, I would at a disadvantage to a golfer.
So my advice to pick a portfolio project: pick a problem you know well. Even better if it's a problem that moves you. If you lost three friends to suicide, build something to prevent suicide. In this case, you don't have the problem yourself, but you have a strong motivation to solve it.
What if you have no problems whatsoever? You have been in the same industry forever (say Oil and Gas), and all valuable problems there got taken care of!
I don't believe you. There's no industry so mature that all problems are solved. But, ok, you cannot come up with something that moves you, some problem that you have.
Then observe what problems other people have. Large groups of people. They tend to congregate in public spaces and bitch about their problems; every time you see people bitching about something… turn that into an opportunity to do a project.
Which public spaces? I call these 'watering holes' (HT to Amy Hoy). Online, you can have obscure forums, but Reddit and twitter are the easiest. Just sit there and 'listen' to people discuss the problem. Learn every detail of it. Is it a real problem, or a 'nice to have'?
For example, you may join a gaming subreddit to see if gamers care about having stronger AI in videogames. Or if they care for VR. These ideas are too abstract to be good project ideas, but you get where I'm going.
Integrate distinct data sources
Often companies are so focused on getting value out of the data they have they forget they can increase value using the data not in their company but publicly available.
There's plenty of open access data. And APIs for data that changes frequently. There's no reason not to use multiple data sources. You can solve a more interesting problem (one that was not obvious before) by integrating APIs.
For a collection of APIs, check https://www.programmableweb.com/.
Problems that seemed impossible with a single source of data become solvable when you add a new data source. Boring projects come alive. Thankless tasks become a joy to work with if you manage to find a twist that shows more value.
When using multiple data sources, you have to stitch them together using a shared key (a column that is present in both datasets.) You cannot combine data sources that don't have a shared key, and that tends to be a showstopper for many ideas.
Instead of collecting or reusing data, produce your own data
You don't need to find data, or own it. Thanks to pretrained models (see later section on them), you don't need all that much data, which means you can produce it yourself. Removing "I don't much/any data" as an obstacle opens up the space of problems you want to solve.
To produce original data, I found one big hack: use hardware. Sensors are cheap, and they give you data that you own.
JD.com's Shanghai fulfillment center uses automated warehouse robotics to organize, pick, and ship 200k orders per day. 4 human workers tend the facility. JD.com grew its warehouse count and surface area 45% YoY. AI affects manufacturing too. It's easier than ever to produce things en masse, and this means there are a lot more hardware 'toys' in the market. Things that you would never consider to be affordable like microscopes, spectroscopes are reaching the mass consumer market and are eminently hackable. These are wonderful data sources!
Because of Shenzhen, Kickstarter, etc. hardware is evolving far faster than before. It's never going to be as fast to iterate on as software, but we are getting there. Have you checked what's available on Ali express? There are multiple sensors you can buy for under 100 bucks. Attach one of these to a phone running your code, and you have a portable purpose-specific machine.
For example, you can buy a microscope and use it to detect Malaria without a human doctor. Deep learning running on a phone is good enough to count parasites on blood.
Ali express is full of cheap hardware that you can attach to a phone. You can add a lot of value to someone's life using a mixture of phones (that run the ML code) and
Example: our Malaria Microscope.
Malaria kills about 400k people per year, mostly children. It's curable, but detecting it is not trivial, and it happens in parts of the world where hospitals and doctors are not very accessible. Malaria parasites are quite big, and a simple microscope can show them; the standard diagnostic method involves a doctor counting them.
It turns out you can attach a USB microscope to a mobile phone, and run DL code on the phone that counts parasites with accuracy comparable to a human. Eduardo Peire, DSR alumni, started with a pubic Malaria dataset. While small, this was enough to demonstrate value to people, and his crowdfunding campaign got him enough funds to fly to the Amazon and collect more samples. You can follow their progress here: http://aiscope.net.
For another example, you can buy a spectroscope that pointed at any material, and it'd tell you its composition. It's small enough to attach to a phone for a hand-held scanner. Can you detect traces of peanuts in food? Yes! There you go, a solution to a problem real people have. If you are allergic to peanuts, this will buy you a certain quality of life.
Sensors are cheap nowadays, and they will help you get unique data. You can turn a phone into a microscope, a spectroscope, or any other tool. The built-in camera and accelerometer are excellent sources of data too.
Next on this series: what I've learned about working with data and how this can help you pick successful AI projects.