Finding the most successful network architecture is assumed to be the main difficulty in developing a neural network for solving a particular applied problem. However, this is only one of the problems to be solved. We should keep in mind that finding the optimal architecture and configuration for the neural network is not a gateway to success, because the network must be trained before the found solution can be used. Network training means finding such coupling coefficients for interneuron connections that allow us to prove the accuracy of work not lower than the required minimum. The coefficients’ values are found as a result of the training process. It is carried out by sending data samples—similar to those that would be analyzed in a real situation—to the input of the network, while adjusting the coupling coefficients to minimize signal processing errors. Let’s take a look at the steps to go through when developing a fresh neural network.
Building up a training base
At this point, the crucial task is to build up a high-quality sample database suitable for training. Depending on your specific task, the collection process can be very time-consuming, and it may also require the use of administrative facilities.
Let’s take an example. Suppose that we need to implement a high-accuracy system to determine if a photographed VIN (vehicle identification number) from the car body is forged (with the aim to legalize the stolen car) or genuine.
You will obviously need a database of photographs of VINs—both fake and real—to train the neural network for this task, since the neural network is to receive samples of both during the training process. Even though no insurmountable barriers are expected in procuring real numbers, only narrow specialists on this subject can provide photos of fake ones. It should be borne in mind that high-quality training requires a very large sample database that has to contain at least 1000 examples, plus about 20% of this selection as a testing set. The accuracy of the network is not measured using the examples on which it was trained, just like a student in an exam solves problems not fully similar to what he or she has solved when studying. As well, data augmentation techniques are used to artificially expand the training base. In examples of fake numbers, this can be several photographs of the same number, taken from different perspectives and under different lighting conditions. At the same time, it is important to understand that the network itself determines certain characteristics for itself during the training, with which it will subsequently process the input data; the network designer does not control this process. Therefore, when preparing the training database, it is necessary to take this fact into account and collect various examples of input data. Let’s go back to our VIN example. If all fake VINs are photographed on dark-colored cars only, the network will most likely focus on this fact during the training and, subsequently, make it difficult to detect fake ones on light-colored cars; false alarm ratio for dark cars will be higher. It is important to note that the training and test samples must be labeled, i.e. each example must be labeled with the correct answer. The labeling allows you to calculate the percentage of errors at each step during the training in order to adjust coupling coefficients, to determine whether the network has processed the test case correctly, to calculate the overall accuracy of the process. Thus, errors in labeling significantly affect the quality of training.
Representation of data for feeding it to the input of a neural network
After the training base has been prepared, the task arises of how to represent the data for feeding it to the input of the neural network. It should be understood that the neural network works only with numbers, so the data must be converted to a numeric representation. Although it is quite simple to submit an array of numeric pixel values for photographs, yet in the case of, for example, texts, the task is quite nontrivial, although effective solutions have been found and are successfully used.
Network architecture design
If the previous tasks have been completed, you can directly proceed to the development of network architecture. The following is to be kept in mind:
- A complex network, with a large number of training samples, will most likely take a long time to be trained: several hours or, at times, more than one day.
- In most cases, it is impossible to tell in advance which approach or set of parameters are the most effective. Therefore, it is necessary to set up hypotheses on architecture and parameters that can provide the required accuracy, and check them experimentally.
From this we can infer that the development velocity will significantly depend on the availability of hardware resources for the project—primarily the video card(s).
Neural network packing
The final stage of project development is to package the neural network into a form convenient for use, which is already a more traditional job for programmers and, perhaps, electronic engineers. It may be a client application, a server application, or a special device.
To sum up, it should be noted that the availability of a high-quality training base is the project’s foundation. With no such base, no network architecture will yield high accuracy results.