Supervised learning is when your model learns from a well-labeled dataset. By well-labeled dataset, I mean every row is categorized into a class. The model learns patterns from this dataset and makes a prediction. One flaw of supervised learning is that it only makes a judgement based on the patterns it has seen in the training dataset.
Unsupervised learning is the opposite of supervised. You have a dataset but you don't know anything about the classes of the dataset. In this case, you try to identify the patterns among the dataset and try to cluster the same patterns together and a cluster forms a class. The number of clusters depends on the data scientist and the data.
Semi-supervised learning algorithms are trained on a combination of labeled and unlabeled data. This is useful for a few reasons. First, the process of labeling massive amounts of data for supervised learning is often prohibitively time-consuming and expensive. Also, if the data is labelled by humans, it can contain bias from our judgment.
Anomaly detection falls under the bucket of unsupervised and semi-supervised because it is impossible to have all the anomalies labeled in your training dataset. There are several methods to achieve this, ranging from statistics to machine learning to deep learning. To have a detailed idea on these things, refer to the following link https://www.datascience.com/blog/python-anomaly-detection