Detailed Description
A preferred embodiment of the present invention will now be described in detail with reference to fig. 1 to 12.
[ overview of CNN processing apparatus ]
The neural network processing apparatus according to the present invention is a CNN processing apparatus 1 that uses a CNN as a neural network.
The CNN processing apparatus 1 according to the embodiment is an arithmetic processing apparatus that: performing a multiply-sum operation of the input signal provided to the CNN and the weights of the CNN; outputting an operation result; and also converting the result of the multiply-sum operation by applying the ReLU to the operation result. The arithmetic processing includes: a product-sum operation (hereinafter sometimes also referred to as "convolution operation") of convolution layers in the intermediate layer of the CNN, and a conversion operation of converting an operation result of the convolution operation based on a predetermined condition. Note that, as an example of "conversion", an example of applying ReLU to the operation result of the convolution operation will be described below.
The CNN processing apparatus 1 performs convolution operation of the input signal and the weight, and obtains the output of one convolution layer by applying ReLU to the operation result.
For convenience of description, it is assumed that an operation result calculated by applying ReLU to a result of a product-sum operation of convolution layers is used as an input signal of a next convolution layer. The CNN processing apparatus 1 repeatedly performs the product-sum operation and the conversion operation of the input signal and the weight, thereby performing the product-sum operation and the conversion processing as many times as the number of convolution layers of the CNN model set in advance.
[ functional Block of CNN processing apparatus ]
The CNN processing apparatus 1 includes an input buffer (first memory) 10, a weight buffer (second memory) 11, a convolution operation unit (operation unit) 12, an operation result buffer 13, a processing unit 14, an output buffer 15, and a storage unit (third memory) 16.
The input buffer 10 is a memory that stores the input signal supplied to the CNN. More specifically, the input buffer 10 is implemented by a main storage device 103 to be described later, and image data or the like supplied from the outside is stored in the input buffer 10. The input signal supplied to the input buffer 10 may be image data that has undergone preprocessing in advance. Examples of preprocessing are monochrome conversion, contrast adjustment, and brightness adjustment. The input signal may be reduced so that it has a bit depth set according to the CNN model set in advance in the CNN processing apparatus 1.
As for the values of the input signal supplied to the input buffer 10, for example, values including a decimal point and represented by an array of floating point numbers of 32-bit or 16-bit precision, or values obtained by reducing these values to a preset number-of-bits expression are used.
The weight buffer 11 is a memory that stores the weight of CNN. More specifically, the weight buffer 11 is realized by a main storage device 103 to be described later, and the weight parameter of the CNN stored in the storage unit 16 or a server (not shown) installed outside the CNN processing apparatus 1 is loaded into the weight buffer 11. In this embodiment, as for the value of the weight, a value including a decimal point and represented by an array of floating point numbers of 32-bit or 16-bit precision, or a value obtained by reducing these values to a preset number-of-bits expression is used.
The convolution operation unit 12 performs convolution operation of CNN including product-sum operation of the input signal stored in the input buffer 10 and the weight stored in the weight buffer 11. More specifically, the convolution operation unit 12 reads out the input signal and the weight from the input buffer 10 and the weight buffer 11, respectively, and performs convolution operation according to the convolution layer forming the CNN model set in advance in the CNN processing apparatus 1. The operation result output from the convolution operation unit 12 is supplied to the operation result buffer 13.
The operation result buffer 13 buffers the result of the convolution operation by the convolution operation unit 12.
The processing unit 14 refers to the table 160 stored in the storage unit 16, and outputs a result of performing conversion and quantization processing (hereinafter sometimes also referred to as "conversion-quantization processing") on the result of the convolution operation read out from the operation result buffer 13. More specifically, the processing unit 14 reads out the convolution operation result stored in the operation result buffer 13, and acquires and outputs a value corresponding to the input of the conversion-quantization process by referring to the table 160 storing the input/output relationship of the conversion-quantization process.
The conversion of the result of the convolution operation includes, for example, application of an activation function such as ReLU or normalization using BN or the like, and refers to converting the operation result of the convolution operation based on a predetermined condition. The activation function determines the result of the convolution operation.
The ReLU applied to the result of the convolution operation is a ramp function for converting it into 0 if the result of the convolution operation is a negative value or into a linear transformation value if the result of the convolution operation is a positive value. As described above, the input/output relationship of the processing such as the ReLU that converts the operation result of the convolution operation is determined in advance.
On the other hand, in order to reduce the operation load, a value obtained by converting the operation result of the convolution operation through ReLU or the like is quantized by reducing the bit precision. The quantization of data includes, for example, generally known fractional processing such as rounding, rounding up, rounding down, and rounding to the nearest even number, and refers to, for example, imposing a restriction by converting a value (for example, a value including a decimal point) obtained via the result of a ReLU conversion convolution operation into an integer.
The processing unit 14 refers to a table 160 in which, for example, the input of the ReLU (i.e., the result of the product-sum operation) and the value obtained by further quantizing the output of the ReLU are stored in association with each other. Therefore, the processing unit 14 can perform the conversion processing of the operation result of the convolution operation by the ReLU together with the quantization processing.
That is, the processing unit 14 acquires values obtained by two arithmetic processes (i.e., a conversion process by the result of convolution operation of the ReLU or the like and a quantization process by the reference table 160).
The output buffer 15 temporarily stores the output acquired by the processing unit 14.
The storage unit 16 includes a table 160. The storage unit 16 stores the output from the processing unit 14, which is temporarily stored in the output buffer 15.
The table 160 stores inputs and outputs of the transform-quantization process in association with each other. More specifically, the table 160 stores data in which an input of a predetermined conversion process such as a ReLU and an output obtained by quantizing a value converted by the ReLU, which is performed by a preset fraction process, are associated with each other.
[ hardware arrangement of CNN processing apparatus ]
An example of the hardware arrangement of the CNN processing apparatus 1 having the above-described functions will be described next with reference to the block diagram of fig. 2.
As shown in fig. 2, the CNN processing apparatus 1 may be realized by, for example, a computer including: a processor 102, a main storage device 103, a communication interface 104, a secondary storage device 105, and an input/output device 106, which are connected via a bus 101, and a program configured to control these hardware resources.
Programs to be used by the processor 102 to perform various controls and operations are stored in advance in the main storage device 103. The functions of the CNN processing apparatus 1 including the convolution operation unit 12 and the processing unit 14 shown in fig. 1 are realized by the processor 102 and the main storage device 103.
The input buffer 10, the weight buffer 11, the operation result buffer 13, and the output buffer 15 described with reference to fig. 1 are implemented by the main storage device 103.
The communication interface 104 is an interface circuit configured to perform communication with each external electronic device via the communication network NW. Input signals such as image data and weights to be used by the CNN processing apparatus 1 may be received from an external server or the like via the communication interface 104.
The storage device 105 is formed by a readable/writable storage medium configured to read/write various information such as programs and data from/to the storage medium and a drive device. In the secondary storage device 105, a hard disk such as a flash memory or a semiconductor memory may be used as a storage medium.
The secondary storage device 105 includes: a storage area configured to store input data and weights acquired from the outside, and a program storage area configured to store a program used by the CNN processing apparatus 1 to perform arithmetic processing such as convolution operation of the CNN. The storage unit 16 described with reference to fig. 1 is implemented by the secondary storage device 105. Also, for example, secondary storage device 105 may include a backup area configured to backup the above-described data or programs.
The input/output device 106 is formed by an I/O terminal that inputs or outputs a signal from or to an external device. A display device (not shown) may be provided to display the operation result output by the CNN processing apparatus 1 via the input/output device 106.
The program stored in the program storage area of the secondary storage device 105 may be a program configured to execute processes temporally consecutively in accordance with the order of the CNN processing method to be described in this specification, or may be a program configured to execute processes in parallel or at necessary timing such as the timing of calling. The program may be processed by one computer, or may be processed distributively by a plurality of computers.
[ CNN treatment method ]
An outline of the operation of the CNN processing apparatus 1 having the above-described arrangement will be described next with reference to fig. 3. First, the input buffer 10 and the weight buffer 11 temporarily store the input signal a and the weight U, respectively, supplied from a server or the like installed outside the CNN processing apparatus 1 (step S1 and step S2).
The input signal a is vectorized input image data and has dimensions in the vertical direction and the horizontal direction. The value of the input signal a is represented by a multi-bit value, for example comprising a decimal point. On the other hand, the weight U is an element of the kernel represented by the matrix, and is a parameter adjusted, updated, and finally decided by learning of the CNN. The value of the weight U has dimensions in the vertical direction and the horizontal direction, and each element is represented by a multi-bit value including, for example, a decimal point.
Next, the convolution operation unit 12 reads out the input signal a and the weight U from the input buffer 10 and the weight buffer 11, respectively, and performs convolution operation (step S3). More specifically, the convolution operation unit 12 multiplies a vector of the input signal a by a matrix of weights U.
More specifically, the convolution operation unit 12 slides the window of the preset filter of the CNN by a predetermined step. The convolution operation unit 12 multiplies the element of the weight U by the corresponding element of the input signal a at each position of the filter, and obtains the sum of the products.
The convolution operation unit 12 stores the operation result X of the convolution operation of the product-sum operation in the corresponding position of the operation result buffer 13 (step S4).
After that, the processing unit 14 reads out the result X of the convolution operation from the operation result buffer 13, and acquires the output Y of the conversion-quantization process of the operation result X by referring to the table 160 in the storage unit 16 (step S5). The acquired output Y is temporarily stored in the output buffer 15, read out by the processor 102, and output (step S6).
Note that well-known pooling processing may be performed as necessary for the output Y acquired by the processing unit 14 (see non-patent document 2). The output Y obtained in step S6 is input to a full connection layer (not shown) forming a subsequent classifier, and the image data of the input signal a is discriminated.
As described above, the CNN processing apparatus 1 according to the present invention stores the table 160 configured to associate the input of the conversion process such as the ReLU and the output obtained by quantizing the value converted by the ReLU with each other in the storage unit 16. The CNN processing apparatus 1 acquires an output of the conversion-quantization process corresponding to the operation result of the convolution operation by referring to the table 160. Therefore, the calculation load of the CNN processing apparatus 1 can be reduced as compared with the case where the conversion processing such as ReLU and the quantization processing for the converted value are separately executed. Also, as a result, the signal processing of the CNN can be speeded up.
[ first embodiment ]
As a detailed example of the CNN processing apparatus 1 having the above-described arrangement, the CNN processing apparatus 1 according to the first embodiment of the present invention will be described next. Fig. 4 is a block diagram showing the functional arrangement of the processing unit 14 of the CNN processing apparatus 1. The remaining components of the CNN processing apparatus 1 are the same as those described with reference to fig. 1. Fig. 5 is a view for explaining a data structure of the table 160. Fig. 6 is a view for explaining the conversion-quantization process of the processing unit 14.
[ function blocks of processing units ]
The processing unit 14 includes an input determination unit 140 and an output acquisition unit 141. The input determination unit 140 reads out the operation result of the convolution operation from the operation result buffer 13, compares the operation result with each preset input section of the conversion-quantization process, and determines an input section including the operation result of the convolution operation (i.e., the value of the input of the conversion-quantization process).
The table 160 stored in the storage unit 16 stores data in which each of input intervals obtained by dividing the input of the conversion-quantization process into a plurality of continuous intervals and values obtained by quantizing values converted by the ReLU are associated with each other.
More specifically, as shown in fig. 5, the table 160 stores data in which, for example, the input of the conversion-quantization process is divided into five sections, and each input section and the output of the conversion-quantization process are associated with each other. For example, if the operation result X of the convolution operation is "1", the input determination unit 140 determines that the operation result X corresponds to the input section 1 ≦ X < 2 by comparison with each input section.
The output acquisition unit 141 acquires the output Y of the conversion-quantization process corresponding to the input section according to the determination result of the input determination unit 140 by referring to the table 160 stored in the storage unit 16.
More specifically, as shown in fig. 6, the output acquisition unit 141 acquires the output Y of the conversion-quantization process corresponding to one of the five input sections determined by the input determination unit 140. In the example of the conversion-quantization process shown in fig. 6, two arithmetic processes (i.e., a conversion process by the ReLU and a quantization process by a preset fraction process) are executed together.
[ CNN treatment method ]
The operation of the CNN processing apparatus 1 including the above-described input determination unit 140 according to this embodiment will be described next with reference to fig. 3. Note that, in the CNN processing method according to this embodiment, steps S1 to S4 are the same as the processing described in the outline of the CNN processing method.
First, the input buffer 10 and the weight buffer 11 temporarily store the input signal a and the weight U, respectively, supplied from a server or the like installed outside the CNN processing apparatus 1 (step S1 and step S2).
Next, the convolution operation unit 12 reads out the input signal a and the weight U from the input buffer 10 and the weight buffer 11, respectively, and performs convolution operation (step S3). More specifically, the convolution operation unit 12 multiplies a vector of the input signal a by a matrix of weights U.
Next, the convolution operation unit 12 stores the operation result X of the convolution operation of the product-sum operation in the corresponding position of the operation result buffer 13 (step S4).
After that, the processing unit 14 reads out the result X of the convolution operation from the operation result buffer 13, and acquires the output Y obtained by the conversion-quantization process of the operation result X by referring to the table 160 in the storage unit 16 (step S5). More specifically, for the result X of the convolution operation (i.e., the input X of the conversion-quantization process), the input determination unit 140 performs comparison of values for each preset input section of the conversion-quantization process, and determines an input section including the value of the operation result X. After that, the output acquisition unit 141 acquires the output Y of the conversion-quantization process corresponding to the input section determined by the input determination unit 140 by referring to the table 160.
The acquired output Y is temporarily stored in the output buffer 15, read out by the processor 102, and output (step S6).
As described above, according to the CNN processing device 1 of the first embodiment, it is determined which of a plurality of consecutive input sections of the conversion-quantization process includes the operation result of the convolution operation (i.e., the value of the input of the conversion-quantization process), and the output of the conversion-quantization process is acquired by referring to the table 160 based on the determination result.
Therefore, since the conversion processing such as the ReLU and the quantization processing of the operation result of the convolution operation can be performed by determining the input section and the reference table 160, it is possible to reduce the operation load of the CNN and suppress the reduction of the processing speed even if embedded hardware is used.
In addition, a table 160 representing the input/output relationship of the conversion-quantization process is stored in a storage area of hardware such as the secondary storage device 105. For this reason, by replacing the values in the table 160 according to the form of the neural network, the neural network having a desired processing function can be implemented more flexibly by hardware.
[ second embodiment ]
Next, a second embodiment of the present invention will be described. Note that in the following description, the same reference numerals as in the above-described first embodiment denote the same components, and the description thereof will be omitted.
In the first embodiment, the case has been described in which the processing unit 14 includes the input determination unit 140, and in the conversion-quantization processing, the input determination unit 140 compares the operation result of the convolution operation with a plurality of continuous input intervals. However, in the second embodiment, the processing unit 14 includes a threshold processing unit (first threshold processing unit) 142 that performs threshold processing for the input of the transform-quantization processing. The following will mainly describe components different from the first embodiment.
[ function blocks of processing units ]
The processing unit 14 includes an output acquisition unit 141 and a threshold processing unit 142.
The threshold processing unit 142 reads out the operation result of the convolution operation from the operation result buffer 13, and compares the operation result with a threshold value set in advance for the input of the conversion-quantization process.
As shown in fig. 8, the table 160A in the storage unit 16 according to the embodiment stores data in which, for example, five threshold values are set for the input of the conversion-quantization process and each threshold value and the output of the conversion-quantization process are associated with each other.
For example, the threshold processing unit 142 compares whether the operation result X of the convolution operation is smaller than the set threshold or equal to or larger than the threshold. More specifically, if the operation result X of the convolution operation is "1", the threshold processing unit 142 outputs a comparison result indicating that the operation result X ("1") is smaller than the set threshold "2" and equal to or larger than the threshold "1".
The output acquisition unit 141 acquires the output Y of the conversion-quantization process corresponding to the threshold value according to the input of the comparison result by referring to the table 160A based on the comparison result of the threshold value processing unit 142. The output acquired by the output acquisition unit 141 is temporarily stored in the output buffer 15.
[ CNN treatment method ]
The operation of the CNN processing apparatus 1 including the above-described threshold processing unit 142 according to this embodiment will be described next with reference to fig. 9. Note that, in the CNN processing method according to this embodiment, steps S1 to S4 are the same as the processing described in the outline of the CNN processing method shown in fig. 3.
First, the input buffer 10 and the weight buffer 11 temporarily store the input signal a and the weight U, respectively, supplied from a server or the like installed outside the CNN processing apparatus 1 (step S1 and step S2).
Next, the convolution operation unit 12 reads out the input signal a and the weight U from the input buffer 10 and the weight buffer 11, respectively, and performs convolution operation (step S3). More specifically, the convolution operation unit 12 multiplies a vector of the input signal a by a matrix of weights U.
Next, the convolution operation unit 12 stores the operation result X of the convolution operation of the product-sum operation in the corresponding position of the operation result buffer 13 (step S4).
After that, the processing unit 14 reads out the result X of the convolution operation from the operation result buffer 13, and acquires the output Y obtained by the conversion-quantization process of the operation result X by referring to the table 160A in the storage unit 16 (step S5A). More specifically, the threshold processing unit 142 compares the result X of the convolution operation with a threshold value set in advance for the input of the conversion-quantization process, and outputs a threshold value smaller than the operation result X. After that, the output acquisition unit 141 acquires the output Y corresponding to the input threshold value output by the threshold processing unit 142 by referring to the table 160A.
The acquired output Y is temporarily stored in the output buffer 15, read out by the processor 102, and output (step S6).
As described above, according to the CNN processing apparatus 1 of the second embodiment, the threshold value set in advance for the input of the conversion-quantization process and the table 160A configured to associate the threshold value and the output of the conversion-quantization process with each other are stored in the storage unit 16. In addition, the output acquisition unit 141 acquires the output of the conversion-quantization processing based on the comparison result of the threshold value and the operation result of the convolution operation by referring to the table 160A.
For this reason, conversion processing by ReLU or the like for the operation result of the convolution operation and quantization processing of the operation result of the convolution operation can be performed by threshold processing. Therefore, if the output of the conversion-quantization process monotonically increases or monotonically decreases, the output of the conversion-quantization process can be uniquely decided by comparison with a threshold value.
In particular, when the CNN processing apparatus 1 is realized by predetermined hardware, the comparison using the input section requires sequential processing, but the comparison between the input and the threshold value may be completed at once. Therefore, according to the CNN processing apparatus 1, even if embedded hardware is used, the arithmetic processing of CNN can be performed at a higher speed.
[ third embodiment ]
Next, a third embodiment of the present invention will be described. Note that in the following description, the same reference numerals as in the above-described first and second embodiments denote the same components, and the description thereof will be omitted.
In the second embodiment, the case has been described in which, if the output of the conversion-quantization process monotonically increases or monotonically decreases, the threshold processing unit 142 performs comparison with a threshold processing unit that is set in advance for the input of the conversion-quantization process. However, in the third embodiment, based on the division information for identifying the input section in which the output of the conversion-quantization process monotonically increases and the input section in which the output of the conversion-quantization process monotonically decreases, the threshold processing is performed only in the input section to which the value of the input of the conversion-quantization process belongs. The following will mainly describe components different from the first embodiment and the second embodiment.
[ function blocks of processing units ]
The processing unit 14 includes an input determination unit 140, an output acquisition unit 141, and a threshold processing unit 142 (second threshold processing unit).
The input determination unit 140 determines an input section of the conversion-quantization process to which the operation result X of the convolution operation of the operation unit belongs, based on division information for identifying an input section in which the output of the conversion-quantization process monotonically increases and an input section in which the output of the conversion-quantization process monotonically decreases.
The threshold processing unit 142 compares the operation result X of the convolution operation unit 12 with a plurality of thresholds set in advance for each input of the conversion-quantization process in the input section determined by the input determination unit 140, and outputs a threshold corresponding to the operation result X.
The output acquisition unit 141 acquires the output Y of the conversion-quantization process corresponding to the threshold value output by the threshold value processing unit 142 by referring to the table 160B stored in the storage unit 16.
The storage unit 16 stores the table 160B. As shown in fig. 11, the table 160B stores data in which division information for identifying an input section in which the output of the conversion-quantization process monotonically increases and an input section in which the output of the conversion-quantization process monotonically decreases, a plurality of threshold values set in advance for each input of the conversion-quantization process, and outputs of the conversion-quantization process corresponding to the plurality of threshold values are associated with each other, respectively.
The division information includes, for example, information representing the vertices of the monotone increasing and monotone decreasing switches in the case of an output obtained by further quantizing the operation result of the convolution operation having undergone the conversion processing such as the activation function, formed of a monotone increasing section and a monotone decreasing section as the quadratic function.
As shown in the example of fig. 11, in the input/output relationship of the conversion-quantization process, the monotonous increase and monotonous decrease of the output Y are converted at the input X ═ 6.
In the example of fig. 11, for example, it is assumed that the operation result X (input X) of the convolution operation is smaller than "6" (X < 6). In this case, the input determination unit 140 determines that the input X of the conversion-quantization process belongs to an input section in which the output monotonically increases.
[ CNN treatment method ]
The operation of the CNN processing apparatus 1 having the above-described arrangement according to this embodiment will be described next with reference to fig. 12. Note that, in the CNN processing method according to this embodiment, steps S1 to S4 are the same as the processing described in the outline of the CNN processing method shown in fig. 3.
First, the input buffer 10 and the weight buffer 11 temporarily store the input signal a and the weight U, respectively, supplied from a server or the like installed outside the CNN processing apparatus 1 (step S1 and step S2).
Next, the convolution operation unit 12 reads out the input signal a and the weight U from the input buffer 10 and the weight buffer 11, respectively, and performs convolution operation (step S3). More specifically, the convolution operation unit 12 multiplies a vector of the input signal a by a matrix of weights U.
Next, the convolution operation unit 12 stores the operation result X of the convolution operation of the product-sum operation in the corresponding position of the operation result buffer 13 (step S4).
After that, the processing unit 14 reads out the result X of the convolution operation from the operation result buffer 13, and acquires the output Y obtained by the conversion-quantization process of the operation result X by referring to the table 160B in the storage unit 16 (step S5B).
More specifically, the input determination unit 140 determines an input section to which the input X of the conversion-quantization process (i.e., the operation result X of the convolution operation) belongs, based on the division information for identifying the input section in which the output of the conversion-quantization process monotonically increases and the input section in which the output of the conversion-quantization process monotonically decreases.
After that, the threshold processing unit 142 compares the operation result X (input X) of the convolution operation with the threshold value set in advance for the input X of the conversion-quantization process in the input section determined by the input determination unit 140, and outputs the threshold value according to the comparison result. After that, the output acquisition unit 141 acquires the output Y of the conversion-quantization process corresponding to the threshold value output by the threshold value processing unit 142 by referring to the table 160B.
The acquired output Y is temporarily stored in the output buffer 15, read out by the processor 102, and output (step S6).
As described above, according to the CNN processing apparatus 1 of the third embodiment, the section to which the input X of the conversion-quantization process belongs is determined based on the division information for identifying the input/output section in which the output Y of the conversion-quantization process monotonically increases and the input/output section in which the output of the conversion-quantization process monotonically decreases. Threshold processing for the input X of the conversion-quantization process is performed in the determined input section, and the output Y of the conversion-quantization process is acquired by referring to the table 160B.
For this reason, even if the input/output relationship of the conversion-quantization process is not monotonically increasing or monotonically decreasing, the threshold process is performed for each of the sections that monotonically increase and monotonically decrease. Therefore, the arithmetic processing of CNN can be performed at higher speed.
Embodiments of a neural network processing apparatus, a neural network processing method, and a neural network processing program according to the present invention have been described above. However, the present invention is not limited to the above-described embodiments, and various changes and modifications conceived by those skilled in the art may be made without departing from the scope of the appended claims.
For example, in the above-described embodiments, the CNN has been described as an example of a neural network. However, the neural network employed by the neural network processing device is not limited to the CNN.
It is noted that the various functional blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented with a general purpose processor, a GPU, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or a combination of some of the above devices designed to perform the functions described herein.
A microprocessor may be used as a general purpose processor. Rather, a processor, controller, microcontroller, or state machine based on convolution techniques may also be used. A processor may also be implemented as a combination of, for example, a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other configuration of computing device.
Description of reference numerals
1. CNN processing apparatus, 10, input buffer, 11, weight buffer, 12, convolution operation unit, 13, operation result buffer, 14, processing unit, 15, output buffer, 16, storage unit, 101, bus, 102, processor, 103, main storage device, 104, communication interface, 105, auxiliary storage device, 106, input/output device, 160, table, NW, communication network, U, weight, a, input signal.