Machine Learning (ML) is the part of Artificial Intelligence (AI) that make the systems
automatically learn and improve from experiences without being explicitly programmed.
ML became popular in the 90s thanks two the increasing computer power and the growth
of data availability. Nowadays, machine learning is shaping and simplifying the way we
live, work, travel, and communicate. Google, Amazon, and Netflix are only some of the
big companies that are exploiting this technique for image and speech recognition, natural
language processing (NLP), spam detection and filtering, and advertising.
Deep Neural Networks have shown great success in various applications because of their
ability to progressively extract higher-level features from raw input. There exists a variety
of models and architectures that can be applied to different problems.
The NLP field improved substantially thanks to Deep Learning. In particular, Recurrent
and Convolutional Neural Networks were discovered to be very effective for text data.
These models require big quantities of data to be trained effectively. However, usually
limited labeled datasets are available for many tasks and we need to exploit them in the
best way to achieve good results and avoid overfitting in the training process. Transfer
Learning and Multi-task learning have recently been applied to NLP tasks and not only to
images as before, thanks to their ability to work with limited labeled data. They pushed
the state-of-the-art performance in various tasks and a famous example is the case of the
BERT language model.
Motivated also by this advantage, researchers started to investigate the application of NLP
and Deep Learning techniques in different fields. One of them is the software develop-
ment domain that involves problems with source code and not only natural language
texts. Nowadays, it is an important field because almost every aspect of life like health-
care, transportation, and entertainment, depends on reliable high-quality software. Un-
fortunately, developing new software is costly and it is hard work for engineers. There-
fore, there is a high demand for software tools that could help this development process
in terms of speed, costs and reliability and one direction of improvement consists of the
use of Machine Learning techniques. There are many academic researchers and indus-
trial practitioners like DeepMind, Facebook, Google and Microsoft that started to integrate
Deep Learning solutions in their software tasks motivated by the success of deep learning
in data mining and pattern recognition