Lately, friends at companies of all sizes and industries have been asking me the same question, “How do I apply machine learning to my business?” These folks know enough to have a sense of good use cases for machine learning. Where everyone gets stuck is actually making it work, hiring people, and making them successful.
I’ll outline my three main approaches depending on the size of your business.
These are my recommendations for early stage companies or non-profits with a use case for machine learning. It might feel impossible for a small, unfunded or underfunded company to get machine learning expertise in-house. The good news is, a lot of ML practitioners are excited by this kind of work. Look for someone that cares about the mission of the company. At this size, you are going to rely on your ML practitioner to implement everything end-to-end from data collection and cleanup to deployment. The actual machine learning-specific part of the task is almost certainly very small.
Hiring someone who is heavier on the engineering and data side of things is definitely the way to go. A seasoned engineer who has gone back to school or done some online work in machine learning can work out well because the goal isn’t perfection— it’s getting a system working end-to-end and then slowly optimizing all the steps. I look for a resume that shows participation in a few Kaggle competitions or self-directed projects. In an interview, I’m looking for candidates who seem open-minded as well as pragmatic. Researchers who want to apply one type of model to everything or want to spend months optimizing the data pipeline before building and testing a model would not be a good fit.
I take a slightly different approach when building a team in a growing startup or mid-size business that is interested in multiple machine learning applications. Unlike Google, you can’t afford to hire a lot of researchers. You can’t afford to have your machine learning experts writing research papers. The key here is hiring one very good machine learning researcher and surrounding them with data engineers to make them extremely productive. Find a person who has a good pedigree and track record and make sure that people will want to work with them. Use them like a precious resource - don’t have them writing code - surround them with engineers who want to learn from them and have them teach the engineers how to do machine learning.
Some companies build a functional machine learning group and some companies embed the machine learning into teams. Many people have strong opinions on this, but I’m pragmatic and I’ve seen both org structures work. A single machine learning team can really help with talent which is often the biggest bottleneck. In this approach, you need to manage the team carefully to make sure they are working on the most relevant tasks for the organization. Dispersing machine learning expertise throughout an organization can make practical machine learning experts happy because they are closer to the end user, but it can make recruiting harder.
It’s absolutely crucial to hire more machine learning engineers than machine learning scientists and to pair them on tasks. Often the thing that the machine learning team is optimizing with their algorithm is fundamentally different from what the business needs. Without a working end to end system, this misalignment can go undiagnosed for months. Another common issue is that the training data needs to be altered or updated, and this is not discovered until algorithms are trained and deployed. For these reasons it’s crucial to get end to end systems working as fast as possible before iterating on them.
Working with a lot of large companies, I’ve seen a fair number of the same mistakes over and over again. In this range, a company is able to hire quality ML talent but doesn’t have the budget to compete with industry giants.
Elite teams at Facebook and Google are using standard, open source models and architectures. Recently, I’ve talked to many Fortune 500 companies that are building their own neural network architectures without testing whether it’s necessary to do so. Machine learning researchers love doing research, and managers trick themselves into thinking the researchers are building valuable IP. They’re not. They’re wasting a ton of time reinventing the wheel, and that time would be better spent working on the latest, cutting-edge models. It’s always best to start with the simplest, most standard thing and layer in complexity. Every additional piece should make a major difference in the algorithm’s performance.
Big companies should avoid building their own machine learning infrastructure. Almost every tech company I talk to is building their own custom machine learning stack and has a team that’s way too excited about doing this. This trend reminds me of companies building their own web app frameworks in 2005, baking in custom platforms that will be difficult to standardize. There’s good infrastructure out there, and it’s getting better all the time. It’s far more sustainable to use open source tools than to build and maintain custom infrastructure.
Big companies should train their engineers to do machine learning. Engineers are incredibly hungry to learn machine learning, and modern infrastructure tools are making it easier and easier. At this point I actually think it’s more efficient to teach a engineers machine learning than to teach machine learning practitioners how to be good engineers. In any case, an engineer with some machine learning training can be effective in lots of ways. Some companies are doing this but I’m surprised more companies aren’t making a point of this.
Hiring ML teams are expensive and a lot of work. Some companies hire an ML team to check a box for investors— this never ends well. Regardless of your size, if you don’t have a clear application for machine learning, you’re going to regret your investment. The crucial questions to ask yourself are:
1) Do I have a problem that can be solved by machine learning? (I have a video on this.)
2) Can I label or acquire relevant training data?
3) Is the problem I'm trying to solve crucial to my business?
If you answered “yes” to all these questions, you’re setting yourself up for success.
We're building lightweight, flexible experiment tracking tools for deep learning. Add a couple of lines to your python script, and we'll keep track of your hyperparameters and output metrics, making it easy to compare runs and see the whole history of your progress. Think of us like GitHub for deep learning.
We are building our library of deep learning articles, and we're delighted to feature the work of community members. Contact Carey to learn about opportunities to share your research and insights.