Interview with Dmitry Soshnikov, a Microsoft Cloud Developer Advocate

A  few days ago, we had a guest, Microsoft Cloud Developer Advocate Dmitry Soshnikov. Here at Visma he spoke about neural nets on .NET, but we couldn’t let him go without asking some questions on AI, ML and their implementation in a business environment.  A little background on Dmitry. He works for Microsoft for more than 13 years. Previously, as a Technical Evangelist, he has been involved in many activities with students and universities, including Imagine Cup technology competition, many student hackathons and online courses. Dmitry met Bill Gates and twice appeared on stage with Steve Ballmer. He used to work as Senior Software Development Engineer, helping many companies across the world to implement the most modern & efficient technologies, including Machine Learning and AI, to improve their businesses. Now he is a Cloud Developer Advocate, sharing his knowledge and love for Microsoft technologies with developers and academic communities worldwide.

 1. In your opinion, which are the business fields where the popularity of Artificial Intelligence is growing the most?

While Artificial Intelligence is quite an old field, its recent advances and wide usage began around 2012, when a significant success occurred in image recognition and everybody saw that neural networks can do useful things with object recognition or detection. Now they can actually do better than human beings. Since then everybody wants to do something related to Artificial Intelligence, and I think that the lowest hanging fruits, the solutions easiest to implement are the first one’s to be implemented. There are a lot of things that can now be done very effectively like, as I previously mentioned, object detection in image, speech recognition, speech synthesis, those kind of things. These things are also quite relevant for businesses, they can replace human beings in jobs that are not challenging. I’ve seen some statistics which states that the most active area in AI is computer vision and that is quite obvious.

Right now the success of Artificial Intelligence is mainly based on neural networks. They can do the things that people do subconsciously, like you can recognize a cat in the picture and you don’t know how to do it. For such situations where data exists and there is no need to explain why the computer takes a certain decision, AI is now very useful. For other things, such as diagnosing someone with a certain illness everything is much more complicated. You can train a neural network on some data, but then you wouldn’t know why a computer took one decision over the other. You cannot just tell a person that the computer decided to cut off their leg, because they would probably wonder why – and neural network will not answer.

2. What are the biggest challenges for companies implementing Machine Learning and Artificial Intelligence in their businesses?

I think the major problem is data. We have worked with a lot of customers and most of them said they wanted to implement AI. Then we asked them, whether they had the data and they said no. Collecting data and especially labelled data for training models, is a separate issue and you need to start doing that before you actually start training something. So, I think that’s the main barrier. On the other hand, Microsoft being a big company does this thing called democratisation of AI. Which means, it introduces services which are pre-trained and they can already solve many business problems, for example, using a camera count how many people are in a supermarket or detect faces of people coming to work, understand their emotions. For all of that, there are pre-built services in the cloud, so if a company wants to take advantage of them, they can do that very simply without data and without AI expertise. A lot of business scenarios are covered by that. The same is true for speech recognition synthesis, machine translation, and things like that.

3. Let’s imagine, I’m a business owner without a background in computer science. What is the easiest way for me to learn and actually try Machine Learning?

I think I would like to divide this into two questions. First of all, how to start thinking correctly about Artificial Intelligence? And this is a separate skill, because a business person needs to think more in terms of data, taking data-driven decisions. Of course, we have some resources in Microsoft to help take the first steps in understanding AI. We developed a resource called AI business school. It’s basically a set of case studies that show how people apply Artificial Intelligence in different business scenarios and I think that for a business person it’s important to see actual examples, especially understand how the data was collected,  how the data is implemented, how the model is trained, and things like that.

In terms of trying something yourself, there is a very good tool called Azure Machine Learning Studio (classic). It’s an old tool created by Microsoft two or three years ago, but it’s a tool where you can upload data and then try some Machine Learning models on it. And by data I mean simple stuff like Excel tables or something like that. If a business person has the data, he can try to experiment and have a look whether Machine Learning can do some useful predictions.

I had cases where I showed this tool to a bunch of business people, and they came back with results, for example, a module which helps you determine if a person is good enough to work for the company relying solely on his photograph.

You don’t need a lot of experience to try, but you need experience to make it work properly. Sometimes when you try it for the first time, it doesn’t give you good results, but that doesn’t mean you should stop trying. It’s a very good tool for trying to understand how Machine Learning works. Sometimes if you can extract useful information from the data, you can solve problems with low accuracy using very simple tools, but if you want to improve it, you need to spend more and more resources, you also need more data. Actually, small improvements come the hardest, like the 80% and 20% rule, where 20% of data will give you 80% accuracy, but to get more, you need more and more data. For businesses, it depends on the problem you’re solving, sometimes small percentages mean high differences in income.

Dmitry Soshnikov and interviewer Liutauras Medžiūnas

4. What is the biggest advantage of using ML.NET in a business instead of other libraries?

I think ML.NET is a great but very young product, it has been introduced about a year ago. It originated from another internal product which was used for a long time in big projects, such as Bing and Outlook.com. We are moving most of the features to an open-source project for the community to use and ML.NET right now is quite limited if you compare it to Python tools. So, ML.NET can seem a bit limiting for the moment. Nevertheless, ML.NET is good for scenarios where you have a lot of data, like the scenarios we have inside Microsoft. ML.NET is also particularly useful for scenarios in which you use the models from some Enterprise systems developed in .NET. For example, you train the model and then  want to use it, and if the business systems are running on .NET, you can integrate it very easily using ML.NET. Of course, that’s not extremely important nowadays because of Microservices Architecture, because you can build the application as a bunch of Microservices and they can be in different languages. On the other hand, Python is definitely slower by nature, so using ML.NET has its own advantages, but a person doing serious Machine Learning would probably want to do it in Python.

5. Let’s say I have a team of data scientists who are more skilled in Python. What is the best way to integrate end-user .NET applications with Python Machine Learning modules?

There are two ways you can go about it, one way is to rebuild everything in ML.NET or use Microservices. The later is used more often. Also I think it depends on the problem. If it is a research problem then you would most definitely want to use Python and then you package the model as a Microservice. If it’s more of a traditional model and there are a lot of business scenarios where you need to forecast, for example, spendings or the demand of the product and so forth, you just need the regression model. In most of the cases you need regression and to play with the parameters a bit, and for these problems ML.NET is very good, because you can train regression in any language. ML.NET can be nicely integrated with old data, you don’t have to translate it between formats, because with Microservices you will end up going through text based REST representation and you don’t need to do that, because you can do it directly in .NET. I think these scenarios are specifically fruitful for using ML.NET, where you have a very simple model architecture like linear regression, but you need to re-train it every week.

6. What is the Automated Machine Learning feature in ML.NET?

Automated Machine Learning is not only a feature in ML.NET, it’s also a feature in Azure ML, it’s a feature in almost every Machine Learning provider nowadays, because everybody is talking about Automated ML.The idea is that we want to get rid of data scientists, because they are so expensive. I guess that’s the main reason. A data scientist tries to solve a problem using different approaches. So, he does something, he tries it and thinks: 

      Okay, the accuracy is not very good.

 Then he tries something else and the accuracy gets better. He tries it several times until the owner of the business is happy with the results. With Automated ML the same thing is done using computer in the cloud and you just try a lot of different module combinations until it works. The question is: who is more clever – the Automated ML or a data scientists. Of course, the data scientist is more clever, because he knows which modules to try for which problems, while Automated ML does not. It can optimize the search, but still the idea is very simple, we try different combinations automatically and compare results. If you have a simple problem and not too much data, and if the module trains in one minute, then you can try a hundred combinations and get good results. If the module trains longer, good models can train for two months then you cannot run a hundred combinations. In simple scenarios automated ML is a good way to go, in ML. NET they integrated the UI in Visual Studio, so you can say:

      Here is my data, this is my typical problem.

 A few clicks and the model is created, but the scope of models is also limited. If you are a developer and have never done Machine Learning, but want to put some feature in your application based on that, it can be very useful.

7. What is the future of Software Development?

I think Software Development is a very broad discipline. There is much more than front-end and back-end developers. I believe the discipline mainly focuses on making computers to do something useful. And if you consider it like this, than I think there is a lot of room for software developers in the future, only the focus might shift a little bit. For example, a while ago in order to play chess with a computer you had to write an algorithm doing search, nowadays you design algorithms which learn by themselves or learn from data. You could say that data scientists are crushing in on software development, but in fact they are also software developers. So, the focus just shifts from creating an algorithm to using data and making the computer do things automatically. In the nearest future I would expect this shift to happen. In the very distant future, there might be some other shifts we don’t see nowadays, but it as well will only be a shift from one thing to another. This is because computers, I don’t want to say they cannot do creative things, because they can do things that seem very creative, and this is actually a difficult question to which we don’t have an answer yet. Still I believe that people will be required to understand when we need a computer, why and how are we going to use it. I do not see a day approaching when you will no longer need to write code. Even though, even now it seems that Visual Studio writes it for you. The same goes for other professions, if you do creative things, you will not only feel secure, you will also be happier, because creativity is something human beings enjoy (unlike robots). 

Thank you, Dmitry

0