WO2020049681A1 - 情報処理装置、方法及びプログラム - Google Patents
情報処理装置、方法及びプログラム Download PDFInfo
- Publication number
- WO2020049681A1 WO2020049681A1 PCT/JP2018/033012 JP2018033012W WO2020049681A1 WO 2020049681 A1 WO2020049681 A1 WO 2020049681A1 JP 2018033012 W JP2018033012 W JP 2018033012W WO 2020049681 A1 WO2020049681 A1 WO 2020049681A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bin
- data
- histogram
- value
- point type
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Definitions
- This disclosure relates to convolutional neural network technology.
- CNN convolutional neural network
- FP32 floating point number expression
- FP32 floating point number expression
- the operation in the floating-point number representation requires a large scale of logic, and therefore, in order to reduce the logic scale, at least a part is represented by a fixed-point number representation (for example, 8 bits @ integer; hereinafter, referred to as "INT8").
- INT8 integer integer
- Non-Patent Document 1 In general, fixed-point number representations share a single scale factor.
- the CNN since the data distribution of input / weight factors / outputs differs greatly depending on each layer of the neural network, a single scale factor is used in the CNN. It has been pointed out that when used and the number of bits in the fixed-point number representation is reduced, the recognition accuracy is rapidly reduced (see Non-Patent Document 1). Also, in Non-Patent Document 1, by introducing different scale factors in each layer of the neural network, even when the number of bits in the fixed-point number representation is small, the same recognition accuracy as in the case of using the floating-point number representation is maintained. It is reported that it is possible.
- a small calibration data set is inferred in advance to input / output each layer.
- a method of predicting data distribution and determining a scale factor for converting a dynamic range of a floating-point number representation to a dynamic range of a fixed-point number representation by statistical analysis has been proposed.
- a method called so-called entropy calibration has been proposed.
- entropy calibration a data set for calibration is first inferred using a floating-point number representation, and a distribution of each layer / each data obtained therefrom and a distribution obtained by quantizing them are minimized in information loss. This is a method for calculating a large scale factor.
- An example of the present disclosure is an information processing device that performs an operation of a convolutional neural network, and determines a first bin width based on a maximum value among a plurality of data represented by a floating-point type.
- Determining means a bin range determining histogram creating means for creating a bin range determining histogram by assigning each of the plurality of data to each bin based on the first bin width,
- a range determination unit that determines a bin range in which a number of data equal to or greater than a predetermined ratio among the plurality of data is stored, and a second bin width that determines a second bin width based on the number of data in the bin range with reference to the histogram.
- Second bin width determining means and assigning a plurality of data within the bin range to each bin based on the second bin width, thereby creating a reference histogram.
- Grams creation means an information processing apparatus including a.
- An example of the present disclosure is an information processing device that performs an operation of a convolutional neural network, and includes a data acquisition unit that obtains data represented by a floating-point type in which a negative value included in a convolution operation result is replaced with 0. By assigning data having a value other than 0 among the plurality of data to each bin based on a predetermined bin width, and not assigning data having a value of 0 among the plurality of data to any bin. And a reference histogram creating means for creating a reference histogram.
- the present disclosure can be understood as an information processing device, a system, a method executed by a computer, or a program executed by a computer.
- the present disclosure can be understood as such a program recorded on a recording medium readable by a computer, another device, a machine, or the like.
- a computer-readable recording medium is a recording medium that stores information such as data and programs by electrical, magnetic, optical, mechanical, or chemical action and can be read from a computer or the like.
- FIG. 2 is a schematic diagram illustrating a hardware configuration of a CNN processing system according to the embodiment. It is a figure showing an outline of CNN processing concerning an embodiment. It is a figure showing an outline of functional composition of a CNN processing system concerning an embodiment.
- 6 is a flowchart (A) illustrating an outline of a flow of a calibration process according to the embodiment. 6 is a flowchart (B) illustrating an outline of a flow of a calibration process according to the embodiment. It is a flowchart which shows the outline
- FIG. 7A is a diagram illustrating a reference histogram created by conventional entropy calibration.
- FIG. 7A is a diagram illustrating a reference histogram created by conventional entropy calibration.
- FIG. 7B is a diagram illustrating a reference histogram created by conventional entropy calibration.
- FIG. 7C is a diagram showing a reference histogram created by conventional entropy calibration.
- FIG. 7A is a diagram illustrating a reference histogram created by calibration employing a zero data exclusion process.
- FIG. 7B is a diagram (B) illustrating a reference histogram created by calibration employing zero data exclusion processing.
- FIG. 10C is a diagram (C) illustrating a reference histogram created by calibration employing zero data exclusion processing.
- FIG. 9 is a diagram illustrating an example of a reference histogram created by conventional entropy calibration.
- FIG. 9 is a diagram illustrating an example of a reference histogram created by conventional entropy calibration.
- FIG. 10 is a diagram showing an example of a reference histogram when the maximum value of the absolute value is rewritten to a value 100 times the absolute value in the conventional entropy calibration.
- FIG. 15 is a diagram illustrating a state where step S106 of the calibration process according to the present embodiment is executed based on the histogram of FIG. 14.
- Is a diagram illustrating a reference histogram P 2 created by the calibration processing according to the embodiment. It was created based on the reference histogram P 2 in FIG. 16 is a diagram showing a candidate histogram Q when Kullback-Leibler divergence is minimized.
- FIG. 17 is an enlarged view of the first quarter of FIG. 16.
- FIG. 18 is an enlarged view of the first quarter of FIG. 17.
- FIG. 1 is a schematic diagram illustrating a hardware configuration of a convolutional neural network (CNN) processing system 1 according to the present embodiment.
- the CNN processing system 1 includes a CPU (Central Processing Unit) 11, a RAM (Random Access Memory) 12, a ROM (Read Only Memory) 13, an EEPROM (Electrically Reproducible and Randomized Randomized Randomized Randomized Randomized Randomly Randomly Randomly Diagnostic), and A computer including a storage device 14 such as a drive (Drive), a communication unit such as a NIC (Network Interface Card) 15, an FPGA (Field-Programmable Gate Array) 16, and the like.
- a storage device 14 such as a drive (Drive)
- a communication unit such as a NIC (Network Interface Card)
- FPGA Field-Programmable Gate Array
- GPUs are widely used for learning / inference of CNN, but programmable devices such as FPGAs are sometimes used to further improve power efficiency.
- FPGA programmable devices
- a fixed-point number representation is often used to reduce the circuit scale.
- the CNN processing system 1 introduces a different scale factor (a conversion factor from a floating-point number to a fixed-point number) in each layer of the neural network, and uses a FPGA as an accelerator from a host machine equipped with a CPU. It is.
- FIG. 2 is a diagram illustrating an outline of the CNN process according to the present embodiment.
- the places where the quantization error occurs are “(1) the place where the input data and the weight coefficient of the FP32 are quantized to INT8” and “(2) the INT8 Where calculation is performed in a quantized state ".
- “(1) a portion where the input data of the FP 32, the weight coefficient, and the like are quantized into INT8” specifically indicates a calculation represented by the following equation.
- x is an input of FP32
- s is a scale factor (scalar value of FP32)
- round (v) is a function for rounding the value v of FP32 to the nearest integer
- clamp (v, a, b) is an integer.
- q clamp (round (sx),-127,127)
- the CNN processing system 1 disclosed in the present embodiment solves a practical problem of the conventional entropy calibration.
- FIG. 3 is a diagram schematically illustrating a functional configuration of the CNN processing system 1 according to the present embodiment.
- the program recorded in the storage device 14 is read into the RAM 12 and executed by the CPU 11 and / or the FPGA 16, and the hardware provided in the server 50 is controlled, so that the data is Acquisition unit 21, inference unit 22, first bin width determination unit 23, bin range determination histogram creation unit 24, range determination unit 25, second bin width determination unit 26, reference histogram creation unit 27, candidate histogram creation It functions as an information processing apparatus including a unit 28, a threshold acquisition unit 29, a scale factor calculation unit 30, and a quantization unit 31.
- each function of the CNN processing system 1 is executed by the CPU 11 and / or the FPGA 16 which are general-purpose processors. Alternatively, it may be executed by a plurality of dedicated processors.
- the data acquisition unit 21 acquires a data set (a plurality of data) represented by a floating-point type (for example, FP32) and used in the convolution operation.
- a data set (a plurality of data) represented by a floating-point type (for example, FP32) and used in the convolution operation.
- negative values in the data set may be replaced with 0 by the ReLU function.
- the histogram creation units 24, 27, and 28 (to be described later, a bin range determination histogram creation unit 24, a reference histogram creation unit 27,
- the candidate histogram creation unit 28) creates a histogram by assigning data having a value other than 0 to each bin based on a predetermined bin width, and not assigning data having a value of 0 to any bin. I do.
- the inference unit 22 infers the input data set according to a general convolutional neural network method, and outputs the inference result as a data set.
- the first bin width determination unit 23 by dividing the maximum value in the plurality of data represented by the floating-point at a given number of bins, determining a first bin width delta 1.
- Bin ranges determined for histogram creation section 24 the each of the plurality of data, by assigning to each bin based on the first bin width delta 1, to create a bin range determination histogram P 1.
- Range determining unit 25 refers to the bin ranges determination histogram P 1, a predetermined percentage of the plurality of data (for example, 99.99%) in the bin ranges (present embodiments falling number of data described above, the bin position X ).
- Second bin width determination unit 26 the bin range (in this embodiment, the bin position X below) by dividing a value obtained by multiplying the first bin width delta 1 to the number of data of a predetermined number of bins, determining a second bin width delta 2.
- Reference histogram generating unit 27 a plurality of data in the bin range, by assigning to each bin based on the second bin width delta 2, to create a reference histogram (reference histogram) P 2.
- the candidate histogram creating unit 28 creates a candidate histogram (candidate @ histogram) Q by assigning each of the plurality of data to an arbitrary number i of bins in a floating-point type.
- Threshold acquiring unit 29 compares the distribution of distribution and the candidate histogram Q in a reference histogram P 2, to obtain a threshold t, such as differences in the distribution decreases.
- the scale factor calculation unit 30 converts the plurality of data represented by the floating-point type into the predetermined fixed-point data based on the threshold value t obtained by the threshold value acquisition unit 29 and the number of steps that can be represented by the predetermined fixed-point type. Calculate a scale factor for converting to a decimal type (for example, INT8).
- a decimal type for example, INT8
- the quantization unit 31 quantizes the data whose value is within the range determined by the threshold value t to be within the range of the maximum value or the minimum value that can be represented by a predetermined fixed-point type, and the value is outside the range determined by the threshold value t. Is assigned to the maximum value or the minimum value, thereby converting a plurality of data into a fixed-point type.
- the quantization unit 31 uses the scale factor calculated by the scale factor calculation unit 30 to convert a plurality of data represented by a floating-point type into a predetermined fixed-point type.
- FIGS. 4 and 5 are flowcharts showing the outline of the flow of the calibration process according to the present embodiment. The processing shown in this flowchart is executed when a histogram of input / output data of each layer is created in the CNN.
- steps S101 and S102 a calibration data set is accepted and inference based on the data set is performed.
- the inference unit 22 uses a learned parameter to perform a floating-point type (for example, FP32) for the data set. Is inferred (step S102). Thereafter, the process proceeds to step S103.
- a floating-point type for example, FP32
- steps S103 to S112 are executed for all layers (the absolute value of) the output data of step S102 for each layer, so that an appropriate scale factor is determined.
- the data processed here is a floating-point type (for example, FP32) except for the subscript of the array, and conversion to a fixed-point type (for example, INT8) is performed during the processing shown in this flowchart. Is not done.
- steps S103 step S105 histograms P 1 is created for determining bin ranges.
- the first bin width determination unit 23 extracts the maximum value of (the absolute value of) all output data (step S103). Then, the first bin width determination section 23, based on the maximum value, to determine a first bin width delta 1 histogram (step S104). Specifically, the first bin width determining unit 23 determines the first bin width ⁇ 1 based on a value obtained by dividing the maximum value extracted in step S103 by the number of bins of the histogram to be created. To determine. For example, the maximum value is 10,000, when the number of bins is 2,048, the first bin width delta 1 is determined to be 4.8828125.
- step S105 When the first bin width delta 1 is determined, bin ranges determined for histogram creation section 24, based on each of the plurality of data obtained in step S102, the first bin width delta 1 determined the by assigning the bottle, creating a bin range determining histogram P 1 (step S105). Thereafter, the process proceeds to step S106.
- step S108 from step S106 the reference histogram P 2 is generated.
- the range determining unit 25 refers to the bin ranges determined histogram P 1 created in step S105, almost all the bins range determination histogram P 1 overall frequency value bins position 0 as a starting point (e.g., 99. Then, a bin position X that can fit within (99%) is searched for (step S106).
- the second bin width determination unit 26 the determined value obtained by multiplying the first bin width delta 1 to the number of data within the range of the bin position X (bin ranges), to be created based of the value obtained by dividing by the number of bins, determining a second bin width delta 2.
- the reference histogram creation unit 27 When the second bin width delta 2 is determined, the reference histogram creation unit 27, the each of the plurality of data obtained in step S102, the determined second each bin based on the bin width delta 2 by assigning, to create a reference histogram P 2 (step S108). Thereafter, the process proceeds to step S109.
- step S109 the bin number i of a plurality of patterns, the candidate histogram Q is created, the difference between the reference histogram P 2 is determined.
- the candidate histogram creation unit 28 converts each of the plurality of data obtained in step S102 into a 128-level gradation with a floating-point number type (in the case of INT8. Here, quantization to a fixed-point type is not performed). ), And assigns the candidate bins to i bins, thereby creating a candidate histogram Q.
- the candidate histogram creation unit 28 to each integer that is a multiple of the possible number of stages represented in a range of the number of bins reference histogram P 2 and a predetermined fixed-point type as bin number i, each bottle A plurality of candidate histograms Q are created for the number i.
- the number of bins reference histogram P 2 is 2048, when using a INT8 as fixed-point, i is [128, 256, 384,. . . , 2048].
- step S109 the threshold acquiring unit 29, and each of the plurality of candidate histogram Q, Kullback-Leibler divergence between the reference histogram P 2 which shortened the bin number i of the candidate histogram Q of interest to bin number d ( (A measure of the difference in probability distribution).
- step S109 the following processing is executed. Thereafter, the process proceeds to step S110.
- h (arr) sum (arr) / (the number of non-zero elements included in arr)”
- 128n ⁇ 1 i ⁇ 1”.
- Step S109.4 The following processing is executed to create a candidate histogram Q of length i.
- Q [q (0), q (0), ..., q (i-1)]
- Step S109.5 the respective reference histogram P roi and candidate histogram Q, sum to normalize so that the 1.0, to create a reference histogram P roi 'and candidate histogram Q''.
- Step S109.6 calculating the Kullback-Leibler divergence d between the reference histogram P roi 'and the candidate histogram Q' and '.
- a scale factor s is calculated.
- the threshold value acquiring unit 29 determines that the Kullback-Leibler information amount d between the reference histogram P roi ′ and the candidate histogram Q ′′ is the minimum (in other words, the probability distribution and the candidate histogram Q in the reference histogram P roi) . Is determined (step S110). Then, the threshold obtaining unit 29 sets the integer i when the Kullback-Leibler information amount d is minimum to m, and calculates the threshold t using the following equation (step S111).
- the quantization unit 31 converts the scale factor calculated in step S111 into a scale factor when quantizing the data of the fixed-point data (for example, FP32) into the fixed-point data (for example, INT8) in the convolutional neural network.
- FIG. 6 is a flowchart showing an outline of the flow of the zero data exclusion process according to the present embodiment. The processing shown in this flowchart is executed not only when the calibration processing described with reference to FIGS. 4 and 5 is performed, but also when a histogram of input / output data of each layer is created in the CNN.
- the bin range determination histogram creating unit 24, the reference histogram creating unit 27, and the candidate histogram creating unit 28 convert each data in the input data set.
- one data v is obtained from the data array (step S201), and it is determined whether or not the data v is 0 (step S202).
- step S1 If the acquired data v is not 0, the histogram creating units 24, 27, and 28 calculate the bin position i from the absolute value of the data v and increment the frequency value of the bin position i in the histogram as in the related art (step S1). S203). On the other hand, when the acquired data v is 0, the histogram creating units 24, 27, and 28 do not increment the frequency value of the bin position i for the data v. If unprocessed data exists in the data array, the process returns to step S201 (step S204). When the processing from step S201 to step S204 is completed for all data in the data array, the processing shown in this flowchart ends.
- the value 0 is excluded when creating the histogram (for the value 0, the frequency value of the corresponding bin of the histogram is not incremented). A decrease in recognition accuracy is suppressed.
- FIGS. 7 to 9 are diagrams showing reference histograms created by conventional entropy calibration in a CNN including a ReLU function.
- a huge peak occurs at a value 0 (see FIGS. 7 to 9). This is because all negative parts of the output are combined into one value 0 by the ReLU function.
- the normalization frequency of the positive portion of the output decreases, the scale factor becomes larger than expected, and overflow or underflow ( ⁇ 127 which is the upper / lower limit of INT8) (Exceeding an integer value and being clipped to ⁇ 127) frequently occurs.
- recognition accuracy is greatly reduced.
- FIGS. 10 to 12 are diagrams showing reference histograms created by calibration employing zero data exclusion processing in the CNN including the ReLU function.
- the value 0 is excluded when creating a histogram (see the flowchart in FIG. 6).
- the data distributions of FIGS. 7 to 9 change as shown in FIGS.
- the vertical black line in FIGS. 7 to 12 indicates the threshold at which clipping is performed at the time of quantization.
- the threshold in FIGS. 10 to 12 is shifted to the right. It can be seen that quantization can be performed without clipping a wider range of values, that is, with less loss of information.
- FIG. 13 is a diagram illustrating an example of a reference histogram created by a conventional entropy calibration for a specific layer of the CNN.
- the maximum value of the X axis (the absolute value of the output) is about 44.7
- the threshold value is 21.7.
- FIG. 14 is a diagram showing an example of a reference histogram when the maximum value of the absolute value is rewritten to a value 100 times the absolute value in the conventional entropy calibration.
- the threshold (280) is placed at the position of the frequency value 0 because the minimum value of the bin number of the quantized candidate histogram Q created by the conventional entropy calibration is 128. .
- the scale factor is more than ten times as large as the appropriate value, and as a result, the recognition accuracy is significantly reduced.
- Figure 16 is a diagram showing the reference histogram P 2 created by the calibration processing step S108 of the present embodiment. Relative to the reference histogram P 2 in FIG. 16, by performing the step S109 and subsequent steps, the threshold value is obtained as 19.4. This value is close to the value 21.7 obtained from the histogram in FIG. 13, and the situation close to that in FIG. 13 can be reproduced. (A value whose absolute value is larger than the threshold value represented by the black vertical line is the upper limit / Clipped to the lower limit).
- FIG. 17 is a diagram showing a candidate histogram Q when running reference histogram P 2 Step S109 and subsequent steps based on the FIG. 16, Kullback-Leibler divergence is minimized.
- FIGS. 18 and 19 are enlarged views of the first quarter of each of FIGS. 16 and 17.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
畳み込みニューラルネットワークの演算を行う情報処理装置に、浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定部23と、複数のデータの夫々を、第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成部24と、ビン範囲決定用ヒストグラムを参照し、複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定部25と、ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定部26と、ビン範囲内の複数のデータを、第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成部27と、を備えた。
Description
本開示は、畳み込みニューラルネットワーク技術に関する。
近年、深層学習、特に畳み込みニューラルネットワーク(Convolutional Neural Network。以下、「CNN」と称する)が注目されている。一般に、CNNにおける入力/重み係数/出力の各データの表現には、学習/推論時ともに、浮動小数点数表現(32bit float。以下「FP32」と称する)が用いられる。しかし、浮動小数点数表現での演算では必要とされるロジックの規模が大きくなるため、ロジック規模を低減させるために、少なくとも一部に固定小数点数表現(例えば、8bit integer。以下「INT8」と称する)を用いるCNNや、出力を2値化するCNNが提案されている(出力を2値化するCNNについては、特許文献2及び3を参照)。
ここで、固定小数点数表現をCNNへ適用する上で量子化誤差を可能な限り小さくするために、CNNの学習を行った後、事前に小さなデータセットを推論して各層の入力/出力データ分布を予測し、統計的解析によってFP32のダイナミックレンジからINT8のダイナミックレンジへ変換するためのスケールファクタを決定する手法が提案されている(特許文献1を参照)。
一般的に、固定小数点数表現は単一のスケールファクタを共有するが、CNNにおいては、ニューラルネットワークの各層によって入力/重み係数/出力のデータ分布が大きく異なるため、CNNにおいて単一のスケールファクタを使用し、かつ、固定小数点数表現のビット数を減らすと、認識精度が急激に低下することが指摘されている(非特許文献1を参照)。また、非特許文献1では、ニューラルネットワークの各層で異なるスケールファクタを導入することにより、固定小数点数表現のビット数が少ない場合でも、浮動小数点数表現を使用した場合と同程度の認識精度を保つことができる、と報告されている。
そして、上述の手法において用いられるスケールファクタを求める具体的なアルゴリズムの1つとして、所謂「エントロピーキャリブレーション」が提案されている(非特許文献2を参照)。
P. Gysel, J. Pimentel, M. Motamedi, and S. Ghiasi. Ristretto: A Framework for Empirical Study of Resource-Efficient Inference in Convolutional Neural Networks. IEEE Transactions on Neural Networks and Learning Systems, 2018.
Szymon Migacz.8-bit Inference with TensorRT. http://on-demand.gputechconf.com/gtc/2017/presentation/s7310-8-bit-inference-with-tensorrt.pdf
従来、固定小数点数表現をCNNへ適用する上で量子化誤差を可能な限り小さくするために、CNNの学習を行った後、事前に小さなキャリブレーション用データセットを推論して各層の入力/出力データ分布を予測し、統計的解析によって浮動小数点数表現のダイナミックレンジから固定小数点数表現のダイナミックレンジへ変換するためのスケールファクタを決定する手法が提案されており、また、このスケールファクタを求める具体的なアルゴリズムの1つとして、所謂エントロピーキャリブレーションと称される手法が提案されている。エントロピーキャリブレーションは、浮動小数点数表現を用いてキャリブレーション用のデータセットをまず推論し、そこで得た各層/各データの分布と、それらを量子化した分布とで情報の損失が最も小さくなるようなスケールファクタを算出する手法である。
しかし、エントロピーキャリブレーションを用いた場合であっても、例えば、極端な外れ値が発生するデータセットに用いた場合や、活性化関数として所謂ReLU(Rectified Linear Unit)関数(φ(x)=max(0, x))を用いた場合等に、認識制度が低下するという問題が生じる。
本開示は、上記した問題に鑑み、固定小数点型への量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することを課題とする。
本開示の一例は、畳み込みニューラルネットワークの演算を行う情報処理装置であって、浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定手段と、前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成手段と、前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定手段と、前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定手段と、前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、を備える情報処理装置である。
このような情報処理装置によれば、極端な外れ値が発生するデータセットを量子化する場合でも認識制度が低下しづらいキャリブレーションを提供することが出来る。
本開示の一例は、畳み込みニューラルネットワークの演算を行う情報処理装置であって、畳み込み演算結果に含まれる負の値が0に置換された、浮動小数点型で表されたデータを得るデータ取得手段と、前記複数のデータのうち値が0でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が0であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、を備える情報処理装置である。
このような情報処理装置によれば、活性化関数としてReLU関数を用いた場合でも、認識制度の低下を抑制することが出来る。
本開示は、情報処理装置、システム、コンピューターによって実行される方法又はコンピューターに実行させるプログラムとして把握することが可能である。又、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的又は化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
本開示によれば、固定小数点型への量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することが可能となる。
以下、本開示に係る情報処理装置、方法及びプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係る情報処理装置、方法及びプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、又、種々の改良や変形が行われてよい。
実施形態の説明では、本開示に係る情報処理装置、方法及びプログラムを、畳み込みニューラルネットワークの演算を行うためのシステムにおいて実施した場合の実施の形態について説明する。なお、本開示に係る情報処理装置、方法及びプログラムは、ニューラルネットワーク技術について広く用いることが可能であり、本開示の適用対象は、実施形態において示した例に限定されない。
<システムの構成>
図1は、本実施形態に係る畳み込みニューラルネットワーク(CNN)処理システム1のハードウェア構成を示す概略図である。本実施形態に係るCNN処理システム1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、EEPROM(Electrically Erasable and Programmable Read Only Memory)やHDD(Hard Disk Drive)等の記憶装置14、NIC(Network Interface Card)15等の通信ユニット、FPGA(Field-Programmable Gate Array)16、等を備えるコンピューターである。
図1は、本実施形態に係る畳み込みニューラルネットワーク(CNN)処理システム1のハードウェア構成を示す概略図である。本実施形態に係るCNN処理システム1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、EEPROM(Electrically Erasable and Programmable Read Only Memory)やHDD(Hard Disk Drive)等の記憶装置14、NIC(Network Interface Card)15等の通信ユニット、FPGA(Field-Programmable Gate Array)16、等を備えるコンピューターである。
CNNの学習/推論にあたってはGPUが広く用いられているが、電力効率をより高めるために、FPGAなどのプログラマブルデバイスが活用される場合がある。そして、FPGAにおいては、回路規模を小さくするために、固定小数点数表現がしばしば用いられる。本実施形態に係るCNN処理システム1は、ニューラルネットワークの各層で異なるスケールファクタ(浮動小数点数から固定小数点数への変換ファクタ)を導入し、CPUを搭載するホストマシンからアクセラレータとしてFPGAを使用するシステムである。
図2は、本実施形態に係るCNN処理の概要を示す図である。本実施形態に係るCNN処理システム1において、量子化誤差が発生する箇所は、「(1)FP32の入力データ、重み係数などをINT8へ量子化する箇所」及び「(2)FPGA上で、INT8に量子化された状態で計算を行う箇所」の2箇所である。このうち、「(1)FP32の入力データ、重み係数などをINT8へ量子化する箇所」は、具体的には、以下の式で表されるような計算を指す。以下の式において、xはFP32の入力、sはスケールファクタ(FP32のスカラー値)、round(v)はFP32の値vを最近傍の整数へ丸める関数、clamp(v,a,b)は整数vがa未満ならa、bより大きければb、それ以外はvを返す関数を表す。
q = clamp(round(sx),-127,127)
q = clamp(round(sx),-127,127)
そして、スケールファクタを求める具体的なアルゴリズムの1つとして、所謂エントロピーキャリブレーションがあるが、本アルゴリズムは以下のような実用上の課題を有している。
課題1:ReLU関数の取り扱い
ReLU関数を含むCNNの場合、従来のエントロピーキャリブレーションで作成する参照用ヒストグラムにおいて、値0にピークが発生する。これは、ReLU関数によって、出力の負の部分がすべて一つの値0にまとめられているためである。このようなデータ分布になると、出力のうち正の部分の正規化頻度が減少して、スケールファクタが期待される値よりも大きくなり、オーバーフローまたはアンダーフロー(INT8の上限/下限である±127を超えた整数値となり、±127にクリップされること)が多発する。結果として、認識精度が大きく低下してしまう。
ReLU関数を含むCNNの場合、従来のエントロピーキャリブレーションで作成する参照用ヒストグラムにおいて、値0にピークが発生する。これは、ReLU関数によって、出力の負の部分がすべて一つの値0にまとめられているためである。このようなデータ分布になると、出力のうち正の部分の正規化頻度が減少して、スケールファクタが期待される値よりも大きくなり、オーバーフローまたはアンダーフロー(INT8の上限/下限である±127を超えた整数値となり、±127にクリップされること)が多発する。結果として、認識精度が大きく低下してしまう。
課題2:極端な外れ値が発生するデータセットの取り扱い
従来のエントロピーキャリブレーションを、極端な外れ値が発生するデータセットに対して適用した場合、出力データのヒストグラムのビン幅が極端に大きくなり、多くの値が同一のビンに丸められてしまうことで、情報の損失が大きくなる。結果として、認識精度が大きく低下してしまう。
従来のエントロピーキャリブレーションを、極端な外れ値が発生するデータセットに対して適用した場合、出力データのヒストグラムのビン幅が極端に大きくなり、多くの値が同一のビンに丸められてしまうことで、情報の損失が大きくなる。結果として、認識精度が大きく低下してしまう。
本実施形態に開示されたCNN処理システム1は、従来のエントロピーキャリブレーションが有する実用上の課題を解決するものである。
図3は、本実施形態に係るCNN処理システム1の機能構成の概略を示す図である。CNN処理システム1は、記憶装置14に記録されているプログラムが、RAM12に読み出され、CPU11及び/又はFPGA16によって実行されて、サーバー50に備えられた各ハードウェアが制御されることで、データ取得部21、推論部22、第一のビン幅決定部23、ビン範囲決定用ヒストグラム作成部24、範囲決定部25、第二のビン幅決定部26、参照用ヒストグラム作成部27、候補ヒストグラム作成部28、閾値取得部29、スケールファクタ算出部30及び量子化部31を備える情報処理装置として機能する。なお、本実施形態及び後述する他の実施形態では、CNN処理システム1の備える各機能は、汎用プロセッサであるCPU11及び/又はFPGA16によって実行されるが、これらの機能の一部又は全部は、1又は複数の専用プロセッサによって実行されてもよい。
データ取得部21は、浮動小数点型(例えば、FP32)で表された、畳み込み演算で用いられるデータセット(複数のデータ)を得る。なお、データ取得部21によって得られるデータセットでは、ReLU関数によって、データセット中の負の値が0に置換されている場合がある。本実施形態では、ReLU関数によってデータセット中の負の値が0に変換された場合、後述するヒストグラム作成部24、27及び28(ビン範囲決定用ヒストグラム作成部24、参照用ヒストグラム作成部27及び候補ヒストグラム作成部28)は、値が0でないデータについては、所定のビン幅に基づいて各ビンに割り当て、値が0であるデータについては、何れのビンにも割り当てないことで、ヒストグラムを作成する。
推論部22は、一般的な畳み込みニューラルネットワークの手法に沿って、入力されたデータセットに関する推論を行い、推論結果をデータセットとして出力する。
第一のビン幅決定部23は、浮動小数点型で表された複数のデータ中の最大値を所定のビン数で割ることで、第一のビン幅Δ1を決定する。
ビン範囲決定用ヒストグラム作成部24は、複数のデータの夫々を、第一のビン幅Δ1に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムP1を作成する。
範囲決定部25は、ビン範囲決定用ヒストグラムP1を参照し、複数のデータのうち所定割合(例えば、99.99%)以上の数のデータが収まるビン範囲(本実施形態では、ビン位置X)を決定する。
第二のビン幅決定部26は、ビン範囲内(本実施形態では、ビン位置X以下)のデータの数に第一のビン幅Δ1を乗じた値を所定のビン数で割ることで、第二のビン幅Δ2を決定する。
参照用ヒストグラム作成部27は、ビン範囲内の複数のデータを、第二のビン幅Δ2に基づいて各ビンに割り当てることで、参照用ヒストグラム(reference histogram)P2を作成する。
候補ヒストグラム作成部28は、複数のデータの夫々を浮動小数点型のまま任意の数iのビンに割り当てることで候補ヒストグラム(candidate histogram)Qを作成する。
閾値取得部29は、参照用ヒストグラムP2における分布と候補ヒストグラムQにおける分布とを比較し、分布の差異が小さくなるような閾値tを得る。
スケールファクタ算出部30は、閾値取得部29によって得られた閾値tと、所定の固定小数点型で表現可能な段階数とに基づいて、浮動小数点型で表された複数のデータを該所定の固定小数点型(例えば、INT8)に変換するためのスケールファクタを算出する。
量子化部31は、値が閾値tによって定まる範囲の内にあるデータについては所定の固定小数点型で表現可能な最大値又は最小値の範囲内に量子化し、値が閾値tによって定まる範囲の外にあるデータについては最大値又は最小値に割り当てることで、複数のデータを固定小数点型に変換する。本実施形態では、量子化部31は、スケールファクタ算出部30によって算出されたスケールファクタを用いて、浮動小数点型で表された複数のデータを所定の固定小数点型に変換する。
<処理の流れ>
次に、本実施形態に係るCNN処理システム1によって実行される処理の流れを説明する。なお、以下に説明する処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
次に、本実施形態に係るCNN処理システム1によって実行される処理の流れを説明する。なお、以下に説明する処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
図4及び図5は、本実施形態に係るキャリブレーション処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、CNNにおける各層の入力/出力データのヒストグラム作成時に実行される。
ステップS101及びステップS102では、キャリブレーション用データセットの受け付け及び当該データセットに基づく推論が行われる。キャリブレーション用の小規模なデータセットがデータ取得部21によって受け付けられると(ステップS101)、推論部22は、学習済みパラメタを用いて、当該データセットについての浮動小数点数型(例えば、FP32)での推論を行う(ステップS102)。その後、処理はステップS103へ進む。
その後、ステップS102の出力の全データ(の絶対値)に対して、各層毎に、ステップS103からステップS112に示す処理が実行されることで、適切なスケールファクタが決定される。なお、ここで処理されるデータは、配列の添字を除いて浮動小数点数型(例えば、FP32)であり、固定小数点型(例えば、INT8)への変換等は、本フローチャートに示された処理中では行われない。
ステップS103からステップS105では、ビン範囲決定用ヒストグラムP1が作成される。はじめに、第一のビン幅決定部23は、出力の全データ(の絶対値)の最大値を抽出する(ステップS103)。そして、第一のビン幅決定部23は、当該最大値に基づいて、ヒストグラムの第一のビン幅Δ1を決定する(ステップS104)。具体的には、第一のビン幅決定部23は、ステップS103で抽出された最大値を、作成したいヒストグラムのビン数で割ることで得られた値に基づいて、第一のビン幅Δ1を決定する。例えば、最大値が10,000であり、ビン数が2,048である場合、第一のビン幅Δ1は4.8828125に決定される。
第一のビン幅Δ1が決定されると、ビン範囲決定用ヒストグラム作成部24は、ステップS102で得られた複数のデータの夫々を、決定された第一のビン幅Δ1に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムP1を作成する(ステップS105)。その後、処理はステップS106へ進む。
ステップS106からステップS108では、参照用ヒストグラムP2が作成される。はじめに、範囲決定部25は、ステップS105で作成されたビン範囲決定用ヒストグラムP1を参照し、ビン位置0を起点としてビン範囲決定用ヒストグラムP1全体の頻度値のほぼ全て(例えば、99.99%)が収まるようなビン位置Xを探す(ステップS106)。そして、第二のビン幅決定部26は、ビン位置Xに基づいて、第二のビン幅Δ2を決定する(ステップS107)。具体的には、第二のビン幅決定部26は、決定されたビン位置Xまでの範囲(ビン範囲)内のデータの数に第一のビン幅Δ1を乗じた値を、作成したいヒストグラムのビン数で割ることで得られた値に基づいて、第二のビン幅Δ2を決定する。
第二のビン幅Δ2が決定されると、参照用ヒストグラム作成部27は、ステップS102で得られた複数のデータの夫々を、決定された第二のビン幅Δ2に基づいて各ビンに割り当てることで、参照用ヒストグラムP2を作成する(ステップS108)。その後、処理はステップS109へ進む。
ステップS109では、複数パターンのビン数iについて、候補ヒストグラムQが作成され、参照用ヒストグラムP2との間の差異が求められる。候補ヒストグラム作成部28は、ステップS102で得られた複数のデータの夫々を、浮動小数点数型のまま128階調化(INT8の場合。なお、ここでは固定小数点型への量子化は行われない)して、i個のビンに割り当てることで、候補ヒストグラムQを作成する。この際、候補ヒストグラム作成部28は、参照用ヒストグラムP2のビン数の範囲内であり且つ所定の固定小数点型で表現可能な段階数の倍数である各整数をビン数iとして、夫々のビン数iについて、複数の候補ヒストグラムQを作成する。例えば、参照用ヒストグラムP2のビン数が2048であり、固定小数点型としてINT8を用いる場合、iは[128, 256, 384, ..., 2048]の値をとる。そして、閾値取得部29は、複数の候補ヒストグラムQの夫々と、ビン数を対象となる候補ヒストグラムQのビン数iに縮めた参照用ヒストグラムP2との間のカルバック・ライブラー情報量d(確率分布の差異を測る尺度)を計算する。具体的には、ステップS109では、以下の処理が実行される。その後、処理はステップS110へ進む。
ステップS109.1:参照用ヒストグラムP2から、ビン[0]からビン[i-1]までのビンを切り出すことで、参照用ヒストグラムProi(= [P[0], P[1], ..., P[i-1]])を作成する。
ステップS109.2:参照用ヒストグラムProiの末尾にアウトライアの総和(= sum(P[i], P[i+1], ..., P[2047])を加える。
ステップS109.3:以下の処理を実行して、長さ128の候補ヒストグラムQ'を作成する。
(1)マージするビン数n(n=i/128)を算出する。
(2)参照用ヒストグラムProiの連続するビンを、以下のようにn個ずつマージして、候補ヒストグラムQ'を作る。なお、ここで「h(arr)=sum(arr)/(arrに含まれる非ゼロ要素数)」であり、また、「128n-1=i-1」である。
Q' = [h(Proi[0], ..., Proi[n-1]),
h(Proi[n], ..., Proi[2n-1]),
...,
h(Proi[127n], ..., Proi[128n-1])]
(1)マージするビン数n(n=i/128)を算出する。
(2)参照用ヒストグラムProiの連続するビンを、以下のようにn個ずつマージして、候補ヒストグラムQ'を作る。なお、ここで「h(arr)=sum(arr)/(arrに含まれる非ゼロ要素数)」であり、また、「128n-1=i-1」である。
Q' = [h(Proi[0], ..., Proi[n-1]),
h(Proi[n], ..., Proi[2n-1]),
...,
h(Proi[127n], ..., Proi[128n-1])]
ステップS109.4:以下の処理を実行して、長さiの候補ヒストグラムQを作成する。なお、以下において、Proi[x]≠0のとき「q(x)=Q'[floor(x/n)]」であり、Proi[x]=0のときq(x)=0」である。ここで、floor()は床関数である。
Q = [q(0), q(0), ..., q(i-1)]
Q = [q(0), q(0), ..., q(i-1)]
ステップS109.5:参照用ヒストグラムProi及び候補ヒストグラムQの夫々を、総和が1.0になるように正規化することで、参照用ヒストグラムProi'及び候補ヒストグラムQ''を作成する。
ステップS109.6:参照用ヒストグラムProi'と候補ヒストグラムQ''との間のカルバック・ライブラー情報量dを計算する。
ステップS110からステップS112では、スケールファクタsが算出される。閾値取得部29は、参照用ヒストグラムProi'と候補ヒストグラムQ''との間のカルバック・ライブラー情報量dが最小となる(換言すれば、参照用ヒストグラムProiにおける確率分布と候補ヒストグラムQにおける確率分布とが最も近くなる)整数iを決定する(ステップS110)。そして、閾値取得部29は、カルバック・ライブラー情報量dが最小となるときの整数iをmとし、以下の式を用いて閾値tを算出する(ステップS111)。スケールファクタ算出部30は、閾値t及び固定小数点型で表現可能な段階数-1(INT8の場合、127)に基づいて、スケールファクタsを算出する(ステップS112)。その後、本フローチャートに示された処理は終了する。
閾値t = (m + 0.5) * ビン幅Δ
スケールファクタs = 127 / 閾値t
閾値t = (m + 0.5) * ビン幅Δ
スケールファクタs = 127 / 閾値t
その後、量子化部31は、ステップS111で算出されたスケールファクタを、畳み込みニューラルネットワークにおいて不動小数点型データ(例えば、FP32)のデータを固定小数点型(例えば、INT8)に量子化する際のスケールファクタとして用いる。
なお、本実施形態では、図4及び図5を参照して説明したキャリブレーション処理において、ビン範囲決定用ヒストグラムP1及び参照用ヒストグラムP2が作成される際には、値0のデータが除外される(値0のデータについては、ヒストグラムの対応するビンの頻度値をインクリメントしない)。以下、ヒストグラム作成時に値0のデータを除外する場合の処理の流れについて、フローチャートを参照して説明する。
図6は、本実施形態に係るゼロデータ除外処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、図4及び図5を参照して説明したキャリブレーション処理のみならず、CNNにおける各層の入力/出力データのヒストグラム作成時に実行される。
ビン範囲決定用ヒストグラム作成部24、参照用ヒストグラム作成部27及び候補ヒストグラム作成部28(以下、単に「ヒストグラム作成部24、27及び28」と称する)は、入力されたデータセット内の各データをビンに積み上げる際に、データアレイからデータvを1つ取得し(ステップS201)、データvが0であるか否かを判定する(ステップS202)。
取得されたデータvが0でない場合、ヒストグラム作成部24、27及び28は、従来通り、データvの絶対値からビン位置iを計算し、ヒストグラム内のビン位置iの頻度値をインクリメントする(ステップS203)。一方、取得されたデータvが0である場合、ヒストグラム作成部24、27及び28は当該データvについてのビン位置iの頻度値のインクリメントを行わない。そして、データアレイ内に未処理のデータが存在する場合、処理はステップS201へ戻る(ステップS204)。データアレイ内の全てのデータについてステップS201からステップS204の処理が終了すると、本フローチャートに示された処理は終了する。
なお、本実施形態では、図4及び図5を用いて説明したキャリブレーション処理と、図6を用いて説明したゼロデータ除外処理との両方を採用する例について説明したが、キャリブレーション処理及びゼロデータ除外処理は、何れか一方のみが採用されてもよい。
<効果>
上記説明した実施形態によれば、固定小数点データへの量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することが可能となる。
上記説明した実施形態によれば、固定小数点データへの量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することが可能となる。
具体的には、「課題1:ReLU関数の取り扱い」に対しては、ヒストグラム作成時に値0を除外すること(値0に対してはヒストグラムの対応するビンの頻度値をインクリメントしないこと)で、認識精度の低下を抑制している。
また、「課題2:極端な外れ値が発生するデータセットの取り扱い」に対しては、従来のエントロピーキャリブレーションにおいて作成されていた参照用ヒストグラムPを2段階(ビン範囲決定用ヒストグラムP1及び参照用ヒストグラムP2)に分けて作成することで、認識精度の低下を抑制している。より具体的には、1つ目のヒストグラム(ビン範囲決定用ヒストグラムP1)を通常通りに作成したあと、1つ目のヒストグラムを解析して、全体のほぼすべて(例えば、99.99%)の頻度値が収まり、かつ、外れ値を除外できるような閾値と、2つ目のヒストグラム(参照用ヒストグラムP2)のビン幅を決める。次に、2つ目のヒストグラムを新しいビン幅の下で作成する。このとき、1つ目のヒストグラムを解析して決めた閾値t以上の値は無視する。
[実施例]
次に、上記実施形態において説明したキャリブレーション処理及びゼロデータ除外処理をCNNに採用した場合の具体的な実施例を説明する。
次に、上記実施形態において説明したキャリブレーション処理及びゼロデータ除外処理をCNNに採用した場合の具体的な実施例を説明する。
<実施例1>
図7から図9は、ReLU関数を含むCNNにおいて、従来のエントロピーキャリブレーションで作成された参照用ヒストグラムを示す図である。従来のエントロピーキャリブレーションで作成された参照用ヒストグラムでは、値0に巨大なピークが発生する(図7から図9を参照)。これは、ReLU関数によって、出力の負の部分がすべて一つの値0にまとめられているためである。このようなデータ分布になると、出力のうち正の部分の正規化頻度が減少して、スケールファクタが期待される値よりも大きくなり、オーバーフローまたはアンダーフロー(INT8の上限/下限である±127を超えた整数値となり、±127にクリップされること)が多発する。結果として、認識精度が大きく低下してしまう。
図7から図9は、ReLU関数を含むCNNにおいて、従来のエントロピーキャリブレーションで作成された参照用ヒストグラムを示す図である。従来のエントロピーキャリブレーションで作成された参照用ヒストグラムでは、値0に巨大なピークが発生する(図7から図9を参照)。これは、ReLU関数によって、出力の負の部分がすべて一つの値0にまとめられているためである。このようなデータ分布になると、出力のうち正の部分の正規化頻度が減少して、スケールファクタが期待される値よりも大きくなり、オーバーフローまたはアンダーフロー(INT8の上限/下限である±127を超えた整数値となり、±127にクリップされること)が多発する。結果として、認識精度が大きく低下してしまう。
図10から図12は、ReLU関数を含むCNNにおいて、ゼロデータ除外処理を採用したキャリブレーションで作成された参照用ヒストグラムを示す図である。上記実施形態において説明したゼロデータ除外処理では、ヒストグラムを作成する際に、値0を除外する(図6のフローチャートを参照)。このようなゼロデータ除外処理を採用した場合、図7から図9のデータ分布は図10から図12のように変化する。図7から図12中の黒い縦線は量子化時にクリップが行われる閾値を表しているが、図7から図9と比べると、図10から図12の方が閾値が右に移動しており、より広い範囲の値をクリップせずに、すなわち情報の損失をより低減した状態で量子化できることがわかる。
実際に、CNNとしてGoogLeNet(商標)を用いてILSVRC 2012データセットのValidation dataで認識精度(Top-5 Accuracy)を測定したところ、以下のような改善が見られた。
・量子化なし:87.9%
・量子化あり、ゼロデータ除外処理なし: 1.2%
・量子化あり、ゼロデータ除外処理あり:86.9%
・量子化なし:87.9%
・量子化あり、ゼロデータ除外処理なし: 1.2%
・量子化あり、ゼロデータ除外処理あり:86.9%
<実施例2>
CNNの例としてYOLOv2(Tiny)を考える。このCNNは、活性化関数としてReLU関数ではなく、(負値に対する傾きが0.1である)Leaky ReLU関数(φ(x)=max(0.1x,x))を使用する。図13は、このCNNの特定のレイヤに対して従来のエントロピーキャリブレーションで作成した参照用ヒストグラムの例を示す図である。このとき、X軸(出力の絶対値)の最大値は44.7程度であり、データセット中の絶対値の最大値に基づいて算出されたビン幅は0.02(=44.7/2047)、閾値は21.7となる。
CNNの例としてYOLOv2(Tiny)を考える。このCNNは、活性化関数としてReLU関数ではなく、(負値に対する傾きが0.1である)Leaky ReLU関数(φ(x)=max(0.1x,x))を使用する。図13は、このCNNの特定のレイヤに対して従来のエントロピーキャリブレーションで作成した参照用ヒストグラムの例を示す図である。このとき、X軸(出力の絶対値)の最大値は44.7程度であり、データセット中の絶対値の最大値に基づいて算出されたビン幅は0.02(=44.7/2047)、閾値は21.7となる。
ここで、従来のエントロピーキャリブレーションで、絶対値の最大値(44.7)を、その100倍の値へ書き換えることで、極端な外れ値が生じているデータセットを用いる場合に近い状態を作出して参照用ヒストグラムを作成する。
図14は、従来のエントロピーキャリブレーションで、絶対値の最大値を、その100倍の値へ書き換えた場合の参照用ヒストグラムの例を示す図である。図14の条件下では、データセット中の絶対値の最大値に基づいて算出されたビン幅は2.18(=4470/2047)となり、図13と比べて100倍粗いヒストグラムとなる。ヒストグラム全体のビン数は2048であるので、図14のヒストグラムでは先頭1%(=21個)のビンに全頻度値が集まっている。なお、図14において閾値(280)が頻度値0の位置に置かれているのは、従来のエントロピーキャリブレーションで作成する量子化した候補ヒストグラムQのビン数の最小値を128としているためである。
即ち、図14のような状況では、スケールファクタが適切な値と比べ10倍以上離れてしまい、結果として、認識精度が大幅に低下する。
これに対して、上記実施形態において説明したキャリブレーション処理では、ヒストグラム作成が2段階で行われる(図4及び図5のフローチャートを参照)。図15は、図14のヒストグラムを元に、本実施形態に係るキャリブレーション処理のステップS106が実行される様子を示す図である。図15の太い黒線より、図14のヒストグラムの頻度値の99.99%が収まるビン位置が10であると分かる。このとき、ステップS107で求める新しいビン幅Δ2は、0.01(=10×2.18/2047)となる。
図16は、本実施形態に係るキャリブレーション処理のステップS108で作成された参照用ヒストグラムP2を示す図である。図16の参照用ヒストグラムP2に対して、ステップS109以降の処理を行うことにより、閾値が19.4と求まる。この値は、図13のヒストグラムから求めた値21.7と近くなっており、図13に近い状況を再現できている(黒の縦線で表している閾値より絶対値が大きい値は上限/下限にクリップされる)。
なお、図17は、図16の参照用ヒストグラムP2を元にステップS109以降の処理を実行し、カルバック・ライブラー情報量が最も小さくなるときの候補ヒストグラムQを示す図である。また、図18及び図19は、図16及び図17の夫々の先頭1/4の部分の拡大図である。
実際に、検証に用いたCNNでPASCAL VOC 2007データセットのTest dataを使用して認識精度(mAP, mean Average Precision)を測定したところ、以下のような改善を確認できた。
・量子化なし:52.5%
・量子化あり、特定レイヤの最大値を100倍の値に変更、キャリブレーション処理なし:33.5%
・量子化あり、特定レイヤの最大値を100倍の値に変更、キャリブレーション処理あり:51.9%
・量子化なし:52.5%
・量子化あり、特定レイヤの最大値を100倍の値に変更、キャリブレーション処理なし:33.5%
・量子化あり、特定レイヤの最大値を100倍の値に変更、キャリブレーション処理あり:51.9%
1 CNN処理システム
Claims (13)
- 畳み込みニューラルネットワークの演算を行う情報処理装置であって、
浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定手段と、
前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成手段と、
前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定手段と、
前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定手段と、
前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
を備える情報処理装置。 - 値が閾値によって定まる範囲の内にあるデータについては所定の固定小数点型で表現可能な最大値又は最小値の範囲内に量子化し、値が前記閾値によって定まる範囲の外にあるデータについては前記最大値又は前記最小値に割り当てることで、前記複数のデータを固定小数点型に変換する量子化手段と、
前記複数のデータの夫々を浮動小数点型のまま任意の数のビンに割り当てることで候補ヒストグラムを作成する候補ヒストグラム作成手段と、
前記参照用ヒストグラムにおける分布と前記候補ヒストグラムにおける分布とを比較し、分布の差異が小さくなるような前記閾値を得る閾値取得手段と、
を更に備える、請求項1に記載の情報処理装置。 - 前記閾値取得手段によって得られた前記閾値と、前記所定の固定小数点型で表現可能な段階数とに基づいて、浮動小数点型で表された前記複数のデータを該所定の固定小数点型に変換するためのスケールファクタを算出するスケールファクタ算出手段を更に備え、
前記量子化手段は、前記スケールファクタを用いて、浮動小数点型で表された前記複数のデータを前記所定の固定小数点型に変換する、
請求項2に記載の情報処理装置。 - 前記第一のビン幅決定手段は、浮動小数点型で表された複数のデータ中の最大値を所定のビン数で割ることで、前記第一のビン幅を決定し、
請求項1から3の何れか一項に記載の情報処理装置。 - 前記第二のビン幅決定手段は、前記ビン範囲内のデータの数に前記第一のビン幅を乗じた値を前記所定のビン数で割ることで、前記第二のビン幅を決定する、
請求項1から4の何れか一項に記載の情報処理装置。 - 畳み込み演算結果に含まれる負の値が0に置換された、浮動小数点型で表されたデータを得るデータ取得手段を更に備え、
前記参照用ヒストグラム作成手段は、前記複数のデータのうち値が0でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が0であるデータについては、何れのビンにも割り当てないことで、前記参照用ヒストグラムを作成する、
請求項1から5の何れか一項に記載の情報処理装置。 - 畳み込みニューラルネットワークの演算を行う情報処理装置であって、
畳み込み演算結果に含まれる負の値が0に置換された、浮動小数点型で表されたデータを得るデータ取得手段と、
前記複数のデータのうち値が0でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が0であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
を備える情報処理装置。 - 値が閾値によって定まる範囲の内にあるデータについては所定の固定小数点型で表現可能な最大値又は最小値の範囲内に量子化し、値が前記閾値によって定まる範囲の外にあるデータについては前記最大値又は前記最小値に割り当てることで、前記複数のデータを固定小数点型に変換する量子化手段と、
前記複数のデータの夫々を浮動小数点型のまま任意の数のビンに割り当てることで候補ヒストグラムを作成する候補ヒストグラム作成手段と、
前記参照用ヒストグラムにおける分布と前記候補ヒストグラムにおける分布とを比較し、分布の差異が小さくなるような前記閾値を求める閾値取得手段と、
を更に備える、請求項7に記載の情報処理装置。 - 前記閾値取得手段によって得られた前記閾値と、前記所定の固定小数点型で表現可能な段階数とに基づいて、浮動小数点型で表された前記複数のデータを該所定の固定小数点型に変換するためのスケールファクタを算出するスケールファクタ算出手段を更に備え、
前記量子化手段は、前記スケールファクタを用いて、浮動小数点型で表された前記複数のデータを前記所定の固定小数点型に変換する、
請求項8に記載の情報処理装置。 - 畳み込みニューラルネットワークの演算を行うコンピューターが、
浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定ステップと、
前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成ステップと、
前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定ステップと、
前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定ステップと、
前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成ステップと、
を実行する方法。 - 畳み込みニューラルネットワークの演算を行うコンピューターが、
畳み込み演算結果に含まれる負の値が0に置換された、浮動小数点型で表されたデータを得るデータ取得ステップと、
前記複数のデータのうち値が0でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が0であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成ステップと、
を実行する方法。 - 畳み込みニューラルネットワークの演算を行うコンピューターを、
浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定手段と、
前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成手段と、
前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定手段と、
前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定手段と、
前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
として機能させるためのプログラム。 - 畳み込みニューラルネットワークの演算を行うコンピューターを、
畳み込み演算結果に含まれる負の値が0に置換された、浮動小数点型で表されたデータを得るデータ取得手段と、
前記複数のデータのうち値が0でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が0であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
として機能させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020540941A JP7026808B2 (ja) | 2018-09-06 | 2018-09-06 | 情報処理装置、方法及びプログラム |
PCT/JP2018/033012 WO2020049681A1 (ja) | 2018-09-06 | 2018-09-06 | 情報処理装置、方法及びプログラム |
US17/192,031 US20210192319A1 (en) | 2018-09-06 | 2021-03-04 | Information processing apparatus, method, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/033012 WO2020049681A1 (ja) | 2018-09-06 | 2018-09-06 | 情報処理装置、方法及びプログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/192,031 Continuation US20210192319A1 (en) | 2018-09-06 | 2021-03-04 | Information processing apparatus, method, and medium |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020049681A1 true WO2020049681A1 (ja) | 2020-03-12 |
Family
ID=69721911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/033012 WO2020049681A1 (ja) | 2018-09-06 | 2018-09-06 | 情報処理装置、方法及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210192319A1 (ja) |
JP (1) | JP7026808B2 (ja) |
WO (1) | WO2020049681A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4009244A1 (en) | 2020-12-02 | 2022-06-08 | Fujitsu Limited | Quantization program, quantization method, and quantization apparatus |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108896B (zh) * | 2023-04-11 | 2023-07-07 | 上海登临科技有限公司 | 模型量化方法、装置、介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004152306A (ja) * | 2002-10-31 | 2004-05-27 | United Technol Corp <Utc> | 双峰性データを判別する方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9483706B2 (en) * | 2015-01-08 | 2016-11-01 | Linear Algebra Technologies Limited | Hardware accelerator for histogram of gradients |
US10997492B2 (en) * | 2017-01-20 | 2021-05-04 | Nvidia Corporation | Automated methods for conversions to a lower precision data format |
US11270187B2 (en) * | 2017-11-07 | 2022-03-08 | Samsung Electronics Co., Ltd | Method and apparatus for learning low-precision neural network that combines weight quantization and activation quantization |
-
2018
- 2018-09-06 WO PCT/JP2018/033012 patent/WO2020049681A1/ja active Application Filing
- 2018-09-06 JP JP2020540941A patent/JP7026808B2/ja active Active
-
2021
- 2021-03-04 US US17/192,031 patent/US20210192319A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004152306A (ja) * | 2002-10-31 | 2004-05-27 | United Technol Corp <Utc> | 双峰性データを判別する方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4009244A1 (en) | 2020-12-02 | 2022-06-08 | Fujitsu Limited | Quantization program, quantization method, and quantization apparatus |
Also Published As
Publication number | Publication date |
---|---|
JPWO2020049681A1 (ja) | 2021-04-30 |
US20210192319A1 (en) | 2021-06-24 |
JP7026808B2 (ja) | 2022-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6599294B2 (ja) | 異常検知装置、学習装置、異常検知方法、学習方法、異常検知プログラム、および学習プログラム | |
CN110874625B (zh) | 一种数据处理方法及装置 | |
CN109474281B (zh) | 数据编码、解码方法及装置 | |
WO2020049681A1 (ja) | 情報処理装置、方法及びプログラム | |
JP6633787B2 (ja) | 線形予測復号装置、方法、プログラム及び記録媒体 | |
WO2020065874A1 (ja) | ネットワーク量子化方法、推論方法及びネットワーク量子化装置 | |
CN109978144B (zh) | 一种模型压缩方法和系统 | |
WO2021045810A1 (en) | Lossless exponent and lossy mantissa weight compression for training deep neural networks | |
JP2017227904A (ja) | 符号化方法、符号化装置、プログラム、および記録媒体 | |
TW202001700A (zh) | 影像的量化方法、神經網路的訓練方法及神經網路訓練系統 | |
Gupta et al. | Align: A highly accurate adaptive layerwise log_2_lead quantization of pre-trained neural networks | |
CN107004422A (zh) | 编码装置、解码装置、它们的方法及程序 | |
JP6499206B2 (ja) | パラメータ決定装置、方法、プログラム及び記録媒体 | |
JP4902378B2 (ja) | 混合モデル初期値算出装置及び混合モデル初期値算出プログラム | |
EP4111417A1 (en) | Generating quantization tables for image compression | |
CN113537447A (zh) | 多层神经网络的生成方法、装置、应用方法及存储介质 | |
Kattan et al. | Evolutionary synthesis of lossless compression algorithms with GP-zip3 | |
CN115935212A (zh) | 一种基于纵向趋势预测的可调节负荷聚类方法及系统 | |
JP2001154698A (ja) | オーディオ符号化装置及びその方法 | |
US10938412B2 (en) | Decompression of model parameters using functions based upon cumulative count distributions | |
CN113792804A (zh) | 图像识别模型的训练方法、图像识别方法、装置及设备 | |
JP2022113945A (ja) | ニューラルネットワーク量子化方法、装置及びプログラム | |
WO2020185238A1 (en) | Decompression of model parameters using functions based upon cumulative count distributions | |
US20070255557A1 (en) | Morphology-based speech signal codec method and apparatus | |
EP4141745A1 (en) | Threshold determination program, threshold determination method, and information processing apparatus |
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: 18932489 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020540941 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18932489 Country of ref document: EP Kind code of ref document: A1 |