What is the first rule of ML algorithm development? They need to be practical. There is an endless cemetery of impractical algorithms.
The most costly thing in Machine Learning Algorithms is labeling. One can put a price tag on this. For manual labeling, it is the cost of collecting data manually, building datasets, wasting time on finding incorrect labels (this one is very tricky and has dire consequences). But the real challenge is when the end-user has to provide the labels. This could kill the product. So the less manual labeling the better. We learned it the hard way.
The labels are classified as labels (cat, dog, etc.) or rewards (good outcome, bad outcome). Manual labels are collected by a person. In some cases, the environment can give feedback on algorithm performance. Following is a list of labeling techniques by order of burden and practicality.
Supervised and semi-supervised learning:
- Fully manual: Customers are required to provide tens and more of manual labels. In our experience, the chances of this happening are very low, even if labeling brings value to the customer. This is a killer for supervised and semi-supervised algorithms
- Active algorithms use occasional manual labelling. The quality of the algorithm determines how fast they converge and how many labelings will be required
- The algorithm asks for a manual reward (if the answer is correct). This is a more practical algorithm as it does not require manual labeling, only confirmation on labeling correctness. However, if the algorithm keeps asking for confirmation, the end user will eventually lose patience and ignore it
- One shot: The user is required to provide one manual label per category. In this method customers are usually more cooperative, especially if it brings them direct value (the value is for the user himself, and not his superior, for example). We found this configuration very practical
- Unsupervised: In this setup there is no need for labeling, which makes it the holy grail of labeling. However, if the algorithm makes mistakes, nobody will know
- Reinforcement: This is the most practical and accurate way of labeling. In this setup, the environment provides a reward independently from the customer’s feedback. A good example of such algorithm is the amount of earnings in trading algorithms.
At 3d Signals, in the beginning, we used supervised algorithms with fast convergence. We asked the user to provide 3 labels per each of the different products produced by the machine. This wasn’t good enough, since there was little value for the machine operators, who did the labeling for a few days and then stopped. We have not used it since.
Our current algorithms portfolio consists of unsupervised algorithms only (with a single state of the art one-shot exception):
- Classification of asset availability (asset on / idle / off)
- Production line product count and product change detection
- Parts recognition and count in CNC machines. We cluster the produced parts and name them part A, part B, etc. If the customer wants to name the parts correctly (for example “16 inch valve”), we need only one labeling. This makes it a one-shot learning. If the algorithm recognizes two parts as the same, and the customer provides different labels for each of them, the algorithm increases the selectivity and will recognize these parts correctly
- Assembly line count: Even though it requires input of several parameters, it is unsupervised from the customer’s point of view
- Setup and irregular production in small to large series production machines
Now we encourage you to go and design practical algorithms!