Teaching AI to play Snake with Genetic Algorithm

Supervised learning, unsupervised learning and reinforcement learning are commonly recognized as the three main ways to train machine learning models. We can have a fourth one if we include the union of the first two, that is, semi-supervised learning. However, in this post we are going to introduce an alternative algorithm that can be used to both train and optimize neural network models: Genetic Algorithm. … Continue reading Teaching AI to play Snake with Genetic Algorithm

Donut: unsupervised anomaly detection using VAE

In this post, we are going to use Donut, an unsupervised anomaly detection algorithm based on Variational Autoencoder which can work when the data is unlabeled but can also take advantage of the occasional labels when available. In particular, we are going to focus on detecting anomalies on time series KPIs (key performance indicators) which are time-series data, measuring metrics such as the number of … Continue reading Donut: unsupervised anomaly detection using VAE

GAN: Generative Adversarial Networks

Imagine a scenario where a forger attempts to produce fake currencies and the policeman has to try to distinguish those fake currencies from the real ones. At the beginning, both don’t have much experience, the forger will just come with a piece of paper with a dollar bill scribbled on it. Obviously, is that is a fake currency, but the unexperienced policeman still will struggle … Continue reading GAN: Generative Adversarial Networks

Generating handwritten digits with VAE and Zhusuan

In the last post we talked about Variational Auteoncoders (VAE), powerful generative machine learning model able to generate new data based on previously seen samples. In this post we are going to implement one and use it to generate handritten digits. Will you recognize which digits have been written by a human and which ones have been written by a machine? We are going to … Continue reading Generating handwritten digits with VAE and Zhusuan

VAE: Variational Autoencoder

Here are some digits, first of all, I ask you “Can you recognize them?” Maybe not all of them, some digits are actually blurred while others are quite ambiguous. Now let me show you another set of digits. It sounds like someone wrote many “6”s, all of the are very similar, but not the same. The second question I want to propose now is “Have … Continue reading VAE: Variational Autoencoder

PCA: Principal Component Analysis

PCA (Principal Component Analysis) is an unsupervised machine learning algorithm used to reduce the dimensionality of the given data. It has first been invented by Karl Pearson (1901) and independently developed by Harold Hotelling (1933). Dimensionality reduction refers to the mapping of the original high-dimensional data onto a lower-dimensional space, thus reducing the risk of model overfitting and improving the generalization ability of the model … Continue reading PCA: Principal Component Analysis

Log analysis for anomaly detection

Anomaly detection plays an important role in the management of modern large-scale distributed systems. Logs are widely used for anomaly detection, recording system runtime information, and errors. Traditionally, operators have to go through the logs manually with keyword searching and rule matching. The increasing scale and complexity of modern systems, however, makes the volume of logs explode, which renders the infeasibility of manual inspection. To … Continue reading Log analysis for anomaly detection