Next-gen software systems are not only functional, but they're also intelligent and perceptive —almost human-like in their abilities.
When most people talk about AI today, they're often referring to learning-based systems, which are essentially systems that become proficient (even human-like) at performing particular tasks — for example, self-driving cars and customer service bots. Learning-based systems "learn" by processing a vast amount of data (often labeled data, known as supervised learning), whereas at other times, systems learn by competing against itself or other simulated agents.
Among all learning-based systems, in particular, neural networks have helped usher in a new wave of breakthroughs thanks to a technique called deep learning, recently creating a lot of hype, confusion, excitement, and panic for companies looking to find a differentiating edge or niche. Applied machine learning is a multi-stage process.
First, we need to have the data to learn from it, so gathering the data from various relevant sources (databases, knowledge graphs, etc.) is the first stage. Then, the data needs to be analyzed. Analysis includes not only understanding what the data can tell us, but also which features of the data are most applicable to the problem that we are trying to solve. While deep learning has been touted for its extraordinary ability to automatically identify the relevant features, in practice however, one will find that some hand-picked feature engineering and preprocessing goes a long way.
For example, suppose that we are trying to determine whether two faces in two different images or videos are the same. The naive approach is to train a deep neural network, e.g. via a triplet loss function such that the Euclidean distance of images from the same identity are closer than the Euclidean distance of images from different identities. However, the theoretical size (and thus required parameters) to automatically "learn" those features may result in a network that is intractable, either resulting in the training becoming too expensive or the deployment nearly impossible (such as in resource constrained environments where edge machine learning models may be desirable).
Being able to "crop" to only the face (i.e., preprocessing the images or video frames) can enable the final model to not only be more accurate, but perhaps even more lightweight and faster, many times requiring fewer parameters to achieve greater accuracies.
This is why, for example, in Kaggle competitions, the top solutions usually have a feature selection and preprocessing stage.
Another example, suppose we are looking at 3D scans of an organ to determine the incidence of cancer: preprocessing the data by identifying nodules in advance can enable the neural network focus more wholly on areas of importance, thereby significantly improving the final accuracy with the same number of parameters than otherwise. Then, it is time to train and evaluate a particular model.
This stage often involves research, usually scouring publications for similar or relevant solutions that can be reapplied for a new use case. For example, if we were trying to detect whether certain abnormally shaped cells are precursors to cancer, we may look into the larger body of research that exists around melanoma, and reapply similar ML models as a starting point.
We may apply transfer learning from other datasets, seeing if some general learned features can be reapplied for the new use case. Throughout this entire process, we are constantly validating and evaluating the model, finetuning the hyper-parameters, analyzing the confusion matrix, and perhaps even performing grid searches. Finally, the model needs to be deployed to the cloud, where it can process requests and scale independently together with the rest of the software application — the app then not only seamlessly integrates with the deployed model, but it also continuously collects data for future iterations and training of the model. We guide clients through every step of the multi-stage process.