Machine learning in practice – from PyTorch model to Kubeflow in the cloud for BigData
Шрифт:
About the book
The book is structured like a textbook – from simple to complex. The reader will be able to:
* in the first three chapters, create the simplest neural network for image recognition and classification,
* in the following – to delve into the device and architecture for optimization,
* further expand the understanding of the company's ecosystem as a whole, in which neural networks operate, as its integral part,
and she interacts with and uses surrounding technologies,
* finish the study by deploying a full-scale production system in the full-cycle cloud.
Almost every chapter begins with the general information needed for the practical part that follows. In the practical part:
* demonstrates the process of preparing the environment, but more often free ready-made cloud services are used,
* demonstrates the writing process when with a parsing of the written and an overview of alternative solutions,
* analysis of the result and the formation of a vision of options for further development.
The book consists of sections:
* Introduction to Machine Learning. This is the only chapter without a practical part to get you started.
understanding the limits of their applicability, advantages over other methods and their general structure for beginners. Also produced
classification of neural networks according to the principles laid down in them, and the selection of a group, which will be discussed in the book.
* Basics for writing networks. It provides the basic knowledge necessary to write the first network in PyTorch, familiarity with the development environment
Jupyter in the Google Colab cloud service, which is a simplified version of the Google ML cloud platform, running the code in it and using the PyTorch framework for writing neural networks.
* We create the first network. The author demonstrates for the reader's practice how to create a simple neural network on PyTorch in
Colab with a detailed analysis of the written code, training it on the MNIST image dataset and launch it.
* Improving the recognition of the neural network on complex images. Here the author demonstrates to the reader not practice
training and prediction of neural networks for color pictures, methods to improve the quality of network predictions. Understands in detail
device, pitfalls in writing and training effective neural networks.
* Modern architectures of neural networks. The architectural principles used in modern neural networks for
improving the quality of predictions. An analysis of various neural network architectures that have made a breakthrough in the quality of training is given.
and brought approaches. Various architectural universal quality enhancement patterns such as ensemble are discussed.
* Using pre-trained networks. The use of already trained layers in their networks is demonstrated.
* ML scaling. Examples of preparing the environment for launching them in a cloud infrastructure are given.
* Receiving data from BigData. It tells how you can connect to various sources from Jupyter
data, including BigData, for training models.
* Big data preparation. This section describes BigData technologies such as Hadoop and Spark, which
are data sources for training models.
* ML in an industrial environment. This section covers systems such as Kubeflow and MLflow. The reader can try to expand
platform, set up the learning process and run the model in the cloud, as is done in companies.
Introduction Machine Learning
Artificial intelligence is a field at the intersection of many sciences. One of the ways to achieve it is machine learning, when we supply it with data and, on its basis, we learn how to find solutions and identify patterns and data that were not there before. For training, statistical algorithms can be used, for example, in the R language, depth-first search in Prolog or breadth-first search in Refal, as well as adaptive structures – neural networks. Neural networks, depending on the tasks, will hide according to different principles, have a structure and learn in different ways. Recently, the greatest breakthrough has been received by neural networks of data representation (Representation learning), which are engaged in identifying patterns in information, since they cannot remember the information itself due to its size. Deep neural networks with many levels of features give great effects, features at subsequent levels are built on the basis of features from previous levels, which will be discussed in this chapter.
Machine learning (ML) refers to the adaptation of the transformation of input data into outputs, depending on the history of decisions. This class of problems is solved either in an algorithmic way, or with the help of neural networks, and we will talk about where and in what situation it is better to apply what solution. For example, let's take uppercase numbers from zero to nine, which we will compare with printed ones. If the uppercase letters exactly fall into the contour, then everything is simple, we just need to go through the contours of the printed ones and get a suitable option. Such a task is not relevant to machine learning tasks. Now let's complicate the task – our numbers don't exactly match the pattern. If the uppercase numbers do not fit a little into the contour, we just find some kind of deviation. And this is where the difficulty arises when categorizing an uppercase number into zero and nine, when the size of the tail separates the careless spelling of zero from nine. Another point in the categorization of eight and nine. So, if the tip is bent, this is ten, and if it is bent and touches, then it is eight. To solve such a situation, you need to divide the figure into areas and depending on and assign them different coefficients. So, the connection of the tail of the lower part has a very high value than the shape of the circles themselves in the classification into eights and nines. Statistical data on a pre-given sample of the correspondence of figures to eights and nines will help to determine, where the researcher will be able to determine when it is already possible to calculate the lower ring closed and talk about the correspondence of the figure eight, and when not, talk about the correspondence of the nine. But we can programmatically divide the numbers into sectors and assign coefficients to them.
Another difficulty may be that the digit may not be in the observed area, but in an arbitrary one, for example, in a corner. To analyze the digit itself, we need to move the analyzing window to the place where the digit is. For simplicity, for now, we will assume that the dimensions of the analyzing window are equal to the dimensions of the figure under study. To solve this problem, an analyzing layer is put in front of the network, which forms a map of finding the numbers. The task of this layer is to determine the location of the number in the picture. Let's take a black image on a white sheet for simplicity. We need to go through the digit analyzer line by line throughout the sheet and determine the locations. Let us take the black area on the indicator as an indicator. After passing over a piece of paper and determining the area, we get a matrix with the numbers of the areas in black. Where there are more areas of black color, in that place the figure fits into the indicator as much as possible. Converting an image into a matrix of areas is called a convolution operation, and if it is performed by a neural layer, it is called a convolution layer. Neural networks that have a Conv Layers are called Convolutional Neural Networks (CNNs). Such networks are used in image recognition, now they have been adapted for speech recognition. The principle of operation was borrowed from the biological optic nerve.
If the image is not only in the derived place, but there are other images, then to determine and it will take several layers of the neural network to perform the determination, the result of which will also be a map of the location of the digit, but making a decision about its location needs to be identified. Thus, the first layer will have the number of neurons displaying maps, which horizontally and vertically will correspond to the width and height of the minute leaf, corresponding to the width and height of the analyzing screen, divided by the step of shifting the analyzing window. The dimension of the second layer in neurons is equal to the dimension of the analyzed window in order to be able to identify the digit. If we make connections from all the neurons of the search layer to the analysis window layer, then the network at the output will get a set of images poured together. The next layer will be measured by the number of analyzed digit elements. For example, a figure can be represented as an incompletely filled eight, then there will be seven segments to be painted. All neurons in the convolutional layer will be connected to all neurons in the digit segment analysis layer. The task of the neuron of this layer is to be connected with the neurons of the previous one, responsible for this segment and to give the result of the presence or absence of this segment in the digital. The next layer has ten neurons, corresponding to numbers from zero to nine. In total, its neurons are connected to the previous layer and are activated when receiving signals from them. So, the neuron branching for the number one will be activated if it receives information that the two extreme right sectors will be active and all the others are not active.