Developer Skills for AI
Developer Skills for AI
AI allows developers to do things in the code that cannot be done algorithmically.
Join the DZone community and get the full member experience.Join For Free
I had the opportunity to meet with Jeff Prosise, Co-founder and Chief Learning Officer, Wintellect, during Skillsoft's Perspectives 2019 user conference. Wintellect is a Microsoft certified developer consulting and education firm. Jeff has written nine books and hundreds of articles on software development.
Prior to the conference, Skillsoft announced a partnership with Wintellect to offer expanded training for enterprise technology and developer professionals with WintellectNOW's 500 hours or on-demand training.
Jeff doesn't believe developers need to understand how neural networks work, but they do need to know how AI (artificial intelligence) and ML (machine learning) can be used to solve business problems. He suggests understanding the libraries, frameworks, and services provided by public cloud providers. He believes developers will benefit by having a similar relationship with data scientists as engineers have with physicists.
What AI allows developers to do is things in the code that cannot be done algorithmically. And that is the magic. A certain problem in the AI space, like looking at a photo and determining whether it contains a cat or a dog, has been solved. Five years ago, it was next to impossible to do. Today it's trivial to do. The beauty of AI/ML is the ability to look at a massive data set and find patterns that a human would never find by looking at it.
As a developer, we are accustomed to writing code that takes an input applies an algorithm and produces a known output. That's what programming is all about to a large degree. with ML, we turn that on its head a little bit, we don't know the algorithm, we don't even have an algorithm. Instead, we build an ML model, we give it the inputs, and we give it the outputs, the inputs might be here are hundred million credit card transactions that have actually taken place, the outputs are the ones that were fraudulent. The ML model then figures out from the patterns it finds in that data, how to look at the next transaction that you feed in and tell you with a very high degree of accuracy, whether that transaction was fraudulent or not.
Building a supervised-learning model requires several steps:
- Import data
- Clean and prepare the data
- Training the model
- Scoring and evaluating the model
- Tuning or replacing the algorithm
- Feed to the appropriate learning algorithm (regression, classification, support vector machines [SVM], decision trees and random forests, neural networks)
- Training the model
- Then ongoing scoring and evaluation
Cleaning and preparing the data can take 80 to 90 percent of the time but it's a critical part of the process since poor data quality will result in a poor model.
SciKit-learn is the most common ML library and is favored by Python programmers. It's free, it's open source, there is a lot of documentation. You find an answer to any question you have on Stack Overflow.
Jupyter notebooks are also amazing. They let you enter Python code or other types of code and execute interactively. They use different kernels to support different languages. In terms of inspecting datasets, graphing and plotting the contents of the data sets, doing data discovery, cleaning it up to then feeding into an ML model, Python arguably makes it easier than any language today.
Jeff is not a big Python fan. He's a C, C++, and C# guy. Until recently, there was not a good way for a C# developer or a .Net developer to build an ML model with neural networks. However, Microsoft is about to release an open-source AI/ML library for.net developers. The cool thing about it is, this isn't something that some people at Microsoft just sit around the table and said, you know, we had to create an ML library.
For the past seven or eight years, internal Microsoft product teams have been using a library called TLC, it stands for the learning code. Two years ago, a group of developers in Microsoft convinced management that if this library is useful to Microsoft, it may be useful to their customers as well. So they spent the last two years cleaning up the code doing a lot of rewriting, getting it fit for public consumption to open source it.
Jeff has this on GitHub in public repo. You can pull down the sample and a whole bunch of others. He takes a pre-trained convolutional neural network trained for image classification if you'd like to give it a try.
TLC allows you to build models using C, C++, and C# with far fewer lines of code than TensorFlow or Keras.
Opinions expressed by DZone contributors are their own.