Springboard’s Siya Raj Purohit recently sat down with Uri Merhav, a Staff Machine Learning Engineer at LinkedIn, to discuss his career, interesting ML projects he worked on at LinkedIn, and what he looks for when hiring ML Engineers.
The full video Q&A is below, and here are some of the highlights.
What’s an important attribute for machine learning engineers to have?
Suspiciousness. The number 1 pitfall for machine learning engineers or data scientists is they push so hard to improve on a metric on a test set that they lose sight of the fact that what they really care about isn’t making their accuracy higher on a specific test set, but to make their model good for the real world.
I think LinkedIn became notorious at some points worldwide for being a crazy spam factory. Everyone got an email from someone inviting them to LinkedIn. My mom is on LinkedIn. She signed up because you got an email. She didn’t know why people were sending her in these emails, but she clicked the button and the email stopped. So, she was happy and LinkedIn were happy because they moved their metric. The one number they wanted to push, more members increased by one. But she never interacted with anyone. She never got a job through LinkedIn. She didn’t get or generate any value after joining the platform.
This suspiciousness is something that’s very important at the business level. You’ve defined a metric that you’re trying to move and then you find out it’s not important. So, of course, they realized it’s not a great idea that you only push the number of members up. But what we end up doing is looking at the data and seeing what actually predicts members being productive on the platform. So, it’s stuff like having more than X connections, having more than 50 connections, having a job title on your resume, having all of these things that we see that people have them.
Here’s where suspiciousness comes into play. What automatically happens if you just let machine learning models run willy-nilly and just try to optimize for this number? Okay. We say that it’s really important for a member to have exactly 50 connections, they graduate from bronze to silver levels. Your machine learning model, what are you going to do? You’re going to push connection recommendations to everyone with exactly 49 existing connections, right?
Always being on guard for how you might be circumventing what you’re trying to achieve and how your models might be cheating on you and sort of improving on the thing you wanted to improve but not really is super important.
What’s your favorite and least favorite thing to do as a machine learning engineer?
Not knowing what the answer is going to be. At LinkedIn, I had two months where my boss didn’t exactly have anything planned out for me so she said: “Try anything, do something with machine learning.” I built a model that looks at people’s profile pictures and predicts whether the member will have many connections and will be popular and get hired. I was expecting it to maybe select people with suits or something, and basically just build a convolutional neural net where the input is the member’s photo, the output is a bunch of metrics I built for what’s a good member.
And of course, this is a whole can of worms of what is a successful member – but whatever, let’s say the number of connections. It was very interesting to see what the neural net ended up liking. So it did like ties to some extent, but what it liked a lot more was that the background would be blurry and that the photo will have almost purely a face. So for example, my profile photo I think still is (shamefully) something that includes the upper part of my shoulders and a bunch of body and a bit of face. And the neural net was having none of that. If you’re trying to be a successful LinkedIn member, it turns out that in a correlational way, the vast majority of them, right, are people looking straight at the camera, smiling, somewhat background blurry.
And it was also very interesting to see what the neural net absolutely hated. It hated skewed photos — like when some people were uploading their millennial selfies, it freaking hated it. And it hated more than one face in the photo. So all these things… I guess if I thought about all of it in advance, I could maybe jot down a partial list of all the things the net would like and dislike. But there’s no way I come up with all of these scenarios and these judgments.
The least enjoyable part is the part where you have to get things done to get started. And I’m not talking about cleaning up data. Cleaning up data is absolutely a part of the job and you have to love it. And if you don’t love it, learn to love it because you’re going to do this a ton of times, over and over again. Getting started is more like getting a machine provisioned, pulling up somebody else’s code and getting it to build and compile and figuring out dependencies. That stuff, I’m not going to lie, there’s nothing fun about the dependency, your codebase depending on some module that someone else is also depending on, but you depend on the higher version or lower version and now you have to fix it. That’s no fun. And I’m looking forward to the day where the robots will be smarter than us and do this for us.
What’s one essential tool that you can’t live without?
TensorFlow. TensorFlow’s ability to deploy models on edge devices and serve at scale and stuff like that. The magical part about these frameworks is that you keep what we call a gradient. You are able to ask a question of “If I wanted to give a different output, exactly how would I need to change all of my degrees of freedom in my model along the way?”
So, the fact that I can do this lets me do something we call a gradient descent or optimization algorithms. And very quickly and efficiently solve for how to form the best on a given problem. And over time, if you look at the pie chart of what fraction of my projects I’m doing for my clients are at LinkedIn, what fraction of them involves TensorFlow or I-Torch. I started off at 0% maybe six years ago and now I would say 80% of my time I’m spending working with deep learning frameworks.
What kinds of people typically become machine learning engineers and what advice do you have for them?
Having a real fascination about the fundamentals makes a great ML Engineer — trying to understand how these models work, what are their blind spots. Things like backpropagation, the mechanics of how deep learning works is actually very simple math to anyone with did like any kind of scientific undergrad. And if you didn’t do it, I think it’s a matter of a year – not a lifetime – to get to the point where you can grasp all of it. And I think if you want to become a machine learning engineer, you should have this grasp.
I think my archetype for a good machine learning engineer is someone who has a solid grasp of how math works and can just adapt quickly and learn the rest of it — how Git works and how Python works. And just look at it as a problem that’s much simpler to solve than other problems you’ve solved before in life, and get cracking and solve it.
Ready to start or grow your machine learning career? Check out our Machine Learning Career Track —you’ll learn the skills and get the personalized guidance you need to land the job you want.