A lot of companies have machine learning engineers, but not quite like this.
In our third installment of Solvers behind Sofia, we sit down with Delong Zhang, Machine Learning Engineer extraordinaire. He's been with Sofia since the very beginning, coding and building learning tracts from scratch. He happily refers to her as his child and loves seeing her evolve and learn.
Here's an excerpt of our conversation. **The conversation below has been edited for clarity and length.
What’s unique about your role?
Most of my colleagues specialize in one specific area of Sofia. I don't have a specific focus - I'm part researcher, developer, engineer, demo operations, whatever the team needs me to do. It's fun to see how our team has expanded since the beginning of Sofia. Before, it was like a start-up company. Since I started at the same time as Sofia, I have a deep understanding of how she works and learns. Interestingly, we initially started Sofia with open source code but decided to abandon the framework and write the code ourselves, which I helped shape.
This journey of building Sofia from scratch included building APIs, pipelines, and logging and collecting chat data. This is why I have a very good understanding of how each component works. I like to think of myself as the glue, I help pull things together. For example, with decoupling. When you design a program, it's best that each component doesn't have too much dependency on another. Therefore, if you change one part, not all the other parts will collapse or be affected negatively. For this kind of task, it's best to have "glue" to put all these components together in a cohesive way.
Can you help me understand how Sofia learns or how we train her?
Machine learning model training is quite a complicated process. It requites a lot of effort on all accounts. Yanan, our machine learning research scientist, explores cutting edge technology to improve our models. Lexi, our computational linguist, figures out the best way to execute our training data in a way that makes sense. Machine learning model training is when you have a huge amount of data that you segment into training sets. With Sofia, we are building a virtual assistant that comes with its own unique vocabulary, if you will. But basically, this process can be broken into two parts, understanding intents and entities.
Intent predictions are what you think the user wants. For example, trying to add a dependent or ask for benefits information. That’s called an intent. Entity recognition is, "I want to know the benefits for my son," "my son" is the entity. Another example is, when you order something from a restaurant. I go to my local restaurant and want to order beef chow mein. Your beef chow mein is a food entity and the Chinese restaurant is also another entity.
The training data will contain both of these aspects. Then once you have this data set complete with intents and entities you can fit it them into the algorithm training. This is a very scientific process. First you have to process the data. Our computers don’t understand language like humans do. To the computer, all the language and all the text – they only understand them as 0s and 1s. You have to do pre-processing to make it as easy as possible to help the computer understand how human beings understand language.
And, since humans aren't perfect, sometimes you need to clean the data. Using training data from real user chats is extremely important to expand Sofia's vocabulary and her ability to understand unique questions. No matter how much you want everyone to ask perfect questions, you can never control what a user will ask or say to a virtual assistant. In order to use that data as a viable training set, you need to clean all the errors to provide the best possible outcomes and answers to the end user.
Especially during COVID-19, Sofia's chat volume is up, over 223%.
What has been your favorite project?
As I mentioned, I feel like Sofia is my child, I watched her grow into the AI personal benefits assistant she is today.
One of my favorite projects was when we decided to move Sofia completely in-house. We were using open source framework but decided that to solve the issues that were coming up we needed to be in control. This kind of technology is changing really fast each day, and we needed to be agile so we could change and adapt with all the latest updates. The key to success is speed. Speed to change and adapt is the lifeline of the AI product.
Once we decided we'd be building in-house, we started to do a lot of research to figure out how to write all the frameworks ourselves. We still use some open source libraries (that's the nature of our field), but the major framework from the training to deployment to the web service to the API is all in-house and we own it. We don't need to depend on anyone else. If we have an issue or want to add or develop new training sets it's in our power to constantly get better. We're very proud of ourselves and very happy with the decision as it really helped Sofia become who she can be today.
What do you like to do outside of work?
I have very broad interests and am into a lot different things. My interests are always changing but here are some fun facts: I used to be in a guild for World of Warcraft and competed and was ranked globally. For one boss fight I was ranked #4 globally. I also used to play Hearthstone, it's a strategy card game and was ranked topped 20 in North America. Whatever I do, I want to be the best – which is why I work so hard to make Sofia the best in the industry.
Watch the full interview below.
For more information about what sets Sofia apart, check out our infographic.