WO2020044527A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
WO2020044527A1
WO2020044527A1 PCT/JP2018/032296 JP2018032296W WO2020044527A1 WO 2020044527 A1 WO2020044527 A1 WO 2020044527A1 JP 2018032296 W JP2018032296 W JP 2018032296W WO 2020044527 A1 WO2020044527 A1 WO 2020044527A1
Authority
WO
WIPO (PCT)
Prior art keywords
output
input
arithmetic circuit
image
channel
Prior art date
Application number
PCT/JP2018/032296
Other languages
English (en)
French (fr)
Inventor
雅啓 安本
松本 渉
Original Assignee
株式会社アラヤ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社アラヤ filed Critical 株式会社アラヤ
Priority to PCT/JP2018/032296 priority Critical patent/WO2020044527A1/ja
Publication of WO2020044527A1 publication Critical patent/WO2020044527A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis

Definitions

  • the present invention relates to an information processing apparatus that performs an operation of a neural network used for artificial intelligence, and more particularly to an information processing apparatus that can reduce the amount of operation when performing an operation of a neural network.
  • NN neural networks
  • DNN deep neural networks
  • CNN convolutional neural networks
  • CNN convolutional neural networks
  • Non-Patent Literature 1 discloses that the number of operations is usually divided by dividing the convolution operation, which performs operations collectively on three dimensions of height, width, and channel, into operations in the height and width directions and in the channel direction. Techniques for reducing emissions are described.
  • NNs such as DNNs and CNNs, which are widely used as conventional artificial intelligence functions, have a large amount of computation, prepare a large-scale server for computer resources, and use a graphic processing unit (hereinafter referred to as “GPU”). ) Or other additional units. For this reason, there is a problem in that it becomes expensive and a large amount of power is required when introducing intelligent equipment or mounting it on equipment.
  • GPU graphic processing unit
  • the present invention has been made in view of the above circumstances.
  • reducing the amount of computation of NN such as DNN and CNN computer resources can be significantly reduced, miniaturization and power consumption can be reduced, and It is an object to provide an information processing device that can be mounted on a device.
  • An information processing apparatus is an information processing apparatus including an arithmetic processing unit that realizes an artificial intelligence function by performing an operation of a neural network on input image data.
  • An arithmetic circuit for performing a product-sum calculation of an input vector and a weight matrix at each layer of the network, an input image temporary storage unit for inputting an image to the arithmetic circuit, and storing an output of the arithmetic circuit to calculate the next layer And an output image temporary storage unit for copying an image to the input image temporary storage unit.
  • the arithmetic circuit is an arithmetic circuit capable of responding to the maximum input channel of the input image data, the output channel of the output data, and the kernel size. It is characterized by the following.
  • the information processing apparatus is configured such that, regardless of which part of the arithmetic circuit is extracted, the combination of the product-sum calculation of the input vector and the weight matrix in each layer of the neural network is different for each output channel.
  • an arithmetic circuit in which arithmetic units are reduced is characterized.
  • the present invention since computer resources for realizing the artificial intelligence function can be significantly reduced, the space occupied by the computers, the price, and the power consumption can be reduced. Therefore, when the artificial intelligence function is installed in the device, it becomes possible to perform the operation of the neural network using a low-cost CPU, a general-purpose FPGA (field-programmable gate array) or an LSI, and it is compact and inexpensive. , Low power consumption, and high speed can be realized.
  • FIG. 11 is a diagram illustrating an example of a processing state of an arithmetic circuit that performs a conventional convolution operation when a network is not compressed in a convolution layer when a kernel having a height of 1 and a width of 1 is used in the CNN.
  • FIG. 4 is a diagram illustrating a processing state of the arithmetic circuit when the network is compressed according to the first embodiment of the present invention.
  • FIG. 7 is a diagram illustrating an example of a rule for determining a place of an unnecessary multiplication when compressing a network in the first embodiment of the present invention.
  • FIG. 11 is a diagram illustrating an example of a processing state of an arithmetic circuit that performs a conventional convolution operation when a network is not compressed in a convolution layer when a kernel having a height of 1 and a width of 1 is used in the CNN.
  • FIG. 4 is a diagram illustrating a processing state of the arithmetic circuit when the network is compressed according to the first embodiment of the
  • FIG. 11 is a diagram illustrating an example of a processing state of a conventional convolution operation circuit (an operation circuit that performs a convolution operation when using a kernel having a height of 3 and a width of 3) when a network is not compressed.
  • FIG. 11 is a diagram illustrating a processing state of an arithmetic circuit when a network is compressed according to the second embodiment of the present invention.
  • FIG. 14 is a diagram illustrating an example of a processing state when a compressed arithmetic circuit is reused when the number of input channels differs according to layers in the second embodiment of the present invention.
  • FIG. 11 is a diagram illustrating an example of a processing state of a conventional convolution operation circuit (an operation circuit that performs a convolution operation when using a kernel having a height of 3 and a width of 3) when a network is not compressed.
  • FIG. 11 is a diagram illustrating a processing state of an arithmetic circuit when a network is compressed according to the second embodiment of the present invention
  • FIG. 16 is a diagram illustrating an example of a processing state when a compressed arithmetic circuit is reused when the number of output channels differs according to layers in the second embodiment of the present invention.
  • FIG. 21 is a diagram illustrating a processing state in a case where a compressed arithmetic circuit is reused when a kernel size differs depending on a layer according to the third embodiment of the present invention. It is a figure showing the example of processing of the neural network which is applied to each embodiment of the present invention and consists of a plurality of convolutional layers.
  • FIG. 2 is a diagram illustrating an example of a functional configuration of an information processing device applied to each embodiment of the present invention. It is a figure showing the example of the structure of DNN.
  • FIG. 9 is a diagram illustrating an example of pre-training (performed for each layer) in a self-encoder. It is a figure showing an example of recognition of a handwritten numeral. It is a figure showing signs that a vector of an intermediate node of DNN is obtained.
  • FIG. 2 is a diagram illustrating an outline of a compression state of a network. It is a figure showing the outline of a division state.
  • This embodiment is an example applied to a CNN (Convolutional Neural Network).
  • the CNN is used, for example, in a case where image data is input and whether or not the image belongs to a certain category is output.
  • the CNN is not limited to this and is used for various other tasks.
  • CNNs are typically composed of multiple convolutional layers. Each convolution layer performs a plurality of convolution operations on images of a plurality of input channels and outputs a result. The output result is used as input for the next layer. After each convolution operation, it is also possible to apply a non-linear function.
  • FIG. 1 is a diagram illustrating a conventional processing configuration of an arithmetic circuit that performs a convolution operation when a network is not compressed in a certain convolution layer in the CNN.
  • the network described in this specification is a network in a neural network (NN), and when it is described that the network is compressed, it means that the number of operations is reduced.
  • the convolution operation in the CNN generally means a tensor (hereinafter, referred to as “kernel”) having three dimensions of a height K_h, a width K_w, and the number of channels C_in, which is cut out from an input image and has the same size as the kernel. It refers to an operation of multiplying pixel value tensors of an image by values having the same index and then summing the values.
  • the number of channels C_in here is, for example, three channels when each pixel is composed of three data of RGB.
  • An output image of one channel is obtained by a convolution operation by one kernel.
  • an output image of a plurality of channels can be obtained.
  • the input image 101 is an image having a height H, a width W, and the number of channels C_in. Each pixel of the image holds the value of that pixel (pixel value).
  • the output image 102 is an image having a height H, a width W, and the number of channels C_out. C_in and C_out may be the same or different.
  • the arithmetic circuit 103 receives pixel values of all channels at a certain pixel position in the input image 101 and adds pixel values of all channels at a certain pixel position in the output image 102. And output.
  • the arithmetic circuit 103 includes a plurality of multipliers (arithmetic units) 104-1 to 104-4, 105-1 to 105-4,..., 109-1 to 109-4.
  • the container is arranged in parallel.
  • the term “operation unit” is used as a concept including an adder, a subtractor, and the like that add and output the multiplication results of a plurality of multipliers.
  • a coefficient for multiplying a value input in advance is set.
  • Each of the multipliers 104-1 to 104-4, 105-1 to 105-4,..., 109-1 to 109-4 outputs a value obtained by multiplying the input pixel value by this coefficient.
  • the result of the multiplication is grouped for each multiplier of the corresponding output channel, a sum value in the group is calculated, and the sum value is output to the corresponding output channel.
  • a multiplier group 103a corresponding to the output channel 1 a multiplier group 103b corresponding to the output channel 2,..., And a multiplier group 103n corresponding to the output channel Cout are prepared. Is output.
  • An image 110 shown in the lower part of FIG. 1 illustrates a processing state in which all the pixel values of the output image are output by repeatedly performing the above-described convolution operation while scanning the position of the pixel of interest over the entire image. It is an image.
  • the pixel value at the upper left of the image is output for all output channels
  • the pixel value at the position shifted right by one from the upper left of the image is output for all output channels.
  • the processing configuration shown in FIG. 1 is replaced with a processing configuration obtained by compressing the network shown in FIG. 2, that is, a processing configuration in which the number of calculations is reduced. That is, the processing configuration shown in FIG. 2 shows a configuration when the network is compressed with respect to the processing configuration shown in FIG.
  • an input image 201 having the number of channels C_in, a height H, and a width W is input to an arithmetic circuit 203, and is output to multiplier groups 203a, 203b,.
  • An operation is performed to perform a convolution operation on the output image 202.
  • the arithmetic circuit 203 compresses the network so that some multiplication is not required as compared with the configuration shown in FIG. In the unnecessary multiplication, since the implementation of the multiplier is not required, the circuit scale required for implementing the CNN can be reduced.
  • the principle that the result calculated by the configuration shown in FIG. 2 can be properly calculated without deterioration compared to the configuration in which the network shown in FIG. 1 is not compressed will be described later with reference to FIG.
  • FIG. 3 shows rules for determining locations of unnecessary multipliers when compressing a network with the configuration shown in FIG. After grouping the multipliers for each output channel, necessary and unnecessary multiplications are defined for each group.
  • the necessary multiplication and unnecessary multiplication locations are defined so that the required multiplication locations are the product-sum of different combinations of the input data among a plurality of groups.
  • the arithmetic circuit 301 shown in the upper part of FIG. 3 shows a case where there is a product sum of overlapping combinations for input data.
  • the necessary places of each arithmetic unit in each group are shown.
  • 1 is set as a multiplication coefficient where a multiplier is required, and a multiplication coefficient 0 which does not use the multiplier is set where it is not required. Setting the multiplication coefficient 0 without use means that the corresponding multiplier is unnecessary.
  • four input data corresponding to each of the input channels 1 to 4 are x_1, x_2, x_3, and x_4.
  • the value of the output channel 1 is x_1 + x_2
  • the value of the output channel 2 is x_3 + x_4
  • the value of the output channel 3 is x_3 + x_4.
  • the value of the output channel 1 is x_1 + x_2 corresponding to the input channel 1 and the input channel 2.
  • the value of the output channel 2 is x_2 + x_3 corresponding to the input channel 2 and the input channel 3.
  • the value of the output channel 3 is x_3 + x_4 corresponding to the input channel 3 and the input channel 4.
  • the expression of each output channel is linearly independent, and there is no loss of information to be transmitted to the output channel. Therefore, it is possible to prevent the accuracy of the output result of the CNN from deteriorating.
  • FIG. 4 is a diagram showing another example of a conventional processing configuration of an arithmetic circuit that performs a convolution operation when a network is not compressed in a certain convolution layer, which is different from FIG.
  • the input image 401 is an image having a width W, a height H, and the number of channels C_in. Each pixel of the image holds the value of that pixel (pixel value).
  • the output image 402 is an image having a width W, a height H, and the number of channels C_out. The number of channels C_in of the input image 401 and the number of channels C_out of the output image 402 may be the same or different.
  • the arithmetic circuit 403 receives as input the pixel values of all the channels at 3 ⁇ 3 pixel positions including the periphery of a certain pixel of interest in the input image 401 and receives a certain 1 in the corresponding output image 402.
  • the pixel values of all channels at one pixel location are output. That is, the arithmetic circuit 403 has an arithmetic unit group 404a corresponding to the output channel 1, an arithmetic unit group 404b corresponding to the output channel 2,... 404n corresponding to the output channel Cout.
  • Each of the operation unit groups 404a to 404n includes a plurality of multipliers.
  • the computing unit group 404a includes multipliers 405-1 to 405-n.
  • the processing configuration shown in FIG. 4 is replaced with a processing configuration obtained by compressing the network shown in FIG. 5, that is, a processing configuration in which the number of calculations is reduced. That is, the processing configuration shown in FIG. 5 shows a configuration when the network is compressed with respect to the processing configuration shown in FIG.
  • the input image 501 is supplied to the arithmetic circuit 503 having a compressed processing configuration, and the output of each channel is obtained to obtain the output image 502.
  • the arithmetic circuit 503 includes a multiplier group 504a corresponding to the output channel 1, a multiplier group 504b corresponding to the output channel 2,..., And a multiplier group 504n corresponding to the output channel Cout.
  • the multiplier group 504a has multipliers 505-1, 505-2,..., 505-m (where m is a number smaller than the number n of the multipliers 405).
  • FIG. 6 shows an example of a detailed configuration of the arithmetic circuit 503 in FIG.
  • the example shown in FIG. 6 shows a method of reusing a compressed arithmetic circuit when the input channel C_in is different for each convolutional layer of the CNN.
  • a part of the arithmetic circuit used in the layer having the larger number of input channels is reused to perform the operation of the layer having the smaller number of input channels.
  • an example that can be done.
  • FIG. 6 shows a case where there are two types of layers, a case where the number of input channels is four and a case where the number of input channels is three.
  • the multiplier 505-1 corresponding to the input channel 1 and the multiplier 505-505 corresponding to the input channel 2 are used. 2 and the outputs of both multipliers 505-1 and 505-2 are summed to obtain the value of output channel 1.
  • the operation is performed by the multiplier 506-1 corresponding to the input channel 2 and the multiplier 506-2 corresponding to the input channel 3, and both multipliers 506-1 and 506- 2 to obtain the value of output channel 2.
  • the operation is performed by the multiplier 507-1 corresponding to the input channel 3 and the multiplier 507-2 corresponding to the input channel 4, and both multipliers 507-1 and 507- The two operation outputs are summed to obtain the value of output channel 3.
  • the operation corresponding to the output channel 1 and the operation corresponding to the output channel 2 are performed in the same way as the layer shown in the upper part of FIG. This is the same as in the case of the fourth layer.
  • the operation corresponding to the output channel 3 only the operation in the multiplier 507-1 corresponding to the input channel 3 is performed, and the value of the output channel 3 is obtained from the operation output of the multiplier 507-1. .
  • the multiplier 507-2 necessary for the case of the layer having four input channels is not used.
  • the operation in the case where the number of input channels is three can be performed using the same arithmetic circuit as that in the case where the number of input channels is four.
  • the locations of the required multipliers and the unnecessary multipliers are described in the case where all the multipliers included in the multiplier group are used and the case where only the top three multipliers are used. Are determined to be linearly independent.
  • the multipliers 505-1 and 505-2 of the group corresponding to the output channel 1 the multipliers 506-1 and 506-2 of the group corresponding to the output channel 2, and the output
  • the multipliers 507-1 and 507-2 of the group corresponding to the channel 3 the calculation resources can be reduced accordingly.
  • FIG. 7 is a configuration example in which the compressed arithmetic circuit is reused when the output channel C_out differs depending on each convolution layer of the CNN.
  • the upper side of FIG. 7 shows the case of a convolutional layer having four input channels and three output channels.
  • the convolutional layer shown on the upper side of FIG. 7 is the same as the convolutional layer shown on the upper side of FIG.
  • the lower side of FIG. 7 shows the case of a convolutional layer having four input channels and two output channels.
  • the operation corresponding to the output channel 1 the operation is performed by the multiplier 505-1 corresponding to the input channel 1 and the multiplier 505-2 corresponding to the input channel 2, and both multipliers 505-1 and 505 are operated. -2 are summed to obtain the value of output channel 1.
  • the operation corresponding to the output channel 2 the operation is performed by the multiplier 506-1 corresponding to the input channel 2 and the multiplier 506-2 corresponding to the input channel 3, and both multipliers 506-1 and 506- 2 to obtain the value of output channel 2.
  • FIG. 8 shows a configuration in which the compressed arithmetic circuit is reused when the kernel size differs depending on the layer.
  • the multipliers 601-1 to 601-5 corresponding to the eyes and the multiplier 601-6 corresponding to the second pixel of the input channel 2 are provided, and the outputs of the respective multipliers 601-1 to 601-6 are summed and output. An output corresponding to channel 1 is obtained.
  • Multipliers 602-6 and 602-7 are provided, and the outputs of the multipliers 602-1 to 602-7 are summed to obtain an output corresponding to the output channel 2.
  • multipliers 603-1 to 603-5 corresponding to the third to seventh pixels of the input channel 1 are provided as multiplier groups corresponding to the output channel 3, and the multipliers 603-1 to 603-5 of the respective multipliers 603-1 to 603-5 are provided. The outputs are summed to obtain an output corresponding to output channel 3.
  • a multiplier group corresponding to the output channel 1 corresponds to the first pixel of the input channel 1.
  • the output of the multiplier 601-1 is used as the output corresponding to the output channel 1 using only the multiplier 601-1.
  • a multiplier group corresponding to the output channel 2 only the multiplier 602-6 corresponding to the first pixel of the input channel 2 is used, and the output of the multiplier 602-6 is set as the output corresponding to the output channel 2.
  • Other multipliers (shown by broken lines) are disabled during reuse.
  • the locations of the necessary multipliers and the unnecessary multipliers are determined by using all the multipliers included in the multiplier group and by using only one out of nine multipliers. In both cases, it is determined that each group is linearly independent.
  • FIG. 9 shows an example of a processing procedure of the convolutional neural network described in the above embodiments.
  • a convolutional network is composed of several layers.
  • FIG. 9 illustrates an example of a network in which the number of channels of an image to be input is 3 and the number of channels of an image to be output is 128, which is a four-layer configuration of convolution layers 1, 2, 3, and 4.
  • the convolution layers 1, 2, 3, and 4 have kernel sizes of 3 ⁇ 3, 3 ⁇ 3, 3 ⁇ 3, and 1 ⁇ 1, respectively.
  • step S1 when an input image is provided as an input to the convolutional neural network (step S1), first, the convolutional layer 1 performs an operation using this as an input, and outputs a result (step S2).
  • the convolutional layer 1 receives a 3-channel image and outputs a 32-channel image.
  • the convolution layer 2 performs an operation using the image of 32 channels obtained by the convolution layer 1 as an input, and outputs the result (step S3).
  • the number of output channels of the convolutional layer 1 and the number of input channels of the convolutional layer 2 match.
  • the number of output channels is 64.
  • the convolutional layer 3 performs an operation using the image of 64 channels obtained by the convolutional layer 2 as an input, and outputs the result (step S4).
  • the number of output channels is 128.
  • the convolutional layer 4 performs an operation using the image of 128 channels obtained by the convolutional layer 3 as an input, and outputs the result (step S5).
  • the number of output channels is 128.
  • the result finally output by the convolutional layer 4 becomes the output of this convolutional neural network (step S5).
  • the maximum number of input channels is 128, the maximum number of output channels is 128, and the maximum kernel size is 3 ⁇ 3. Therefore, in the present embodiment, one arithmetic circuit corresponding to the maximum value of each parameter is created so that arithmetic can be performed in all convolutional layers, and then described with reference to FIGS. As described above, the arithmetic operation is performed without using a part of the multiplier at the time of the arithmetic operation of each convolutional layer.
  • FIG. 10 shows a configuration of an information processing apparatus that executes the convolutional neural network described in the above embodiments.
  • the information processing apparatus includes a storage unit 701, an input image temporary storage unit 702, a convolution operation circuit 703, and an output image temporary storage unit 704.
  • the storage unit 701 stores an image input to the convolutional neural network and an image output by the convolutional neural network.
  • the input image temporary storage unit 702 receives an image from the storage unit 701 immediately after starting the operation of the neural network, and transmits the image to the convolution operation circuit 703. In the course of the operation of the network, the contents of the output image temporary storage unit 704 are copied and stored, and transmitted to the convolution operation circuit 703.
  • the convolution operation circuit 703 calculates one convolution layer using the data received from the input image temporary storage unit 702 as an input, and stores the result in the output image temporary storage unit 704.
  • the output image temporary storage unit 704 stores the operation result of the convolution operation circuit 703.
  • the stored image is copied to the input image temporary storage unit 702.
  • the image stored in the input image temporary storage unit 702 is transmitted to the storage unit 701.
  • the information processing device illustrated in FIG. 10 is configured as a computer device including, for example, a CPU (Central Processing Unit) and its peripheral circuits (ROM, RAM, various interfaces, and the like), as well as a general-purpose FPGA, It can be composed of an LSI.
  • the convolution operation circuit 703 forms a circuit corresponding to the maximum value of the convolution layer parameter included in the network shown in FIG.
  • the storage unit 701 stores the input image of the network.
  • step S1 the input image stored in the storage unit 701 is copied to the input image temporary storage unit 702.
  • step S2 using this input image as an input, the convolution operation circuit 703 performs a convolution operation process corresponding to the convolution layer 1 using a part of the operation circuit 703, and stores the result in an output image temporary storage unit 704. To be stored.
  • the output image temporary storage unit 704 copies the image stored in step S2 to the input image temporary storage unit 702. Using the copied image as an input, the convolution operation circuit 704 performs a convolution operation process corresponding to the convolution layer 2 using a part of the operation circuit, and stores the result in the output image temporary storage unit 704.
  • step S5 the processing of the convolution layer 4 in step S5 is completed, the result is stored in the output image temporary storage unit 704, and in step S6, the stored image is copied to the storage unit 701, and the operation of the neural network is completed.
  • the computer resources for realizing the artificial intelligence function can be significantly reduced, the space occupied by the computer, the price, and the power consumption can be reduced. .
  • DNN performs pre-training by unsupervised learning using a stacked self-encoder before supervised learning for identification.
  • the purpose of this self-encoder is to acquire main information of a high-dimensional input signal and convert it to low-dimensional feature data.
  • Each layer performs learning so as to minimize the difference between the data restored using the self-encoder and the input data. This learning is performed from the lower layer to the upper layer using a gradient descent method, an error back propagation method, or the like for each layer.
  • x (l + 1) W (l)
  • x (l) a weight matrix Using From x (l + 1) by calculating Generate When training the self-encoder, By solving the optimization problem for When Is derived.
  • the length of the vector of x (l) be J (l) .
  • the self-encoder will reduce the dimension of data. That is, it can be regarded as a problem of restoring the original signal x (l) from the dimensionally compressed signal x (l + 1) using W (l) . In other words, it is only necessary that the weight matrix W (l) has a characteristic of restoring the original signal x (l) from the dimensionally compressed signal x (l + 1) .
  • the handwritten numeral "5" is represented by a vector x (1)
  • a dimensionally compressed vector x (2) obtained by multiplying a random matrix W (1) by the matrix is obtained. Get. Now, even if the state of the vector x (1) is unknown, the vector x (1) can be reproduced from the vector x ( 2) and the random matrix W (1) , and as a result, the handwritten numeral "5" can be reproduced. .
  • a technique that satisfies the randomness of the weight matrix can be considered other than a technique that randomly selects the components of the matrix.
  • a configuration method focusing on this point will be described.
  • a method of constructing a weight matrix showing this characteristic will be described below.
  • FIG. 14 shows a state in which a vector x (2) of the intermediate node is obtained by matrix calculation of the weight matrix W (1) and the input signal vector x (1) at this time.
  • Matrix with permutation or random permutation with respect to Is executed as follows.
  • the substitution means that the operation of exchanging the positions of arbitrary two elements of the matrix with each other is performed an arbitrary number of times.
  • a matrix of M ′ ⁇ N ′ 10 ⁇ 50 as shown on the right end of FIG. Is output.
  • This matrix Into a vector Is configured.
  • x (2) having a vector length of 500 is generated from the 10 ⁇ 50 matrix X (2) .
  • the operation of outputting the signal of the 500-dimensional intermediate node from the 784-dimensional input signal which is the same as the calculation using the 500 ⁇ 784 weight matrix W (1) , can be executed.
  • the permuted matrix By using the sum of matrices based on the combination of the above, characteristics close to a random matrix can be realized.
  • an input signal vector x (1) having a vector length of 9 and an output vector x (2) having a vector length of 6 is originally a 6 ⁇ 9 weight matrix W (1) .
  • W (1) For example Is calculated.
  • the weight is set in the range of w i, j ⁇ [-1,1].
  • the weight often takes a value of -1 or 1, which also causes a problem of a gradient disappearance problem in which the learning does not converge even in the learning process.
  • the present compression technique does not take the product sum of the components of each row of the weight matrix W (l) and all the elements of the vector x (l) , but takes the product sum of some of the elements and the combination of which the equations do not match.
  • W (l) a weight matrix with the number of rows compressed according to the compression ratio And divide W (l) for each reciprocal 1 / ⁇ of the compression ratio, as shown in equation (1).
  • Matrix with permutation or random permutation with respect to Is executed as shown in Expression (2).
  • superscripts (1) are omitted from matrix elements and vector elements.
  • the present invention provides at least a part of a network structure such as a DNN (Deep Neural Network: Deep Neural Network) and an RNN (Recurrent Neural Network: Recurrent Neural Network). It can be applied to various information processing apparatuses that perform arithmetic processing having. Further, the network compression method described with reference to FIGS. 11 to 16 is merely an example, and other network compression methods may be applied to the configuration of the information processing apparatus described in each embodiment.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Analysis (AREA)

Abstract

入力データに対してニューラルネットワークの演算を行うことで、人工知能機能を実現する演算処理部を備えた情報処理装置に適用される。演算処理部は、ニューラルネットワークの各層での入力ベクトルと重み行列との積和計算を行う際の、最大の入力チャネル、出力チャネル、およびカーネルサイズに対応できる演算回路と、演算回路に画像を入力する入力画像一時記憶部と、演算回路の出力を格納し、次の層の演算のために入力画像一時記憶部に画像をコピーする出力画像一時記憶部と、から構成する。

Description

情報処理装置
 本発明は、人工知能に用いるニューラルネットワークの演算を行う情報処理装置に関し、特にニューラルネットワークの演算を行う際の演算量を削減することができる情報処理装置に関する。
 ニューラルネットワーク(以下「NN」と称する)において特に認識性能や予測性能が高い、深い層構造をもつディープニューラルネットワーク(以下「DNN」と称する)、畳み込みニューラルネットワーク(以下「CNN」と称する)等はインターネットサービスやクラウド経由・機器搭載等の手段によりスマートフォン、自動車機器、家電機器、工場用機器、ロボット等へのアプリケーションとして提供されている。
 非特許文献1には、通常、高さ・幅・チャネルの3次元に対して一括して演算を行う畳み込み演算を、高さ・幅方向と、チャネル方向の演算に分離することで、演算回数を削減する技術が記載されている。
Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam., MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, https://arxiv.org/abs/1704.04861
 しかしながら、従来の人工知能機能の実現として多く採用されているDNNやCNN等のNNは、演算量が大きく、計算機資源に大規模なサーバを用意したり、グラフィックプロセッシングユニット(以下「GPU」と称する)等の追加のユニットを搭載したりする必要がある。このため、知能用設備の導入や機器への実装の際に高価になったり、大量の消費電力が必要になったりするという問題がある。
 本発明は上記事情に鑑みて成されたものであり、DNNやCNN等のNNの演算量を削減することで、計算機資源を大幅に削減し、小型化や低消費電力化を可能とし、汎用機器に搭載できる情報処理装置を提供することを目的とする。
 本発明の一つの側面の情報処理装置は、入力画像データに対してニューラルネットワークの演算を行うことで、人工知能機能を実現する演算処理部を備えた情報処理装置において、演算処理部は、ニューラルネットワークの各層での入力ベクトルと重み行列との積和計算を行う演算回路と、演算回路に画像を入力する入力画像一時記憶部と、演算回路の出力を格納し、次の層の演算のために入力画像一時記憶部に画像をコピーする出力画像一時記憶部とから構成され、演算回路は、入力画像データの最大の入力チャネル、出力データの出力チャネル、およびカーネルサイズに対応できる演算回路としたことを特徴とする。
 また、本発明の他の側面の情報処理装置は、演算回路のどの一部分を抽出しても、ニューラルネットワークの各層での入力ベクトルと重み行列との積和計算の組み合わせの形が、出力チャネルごとにすべて異なるように、演算器を削減した演算回路としたことを特徴とする。
 本発明によれば、人工知能機能を実現する計算機資源を大幅に削減できるため、計算機に占有されるスペースや価格、消費電力を削減することができる。したがって、人工知能機能を機器に搭載する際に、低価格のCPUや汎用のFPGA(field-programable gate array)やLSIを使用してニューラルネットワークの演算を行うことが可能になり、小型、低価格化、低消費電力、高速化を実現できる。
CNNにおける、高さ1、横幅1のカーネルを使うときの畳み込み層において、ネットワークを圧縮しない場合での、従来の畳み込み演算を行う演算回路の処理状態の例を示す図である。 本発明の第1の実施の形態例による、ネットワークを圧縮したときの演算回路の処理状態を示す図である。 本発明の第1の実施の形態例において、ネットワークを圧縮するときに、不要とする乗算の場所を決めるためのルールの例を示す図である。 ネットワークを圧縮しない場合での、従来の畳み込み演算回路の処理状態の例(高さ3、横幅3のカーネルを使うときの畳み込み演算を行う演算回路)を示す図である。 本発明の第2の実施の形態例によるネットワークを圧縮したときの演算回路の処理状態を示す図である。 本発明の第2の実施の形態例において、入力チャネル数が層によって異なる場合に、圧縮した演算回路を再利用する際の処理状態の例を示す図である。 本発明の第2の実施の形態例において、出力チャネル数が層によって異なる場合に、圧縮した演算回路を再利用する際の処理状態の例を示す図である。 本発明の第3の実施の形態例による、カーネルサイズが層によって異なる場合に、圧縮した演算回路を再利用する場合の処理状態を示す図である。 本発明の各実施の形態例に適用される、複数の畳み込み層から構成されるニューラルネットワークの処理例を示す図である。 本発明の各実施の形態例に適用される情報処理装置の機能構成例を示す図である。 DNNの構造の例を示す図である。 自己符号化器におけるプレトレーニング(各層ごとに行う)の例を示す図である。 手書き数字の認識例を示す図である。 DNNの中間ノードのベクトルが得られる様子を示す図である。 ネットワークの圧縮状態の概要を示す図である。 分割状態の概要を示す図である。
 以下、本発明の実施の形態例を、添付図面を参照して詳細に説明する。
 以下の実施の形態例では、最初に図1~図10を参照して、本発明の各実施の形態例の詳細について説明する。その後、図11~図16を参照して、実施の形態例で説明した情報処理装置の構成に適用される、計算量を削減する演算処理手法の詳細について説明する。なお、図11~図16を参照して説明する計算量を削減する手法は、本願の発明者らが先に国際特許出願(PCT/JP2018/014304号)で開示した内容の一部である。
 まず、図1~図10を参照して、本発明の各実施の形態例の構成について説明する。
 本実施形態例は、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)に適用した例である。
 CNNは、例えば画像データを入力として、その画像があるカテゴリに所属しているかどうかを出力するような場合に使用されるが、この限りではなく他にも様々なタスクに使用される。
 CNNは通常、複数の畳み込み層から構成される。各畳み込み層では、入力となる複数のチャネルの画像に対して、複数回の畳み込み演算を行い、結果を出力する。出力された結果は次の層の入力として使われる。各畳み込み演算の後には、非線形関数を適用することも可能である。
[第1の実施の形態]
 図1は、CNNにおける、ある1つの畳み込み層において、ネットワークを圧縮しない場合に、畳み込み演算を行う演算回路の従来の処理構成を示した図である。なお、本明細書で述べるネットワークとは、NN(ニューラルネットワーク)におけるネットワークであり、ネットワークの圧縮と述べたとき、演算回数の削減を意味する。
 CNNにおける畳み込み演算とは、通常、高さK_h、横幅K_w、チャネル数C_inの3つの次元で構成されるテンソル(以降、「カーネル」と称する)を、入力画像から切り出した、カーネルと同じサイズの画像の画素値テンソルに対して、同じインデクスを持つ値同士を掛け合わせた上でその総和をとる演算のことを指す。
 ここでのチャネル数C_inは、例えば各画素がRGBの3つのデータで構成されるとき、3チャネルになる。
 この演算を、入力画像からの切り出し位置をずらしながら全入力画像に対して行うことで、1つの層の畳み込み処理が完了する。1つのカーネルによる畳み込み演算によって、1つのチャネルの出力画像が得られる。通常複数のカーネルを用意することで、複数チャネルの出力画像を得ることができる。
 図1では、高さK_h=1、横幅K_w=1、チャネル数C_in=4のカーネルを複数個使ったときの畳み込み演算を行う際の、演算回路の処理状態を示す。
 入力画像101は、高さH、横幅W、チャネル数C_inの画像である。画像の各画素はその画素の値(画素値)を保持している。
 出力画像102は、高さH、横幅W、チャネル数C_outの画像である。C_inとC_outは同じでもよいし、異なっていてもよい。
 演算回路103は、入力画像101の中の、ある1つの画素の場所の全チャネルの画素値を入力として、同じく出力画像102の中の、ある1つの画素の場所の全チャネルの画素値を加算して出力する。
 すなわち、演算回路103は、複数の乗算器(演算器)104-1~104-4、105-1~105-4、・・・、109-1~109-4で構成され、これら複数の乗算器を並列に並べた構造をとる。なお、本明細書において、演算器という言葉は、複数の乗算器の乗算結果を加算して出力する加算器や減算器などを含む概念として用いられる。
 各乗算器104-1~104-4、105-1~105-4、・・・、109-1~109-4には、あらかじめ入力される値に対して乗算する係数を設定してあり、各乗算器104-1~104-4、105-1~105-4、・・・、109-1~109-4は入力される画素値にこの係数をかけた値を出力する。乗算された結果は、対応する出力チャネルの乗算器ごとにグループ化された上で、そのグループ内での合計値が計算され、その合計値が対応する出力チャネルに出力される。例えば、出力チャネル1に対応した乗算器グループ103a、出力チャネル2に対応した乗算器グループ103b、・・・、出力チャネルCoutに対応した乗算器グループ103nが用意され、グループごとに加算した合計値が出力される。
 図1の下側に示す画像110は、着目する画素の場所を画像全体に対してスキャンしながら前述した畳み込み演算を繰り返し行うことで、出力画像のすべての画素値を出力する処理状態を示した画像である。
 1回目のループでは、画像の最も左上の画素値を全出力チャネル分出力し、2回目のループでは画像の最も左上から1つ右にずれた位置の画素値を全出力チャネル分出力する。これを画像110の高さHと幅Wに対応して繰り返すことで、H×Wの回数のループで、全位置の画素値を計算することができる。
 この図1に示す処理構成を、本実施の形態例においては、図2に示すネットワークを圧縮した処理構成、つまり演算回数を削減した処理構成に置き換える。
 すなわち、図2に示す処理構成は、図1に示す処理構成に対して、ネットワークを圧縮したときの構成を示す。
 図2に示す構成では、チャネル数C_in、高さH、幅Wの入力画像201を、演算回路203に入力して、各出力チャネルに対応した乗算器グループ203a、203b、・・・、203nで演算を行って、出力画像202とする畳み込み演算を行う。
 演算回路203では、ネットワークを圧縮することで、図1に示す構成に比べて、一部の乗算を不要としている。不要となる乗算では、乗算器の実装が不要となるので、CNNを実装する上で必要となる回路規模を削減することができる。なお、図2に示す構成で演算した結果が、図1に示すネットワークを圧縮しない構成と比べて、劣化なく適正に演算できる原理については、図11以降の説明で後述する。
 図3は、図2に示す構成にてネットワークを圧縮するときに、不要となる乗算器の場所を決めるためのルールを示す。
 出力チャネルごとに乗算器をグルーピングした上で、各グループに対して必要な乗算と不要な乗算を定義する。ここで、必要な乗算の場所が複数のグループ間で入力データに対して異なる組み合わせの積和になるように、必要な乗算、不要な乗算の場所を定義する。このように定義することで、精度の劣化なくネットワークを圧縮することが可能である。
 図3に示す具体的な例について説明すると、図3の上側に示す演算回路301は、入力データに対し重複する組み合わせの積和が存在する場合を示している。ここでは、各グループにおける各演算器の必要な個所を示す。
 演算回路301では、乗算器が必要な場所には乗算係数として1を設定し、不必要な場所には乗算器を使用しない乗算係数0を設定するものとする。不使用で乗算係数0を設定するということは、該当する乗算器が不要なことを意味する。
 ここで、各入力チャネル1~4に対応する4つの入力データをx_1、x_2、x_3、x_4とする。このとき、出力チャネル1の値はx_1+x_2、出力チャネル2の値はx_3+x_4、出力チャネル3の値はx_3+x_4とする。この場合、出力チャネル2と出力チャネル3の値は重複するため、出力チャネル2と出力チャネル3の値は同じになり計算する必要のない演算器が存在してしまう。このような場合、出力チャネル2の式と出力チャネル3の式は、線形従属、あるいは線形独立でないという。
 したがって、演算回路301では、出力チャネルに伝えるべき情報の欠損が生じてしまうため、CNNの出力結果の精度が劣化する可能性がある。
 一方、図3の下側に示す演算回路302は、線形独立な場合を示す。
 演算回路302では、出力チャネル1の値は、入力チャネル1と入力チャネル2に対応したx_1+x_2となる。また、出力チャネル2の値は、入力チャネル2と入力チャネル3に対応したx_2+x_3となる。さらに、出力チャネル3の値は、入力チャネル3と入力チャネル4に対応したx_3+x_4となる。このように演算回路302の場合には、各出力チャネルの式は線形独立であり、出力チャネルに伝えるべき情報の欠損が生じることがないので、CNNの出力結果の精度劣化を防ぐことができる。
 したがって、図2に示す演算回路203に、図3に示す演算回路302の構成を適用することで、CNNの出力結果の精度劣化を防ぎつつ、演算処理量を削減することができる。
 なお、図3に示す演算回路302の各出力チャネルに対応した乗算器204-1,204-2と、乗算器205-1,205-2と、乗算器206-1,206-2は、それぞれ同一構成であるため、1つの出力チャネルに対応した複数の乗算器(ここでは2つの乗算器)を用意すれば、各出力チャネルの演算ごとに、同一の乗算器を再利用することができ、人工知能機能を実現するための計算機資源を削減することができる。
[第2の実施の形態]
 図4は、ある1つの畳み込み層において、ネットワークを圧縮しない場合に、畳み込み演算を行う演算回路の従来の処理構成について、図1とは別の例を示した図である。
 図4に示す例は、高さK_h=3、横幅K_w=3、チャネル数C_in=4のカーネルを複数個使った場合における、畳み込み演算の例を示す。
 入力画像401は、横幅W、高さH、チャネル数C_inの画像である。画像の各画素はその画素の値(画素値)を保持している。
 出力画像402は、横幅W、高さH、チャネル数C_outの画像である。入力画像401のチャネル数C_inと出力画像402のチャネル数C_outは同じでもよいし、異なっていてもよい。
 演算回路403は、入力画像401の中の、ある1つの着目する画素の周辺を含めた3×3の画素位置の全チャネルの画素値を入力として、対応する出力画像402の中の、ある1つの画素の場所の全チャネルの画素値を出力する。
 すなわち、演算回路403は、出力チャネル1に対応した演算器グループ404a、出力チャネル2に対応した演算器グループ404b、・・・出力チャネルCoutに対応した演算器グループ404nを有する。それぞれの演算器グループ404a~404nは、複数の乗算器を備える。例えば演算器グループ404aは、乗算器405-1~405―nを備える。
 この図4に示す処理構成を、本実施の形態例においては、図5に示すネットワークを圧縮した処理構成、つまり演算回数を削減した処理構成に置き換える。
 すなわち、図5に示す処理構成は、図4に示す処理構成に対して、ネットワークを圧縮したときの構成を示す。ここでは、入力画像501を、圧縮した処理構成の演算回路503に供給して、各チャネルの出力を得て、出力画像502を得る。
 演算回路503としては、出力チャネル1に対応した乗算器グループ504a、出力チャネル2に対応した乗算器グループ504b、・・・、出力チャネルCoutに対応した乗算器グループ504nを備える。例えば乗算器グループ504aは、乗算器505-1、505-2、・・・、505-m(但し、ここでのmは乗算器405の数nよりも小さい数)を有する。
 図6は、図5の演算回路503の詳細構成の例を示す。この図6に示す例は、入力チャネルC_inがCNNの各畳み込み層によって異なる場合に、圧縮した演算回路を再利用する方法を示す。ここでは、入力チャネルが異なる層が2つ以上あった場合に、入力チャネルの数が大きい方の層で使用する演算回路の一部を再利用して、入力チャネルの数が小さい層の演算を行うことができる例を示す。
 図6に示す例は、入力チャネル数が4の層の場合と、入力チャネル数が3の層の場合の2種類の層が存在する場合を示す。
 図6の上側に示す入力チャネル数が4の層の場合には、出力チャネル1に対応した演算では、入力チャネル1に対応した乗算器505-1と、入力チャネル2に対応した乗算器505-2とで演算を行い、両乗算器505-1、505-2の演算出力を合計して、出力チャネル1の値を得る。
 また、出力チャネル2に対応した演算では、入力チャネル2に対応した乗算器506-1と、入力チャネル3に対応した乗算器506-2とで演算を行い、両乗算器506-1、506-2の演算出力を合計して、出力チャネル2の値を得る。
 さらに、出力チャネル3に対応した演算では、入力チャネル3に対応した乗算器507-1と、入力チャネル4に対応した乗算器507-2とで演算を行い、両乗算器507-1、507-2の演算出力を合計して、出力チャネル3の値を得る。
 そして、図6の下側に示す入力チャネル数が3の層の場合には、出力チャネル1に対応した演算と、出力チャネル2に対応した演算は、図6の上側に示した入力チャネル数が4の層の場合と同じである。
 これに対して、出力チャネル3に対応した演算は、入力チャネル3に対応した乗算器507-1での演算のみを行い、この乗算器507-1の演算出力から、出力チャネル3の値を得る。入力チャネル数が4の層の場合に必要であった乗算器507-2は使用されない。
 この図6に示す構成とすることで、入力チャネル数が3の層の場合の演算も、入力チャネル数が4の層の場合と同じ演算回路を使って演算を行うことができる。
 なお、必要な乗算器と不要な乗算器の場所については、乗算器グループに含まれる乗算器すべてを利用した場合と、上から3つの乗算器だけを利用した場合の両方の場合において、各グループが線形独立になるように決定される。
 この図6に示す例の場合にも、出力チャネル1に対応したグループの乗算器505-1、505―2と、出力チャネル2に対応したグループの乗算器506-1、506―2と、出力チャネル3に対応したグループの乗算器507-1、507―2は再利用することで、それだけ計算資源を削減することができる。
 次に、図6に示すチャネル構成とは別の例を、図7に示す。
 図7は、出力チャネルC_outがCNNの各畳み込み層によって異なる場合に、圧縮した演算回路を再利用する構成例である。
 図7の上側は、入力チャネル数が4の層、出力チャネル数が3の層の畳み込み層の場合である。この図7の上側に示す畳み込み層は、図6の上側に示す畳み込み層と同じである。
 一方、図7の下側は、入力チャネル数が4の層、出力チャネル数が2の層の畳み込み層の場合である。
 この場合、出力チャネル1に対応した演算では、入力チャネル1に対応した乗算器505-1と、入力チャネル2に対応した乗算器505-2とで演算を行い、両乗算器505-1、505-2の演算出力を合計して、出力チャネル1の値を得る。
 また、出力チャネル2に対応した演算では、入力チャネル2に対応した乗算器506-1と、入力チャネル3に対応した乗算器506-2とで演算を行い、両乗算器506-1、506-2の演算出力を合計して、出力チャネル2の値を得る。
 この図7の下側の例は、出力チャネル数が2の層であるため、図7の上側に示す乗算器507-1、507―2での演算が不要になる。すなわち、出力チャネル数が2の層の場合には、出力チャネル数が3層の場合に用意された3つの乗算器グループの内の上から2つの乗算器グループだけを利用することになる。このように、出力チャネル数2の場合の演算も、出力チャネル数が多い層と同じ演算回路を使って行うことができる。必要な乗算器と不要な乗算器の場所については、すべての乗算器グループを利用した場合で各グループが線形独立になるように決めておけば、そのうちの一部の乗算器グループを利用した場合でも必ず線型独立になる。
 図8は、カーネルサイズが層によって異なる場合に、圧縮した演算回路を再利用する構成を示す。
 図8に示す例では、高さK_h=3、幅K_w=3のカーネルを使用する層と、高さK_h=1、幅K_w=1のカーネルを使用する層の2つが存在する場合を示す。ここで、高さK_h=3、幅K_w=3のカーネルを使用する層に対応した演算回路の、9個の画素に対応する乗算器の内の、1個目の画素に対応する乗算器だけを選択して利用することで、高さK_h=1、幅K_w=1のカーネルの場合も同じ演算回路を使って演算を行う。
 すなわち、図8の上側に示すように、高さK_h=3、幅K_w=3のカーネルを使用する層で、出力チャネル1に対応した乗算器グループとして、入力チャネル1の1画素目から5画素目に対応した乗算器601-1~601-5と入力チャネル2の2画素目に対応した乗算器601-6を設け、各乗算器601-1~601-6の出力を合計して、出力チャネル1に対応した出力を得る。
 また、出力チャネル2に対応した乗算器グループとして、入力チャネル1の2画素目から6画素目に対応した乗算器602-1~602-5と入力チャネル2の1画素目と2画素目に対応した乗算器602-6、602-7を設け、各乗算器602-1~602-7の出力を合計して、出力チャネル2に対応した出力を得る。
 さらに、出力チャネル3に対応した乗算器グループとして、入力チャネル1の3画素目から7画素目に対応した乗算器603-1~603-5を設け、各乗算器603-1~603-5の出力を合計して、出力チャネル3に対応した出力を得る。
 一方、図8の下側に示すように、高さK_h=1、幅K_w=1のカーネルを使用する層では、出力チャネル1に対応した乗算器グループとして、入力チャネル1の1画素目に対応した乗算器601-1のみを使い、乗算器601-1の出力を、出力チャネル1に対応した出力とする。
 また、出力チャネル2に対応した乗算器グループとして、入力チャネル2の1画素目に対応した乗算器602-6のみを使い、乗算器602-6の出力を、出力チャネル2に対応した出力とする。その他の乗算器(破線で図示)は、再利用時に不動作とされる。
 なお、図8の例の場合にも、必要な乗算器と不要な乗算器の場所については、乗算器グループに含まれる乗算器すべてを利用した場合と、9個に1個だけを利用した場合の両方の場合において、各ブループが線型独立になるように決定される。
[各実施の形態に共通の処理手順及び装置構成の例]
 図9は、ここまでの実施の形態例で説明した畳み込みニューラルネットワークの処理手順の例を示す。通常、畳み込みネットワークは複数の層から構成される。図9では、畳み込み層1、2、3、4の4層構成であり、入力とする画像のチャネル数が3、出力する画像のチャネル数が128であるネットワークを例として説明する。畳み込み層1、2、3、4は、それぞれカーネルサイズが3×3、3×3、3×3、1×1である。
 図9に従って説明すると、畳み込みニューラルネットワークへの入力として入力画像を与えると(ステップS1)、最初に畳み込み層1がこれを入力として演算を行い、結果を出力する(ステップS2)。ここでは、この畳み込み層1は、3チャネルの画像を入力として32チャネルの画像を出力する。
 次に、畳み込み層1で得られた32チャネルの画像を入力として畳み込み層2が演算を行い、結果を出力する(ステップS3)。このように、畳み込み層1の出力チャネル数と畳み込み層2の入力チャネル数は一致する。畳み込み層2では、出力チャネル数が64になる。
 さらに、畳み込み層2で得られた64チャネルの画像を入力として畳み込み層3が演算を行い、結果を出力する(ステップS4)。畳み込み層3では、出力チャネル数が128になる。
 さらにまた、畳み込み層3で得られた128チャネルの画像を入力として畳み込み層4が演算を行い、結果を出力する(ステップS5)。畳み込み層4では、出力チャネル数が128になる。
 そして、最終的に畳み込み層4が出力した結果が、この畳み込みニューラルネットワークの出力となる(ステップS5)。
 図9の右側に各畳み込み層の入力チャネル数、出力チャネル数、カーネルサイズを示すように、ここでは最大入力チャネル数が128、最大出力チャネル数が128、最大カーネルサイズが3×3になる。したがって、本実施の形態例においては、全ての畳み込み層での演算が可能なように、各パラメータの最大の値に対応した1つの演算回路を作成した上で、図6や図7などで説明したように、各畳み込み層の演算時に乗算器の一部を不使用として演算を行う。
 図10は、ここまでの実施の形態例で説明した畳み込みニューラルネットワークを実行する情報処理装置の構成を示す。
 情報処理装置は、記憶部701と、入力画像一時記憶部702と、畳み込み演算回路703と、出力画像一時記憶部704とを備える。
 記憶部701は、畳み込みニューラルネットワークに入力する画像や、畳み込みニューラルネットワークが出力した画像を格納する。
 入力画像一時記憶部702は、ニューラルネットワークの演算を開始した直後に、記憶部701から画像を受け取り、畳み込み演算回路703に送信する。また、ネットワークの演算の途中の過程では、出力画像一時記憶部704の内容をコピーして格納し、畳み込み演算回路703に送信する。
 畳み込み演算回路703は、入力画像一時記憶部702から受け取ったデータを入力として、1つの畳み込み層の計算を行い、結果を出力画像一時記憶部704に格納する。
 出力画像一時記憶部704は、畳み込み演算回路703の演算結果を格納する。ネットワークの演算の途中の過程では、格納している画像を、入力画像一時記憶部702にコピーする。演算が完了した際には、入力画像一時記憶部702が格納している画像を、記憶部701に送信する。
 この図10に示す情報処理装置は、例えばCPU(Central Processing Unit:中央処理ユニット)とその周辺回路(ROM、RAM、各種インターフェースなど)で構成されるコンピュータ装置として構成する他に、汎用のFPGAやLSIで構成することができる。
 次に、図10に示す情報処理装置内の各部が連携して行う動作を、図9に示すネットワークを例にして説明する。
 ここで、畳み込み演算回路703は、図9に示すネットワークに含まれる畳み込み層のパラメータの最大値に対応した回路を構成する。そして、記憶部701には、ネットワークの入力画像が格納されている。
 まず、ステップS1では、記憶部701に格納されている入力画像を、入力画像一時記憶部702にコピーする。次に、テップS2では、この入力画像を入力として、畳み込み演算回路703が、演算回路703の一部分を利用して、畳み込み層1に対応した畳み込み演算処理を行い、結果を出力画像一時記憶部704に格納する。
 次に、畳み込み層2の演算に備え、出力画像一時記憶部704は、ステップS2で格納された画像を入力画像一時記憶部702にコピーする。このコピーした画像を入力として、畳み込み演算回路704が、演算回路の一部分を利用して、畳み込み層2に対応した畳み込み演算処理を行い、結果を出力画像一時記憶部704に格納する。
 以下、同様の処理を、畳み込み層3、畳み込み層4に対しても行う。ステップS5での畳み込み層4の処理が終わると、その結果を出力画像一時記憶部704に格納し、ステップS6として、格納した画像を記憶部701にコピーして、ニューラルネットワークの演算が完了する。
 以上説明したように、本実施の形態例の情報処理装置によると、人工知能機能を実現する計算機資源を大幅に削減できるため、計算機に占有されるスペースや価格、消費電力を削減できるようになる。
[畳み込み演算の計算量を削減する演算処理手法の説明]
 次に、ここまで説明したネットワークを圧縮した処理を行うことが実現できる点について、図11以降を参照して説明する。
 ここでは、DNN(ディープニューラルネットワーク)に適用してネットワークを圧縮する例を説明する。
 図11に基づきDNNの構造を定義する。まず入力信号を、N次元ベクトル
Figure JPOXMLDOC01-appb-I000001

とする。なお、(*)は行列の転置を示している。l=1,2,3,・・・という層の索引を示すlを用いて多層構造を表現する。また
Figure JPOXMLDOC01-appb-I000002

は実数を意味する。
ベクトル
Figure JPOXMLDOC01-appb-I000003


Figure JPOXMLDOC01-appb-I000004

として計算するl番目の層の重み係数の和のベクトルとする。
 ここで
Figure JPOXMLDOC01-appb-I000005

は重み行列であり、
Figure JPOXMLDOC01-appb-I000006

はバイアスベクトルである。
 与えられたu (l)に対して活性化関数fが次のl+1層の入力ベクトルx (l+1)をノードごとの計算x (l+1)=f(u (l))を実行することにより生成する。
 説明を簡易化するために、以降は、b (l)=0とf(u)=uとして説明を進める。
 一般にDNNは、識別用の教師あり学習の前に、積層自己符号化器を用いて教師無し学習によるプレトレーニングを行う。図12に示す様に、この自己符号化器では、高次元の入力信号の主要な情報を獲得し低次元の特徴データに変換することを目的としている。各層では自己符号化器を使って復元したデータと入力データの相違を最小化するように学習を行う。この学習は下位層から上位層へ層ごとに勾配降下法や誤差逆伝搬法等を用いて実施される。
 x(l+1)=W(l)(l)で示されるネットワーク層に対して、重み行列
Figure JPOXMLDOC01-appb-I000007

を使って
Figure JPOXMLDOC01-appb-I000008

を計算することによりx(l+1)から復元ベクトル
Figure JPOXMLDOC01-appb-I000009

を生成する。
 自己符号化器の学習時には、
Figure JPOXMLDOC01-appb-I000010

を求める最適化問題を解くことにより、重み行列
Figure JPOXMLDOC01-appb-I000011


Figure JPOXMLDOC01-appb-I000012

を導出する。ここでは、x(l)のベクトルの長さをJ(l)とする。
 一般にJ(l+1)≦J(l)である為、自己符号化器はデータの次元を削減することになる。
 つまり次元圧縮された信号x(l+1)からW(l)を用いて元信号x(l)を復元する問題とみなすことができる。
 逆に言うと、重み行列W(l)が次元圧縮された信号x(l+1)から元信号x(l)を復元する特性を有していればよいことになる。
 ここで、図13を参照して、DNNを手書き数字の認識に適用した例について説明する。
 例えば図13に示す様に、手書き数字の「5」をベクトルx(1)で表現したとして、ランダムな行列W(1)と行列の掛け算をして得た次元圧縮されたベクトルx(2)を得る。今ベクトルx(1)がどんな絵かわからない状態でもベクトルx(2)とランダムな行列W(1)からベクトルx(1)が再生でき、結果手書き数字の「5」を再生できることを示している。
 一方、重み行列のランダム性を満たす手法は行列の成分をランダムに選択する手法以外にも考えられる。ここで説明する圧縮手法ではこの点に着目した構成法を示す。
 この特性を示す重み行列の構成法を以下に示す。
 ここでは、一例として図13に示すような手書き数字の認識に用いるDNNで説明する。
 入力信号は手書き文字のサイズが28×28=784画素だとすると、一層目の入力信号x(1)のベクトルの長さはN=784となる。中間層として2層目のノードx(2)のベクトルの長さをM=500とすると、図13に示すように500×784の重み行列W(1)に入力信号ベクトルx(1)をかけて次元圧縮された中間ノードの信号x(2)を得ることになる。
 図14にこの際の重み行列W(1)と入力信号ベクトルx(1)との行列計算により、中間ノードのベクトルx(2)が得られる様子を示す。
 この際、演算量が大きい掛け算の回数はM×N=500×784=392000回となる。
 図14、図15にネットワーク圧縮方法を示す。従来のDNNでは、図14に示すように、各層ごとに入力ベクトル長N、出力ベクトル長Mに対してM×Nの成分に対する積が必要であり、この積の回数が演算量を増大させる元になっていた。
 本圧縮手法では、図15に示す様に元々のM×N=500×784の重み行列をM’×N=10×784まで圧縮させる方法を示す。
 まずは従来例と比べて圧縮した重み行列を用意し、その圧縮した重み行列の下での計算方法を示す。また本圧縮手法の計算方法で精度がほとんど落ちない理由を説明する。
 この圧縮した重み行列を
Figure JPOXMLDOC01-appb-I000013

とする。また、圧縮率をγと表現すると、この圧縮率はγ=M’/M=10/500=1/50となる。
 この
Figure JPOXMLDOC01-appb-I000014

の重み行列を使って下記の計算を行う。
Figure JPOXMLDOC01-appb-I000015
 ここで、
Figure JPOXMLDOC01-appb-I000016

であり、演算子°は、
Figure JPOXMLDOC01-appb-I000017

でAを行列、Bをベクトルしたときに、行列Aのi列目の成分とベクトルBのi番目の要素の積を行う演算である。
 次に、図16に示すようにM’×N=10×784の行列
Figure JPOXMLDOC01-appb-I000018

を1/γ=50列毎にM’×N’=10×50の行列
Figure JPOXMLDOC01-appb-I000019

に以下のように分割する。
Figure JPOXMLDOC01-appb-I000020
その上で
Figure JPOXMLDOC01-appb-I000021

に対して特定のルールで置換またはランダムに置換した行列
Figure JPOXMLDOC01-appb-I000022

との行列の和を下記のように実行する。ここで置換とは行列の任意の2要素の場所を互いに交換する、という操作を任意の回数行うことを意味する。
Figure JPOXMLDOC01-appb-I000023

この結果、図16の右端に示すようなM’×N’=10×50の行列
Figure JPOXMLDOC01-appb-I000024

が出力される。
 この行列
Figure JPOXMLDOC01-appb-I000025

をベクトルに変換し
Figure JPOXMLDOC01-appb-I000026

を構成する。上記例では10×50の行列X(2)からベクトル長500のx(2)が生成される。
 したがって、500×784の重み行列W(1)を使った計算と同じ784次元の入力信号から500次元の中間ノードの信号を出力する演算が実行できる。特に置換した行列
Figure JPOXMLDOC01-appb-I000027

の組み合わせによる行列の和を使うことによりランダム行列に近い特性を実現できる。
 この結果、認識性能や予測性能は、従来の方法と本発明の方法では僅かな性能差に抑えられる。
 一方、本圧縮手法では演算量が大きい掛け算の回数は、M′×N=10×784=7840回となり、従来のM×N=500×784=392000回に比べてγ=1/50まで下げられる効果がある。
 例えば元々6×9の重み行列W(1)で入力信号ベクトルx(1)のベクトル長を9、出力ベクトルx(2)のベクトル長6のものを対象とする。例えば
Figure JPOXMLDOC01-appb-I000028

という計算を行う。一般に重みは、wi,j∈[-1,1]の範囲で設定される。ここで重みの分布の分散値が大きい場合は、重みが-1や1の値をとる場合が多くなり、学習をする過程においても学習が収束しない勾配消失問題という問題も引き起こす。
 例えば上式の1行目と2行目の重みがすべて1になってしまった場合、
Figure JPOXMLDOC01-appb-I000029

という形で上式の右辺を見てもわかるように同じ方程式が2個重複して存在してしまい、出力するx(2)の1番目の要素と2番目の要素が同じになる為、その要素が1つ減ったことと同じになり、x(2)の情報そのものの欠損が生じてしまう。つまりx(2)の要素は本来6個であるが、1番目の要素と2番目の要素が同じになる為、要素5個分の情報に削減される。この計算を行う1つの層で情報の欠損は最終的な識別に用いる情報の欠損につながる為、識別性能を下げる要因になる。一方、重みwi,jが-1や1の値をとったとしても同じ方程式の発生を最初から回避できる方法を用いれば、x(2)の要素の欠損は防ぐことができ、識別に必要な情報量も維持でき、最終的な識別の精度を下げない効果を得られる。
 この観点から、本圧縮手法は重み行列W(l)の各行の成分とベクトルx(l)のすべての要素の積和をとらず、一部の要素の積和をとり方程式が一致しない組み合わせのルールを作る手段をとることで同じ方程式の発生を回避した。まず、圧縮率に沿って行数を圧縮した重み行列
Figure JPOXMLDOC01-appb-I000030

を作り、圧縮率の逆数1/γ毎にW(l)を分割し式(1)に示す様に
Figure JPOXMLDOC01-appb-I000031

を計算し、その上で
Figure JPOXMLDOC01-appb-I000032

に対して特定のルールで置換またはランダムに置換した行列
Figure JPOXMLDOC01-appb-I000033

との行列の和を式(2)に示すように実行する。これらの実装はソフトウェア上でも実装可能であるが、FPGA等のハードウェアでの実装も可能である。
 具体例としてγ=1/3の場合を示す。まず行数を6から圧縮後の行数6×γ=2行とする。次に列数を1/γ=3列毎に区切り、2×3の重み行列
Figure JPOXMLDOC01-appb-I000034

を構成し、ベクトル長は1/γ=3のx (1)、x (1)、x (1)を使って、
Figure JPOXMLDOC01-appb-I000035

と計算する。
 なお、簡易化のために行列の成分およびベクトルの要素の上付き文字(1)の表現は割愛している。
 ここで、
Figure JPOXMLDOC01-appb-I000036

の2行目を左側に1列巡回シフトする置換をして下記のように
Figure JPOXMLDOC01-appb-I000037

とする。
Figure JPOXMLDOC01-appb-I000038

 また、
Figure JPOXMLDOC01-appb-I000039

の2行目を左側に2列巡回シフトする置換をして下記のように
Figure JPOXMLDOC01-appb-I000040

とする。
Figure JPOXMLDOC01-appb-I000041

 結果、
Figure JPOXMLDOC01-appb-I000042

は以下のように計算する。
Figure JPOXMLDOC01-appb-I000043

 なお、簡易化の為、
Figure JPOXMLDOC01-appb-I000044

とする。
 この手順により、重みwi,jが-1や1の値をとったとしても、同じ方程式の発生を最初から回避できている。例えば上記実例においてすべての重みwi,jを1としたとしても、
Figure JPOXMLDOC01-appb-I000045

となり、重複する方程式は発生しない。また、一つの方程式あたりの積和の数も、式(3)、式(4)で行っていた9回の積、8回の和から、式(5)に示すように、3回の積、2回の和に削減できている。
 この手法では、
Figure JPOXMLDOC01-appb-I000046

の2行目の成分を左側に1列巡回シフト、
Figure JPOXMLDOC01-appb-I000047

の2行目の成分を左側に2列巡回シフトしただけである。このようにシンプルな構造でも同じ方程式の発生は避けることができる。
[変形例]
 なお、上述した実施の形態ではCNNの例を示したが、本発明は、DNN(Deep Neural Network:深層ニューラルネットワーク)、RNN(Recurrent Neural Network:再帰型ニューラルネットワーク)といった、少なくとも一部にネットワーク構造を持つ演算処理を行う様々な情報処理装置に対して適用できる。
 また、図11~図16を参照して説明したネットワークの圧縮手法は一例であり、その他のネットワークの圧縮手法を、各実施の形態例で説明した情報処理装置の構成に適用してもよい。
 101…入力画像、102…出力画像、103…演算回路、103a~103n…出力チャネルに対応した演算器グループ、104~109…乗算器、110…画像、201…入力画像、202…出力画像、203…演算回路、203a~203n…出力チャネルに対応した演算器グループ、204~209…乗算器、301,302…演算回路、401…入力画像、402…出力画像、403…演算回路、404a~404n…出力チャネルに対応した演算器グループ、405…乗算器、501…入力画像、502…出力画像、503…演算回路、504a~504n…出力チャネルに対応した演算器グループ、505~507…乗算器、601~603…乗算器、701…記憶部、702…入力画像一時記憶部、703…畳み込み演算回路、704…出力画像一時記憶部

Claims (2)

  1.  入力画像データに対してニューラルネットワークの演算を行うことで、人工知能機能を実現する演算処理部を備えた情報処理装置において、
     前記演算処理部として、ニューラルネットワークの各層での入力ベクトルと重み行列との積和計算を行う演算回路と、
     前記演算回路に画像を入力する入力画像一時記憶部と、
     前記演算回路の出力を格納し、次の層の演算のために前記入力画像一時記憶部に画像をコピーする出力画像一時記憶部と、を備え、
     前記演算回路は、入力画像データの最大の入力チャネル、出力データの出力チャネル、およびカーネルサイズに対応できる演算回路としたことを特徴とする
     情報処理装置。
  2.  前記演算回路のどの一部分を抽出しても、ニューラルネットワークの各層での入力ベクトルと重み行列との積和計算の組み合わせの形が、出力チャネルごとにすべて異なるように、演算器を削減した演算回路としたことを特徴とする
     請求項1記載の情報処理装置。
     
PCT/JP2018/032296 2018-08-31 2018-08-31 情報処理装置 WO2020044527A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/032296 WO2020044527A1 (ja) 2018-08-31 2018-08-31 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/032296 WO2020044527A1 (ja) 2018-08-31 2018-08-31 情報処理装置

Publications (1)

Publication Number Publication Date
WO2020044527A1 true WO2020044527A1 (ja) 2020-03-05

Family

ID=69644043

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/032296 WO2020044527A1 (ja) 2018-08-31 2018-08-31 情報処理装置

Country Status (1)

Country Link
WO (1) WO2020044527A1 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021220422A1 (ja) * 2020-04-28 2021-11-04 日本電気株式会社 グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US11531727B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Computation of neural network node with large input values
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11604973B1 (en) * 2018-12-05 2023-03-14 Perceive Corporation Replication of neural network layers
US11615322B1 (en) 2019-05-21 2023-03-28 Perceive Corporation Compiler for implementing memory shutdown for neural network implementation configuration
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11809515B2 (en) 2018-04-20 2023-11-07 Perceive Corporation Reduced dot product computation circuit
US11921561B2 (en) 2019-01-23 2024-03-05 Perceive Corporation Neural network inference circuit employing dynamic memory sleep

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180157969A1 (en) * 2016-12-05 2018-06-07 Beijing Deephi Technology Co., Ltd. Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network
JP2018116469A (ja) * 2017-01-18 2018-07-26 株式会社日立製作所 演算システムおよびニューラルネットワークの演算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180157969A1 (en) * 2016-12-05 2018-06-07 Beijing Deephi Technology Co., Ltd. Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network
JP2018116469A (ja) * 2017-01-18 2018-07-26 株式会社日立製作所 演算システムおよびニューラルネットワークの演算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SHEN, YONGMING ET AL.: "Maximizing CNN Accelerator Efficiency Through Resource Partitioning", PROCEEDINGS OF THE 44TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE (ISCA '17, 2017, pages 535 - 547, XP058369126, ISBN: 978-1-4503-4892-8, DOI: 10.1145/3079856.3080221 *
UEYOSHI, KODAI ET AL.: "Examination of Optimal Hardware Configurations for CNN Using FPGA and Binarization Thereof.", IECE TECHNICAL REPORT., vol. 117, no. 46, 2017, pages 31 - 36, ISSN: 0913-5685 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11886979B1 (en) 2018-04-20 2024-01-30 Perceive Corporation Shifting input values within input buffer of neural network inference circuit
US11531727B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Computation of neural network node with large input values
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11809515B2 (en) 2018-04-20 2023-11-07 Perceive Corporation Reduced dot product computation circuit
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11604973B1 (en) * 2018-12-05 2023-03-14 Perceive Corporation Replication of neural network layers
US11921561B2 (en) 2019-01-23 2024-03-05 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11868901B1 (en) 2019-05-21 2024-01-09 Percieve Corporation Compiler for optimizing memory allocations within cores
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
US11615322B1 (en) 2019-05-21 2023-03-28 Perceive Corporation Compiler for implementing memory shutdown for neural network implementation configuration
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
WO2021220422A1 (ja) * 2020-04-28 2021-11-04 日本電気株式会社 グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム
JP7501617B2 (ja) 2020-04-28 2024-06-18 日本電気株式会社 グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム

Similar Documents

Publication Publication Date Title
WO2020044527A1 (ja) 情報処理装置
JP7394104B2 (ja) ハードウェアにおけるカーネルストライドの実行
CN107622302B (zh) 用于卷积神经网络的超像素方法
US10977001B2 (en) Asymmetric quantization of multiple-and-accumulate operations in deep learning processing
WO2020014590A1 (en) Generating a compressed representation of a neural network with proficient inference speed and power consumption
US11216913B2 (en) Convolutional neural network processor, image processing method and electronic device
JP2022502733A (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
EP4213070A1 (en) Neural network accelerator, and acceleration method and device
KR20200079059A (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
Barannik et al. Video data compression methods in the decision support systems
CN113298716B (zh) 基于卷积神经网络的图像超分辨率重建方法
EP3968235A1 (en) Artificial neural network processing methods and system
JP2020149560A (ja) Cnn処理装置、cnn処理方法、およびプログラム
JP6528349B1 (ja) 情報処理装置及び情報処理方法
JP2006154992A (ja) ニューロプロセッサ
JPH0715346A (ja) 2ベクトルのスカラ積を決定するためのデジタル信号の符号化方法および回路
CN112906874A (zh) 卷积神经网络特征图数据压缩方法及装置
WO2019168088A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
WO2020225916A1 (ja) 情報処理装置
Müller et al. Linear computation coding for convolutional neural networks
CN110572652B (zh) 一种静态图像的处理方法及装置
CN112949841A (zh) 一种基于Attention的CNN神经网络的训练方法
Solovyev et al. Real-Time Recognition of Handwritten Digits in FPGA Based on Neural Network with Fixed Point Calculations
US20240036816A1 (en) Systems and methods for identifying scaling factors for deep neural networks
Paul et al. Image compression scheme based on histogram equalization and convolution neural network

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18931666

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18931666

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP