RU2811535C2 - Data processing device, data processing system and data processing method - Google Patents
Data processing device, data processing system and data processing method Download PDFInfo
- Publication number
- RU2811535C2 RU2811535C2 RU2021124838A RU2021124838A RU2811535C2 RU 2811535 C2 RU2811535 C2 RU 2811535C2 RU 2021124838 A RU2021124838 A RU 2021124838A RU 2021124838 A RU2021124838 A RU 2021124838A RU 2811535 C2 RU2811535 C2 RU 2811535C2
- Authority
- RU
- Russia
- Prior art keywords
- data
- information
- model
- layer
- neural network
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 174
- 238000003672 processing method Methods 0.000 title description 4
- 238000013528 artificial neural network Methods 0.000 claims abstract description 148
- 238000012549 training Methods 0.000 claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 31
- 238000003062 neural network model Methods 0.000 claims 2
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 230000006870 function Effects 0.000 description 40
- 238000011156 evaluation Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 30
- 238000013139 quantization Methods 0.000 description 24
- 230000005540 biological transmission Effects 0.000 description 17
- 238000013527 convolutional neural network Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 238000011176 pooling Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 3
- 101000911772 Homo sapiens Hsc70-interacting protein Proteins 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
Images
Abstract
Description
Область техники, к которой относится изобретениеField of technology to which the invention relates
[0001] Настоящее изобретение относится к устройству обработки данных, системе обработки данных и способу обработки данных, которые формируют кодированные данные, в которых кодируется информация относительно конфигурации нейронной сети.[0001] The present invention relates to a data processing apparatus, a data processing system and a data processing method that generates encoded data in which information regarding the configuration of a neural network is encoded.
Уровень техникиState of the art
[0002] Что касается способа для решения задач классификации (различения) и задач регрессии входных данных, предусмотрено машинное обучение. Для машинного обучения, предусмотрена технология, называемая "нейронной сетью", которая имитирует нейронную схему мозга (нейроны). В нейронной сети (далее называемой "NN" (neural network)), классификация (различение) или регрессия входных данных выполняется с использованием вероятностной модели (различающей модели или порождающей модели), представленной посредством сети, в которой нейроны взаимно соединяются. [0002] As for the method for solving classification problems and regression problems of input data, machine learning is provided. For machine learning, there is a technology called a "neural network" that mimics the brain's neural circuitry (neurons). In a neural network (hereinafter referred to as "NN" (neural network)), classification (discrimination) or regression of input data is performed using a probabilistic model (discriminative model or generative model) represented by a network in which neurons are interconnected.
[0003] Помимо этого, NN может достигать высокой производительности посредством оптимизации параметров NN посредством обучения с использованием большого объема данных. Тем не менее, следует отметить, что размер NN в последние годы растет, и имеется тенденция к увеличению размера данных NN, и вычислительная нагрузка на компьютер с использованием NN также увеличивается.[0003] In addition, NN can achieve high performance by optimizing NN parameters through training using a large amount of data. However, it should be noted that the size of NN has been increasing in recent years, and there is a tendency for the size of NN data to increase, and the computational load on the computer using NN is also increasing.
[0004] Например, непатентный документ 1 описывает технологию для скалярного квантования весовых коэффициентов ребер, которые представляют собой фрагменты информации, указывающие конфигурацию NN, и последующего кодирования весовых коэффициентов ребер. Посредством скалярного квантования весовых коэффициентов ребер и последующего кодирования весовых коэффициентов ребер, размер данных для данных относительно ребер сжимается.[0004] For example, Non-Patent
Список библиографических ссылокList of bibliographic references
Непатентные документыNon-patent documents
[0005] Непатентный документ 1. Vincent Vanhoucke Andrew Senior, Mark Z. Mao, "Improving the speed of neural networks on CPUs", Proc. Deep Learning and Unsupervised Feature Learning NIPS Workshop, 2011 год.[0005] Non-Patent
Сущность изобретенияThe essence of the invention
Техническая задачаTechnical problem
[0006] В системе, в которой множество клиентов соединяются с сервером через сеть передачи данных, когда каждый из множества клиентов выполняет обработку данных с использованием NN, обученной посредством сервера, размер данных модели и параметры NN и значение, указывающее соответствующую производительность, варьируются в зависимости от производительности обработки отдельных клиентов, емкости хранения и полосы частот передачи сети передачи данных, соединенной с сервером. Следовательно, даже если модель и параметры NN кодируются с использованием технологии, описанной в непатентном документе 1, кодированные данные должны сжиматься до размера данных, подходящего для каждого из множества клиентов, и в силу этого имеется проблема увеличения нагрузки по обработке для кодирования. Помимо этого, имеется другая проблема в том, что когда имеется огромное количество клиентов, даже если данные, которые должны передаваться к каждому отдельному клиенту, сжимаются, размер данных, которые должны передаваться во все клиенты, является огромным.[0006] In a system in which a plurality of clients are connected to a server via a data network, when each of the plurality of clients performs data processing using a NN trained by the server, the size of the model data and the parameters of the NN and a value indicating the corresponding performance vary depending on the processing performance of individual clients, the storage capacity and transmission bandwidth of the data network connected to the server. Therefore, even if the NN model and parameters are encoded using the technology described in Non-Patent
[0007] Настоящее изобретение должно разрешать вышеописанные проблемы, и задача настоящего изобретения заключается в том, чтобы получать устройство обработки данных, систему обработки данных и способ обработки данных, которые позволяют снижать нагрузку по обработке для кодирования информации относительно NN и уменьшать размер данных, которые должны передаваться.[0007] The present invention is intended to solve the above-described problems, and it is an object of the present invention to provide a data processing apparatus, a data processing system, and a data processing method that can reduce the processing load for encoding information regarding NN and reduce the size of data that must be be transmitted.
Решение задачиThe solution of the problem
[0008] Устройство обработки данных согласно настоящему изобретению включает в себя блок обработки данных для обучения NN; и блок кодирования для формирования кодированных данных, в которых кодируется информация заголовков моделей, которая идентифицирует модель NN, информация заголовков слоев, которая идентифицирует один или более слоев NN, и послойная информация весовых коэффициентов ребер.[0008] A data processing apparatus according to the present invention includes a data processing unit for training an NN; and an encoding unit for generating encoded data in which model header information that identifies the NN model, layer header information that identifies one or more NN layers, and layer-by-layer edge weight information are encoded.
Положительный эффект изобретенияPositive effect of the invention
[0009] Согласно настоящему изобретению, блок кодирования формирует кодированные данные, в которых кодируется информация заголовков моделей, которая идентифицирует модель NN, информация заголовков слоев, которая идентифицирует один или более слоев NN, и послойная информация весовых коэффициентов ребер. Блок кодирования может кодировать информацию относительно слоя в NN, которая требуется для стороны декодирования, и в силу этого нагрузка по обработке для кодирования информации относительно NN уменьшается, и может достигаться уменьшение размера данных, которые должны передаваться.[0009] According to the present invention, the encoding unit generates encoded data in which model header information that identifies the NN model, layer header information that identifies one or more NN layers, and layer-by-layer edge weight information are encoded. The encoding unit can encode information regarding a layer into the NN that is required by the decoding side, and thereby the processing load for encoding the information regarding the NN is reduced, and a reduction in the size of data to be transmitted can be achieved.
Краткое описание чертежейBrief description of drawings
[0010] Фиг. 1 является блок-схемой, показывающей конфигурацию системы обработки данных согласно первому варианту осуществления.[0010] FIG. 1 is a block diagram showing the configuration of a data processing system according to the first embodiment.
Фиг. 2 является схемой, показывающей примерную конфигурацию NN.Fig. 2 is a diagram showing an exemplary NN configuration.
Фиг. 3 является блок-схемой, показывающей конфигурацию устройства обработки данных (кодера) согласно первому варианту осуществления.Fig. 3 is a block diagram showing the configuration of a data processing apparatus (encoder) according to the first embodiment.
Фиг. 4 является блок-схемой, показывающей конфигурацию устройства обработки данных (декодера) согласно первому варианту осуществления.Fig. 4 is a block diagram showing the configuration of a data processing apparatus (decoder) according to the first embodiment.
Фиг. 5 является блок-схемой последовательности операций способа, показывающей работу устройства обработки данных (кодера) согласно первому варианту осуществления.Fig. 5 is a flowchart showing operation of a data processing apparatus (encoder) according to the first embodiment.
Фиг. 6 является блок-схемой последовательности операций способа, показывающей работу устройства обработки данных (декодера) согласно первому варианту осуществления.Fig. 6 is a flowchart showing operation of a data processing apparatus (decoder) according to the first embodiment.
Фиг. 7 является схемой, показывающей пример кодированных данных в первом варианте осуществления.Fig. 7 is a diagram showing an example of encoded data in the first embodiment.
Фиг. 8 является схемой, показывающей другой пример кодированных данных в первом варианте осуществления.Fig. 8 is a diagram showing another example of encoded data in the first embodiment.
Фиг. 9 является схемой, показывающей пример процесса свертки для одномерных данных в первом варианте осуществления.Fig. 9 is a diagram showing an example of a convolution process for one-dimensional data in the first embodiment.
Фиг. 10 является схемой, показывающей пример процесса свертки для двумерных данных в первом варианте осуществления.Fig. 10 is a diagram showing an example of a convolution process for two-dimensional data in the first embodiment.
Фиг. 11 является схемой, показывающей матрицу поузловой информации весовых коэффициентов ребер в l-ом слое NN.Fig. 11 is a diagram showing a node-wise information matrix of edge weights in the l-th layer of the NN.
Фиг. 12 является схемой, показывающей матрицу шагов квантования для поузловой информации весовых коэффициентов ребер в l-ом слое NN.Fig. 12 is a diagram showing a quantization step matrix for node-by-node information of edge weights in the l-th layer of the NN.
Фиг. 13 является схемой, показывающей матрицу информации весовых коэффициентов ребер в сверточном слое.Fig. 13 is a diagram showing an edge weight information matrix in a convolutional layer.
Фиг. 14 является схемой, показывающей матрицу шагов квантования для информации весовых коэффициентов ребер в сверточном слое.Fig. 14 is a diagram showing a quantization step matrix for edge weight information in a convolutional layer.
Фиг. 15A является блок-схемой, показывающей аппаратную конфигурацию, которая реализует функции устройства обработки данных согласно первому варианту осуществления, и фиг. 15B является блок-схемой, показывающей аппаратную конфигурацию, которая выполняет программное обеспечение, которое реализует функции устройства обработки данных согласно первому варианту осуществления.Fig. 15A is a block diagram showing a hardware configuration that implements functions of a data processing apparatus according to the first embodiment, and FIG. 15B is a block diagram showing a hardware configuration that executes software that implements functions of a data processing apparatus according to the first embodiment.
Фиг. 16 является блок-схемой, показывающей конфигурацию устройства обработки данных (кодера) согласно второму варианту осуществления.Fig. 16 is a block diagram showing the configuration of a data processing apparatus (encoder) according to the second embodiment.
Подробное описание вариантов осуществленияDetailed Description of Embodiments
[0011] Первый вариант осуществления [0011] First embodiment
Фиг. 1 является блок-схемой, показывающей конфигурацию системы обработки данных согласно первому варианту осуществления. В системе обработки данных, показанной на фиг. 1, сервер 1 соединяется с клиентами 3-1, 3-2, ..., 3-N через сеть 2 передачи данных. N является натуральным числом, большим или равным 2. Сервер 1 представляет собой устройство обработки данных, которое оптимизирует параметры NN (нейронной сети) посредством обучения с использованием большого объема данных, за счет этого создавая высокопроизводительную NN, и представляет собой первое устройство обработки данных, включенное в систему обработки данных, показанную на фиг. 1.Fig. 1 is a block diagram showing the configuration of a data processing system according to the first embodiment. In the data processing system shown in FIG. 1,
[0012] Сеть 2 передачи данных представляет собой сеть, через которую передаются данные, которыми обмениваются между сервером 1 и клиентами 3-1, 3-2, ..., 3-N, и представляет собой Интернет или сеть intranet. Например, в сети 2 передачи данных, информация для создания NN передается из сервера 1 в клиенты 3-1, 3-2, ..., 3-N.[0012] The
[0013] Клиенты 3-1, 3-2, ..., 3-N представляют собой устройства, которые создают NN, обученную посредством сервера 1, и выполняют обработку данных с использованием созданной NN. Например, клиенты 3-1, 3-2, ..., 3-N представляют собой устройства, имеющие функцию связи и функцию обработки данных, такие как персональные компьютеры (PC), камеры или роботы. Каждый из клиентов 3-1, 3-2, ..., 3-N представляет собой второе устройство обработки данных, включенное в систему обработки данных, показанную на фиг. 1.[0013] Clients 3-1, 3-2, ..., 3-N are devices that create a NN trained by the
[0014] В системе обработки данных, показанной на фиг. 1, размер данных модели и параметры NN и значение, указывающее соответствующую производительность, варьируются между клиентами 3-1, 3-2, ..., 3-N. Следовательно, даже если модель и параметры NN кодируются с использованием технологии, описанной в непатентном документе 1, кодированные данные должны сжиматься до размера данных, подходящего для каждого из клиентов 3-1, 3-2, ..., 3-N, и в силу этого нагрузка по обработке для кодирования увеличивается.[0014] In the data processing system shown in FIG. 1, the model data size and NN parameters and the value indicating the corresponding performance vary between clients 3-1, 3-2, ..., 3-N. Therefore, even if the NN model and parameters are encoded using the technology described in Non-Patent
[0015] Следовательно, в системе обработки данных согласно первому варианту осуществления, сервер 1 формирует кодированные данные, в которых кодируется информация заголовков моделей, которая идентифицирует модель NN, информация заголовков слоев, которая идентифицирует слой NN, и послойная информация весовых коэффициентов ребер, и передает кодированные данные в каждый из клиентов 3-1, 3-2, ..., 3-N через сеть 2 передачи данных. Каждый из клиентов 3-1, 3-2, ..., 3-N может декодировать только информацию относительно требуемого слоя из кодированных данных, передаваемых из сервера 1 в сеть 2 передачи данных. Таким образом, нагрузка по обработке для кодирования для сервера 1 снижается, и может достигаться уменьшение размера данных, передаваемых в сеть 2 передачи данных из сервера 1.[0015] Therefore, in the data processing system according to the first embodiment, the
[0016] Ниже описывается конфигурация NN.[0016] The NN configuration is described below.
Фиг. 2 является схемой, показывающей примерную конфигурацию NN. Как показано на фиг. 2, входные данные (x1, x2, ..., xN1) обрабатываются посредством каждого слоя, включенного в NN, и результаты обработки (y1, ..., yNL) выводятся. Nl (l=1, 2, ..., L) указывает число узлов в l-ом слое, и L указывает число слоев в NN. Как показано на фиг. 2, NN включает в себя входной слой, скрытые слои и выходной слой, и она имеет такую структуру, в которой множество узлов соединяются с каждым из этих слоев посредством ребер. Выходное значение каждого из множества узлов может вычисляться из выходных значений узлов в предыдущем слое, которые соединяются с каждым из множества узлов посредством ребер, информации весовых коэффициентов ребер и функции активации, заданной для каждого слоя.Fig. 2 is a diagram showing an exemplary NN configuration. As shown in FIG. 2, the input data (x 1 , x 2 , ..., x N1 ) is processed by each layer included in the NN, and the processing results (y 1 , ..., y NL ) are output. N l (l=1, 2, ..., L) indicates the number of nodes in the l-th layer, and L indicates the number of layers in the NN. As shown in FIG. 2, the NN includes an input layer, hidden layers and an output layer, and it has a structure in which a plurality of nodes are connected to each of these layers through edges. The output value of each of the plurality of nodes may be calculated from the output values of the nodes in the previous layer that are connected to each of the plurality of nodes through edges, edge weight information, and an activation function specified for each layer.
[0017] NN включают в себя, например, сверточную нейронную сеть (CNN), включающую в себя не только полностью соединенные слои, но также и сверточные слои и слои объединения в пул. CNN может создавать сеть, которая реализует обработку данных, отличную от классификации и регрессии, к примеру, сеть, которая реализует процесс фильтрации данных.[0017] NNs include, for example, a convolutional neural network (CNN), including not only fully connected layers, but also convolutional and pooling layers. CNN can create a network that implements data processing other than classification and regression, for example, a network that implements data filtering process.
[0018] Например, при вводе изображения или аудио, CNN может реализовывать процесс фильтрации изображений или аудио, который достигает удаления шума или повышения качества входного сигнала, процесс высокочастотного восстановления для аудио с отсутствующими высокими частотами сжатого аудио, рисование для изображения, частичная область изображения которого отсутствует, или процесс на основе сверхразрешения для изображения. CNN также может конструировать NN, которая включает в себя комбинацию порождающей модели и различающей модели, и которая определяет то, являются или нет данные реальными, посредством использования различающей модели, причем различающая модель определяет то, формируются или нет данные посредством порождающей модели.[0018] For example, given an image or audio input, the CNN may implement an image or audio filtering process that achieves noise removal or enhancement of the input signal, a high-frequency restoration process for audio with missing high frequencies of the compressed audio, drawing for an image whose partial image area missing, or a super-resolution based process for the image. The CNN can also construct a NN that includes a combination of a generative model and a discriminative model, and which determines whether or not the data is real by using the discriminative model, wherein the discriminative model determines whether or not the data is generated by the generative model.
[0019] В последние годы, также предлагается новая NN, называемая "порождающей соперничающей сетью", которая обучается на основе соперничества таким образом, что различающая модель может отличать данные, сформированные посредством порождающей модели, от реальных данных, так что порождающая модель не формирует данные, которые могут отличаться, посредством различающей модели, от реальных данных. Эта NN может создавать высокоточную порождающую модель и различающую модель.[0019] In recent years, a new NN called a “generative adversarial network” has also been proposed, which is trained based on adversarial behavior such that the discriminative model can distinguish the data generated by the generative model from the real data, so that the generative model does not generate the data. , which may differ, through the discriminative model, from the real data. This NN can produce high-accuracy generative model and discriminative model.
[0020] Фиг. 3 является блок-схемой, показывающей конфигурацию устройства обработки данных (кодера) согласно первому варианту осуществления. Устройство обработки данных, показанное на фиг. 3, представляет собой первое устройство обработки данных, которое обучает NN с использованием набора обучающих данных и набора оценочных данных, и формирует кодированные данные информации модели, указывающей конфигурацию NN (далее называемой "информацией модели"), и, например, представляет собой сервер 1, показанный на фиг. 1.[0020] FIG. 3 is a block diagram showing the configuration of a data processing apparatus (encoder) according to the first embodiment. The data processing device shown in FIG. 3 is a first data processing apparatus that trains a NN using a training data set and an evaluation data set, and generates encoded data of model information indicating the configuration of the NN (hereinafter referred to as “model information”), and is, for example, a
[0021] Устройство обработки данных, показанное на фиг. 3, включает в себя блок 10 обработки данных и блок 11 кодирования. Блок 10 обработки данных представляет собой первый блок обработки данных, который обучает NN и включает в себя обучающий блок 101, блок 102 оценки и блок 103 управления. Блок 11 кодирования формирует кодированные данные, в которых кодируется информация заголовков моделей, которая идентифицирует модель NN, обученной посредством обучающего блока 101, информация заголовков слоев, которая идентифицирует слой NN, и послойная информация весовых коэффициентов ребер.[0021] The data processing apparatus shown in FIG. 3 includes a
[0022] Обучающий блок 101 выполняет процесс обучения для NN с использованием набора обучающих данных, за счет этого формируя информацию модели обученной NN. Информация модели выводится в блок 102 оценки из обучающего блока 101. Кроме того, обучающий блок 101 имеет информацию модели кодирования, которая управляется посредством блока 103 управления, который описывается ниже, и выводит информацию модели кодирования в блок 11 кодирования, когда обучающий блок 101 принимает инструкцию завершения обучения из блока 103 управления. Блок 102 оценки создает NN с использованием информации модели и выполняет процесс логического вывода из набора оценочных данных, с использованием созданной NN. Значение индекса оценки, полученное в качестве результата процесса логического вывода, представляет собой результат оценки, и результат оценки выводится в блок 103 управления из блока 102 оценки. Индекс оценки предварительно установлен в блоке 102 оценки и, например, представляет собой точность логического вывода или выходное значение функции потерь.[0022] The
[0023] Блок 103 управления определяет то, следует или нет обновлять модель NN, обученной посредством обучающего блока 101, и то, может или нет обучающий блок 101 выполнять обучение NN, из значения оценки, полученного в качестве результата оценки посредством блока 102 оценки, и управляет обучающим блоком 101 на основе результатов определения. Например, блок 103 управления сравнивает значение оценки с критерием обновления модели и определяет то, следует или нет обновлять информацию модели в качестве информации модели кодирования, на основе результата сравнения. Помимо этого, блок 103 управления сравнивает значение оценки с критерием завершения обучения и, определяет то, следует или нет выполнять обучение NN посредством обучающего блока 101, на основе результата сравнения. Следует отметить, что эти критерии определяются из предыстории значений оценки.[0023] The
[0024] Фиг. 4 является блок-схемой, показывающей конфигурацию устройства обработки данных (декодера) согласно первому варианту осуществления. Устройство обработки данных, показанное на фиг. 4, представляет собой второе устройство обработки данных, которое создает NN посредством декодирования кодированных данных, сформированных посредством блока 11 кодирования, показанного на фиг. 3, и выполняет процесс логического вывода для одного или более фрагментов оценочных данных с использованием созданной NN и соответствует, например, клиентам 3-1, 3-2, ..., 3-N, показанным на фиг. 1.[0024] FIG. 4 is a block diagram showing the configuration of a data processing apparatus (decoder) according to the first embodiment. The data processing device shown in FIG. 4 is a second data processing apparatus that creates a NN by decoding encoded data generated by the
[0025] Устройство обработки данных, показанное на фиг. 4, включает в себя блок 201 декодирования и блок 202 логического вывода. Блок 201 декодирования декодирует информацию модели из кодированных данных, сформированных посредством блока 11 кодирования. Например, блок 201 декодирования может декодировать только информацию, требуемую для устройства обработки данных, показанного на фиг. 4, из кодированных данных.[0025] The data processing apparatus shown in FIG. 4 includes a
[0026] Блок 202 логического вывода представляет собой второй блок обработки данных, который создает NN с использованием информации модели, декодированной посредством блока 201 декодирования, и выполняет обработку данных, которая использует созданную NN. Например, обработка данных представляет собой процесс логического вывода для оценочных данных с использованием NN. Блок 202 логического вывода выполняет процесс логического вывода для оценочных данных с использованием NN и выводит результат логического вывода.[0026] The
[0027] Далее описывается работа системы обработки данных согласно первому варианту осуществления.[0027] Next, the operation of the data processing system according to the first embodiment is described.
Фиг. 5 является блок-схемой последовательности операций способа, показывающей работу устройства обработки данных (кодера) согласно первому варианту осуществления, и показывает способ обработки данных, осуществляемый посредством устройства обработки данных, показанного на фиг. 3.Fig. 5 is a flowchart showing the operation of a data processing apparatus (encoder) according to the first embodiment, and shows a data processing method carried out by the data processing apparatus shown in FIG. 3.
Обучающий блок 101 обучает NN (этап ST1). Например, обучающий блок 101 обучает NN с использованием набора обучающих данных и выводит информацию модели, полученную посредством обучения, в блок 102 оценки.The
[0028] Информация модели представляет собой информацию, указывающую конфигурацию модели NN, и выполнена с возможностью включать в себя информацию структуры слоев, указывающую структуру для каждого слоя, и информацию весовых коэффициентов каждого ребра, принадлежащего слою. Информация структуры слоев включает в себя информацию типов слоев, конфигурационную информацию относительно типа слоя и информацию, отличную от весовых коэффициентов ребер, которая требуется для того, чтобы формировать слой. Информация, отличная от весовых коэффициентов ребер, которая требуется для того, чтобы формировать слой, включает в себя, например, функцию активации. Информация типов слоев представляет собой информацию, указывающую тип слоя, и посредством ссылки на информацию типов слоев, может идентифицироваться тип слоя, к примеру, сверточный слой, слой объединения в пул или полностью соединенный слой.[0028] The model information is information indicating the configuration of the NN model, and is configured to include layer structure information indicating the structure for each layer, and weight coefficient information of each edge belonging to the layer. The layer structure information includes layer type information, configuration information regarding the layer type, and information other than edge weights that is required in order to form the layer. Information other than edge weights that is required to form a layer includes, for example, an activation function. The layer type information is information indicating the type of the layer, and by referring to the layer type information, the layer type, for example, a convolutional layer, a pooling layer, or a fully connected layer, can be identified.
[0029] Конфигурационная информация относительно типа слоя представляет собой информацию, указывающую конфигурацию слоя типа, соответствующего информации типов слоев. Например, когда тип слоя, соответствующий информации типов слоев, указывает сверточный слой, конфигурационная информация относительно типа слоя включает в себя фрагменты информации, указывающие размер данных и форму фильтра (ядра), который выполняет свертку (включающие в себя число коэффициентов фильтрации), число фильтров, интервал свертки (шаг), то, имеется или нет дополнение на границах входных сигналов, и способ для дополнения, когда имеется дополнение. Помимо этого, когда тип слоя, соответствующий информации типов слоев, указывает слой объединения в пул, конфигурационная информация относительно типа слоя включает в себя фрагменты информации, указывающие способ объединения в пул, к примеру, объединение в пул по максимуму или объединение в пул по среднему, форму ядра, которое выполняет процесс объединения в пул, интервал объединения в пул (шаг), то, имеется или нет дополнение на границах входных сигналов, и способ для дополнения, когда имеется дополнение.[0029] Layer type configuration information is information indicating the configuration of a layer type corresponding to the layer type information. For example, when the layer type corresponding to the layer type information indicates a convolutional layer, the configuration information regarding the layer type includes pieces of information indicating the size of the data and the shape of the filter (kernel) that performs the convolution (including the number of filter coefficients), the number of filters , the convolution interval (step), whether or not there is padding at the boundaries of the input signals, and the method for padding when padding is present. In addition, when the layer type corresponding to the layer type information indicates a pooling layer, the configuration information regarding the layer type includes pieces of information indicating a pooling method, for example, maximum pooling or average pooling. the form of the kernel that performs the pooling process, the pooling interval (step), whether there is padding at the boundaries of the input signals, and the method for padding when padding is present.
[0030] Для информации, указывающей каждый весовой коэффициент ребра, весовые коэффициенты могут независимо задаваться для соответствующих ребер, аналогично полностью соединенному слою. С другой стороны, аналогично сверточному слою, весовой коэффициент ребра может быть общим в расчете на сверточный фильтр (ядро), т.е. весовой коэффициент ребра может быть общим в одном фильтре.[0030] For information indicating each edge weight, the weights may be independently set for the corresponding edges, similar to a fully connected layer. On the other hand, similar to the convolutional layer, the edge weight can be shared per convolutional filter (kernel), i.e. an edge's weight can be shared across a single filter.
[0031] Блок 102 оценки оценивает NN (этап ST2). Например, блок 102 оценки создает NN с использованием информации модели, сформированной посредством обучающего блока 101, и выполняет процесс логического вывода из набора оценочных данных, с использованием созданной NN. Результат оценки выводится в блок 103 управления из блока 102 оценки. Результат оценки, например, представляет собой точность логического вывода или выходное значение функции потерь.[0031] The
[0032] Затем блок 103 управления определяет то, следует или нет обновлять информацию модели (этап ST3). Например, когда значение оценки, сформированное посредством блока 102 оценки, не удовлетворяет критерию обновления модели, блок 103 управления определяет необходимость не обновлять информацию модели кодирования, запоминаемую в обучающем блоке 101, а когда значение оценки удовлетворяет критерию обновления модели, блок 103 управления определяет необходимость обновлять информацию модели кодирования.[0032] Next, the
[0033] Что касается примера критерия обновления модели, когда значение оценки представляет собой выходное значение функции потерь, значение оценки, полученное посредством обучения в этот раз, может быть меньше минимального значения оценки в предыстории обучения, записываемой с начала обучения. Что касается другого примера, когда значение оценки представляет собой точность логического вывода, значение оценки, полученное посредством обучения в этот раз, может превышать максимальное значение оценки в предыстории обучения, записываемой с начала обучения.[0033] Regarding the model update criterion example, when the evaluation value is the output value of the loss function, the evaluation value obtained by training this time may be less than the minimum evaluation value in the training history recorded from the start of training. As for another example, when the evaluation value represents inference accuracy, the evaluation value obtained by training this time may exceed the maximum evaluation value in the training history recorded from the start of training.
[0034] Помимо этого, блок переключения предыстории обучения может представлять собой любой блок. Например, предполагается, что предыстория обучения предоставляется для каждого индекса модели, который описывается ниже. В этом случае, когда модель не имеет индекса опорной модели, который описывается ниже, считается, что отсутствует предыстория обучения, и обучение начинается. А именно, на этапе ST3, выполняемом в первый раз, информация модели всегда обновляется. С другой стороны, когда модель имеет индекс опорной модели, ссылаются на предысторию обучения (предысторию A) модели, указываемой посредством индекса опорной модели. Как результат, при обучении модели, может предотвращаться обновление модели до модели, значение оценки которой является более плохим (более низкая точность логического вывода, большее значение функции потерь и т.д.), чем значение оценки для модели, указываемой посредством индекса опорной модели. В этом случае, когда индекс модели для модели является идентичным индексу опорной модели, каждый раз, когда модель обучается, предыстория обучения (предыстория A), соответствующая индексу опорной модели, обновляется. С другой стороны, когда индекс модели для модели отличается от индекса опорной модели, предыстория обучения (предыстория A), соответствующая индексу опорной модели, копируется в качестве начального значения предыстории обучения (предыстории B) индекса модели для модели, и после этого каждый раз, когда модель обучается, предыстория обучения (предыстория B) модели обновляется.[0034] In addition, the learning history switching block may be any block. For example, it is assumed that training history is provided for each model index, which is described below. In this case, when the model does not have a reference model index, which is described below, it is considered that there is no training history, and training begins. Namely, in step ST3 executed for the first time, the model information is always updated. On the other hand, when the model has a reference model index, the training history (history A) of the model indicated by the reference model index is referenced. As a result, when training a model, the model can be prevented from updating to a model whose score value is worse (lower inference accuracy, larger loss function value, etc.) than the score value for the model indicated by the reference model index. In this case, when the model index for the model is identical to the reference model index, each time the model is trained, the training history (history A) corresponding to the reference model index is updated. On the other hand, when the model index for the model is different from the reference model index, the training history (history A) corresponding to the reference model index is copied as the initial value of the training history (history B) of the model index for the model, and thereafter every time the model is trained, the training history (history B) of the model is updated.
[0035] Если блок 103 управления определяет необходимость обновлять информацию модели (этап ST3: "Да"), то обучающий блок 101 обновляет информацию модели кодирования на информацию модели (этап ST4). Например, блок 103 управления формирует информацию с инструкциями обновления модели, указывающую то, что предусмотрено обновление информации модели, и выводит управляющую информацию обучения, включающую в себя информацию с инструкциями обновления модели, в обучающий блок 101. Обучающий блок 101 обновляет информацию модели кодирования на информацию модели в соответствии с информацией с инструкциями обновления модели, включенной в управляющую информацию обучения.[0035] If the
[0036] С другой стороны, если определяется необходимость не обновлять информацию модели (этап ST3: "Нет"), то блок 103 управления формирует информацию с инструкциями обновления модели, указывающую то, что отсутствует обновление информации модели, и выводит управляющую информацию обучения, включающую в себя информацию с инструкциями обновления модели, в обучающий блок 101. Обучающий блок 101 не обновляет информацию модели кодирования в соответствии с информацией с инструкциями обновления модели, включенной в управляющую информацию обучения.[0036] On the other hand, if it is determined not to update the model information (step ST3: "No"), the
[0037] Затем блок 103 управления сравнивает значение оценки с критерием завершения обучения и определяет то, следует или нет выполнять обучение NN посредством обучающего блока 101, на основе результата сравнения (этап ST5). Например, что касается критерия завершения обучения, когда определяется то, достигает или нет значение оценки, сформированное посредством блока 102 оценки, конкретного значения, если значение оценки, сформированное посредством блока 102 оценки, удовлетворяет критерию завершения обучения, то блок 103 управления определяет то, что обучение NN посредством обучающего блока 101 завершено, а если значение оценки не удовлетворяет критерию завершения обучения, то блок 103 управления определяет то, что обучение NN посредством обучающего блока 101 не завершено. Альтернативно, например, когда критерий завершения обучения основан на последней предыстории обучения, например, определяется то, что обучение завершено, когда отсутствие обновления информации модели (этап ST3: "Нет") выбирается M раз в строке (M является предварительно определенным целым числом, большим или равным 1), если предыстория обучения не удовлетворяет критерию завершения обучения, то блок 103 управления определяет то, что обучение NN посредством обучающего блока 101 не завершено.[0037] Then, the
[0038] Если блок 103 управления определяет то, что обучение NN завершено (этап ST5: "Да"), то обучающий блок 101 выводит информацию модели кодирования в блок 11 кодирования, и обработка переходит к процессу на этапе ST6. С другой стороны, если блок 103 управления определяет то, что обучение NN не завершено (этап ST5: "Нет"), то обработка возвращается к процессу на этапе ST1.[0038] If the
[0039] Блок 11 кодирования кодирует информацию модели кодирования, введенную из обучающего блока 101 (этап ST6). Блок 11 кодирования кодирует информацию модели кодирования, сформированную посредством обучающего блока 101, на основе NN-слоя, за счет этого формируя кодированные данные, включающие в себя информацию заголовка, и послойные кодированные данные.[0039] The
[0040] Фиг. 6 является блок-схемой последовательности операций способа, показывающей операции устройства обработки данных (декодера) согласно первому варианту осуществления, и показывает операции устройства обработки данных, показанного на фиг. 4.[0040] FIG. 6 is a flowchart showing operations of a data processing apparatus (decoder) according to the first embodiment, and shows operations of the data processing apparatus shown in FIG. 4.
Блок 201 декодирования декодирует информацию модели из кодированных данных, полученных посредством кодирования в блоке 11 кодирования (этап ST11). Затем блок 202 логического вывода создает NN из информации модели, декодированной посредством блока 201 декодирования (этап ST12). Блок 202 логического вывода выполняет процесс логического вывода для оценочных данных с использованием созданной NN и выводит результат логического вывода (этап ST13).The
[0041] Далее подробно описывается кодирование информации модели посредством блока 11 кодирования на этапе ST6 по фиг. 5.[0041] Next, the encoding of model information by the
Для кодирования информации модели посредством блока 11 кодирования, например, может использоваться способ (1) или (2) кодирования.To encode model information by the
(1) Данные, в которых непосредственно битовые строки, включающие в себя информацию заголовка, если информация заголовка присутствует, размещаются в предварительно установленном порядке, представляют собой кодированные данные. В каждой из битовых строк, параметр, включенный в каждый фрагмент информации, включенный в информацию модели, описывается с битовой точностью, заданной в параметре. Битовая точность представляет собой битовую точность, заданную в параметре, например, 8-битовое целое число или 32-битовое число с плавающей точкой.(1) Data in which the actual bit strings including header information, if header information is present, are arranged in a predetermined order is encoded data. In each of the bit strings, the parameter included in each piece of information included in the model information is described with the bit precision specified in the parameter. Bit precision is the bit precision specified in the parameter, such as 8-bit integer or 32-bit float.
(2) Данные, в которых непосредственно битовые строки, включающие в себя информацию заголовка, размещаются в предварительно установленном порядке, представляют собой кодированные данные. В каждой из битовых строк, параметр, включенный в каждый фрагмент информации, включенный в информацию модели, кодируется посредством способа кодирования переменной длины, заданного для каждого параметра.(2) Data in which the actual bit strings including header information are arranged in a predetermined order is encoded data. In each of the bit strings, a parameter included in each piece of information included in the model information is encoded by a variable length encoding method specified for each parameter.
[0042] Фиг. 7 является схемой, показывающей пример кодированных данных в первом варианте осуществления, и кодированные данные в вышеописанном (1) или (2) могут располагаться в порядке, показанном на фиг. 7. Кодированные данные, показанные на фиг. 7, включают в себя совокупность фрагментов данных, называемых "единицами данных", и единицы данных включают в себя единицу данных без слоя и единицу данных слоя. Единица данных слоя представляет собой единицу данных, которая сохраняет данные слоя, которые представляют собой послойные кодированные данные.[0042] FIG. 7 is a diagram showing an example of encoded data in the first embodiment, and the encoded data in the above-described (1) or (2) may be arranged in the order shown in FIG. 7. The encoded data shown in FIG. 7 include a plurality of data pieces called "data units", and the data units include a non-layer data unit and a layer data unit. A layer data unit is a data unit that stores layer data, which is layer-by-layer encoded data.
[0043] Данные слоя включают в себя начальный код, тип единиц данных, заголовок информации слоя и данные весовых коэффициентов. Заголовок информации слоя получается посредством кодирования информации заголовка слоя, которая идентифицирует слой NN. Данные весовых коэффициентов получаются посредством кодирования информации весовых коэффициентов ребер, принадлежащих слою, указываемому посредством заголовка информации слоя. Следует отметить, что в кодированных данных, показанных на фиг. 7, порядок размещения единиц данных слоя не обязательно является идентичным порядку размещения слоев NN и представляет собой любой порядок. Причина для этого состоит в том, что индекс слоя, который описывается ниже, может идентифицировать то, слою какой позиции NN соответствует каждая из единиц данных слоя.[0043] The layer data includes a start code, a data unit type, a layer information header, and weight data. The layer header information is obtained by encoding the layer header information that identifies the NN layer. The weight data is obtained by encoding the weight information of the edges belonging to the layer indicated by the layer information header. It should be noted that in the encoded data shown in FIG. 7, the order of the layer data units is not necessarily identical to the order of the NN layers and is any order. The reason for this is that the layer index, which is described below, can identify which layer of which NN position each of the layer data units corresponds to.
[0044] Единица данных без слоя представляет собой единицу данных, которая сохраняет данные кроме данных слоя. Например, единица данных без слоя сохраняет начальный код, тип единиц данных и заголовок информации модели. Заголовок информации модели получается посредством кодирования информации заголовка модели, которая идентифицирует модель NN.[0044] A non-layer data unit is a data unit that stores data other than layer data. For example, a data unit without a layer stores the initial code, data unit type, and model information header. The model header information is obtained by encoding the model header information that identifies the NN model.
[0045] Начальный код представляет собой код, сохраненный в начальной позиции единицы данных, чтобы идентифицировать начальную позицию единицы данных. Клиенты 3-1, 3-2, ..., 3-N (далее называемые "стороной декодирования") могут идентифицировать начальную позицию единицы данных без слоя или единицы данных слоя посредством ссылки на начальный код. Например, когда 0×000001 задается как начальный код, данные, сохраненные в единице данных, отличной от начального кода, задаются таким образом, что 0×000001 не возникает. Как результат, начальная позиция единицы данных может идентифицироваться из начального кода.[0045] The start code is a code stored in the start position of a data unit to identify the start position of the data unit. Clients 3-1, 3-2, ..., 3-N (hereinafter referred to as “decoding side”) can identify the starting position of a non-layer data unit or a layer data unit by reference to the starting code. For example, when 0x000001 is specified as the start code, data stored in a data unit other than the start code is set such that 0x000001 does not occur. As a result, the starting position of the data unit can be identified from the starting code.
[0046] Чтобы выполнять настройку таким образом, что 0×000001 не возникает, например, 03 вставляется в третий байт кодированных данных "0×000000-0×000003", в силу этого приводя к 0×000300-0×000303, и после декодирования, 0×000003 преобразуется в 0×0000, за счет чего данные могут возвращаться к исходным данным. Следует отметить, что при условии, что начальный код представляет собой битовую строку, которая может уникально идентифицироваться, битовая строка, отличная от 0×000001, может задаваться как начальный код. Помимо этого, при условии, что способ может идентифицировать начальную позицию единицы данных, начальный код не должен обязательно использоваться. Например, битовая строка, которая может идентифицировать конец единицы данных, может добавляться в конец единицы данных. Альтернативно, начальный код может добавляться только в начало единицы данных без слоя, и в качестве части заголовка информации модели, может кодироваться размер данных каждой единицы данных слоя. Следовательно, позиция разделения между любыми двумя смежными единицами данных слоя может идентифицироваться из вышеописанной информации.[0046] To perform the setting such that 0x000001 does not occur, for example, 03 is inserted into the third byte of the encoded data "0x000000-0x000003", thereby resulting in 0x000300-0x000303, and then decoding, 0x000003 is converted to 0x0000, due to which the data can be returned to the original data. It should be noted that, provided that the start code is a bit string that can be uniquely identified, a bit string other than 0x000001 may be specified as the start code. In addition, provided that the method can identify the starting position of the data unit, the starting code need not necessarily be used. For example, a bit string that can identify the end of a data unit may be appended to the end of the data unit. Alternatively, the start code may be added only to the beginning of the non-layer data unit, and as part of the model information header, the data size of each layer data unit may be encoded. Therefore, the split position between any two adjacent layer data units can be identified from the above-described information.
[0047] Тип единиц данных представляет собой данные, сохраненные после начального кода в единице данных, чтобы идентифицировать тип единицы данных. Для типа единиц данных, значение задается для каждого типа единицы данных заранее. Посредством ссылки на тип единиц данных, сохраненный в единице данных, сторона декодирования может идентифицировать то, представляет единица данных собой единицу данных без слоя или единицу данных слоя, и дополнительно может идентифицировать то, какой вид из единицы данных без слоя или единицы данных слоя представляет собой единица данных.[0047] The data unit type is data stored after the start code in the data unit to identify the type of the data unit. For data unit type, a value is specified for each data unit type in advance. By referring to the type of data units stored in the data unit, the decoding side can identify whether the data unit is a non-layer data unit or a layer data unit, and can further identify which kind of a non-layer data unit or a layer data unit is unit of data.
[0048] Заголовок информации модели в единице данных без слоя включает в себя индекс модели, число единиц данных слоя в модели и число кодированных единиц данных слоя. Индекс модели представляет собой индекс для идентификации модели NN. Таким образом, по существу, отдельные модели имеют индексы, независимые друг от друга, но если устройство обработки данных (декодер) согласно первому варианту осуществления вновь принимает модель, имеющую индекс модели, идентичный индексу модели для модели, принимаемой ранее, то предыдущая принимаемая модель, имеющая индекс модели, перезаписывается. Число единиц данных слоя в модели представляет собой число единиц данных слоя, включенных в модель, идентифицированную посредством индекса модели. Число кодированных единиц данных слоя представляет собой число единиц данных слоя, фактически присутствующих в кодированных данных. В примере по фиг. 7, предусмотрены единицы (1)-(n) данных слоя, и в силу этого число кодированных единиц данных слоя составляет n. Следует отметить, что число кодированных единиц данных слоя всегда меньше или равно числу единиц данных слоя в модели.[0048] The model information header in a non-layer data unit includes a model index, a number of layer data units in the model, and a number of encoded layer data units. The model index is an index to identify the NN model. Thus, essentially, the individual models have indices independent of each other, but if the data processing apparatus (decoder) according to the first embodiment again receives a model having a model index identical to the model index for the previously received model, then the previously received model having a model index is overwritten. The number of layer data units in the model represents the number of layer data units included in the model identified by the model index. The number of encoded layer data units represents the number of layer data units actually present in the encoded data. In the example of FIG. 7, layer data units (1) to (n) are provided, and therefore the number of encoded layer data units is n. Note that the number of layer data units encoded is always less than or equal to the number of layer data units in the model.
[0049] Заголовок информации слоя в единице данных слоя включает в себя индекс слоя и информацию структуры слоев. Индекс слоя представляет собой индекс для идентификации слоя. Чтобы иметь возможность идентифицировать соответствующий слой посредством индекса слоя, то, как назначать значения индекса слоя, фиксированно задается заранее. Например, индексы назначаются в порядке от слоя, близкого к входному слою, к последующему слою, например, входному слою NN назначается индекс 0, и последующему слою назначается индекс 1. Информация структуры слоев представляет собой информацию, указывающую конфигурацию для каждого слоя NN, и включает в себя, как описано выше, информацию типов слоев, конфигурационную информацию относительно типа слоя и информацию, отличную от весовых коэффициентов ребер, которая требуется для того, чтобы формировать слой.[0049] The layer information header in the layer data unit includes a layer index and layer structure information. The layer index is an index to identify the layer. In order to be able to identify the corresponding layer by the layer index, how to assign layer index values is fixed in advance. For example, indices are assigned in order from the layer close to the input layer to the subsequent layer, for example, the input NN layer is assigned index 0, and the subsequent layer is assigned
[0050] Следует отметить, что хотя выше показан заголовок информации слоя, включающий в себя информацию структуры слоев, заголовок информации модели может включать в себя все фрагменты информации структуры слоев, включенной в кодированные данные, и индексы слоев, соответствующие фрагментам информации структуры слоев. Сторона декодирования может идентифицировать конфигурации слоев с соответствующими индексами слоев посредством ссылки на заголовок информации модели.[0050] It should be noted that although the layer information header including layer structure information is shown above, the model information header may include all pieces of layer structure information included in the encoded data and layer indices corresponding to the pieces of layer structure information. The decoding side may identify layer configurations with corresponding layer indices by referring to the model information header.
Кроме того, в вышеописанном случае, поскольку конфигурации слоев с соответствующими индексами слоев могут идентифицироваться посредством ссылки на заголовок информации модели, заголовок информации слоя может включать в себя только индекс слоя. Следовательно, когда размер данных единицы данных слоя превышает размер данных единицы данных без слоя, размер данных каждой единицы данных слоя может уменьшаться, за счет этого обеспечивая уменьшение максимального размера данных единиц данных в кодированных данных.Moreover, in the above case, since layer configurations with corresponding layer indices can be identified by reference to a model information header, the layer information header may only include the layer index. Therefore, when the data size of a layer data unit is larger than the data size of a non-layer data unit, the data size of each layer data unit may be reduced, thereby causing the maximum data size of data units in the encoded data to be reduced.
[0051] В единице данных слоя, данные весовых коэффициентов, которые кодируются на послойной основе, сохраняются после заголовка информации слоя. Данные весовых коэффициентов включают в себя ненулевые флаги и ненулевые данные весовых коэффициентов. Ненулевой флаг представляет собой флаг, указывающий то, равно или нет значение весового коэффициента ребра нулю, и задается для каждого из всех весовых коэффициентов ребер, принадлежащих соответствующему слою.[0051] In a layer data unit, weight coefficient data that is encoded on a layer-by-layer basis is stored after the layer information header. The weighting data includes non-zero flags and non-zero weighting data. The non-zero flag is a flag indicating whether or not the edge weight value is zero, and is set for each of all edge weights belonging to the corresponding layer.
[0052] Ненулевые данные весовых коэффициентов представляют собой данные, которые задается после ненулевых флагов в данных весовых коэффициентов. В ненулевых данных весовых коэффициентов, задается значение весового коэффициента, ненулевой флаг которого указывает ненулевой (значимый). На фиг. 7, данные (1) весовых коэффициентов - данные (m) весовых коэффициентов, указывающие ненулевое значение весового коэффициента, задаются в качестве ненулевых данных весовых коэффициентов. Число m фрагментов ненулевых данных весовых коэффициентов меньше или равно числу Ml всех весовых коэффициентов в соответствующем слое l. Следует отметить, что данные весовых коэффициентов относительно слоя, имеющего разреженные ребра с ненулевым значением весового коэффициента, имеют очень небольшой объем ненулевых данных весовых коэффициентов и включают в себя фактически только ненулевые флаги, и в силу этого размер данных для данных весовых коэффициентов значительно уменьшается.[0052] Non-zero weight data is data that is specified after non-zero flags in the weight data. In non-zero weighting data, sets the value of the weighting factor whose non-zero flag indicates non-zero (significant). In fig. 7, weight coefficient data (1)—weight coefficient data (m) indicating a non-zero weight coefficient value is set as non-zero weight coefficient data. The number m of non-zero weight coefficient data fragments is less than or equal to the number M l of all weight coefficients in the corresponding layer l. It should be noted that the weight data relative to a layer having sparse edges with a non-zero weight value has a very small amount of non-zero weight data and includes virtually only non-zero flags, and as such the data size for the weight data is significantly reduced.
[0053] Фиг. 8 является схемой, показывающей другой пример кодированных данных в первом варианте осуществления, и кодированные данные в вышеописанном (1) или (2) могут располагаться в порядке, показанном на фиг. 8. Кодированные данные, показанные на фиг. 8, отличаются от кодированных данных по фиг. 7 по конфигурации данных для данных весовых коэффициентов, и в ненулевых данных весовых коэффициентов, весовые коэффициенты всех ребер, принадлежащих соответствующему слою, совместно размещаются на основе каждой битовой плоскости в порядке от верхних битов. Кроме того, в заголовке информации слоя, задается идентификационная информация позиций данных битовой плоскости, указывающая начальную позицию каждого бита, указывающего весовой коэффициент ребра.[0053] FIG. 8 is a diagram showing another example of encoded data in the first embodiment, and the encoded data in the above (1) or (2) may be arranged in the order shown in FIG. 8. The encoded data shown in FIG. 8 are different from the encoded data of FIG. 7 according to the data configuration for the weight coefficient data, and in the non-zero weight coefficient data, the weight coefficients of all edges belonging to the corresponding layer are jointly arranged on the basis of each bit plane in order from the top bits. In addition, in the layer information header, bit plane data position identification information indicating the starting position of each bit indicating an edge weight is specified.
[0054] Например, когда битовая точность, заданная для весовых коэффициентов ребер, составляет X, весовые коэффициенты всех ребер, принадлежащих соответствующему слою, описываются с битовой точностью X. Из битовой строки этих весовых коэффициентов, блок 11 кодирования задает, в качестве каждых ненулевых данных весовых коэффициентов для первого бита, данные (1) весовых коэффициентов первого бита, данные (2) весовых коэффициентов первого бита, ..., данные (m) весовых коэффициентов первого бита, которые представляют собой ненулевые данные весовых коэффициентов первого бита. Этот процесс повторяется для ненулевых данных весовых коэффициентов второго бита - ненулевых данных весовых коэффициентов X-ого бита. Следует отметить, что данные (1) весовых коэффициентов первого бита, данные (2) весовых коэффициентов первого бита, ..., данные (m) весовых коэффициентов первого бита представляют собой фрагменты ненулевых данных весовых коэффициентов, которые формируют битовую плоскость первого бита.[0054] For example, when the bit precision specified for the edge weights is X, the weights of all edges belonging to the corresponding layer are described with a bit precision of X. From the bit string of these weights, the
[0055] Сторона декодирования идентифицирует требуемые кодированные данные из фрагментов послойных кодированных данных на основе идентификационной информации позиций данных битовой плоскости и может декодировать идентифицированные кодированные данные с любой битовой точностью. А именно, сторона декодирования может выбирать только требуемые кодированные данные из кодированных данных и декодировать информацию модели NN, подходящей для окружения на стороне декодирования. Следует отметить, что идентификационная информация позиций данных битовой плоскости может представлять собой любую информацию при условии, что позиция разделения между любыми двумя смежными фрагментами данных битовой плоскости может идентифицироваться, и может представлять собой информацию, указывающую начальную позицию каждого фрагмента данных битовой плоскости, либо может представлять собой информацию, указывающую размер данных каждого фрагмента данных битовой плоскости.[0055] The decoding side identifies desired encoded data from pieces of layered encoded data based on the identification information of bit plane data positions, and can decode the identified encoded data to any bit precision. Namely, the decoding side can select only the required encoded data from the encoded data and decode the information of the NN model suitable for the environment at the decoding side. It should be noted that the identification information of bit plane data positions may be any information as long as the division position between any two adjacent pieces of bit plane data can be identified, and may be information indicating the starting position of each piece of bit plane data, or may represent is information indicating the data size of each piece of bit plane data.
[0056] Когда полоса частот передачи сети 2 передачи данных не является достаточной для того, чтобы передавать все фрагменты кодированных данных, представляющих конфигурацию NN, в сторону декодирования, блок 11 кодирования может ограничивать ненулевые данные весовых коэффициентов, которые должны передаваться, из фрагментов кодированных данных, на основе полосы частот передачи сети 2 передачи данных.[0056] When the transmission bandwidth of the
Например, в битовой строке информации весовых коэффициентов, описанной с 32-битовой точностью, верхние 8 битов ненулевых данных весовых коэффициентов задаются в качестве цели передачи. Сторона декодирования может распознавать, из начального кода, расположенного после ненулевых данных весовых коэффициентов, то, что единица данных слоя, соответствующая следующему слою, размещается после ненулевых данных весовых коэффициентов 8-ого бита в кодированных данных. Помимо этого, сторона декодирования может надлежащим образом декодировать весовой коэффициент, значение которого равно нулю, посредством ссылки на ненулевой флаг в данных весовых коэффициентов.For example, in a weighting information bit string described with 32-bit precision, the top 8 bits of non-zero weighting data are set as the transmission target. The decoding side can recognize, from the start code located after the non-zero weight data, that a layer data unit corresponding to the next layer is located after the non-zero weight data of the 8th bit in the encoded data. In addition, the decoding side can appropriately decode a weight whose value is zero by referring to a non-zero flag in the weight data.
[0057] Чтобы повышать, когда данные весовых коэффициентов декодируются с любой битовой точностью посредством стороны декодирования, точность логического вывода с битовой точностью, блок 11 кодирования может включать, в заголовок информации слоя, смещение, которое должно суммироваться с весовым коэффициентом, декодированным с каждой битовой точностью. Например, блок 11 кодирования суммирует смещение, которое является равномерным в расчете на слой, с битовой строкой весовых коэффициентов, описанных с битовой точностью, определяет смещение с наибольшей точностью и включает определенное смещение в заголовок информации слоя и выполняет кодирование.[0057] In order to improve, when the weight coefficient data is decoded with any bit precision by the decoding side, the bit precision inference accuracy, the
[0058] Помимо этого, блок 11 кодирования может включать, в заголовок информации модели, смещения для весовых коэффициентов ребер во всех слоях, включенных в NN, и выполнять кодирование. Кроме того, блок 11 кодирования может задавать флаг, указывающий то, включается или нет смещение в заголовок информации слоя или в заголовок информации модели, и, например, только когда флаг указывает доступность смещения, смещение может включаться в кодированные данные.[0058] In addition, the
[0059] Блок 11 кодирования может задавать разность между значением весового коэффициента ребра и конкретным значением, в качестве цели кодирования.[0059] The
Конкретное значение включает в себя, например, непосредственно предыдущий весовой коэффициент в порядке кодирования. Помимо этого, соответствующий весовой коэффициент ребра, принадлежащий слою выше на один уровень (слою, близкому к входному слою), может использоваться в качестве конкретного значения, либо соответствующий весовой коэффициент ребра в модели до обновления может использоваться в качестве конкретного значения.The particular value includes, for example, the immediately previous weight in the encoding order. In addition, the corresponding edge weight belonging to a layer one level higher (the layer close to the input layer) can be used as the specific value, or the corresponding edge weight in the model before the update can be used as the specific value.
[0060] Кроме того, блок 11 кодирования имеет функции, показанные в (A), (B) и (C).[0060] In addition, the
(A) Блок 11 кодирования имеет функцию масштабируемого кодирования, которая выполняет кодирование для базовых кодированных данных и улучшающих кодированных данных отдельно.(A) The
(B) Блок 11 кодирования имеет функцию кодирования разности относительно весового коэффициента ребра в опорной NN.(B) The
(C) Блок 11 кодирования имеет функцию кодирования, в качестве информации NN-обновления, только частичной информации (например, послойной информации) опорной NN.(C) The
[0061] В дальнейшем описывается пример (A).[0061] In the following, Example (A) will be described.
Блок 11 кодирования квантует весовой коэффициент ребра с использованием способа квантования, который задается заранее для весового коэффициента ребра, задает данные, полученные посредством кодирования квантованного весового коэффициента, в качестве базовых кодированных данных, и задает данные, полученные посредством кодирования ошибки квантования, которая считается весовым коэффициентом, в качестве улучшающих кодированных данных. Весовой коэффициент в качестве базовых кодированных данных имеет более низкую битовую точность, чем весовой коэффициент до квантования, вследствие квантования, и в силу этого размер данных уменьшается. Когда полоса частот передачи, используемая для того, чтобы передавать кодированные данные в сторону декодирования, не является достаточной, устройство обработки данных согласно первому варианту осуществления передает только базовые кодированные данные в сторону декодирования. С другой стороны, когда полоса частот передачи, используемая для того, чтобы передавать кодированные данные в сторону декодирования, является достаточной, устройство обработки данных согласно первому варианту осуществления передает не только базовые кодированные данные, но также и улучшающие кодированные данные в сторону декодирования.The
[0062] Могут использоваться два или более фрагмента улучшающих кодированных данных. Например, блок 11 кодирования задает квантованное значение, полученное, когда ошибка квантования дополнительно квантуется, в качестве первых улучшающих кодированных данных, и задает его ошибку квантования в качестве вторых улучшающих кодированных данных. Кроме того, квантованное значение, полученное посредством дополнительного квантования квантованной ошибки вторых улучшающих кодированных данных, его и квантованная ошибка могут отдельно кодироваться таким образом, что требуемое число фрагментов улучшающих кодированных данных получается. В связи с этим, посредством использования масштабируемого кодирования, может выполняться передача кодированных данных на основе полосы частот передачи и допустимого времени передачи сети 2 передачи данных.[0062] Two or more pieces of enhancement coded data may be used. For example, the
[0063] Следует отметить, что блок 11 кодирования может кодировать верхние M битов ненулевых данных весовых коэффициентов, показанных на фиг. 8, в качестве базовых кодированных данных, и разделять оставшуюся битовую строку на один или более блоков и получать один или более фрагментов улучшающих кодированных данных. В этом случае, блок 11 кодирования сбрасывает ненулевой флаг для каждых из базовых кодированных данных и улучшающих кодированных данных. Весовой коэффициент, который равен 0 в улучшающих кодированных данных верхнего бита, всегда равен 0.[0063] It should be noted that the
[0064] В дальнейшем описывается (B).[0064] Hereinafter, (B) is described.
Когда предусмотрена модель NN перед переобучением посредством обучающего блока 101, блок 11 кодирования может кодировать разность между весовым коэффициентом ребра в модели NN после переобучения и соответствующим весовым коэффициентом ребра в модели перед переобучением. Следует отметить, что переобучение включает в себя обучение с переносом или дополнительное обучение. В системе обработки данных, когда конфигурация NN обновляется с высокой частотой, или изменение распределения обучающих данных для каждого переобучения является небольшим, разность между весовыми коэффициентами ребер является небольшой, и в силу этого размер данных для кодированных данных после переобучения уменьшается.When the NN model before retraining is provided by the
[0065] Помимо этого, блок 11 кодирования может включать, в заголовок информации модели, индекс опорной модели для идентификации модели перед обновлением, на которую необходимо ссылаться, в дополнение к индексу модели. В случае примера (B), модель перед переобучением может идентифицироваться из вышеописанного индекса опорной модели. Кроме того, блок 11 кодирования может задавать флаг, указывающий то, имеют или нет кодированные данные опорный источник, в заголовке информации модели. Только тогда, когда флаг указывает кодированные данные для обновления модели, блок 11 кодирования задает индекс опорной модели в заголовке информации модели.[0065] In addition, the
[0066] Например, в системе обработки данных, показанной на фиг. 1, даже когда частота NN-обновления отличается между клиентами, либо клиенты выполняют обработку данных с использованием различных моделей NN, клиенты могут надлежащим образом идентифицировать то, кодированные данные какой модели служат для обновления, посредством ссылки на индекс опорной модели. Когда из индекса опорной модели идентифицируется то, что кодированные данные для обновления модели представляют собой кодированные данные для модели, которая не доступна на клиентской стороне, клиент может информировать сервер 1 в отношении этого факта.[0066] For example, in the data processing system shown in FIG. 1, even when the NN update frequency differs between clients, or the clients perform data processing using different NN models, clients can properly identify which model's encoded data is used for updating by referring to the reference model index. When it is identified from the reference model index that the encoded data for updating the model is encoded data for a model that is not available on the client side, the client may inform the
[0067] В дальнейшем описывается пример (C).[0067] Example (C) is described next.
Когда предусмотрена модель NN перед переобучением, например, для целей подстройки, обучающий блок 101 может фиксировать любой один или более слоев с самого верхнего уровня (стороны входного слоя) NN и переобучать только один или более слоев. В этом случае, блок 11 кодирования кодирует только информацию, указывающую конфигурацию слоя, обновленного посредством переобучения. Как результат, в обновлении NN, размер данных для кодированных данных, которые должны передаваться в сторону декодирования, уменьшается. Следует отметить, что число кодированных единиц данных слоя в кодированных данных меньше числа единиц данных слоя в модели. Сторона декодирования может идентифицировать слой, который должен обновляться, посредством ссылки на индекс опорной модели, включенный в заголовок информации модели, и индекс слоя, включенный в заголовок информации слоя.When an NN model is provided before retraining, for example for tuning purposes, the
[0068] Далее описывается обработка данных, выполняемая посредством обучающего блока 101, блока 102 оценки и блока 202 логического вывода.[0068] Next, the data processing performed by the
Фиг. 9 является схемой, показывающей пример процесса свертки для одномерных данных в первом варианте осуществления, и показывает сверточные слои, которые выполняют процесс свертки для одномерных данных. Одномерные данные включают в себя, например, аудиоданные и данные временных рядов. Сверточные слои, показанные на фиг. 9, включают в себя девять узлов 10-1 - 10-9 в предыдущем слое и три узла 11-1 - 11-3 в последующем слое. Ребрам 12-1, 12-6 и 12-11 назначается идентичный весовой коэффициент, ребрам 12-2, 12-7 и 12-12 назначается идентичный весовой коэффициент, ребрам 12-3, 12-8 и 12-13 назначается идентичный весовой коэффициент, ребрам 12-4, 12-9 и 12-14 назначается идентичный весовой коэффициент, и ребрам 12-5, 12-10 и 12-15 назначается идентичный весовой коэффициент. Помимо этого, весовые коэффициенты ребер 12-1-12-5 могут иметь различные значения, либо множество весовых коэффициентов могут иметь идентичное значение.Fig. 9 is a diagram showing an example of a convolution process for one-dimensional data in the first embodiment, and shows convolution layers that perform a convolution process for one-dimensional data. Univariate data includes, for example, audio data and time series data. The convolutional layers shown in Fig. 9 include nine nodes 10-1 - 10-9 in the previous layer and three nodes 11-1 - 11-3 in the subsequent layer. Ribs 12-1, 12-6 and 12-11 are assigned an identical weight factor, ribs 12-2, 12-7 and 12-12 are assigned an identical weight factor, edges 12-3, 12-8 and 12-13 are assigned an identical weight factor , edges 12-4, 12-9 and 12-14 are assigned an identical weight factor, and edges 12-5, 12-10 and 12-15 are assigned an identical weight factor. In addition, the weights of the edges 12-1-12-5 may have different values, or multiple weights may have the same value.
[0069] Из девяти узлов 10-1 - 10-9 в предыдущем слое, пять узлов соединяются с одним узлом в последующем слое с вышеописанными весовыми коэффициентами. Размер K ядра равен 5, и ядро задается посредством комбинации этих весовых коэффициентов. Например, как показано на фиг. 9, узел 10-1 соединяется с узлом 11-1 через ребро 12-1, узел 10-2 соединяется с узлом 11-1 через ребро 12-2, узел 10-3 соединяется с узлом 11-1 через ребро 12-3, узел 10-4 соединяется с узлом 11-1 через ребро 12-4, и узел 10-5 соединяется с узлом 11-1 через ребро 12-5. Ядро задается посредством комбинации весовых коэффициентов ребер 12-1 - 12-5.[0069] Of the nine nodes 10-1 to 10-9 in the previous layer, five nodes are connected to one node in the subsequent layer with the weights described above. The size K of the kernel is 5, and the kernel is specified by a combination of these weights. For example, as shown in FIG. 9, node 10-1 is connected to node 11-1 through edge 12-1, node 10-2 is connected to node 11-1 through edge 12-2, node 10-3 is connected to node 11-1 through edge 12-3, node 10-4 connects to node 11-1 via edge 12-4, and node 10-5 connects to node 11-1 via edge 12-5. The kernel is specified by a combination of edge weights 12-1 - 12-5.
[0070] Узел 10-5 соединяется с узлом 11-3 через ребро 12-6, узел 10-6 соединяется с узлом 11-2 через ребро 12-7, узел 10-7 соединяется с узлом 11-2 через ребро 12-8, узел 10-8 соединяется с узлом 11-2 через ребро 12-9, и узел 10-9 соединяется с узлом 11-2 через ребро 12-10. Ядро задается посредством комбинации весовых коэффициентов ребер 12-6 - 12-10.[0070] Node 10-5 connects to node 11-3 via edge 12-6, node 10-6 connects to node 11-2 via edge 12-7, node 10-7 connects to node 11-2 via edge 12-8 , node 10-8 connects to node 11-2 via edge 12-9, and node 10-9 connects to node 11-2 via edge 12-10. The kernel is specified by a combination of edge weights 12-6 - 12-10.
[0071] Узел 10-5 соединяется с узлом 11-3 через ребро 12-11, узел 10-6 соединяется с узлом 11-3 через ребро 12-12, узел 10-7 соединяется с узлом 11-3 через ребро 12-13, узел 10-8 соединяется с узлом 11-3 через ребро 12-14, и узел 10-9 соединяется с узлом 11-3 через ребро 12-15. Ядро задается посредством комбинации весовых коэффициентов ребер 12-11 - 12-15.[0071] Node 10-5 connects to node 11-3 via edge 12-11, node 10-6 connects to node 11-3 via edge 12-12, node 10-7 connects to node 11-3 via edge 12-13 , node 10-8 connects to node 11-3 via edge 12-14, and node 10-9 connects to node 11-3 via edge 12-15. The kernel is specified by a combination of edge weights 12-11 - 12-15.
[0072] В процессе для входных данных с использованием CNN, обучающий блок 101, блок 102 оценки и блок 202 логического вывода выполняют, для каждого ядра, операцию свертки с интервалами в число шагов (на фиг. 9, S=2) с использованием комбинации весовых коэффициентов ребер сверточного слоя. Комбинация весовых коэффициентов ребер определяется для каждого ядра посредством обучения. Следует отметить, что в CNN, используемой для распознавания изображений, NN зачастую формируется с использованием сверточного слоя, включающего в себя множество ядер.[0072] In the process for input data using CNN, the
[0073] Фиг. 10 является схемой, показывающей пример процесса свертки для двумерных данных в первом варианте осуществления и показывает процесс свертки для двумерных данных, таких как данные изображений. В двумерных данных, показанных на фиг. 10, ядро 20 представляет собой блочную область, размер которой в направлении по оси Х составляет Kx, и размер которой в направлении по оси Y составляет Ky. Размер K ядра составляет K=Kx*Ky. Обучающий блок 101, блок 102 оценки или блок 202 логического вывода выполняет операцию свертки данных для двумерных данных на основе ядра 20, с интервалами в число Sx шагов в направлении по оси Х и с интервалами в числом Sy шагов в направлении по оси Y. Здесь, шаги Sx и Sy являются целыми числами, большими или равными 1.[0073] FIG. 10 is a diagram showing an example of a convolution process for two-dimensional data in the first embodiment, and shows a convolution process for two-dimensional data such as image data. In the two-dimensional data shown in FIG. 10,
[0074] Фиг. 11 является схемой, показывающей матрицу поузловой информации весовых коэффициентов ребер в l-ом слое (l=1, 2, ..., L), который представляет собой полностью соединенный слой NN. Фиг. 12 является схемой, показывающей матрицу шагов квантования для поузловой информации весовых коэффициентов ребер в l-ом слое (l=1, 2, ..., L), который представляет собой полностью соединенный слой NN.[0074] FIG. 11 is a diagram showing a node-by-node information matrix of edge weights in the l-th layer (l=1, 2, ..., L), which is a fully connected NN layer. Fig. 12 is a diagram showing a quantization step matrix for node-wise information of edge weights in the l-th layer (l=1, 2, ..., L), which is a fully connected NN layer.
[0075] В NN, комбинации весовых коэффициентов wij для каждого слоя, показанного на фиг. 11, представляют собой данные, которые формируют сеть. Следовательно, в многослойной NN, такой как глубокая нейронная сеть, объем данных, в общем, составляет несколько сотен мегабайтов или более, и требуется большой размер запоминающего устройства. Здесь, i является индексом узла, и i=1, 2, ..., Nl, и j является индексом ребра, и j=1, 2, ..., Nl-1.[0075] In NN, combinations of weight coefficients w ij for each layer shown in FIG. 11 represent the data that forms the network. Therefore, in a multi-layer NN such as a deep neural network, the data volume is generally several hundred megabytes or more, and a large storage size is required. Here, i is the node index, and i=1, 2, ..., N l , and j is the edge index, and j=1, 2, ..., N l-1 .
[0076] Следовательно, чтобы уменьшать объем данных информации весовых коэффициентов ребер, устройство обработки данных согласно первому варианту осуществления квантует информацию весовых коэффициентов. Например, как показано на фиг. 12, шаг qij квантования задается для каждого весового коэффициента wij ребра. Шаг квантования может быть общим для множества индексов узлов или множества индексов ребер либо общим для множества индексов узлов и индексов ребер. Как результат, информация квантования, которая должна кодироваться, уменьшается.[0076] Therefore, in order to reduce the data amount of edge weight information, the data processing apparatus according to the first embodiment quantizes the weight information. For example, as shown in FIG. 12, the quantization step q ij is specified for each edge weight w ij . The quantization step may be common to a plurality of node indices or a plurality of edge indices, or common to a plurality of node indices and a plurality of edge indices. As a result, the quantization information that must be encoded is reduced.
[0077] Фиг. 13 является схемой, показывающей матрицу информации весовых коэффициентов ребер в сверточном слое. Фиг. 14 является схемой, показывающей матрицу шагов квантования для информации весовых коэффициентов ребер в сверточном слое. В сверточном слое, весовой коэффициент ребра для одного ядра является общим для всех узлов, и посредством уменьшения числа ребер, соединенных в расчете на узел, т.е. размера K ядра, ядро может формироваться в небольшую область. Фиг. 13 является данными, в которых весовой коэффициент wi'j' ребра задается для каждого ядра, и фиг. 14 является данными, в которых шаг qi'j' квантования задается для каждого ядра. Следует отметить, что i' является индексом ядра, и i'=1, 2, ..., Ml (l=1, 2, ..., L), и j' является индексом ребра, и j'=1, 2, ..., Kl.[0077] FIG. 13 is a diagram showing an edge weight information matrix in a convolutional layer. Fig. 14 is a diagram showing a quantization step matrix for edge weight information in a convolutional layer. In the convolutional layer, the edge weight for one kernel is shared by all nodes, and by reducing the number of edges connected per node, i.e. size K of the core, the core can be formed into a small area. Fig. 13 is data in which the edge weight w i'j' is set for each core, and FIG. 14 is data in which the quantization step q i'j' is set for each core. It should be noted that i' is the core index, and i'=1, 2, ..., M l (l=1, 2, ..., L), and j' is the edge index, and j'=1 , 2, ..., K l .
[0078] Шаг квантования может быть общим для множества индексов ядер, множества индексов ребер или множества индексов ядер и индексов ребер. Как результат, информация квантования, которая должна кодироваться, уменьшается. Например, все шаги квантования в слое могут преобразовываться в общий шаг квантования, и в силу этого один шаг квантования используется для одного слоя, или все шаги квантования в модели могут преобразовываться в общий шаг квантования, и в силу этого один шаг квантования может использоваться для одной модели.[0078] The quantization step may be common to a plurality of core indices, a plurality of edge indices, or a plurality of core indices and edge indices. As a result, the quantization information that must be encoded is reduced. For example, all quantization steps in a layer can be converted to a common quantization step, and therefore one quantization step is used for one layer, or all quantization steps in a model can be converted into a common quantization step, and therefore one quantization step can be used for one models.
[0079] Далее описывается аппаратная конфигурация, которая реализует функции устройства обработки данных согласно первому варианту осуществления. Функции блока 10 обработки данных и блока 11 кодирования в устройстве обработки данных согласно первому варианту осуществления реализуются посредством схемы обработки. А именно, устройство обработки данных согласно первому варианту осуществления включает в себя схему обработки для выполнения процессов на этапах ST1-ST6 по фиг. 5. Схема обработки может представлять собой специализированные аппаратные средства, но может представлять собой центральный процессор (CPU), который выполняет программы, сохраненные в запоминающем устройстве.[0079] Next, a hardware configuration that implements functions of a data processing apparatus according to the first embodiment will be described. The functions of the
[0080] Фиг. 15A является блок-схемой, показывающей аппаратную конфигурацию, которая реализует функции устройства обработки данных согласно первому варианту осуществления. На фиг. 15A, схема 300 обработки представляет собой специализированную схему, которая функционирует в качестве устройства обработки данных, показанного на фиг. 3. Фиг. 15B является блок-схемой, показывающей аппаратную конфигурацию, которая выполняет программное обеспечение, которое реализует функции устройства обработки данных согласно первому варианту осуществления. На фиг. 15B, процессор 301 и запоминающее устройство 302 соединяются между собой посредством сигнальной шины.[0080] FIG. 15A is a block diagram showing a hardware configuration that implements functions of a data processing apparatus according to the first embodiment. In fig. 15A, the
[0081] Когда вышеописанная схема обработки представляет собой специализированные аппаратные средства, показанные на фиг. 15A, схема 300 обработки соответствует, например, одной схеме, комбинированной схеме, программируемому процессору, параллельно программируемому процессору, специализированной интегральной схеме (ASIC), программируемой пользователем вентильной матрице (FPGA) либо комбинации вышеозначенного. Следует отметить, что функции блока 10 обработки данных и блока 11 кодирования могут реализовываться посредством различных схем обработки, или функции могут совместно реализовываться посредством одной схемы обработки.[0081] When the above-described processing circuit is the dedicated hardware shown in FIG. 15A, the
[0082] Когда вышеописанная схема обработки представляет собой процессор, показанный на фиг. 15B, функции блока 10 обработки данных и блока 11 кодирования реализуются посредством программного обеспечения, микропрограммного обеспечения либо комбинации программного обеспечения и микропрограммного обеспечения. Программное обеспечение или микропрограммное обеспечение описывается как программы и сохраняется в запоминающем устройстве 302. Процессор 301 реализует функции блока 10 обработки данных и блока 11 кодирования посредством считывания и выполнения программ, сохраненных в запоминающем устройстве 302. А именно, устройство обработки данных согласно первому варианту осуществления включает в себя запоминающее устройство 302 для сохранения программ, которые, при выполнении посредством процессора 301, инструктируют последовательное выполнение процессов на этапах ST1-ST6, показанных на фиг. 5. Программы инструктируют компьютеру выполнять процедуры или способы, осуществляемые в блоке 10 обработки данных и блоке 11 кодирования. Запоминающее устройство 302 может представлять собой машиночитаемый носитель хранения данных, имеющий сохраненные программы для инструктирования компьютеру функционировать в качестве блока 10 обработки данных и блока 11 кодирования.[0082] When the above-described processing circuit is the processor shown in FIG. 15B, the functions of the
[0083] Запоминающее устройство 302 соответствует, например, энергонезависимому или энергозависимому полупроводниковому запоминающему устройству, такому как оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), флэш-память, стираемое программируемое постоянное запоминающее устройство (EPROM) или электрически-EPROM (EEPROM), магнитный диск, гибкий диск, оптический диск, компакт-диск, минидиск или DVD.[0083]
[0084] Следует отметить, что некоторые функции блока 10 обработки данных и блока 11 кодирования могут реализовываться посредством специализированных аппаратных средств, и некоторые функции могут реализовываться посредством программного обеспечения или микропрограммного обеспечения. Например, функции блока 10 обработки данных могут реализовываться посредством схемы обработки, которая представляет собой специализированные аппаратные средства, и функция блока 11 кодирования может реализовываться посредством процессора 301, считывающего и выполняющего программу, сохраненную в запоминающем устройстве 302. В связи с этим, схема обработки может реализовывать каждую из вышеописанных функций посредством аппаратных средств, программного обеспечения, микропрограммного обеспечения либо комбинации вышеозначенного.[0084] It should be noted that some functions of the
[0085] Следует отметить, что хотя описывается устройство обработки данных, показанное на фиг. 3, то же самое также применяется к устройству обработки данных, показанному на фиг. 4. Например, устройство обработки данных, показанное на фиг. 4, включает в себя схему обработки для выполнения процессов на этапах ST11-ST13 по фиг. 6. Схема обработки может представлять собой специализированные аппаратные средства, но может представлять собой CPU, который выполняет программы, сохраненные в запоминающем устройстве.[0085] It should be noted that although the data processing apparatus shown in FIG. 3, the same also applies to the data processing device shown in FIG. 4. For example, the data processing device shown in FIG. 4 includes a processing circuit for executing processes in steps ST11 to ST13 of FIG. 6. The processing circuitry may be dedicated hardware, but may be a CPU that executes programs stored in a storage device.
[0086] Когда вышеописанная схема обработки представляет собой специализированные аппаратные средства, показанные на фиг. 15A, схема 300 обработки соответствует, например, одной схеме, комбинированной схеме, программируемому процессору, параллельно программируемому процессору, ASIC, FPGA либо комбинации вышеозначенного. Следует отметить, что функции блока 201 декодирования и блока 202 логического вывода могут реализовываться посредством различных схем обработки, или функции могут совместно реализовываться посредством одной схемы обработки.[0086] When the above-described processing circuit is the dedicated hardware shown in FIG. 15A,
[0087] Когда вышеописанная схема обработки представляет собой процессор, показанный на фиг. 15B, функции блока 201 декодирования и блока 202 логического вывода реализуются посредством программного обеспечения, микропрограммного обеспечения либо комбинации программного обеспечения и микропрограммного обеспечения. Программное обеспечение или микропрограммное обеспечение описывается как программы и сохраняется в запоминающем устройстве 302. Процессор 301 реализует функции блока 201 декодирования и блока 202 логического вывода посредством считывания и выполнения программ, сохраненных в запоминающем устройстве 302. А именно, устройство обработки данных, показанное на фиг. 4, включает в себя запоминающее устройство 302 для сохранения программ, которые, при выполнении посредством процессора 301, инструктируют последовательное выполнение процессов на этапе ST11-ST13, показанных на фиг. 6. Программы инструктируют компьютеру выполнять процедуры или способы, осуществляемые в блоке 201 декодирования и блоке 202 логического вывода. Запоминающее устройство 302 может представлять собой машиночитаемый носитель хранения данных, имеющий сохраненные программы для инструктирования компьютеру функционировать в качестве блока 201 декодирования и блока 202 логического вывода.[0087] When the above-described processing circuit is the processor shown in FIG. 15B, the functions of the
[0088] Следует отметить, что одна из функций блока 201 декодирования и блока 202 логического вывода может реализовываться посредством специализированных аппаратных средств, и другая из функций может реализовываться посредством программного обеспечения или микропрограммного обеспечения. Например, функция блока 201 декодирования может реализовываться посредством схемы обработки, которая представляет собой специализированные аппаратные средства, и функция блока 202 логического вывода может реализовываться посредством процессора 301, считывающего и выполняющего программу, сохраненную в запоминающем устройстве 302.[0088] It should be noted that one of the functions of the
[0089] Как описано выше, в устройстве обработки данных согласно первому варианту осуществления, блок 11 кодирования кодирует информацию, указывающую конфигурацию NN, за счет этого формируя кодированные данные, включающие в себя информацию заголовка, и послойные кодированные данные. Поскольку только информация относительно слоя, требуемого для стороны декодирования, может кодироваться, нагрузка по обработке для кодирования информации относительно конфигурации NN уменьшается, и может достигаться уменьшение размера данных, которые должны передаваться в сторону декодирования.[0089] As described above, in the data processing apparatus according to the first embodiment, the
[0090] В устройстве обработки данных согласно первому варианту осуществления, блок 11 кодирования кодирует информацию весовых коэффициентов ребер, принадлежащих слою NN, на основе каждой битовой плоскости с верхних битов. Таким образом, размер данных для кодированных данных, которые должны передаваться в сторону декодирования, может уменьшаться.[0090] In the data processing apparatus according to the first embodiment, the
[0091] В устройстве обработки данных согласно первому варианту осуществления, блок 11 кодирования кодирует информацию относительно одного или более слоев, указываемых посредством информации заголовка. Таким образом, только информация относительно слоя, требуемого для стороны декодирования, кодируется, за счет этого обеспечивая уменьшение размера данных для кодированных данных, которые должны передаваться в сторону декодирования.[0091] In the data processing apparatus according to the first embodiment, the
[0092] В устройстве обработки данных согласно первому варианту осуществления, блок 11 кодирования кодирует разность между значением весового коэффициента ребра, принадлежащего слою, указываемому посредством информации заголовка, и конкретным значением. Таким образом, размер данных для кодированных данных, которые должны передаваться в сторону декодирования, может уменьшаться.[0092] In the data processing apparatus according to the first embodiment, the
[0093] В устройстве обработки данных согласно первому варианту осуществления, блок 11 кодирования кодирует информацию весовых коэффициентов ребер в качестве базовых кодированных данных и улучшающих кодированных данных отдельно. Таким образом, может реализовываться передача кодированных данных на основе полосы частот передачи и допустимого времени передачи сети 2 передачи данных.[0093] In the data processing apparatus according to the first embodiment, the
[0094] Второй вариант осуществления [0094] Second Embodiment
Фиг. 16 является блок-схемой, показывающей конфигурацию устройства обработки данных (кодера) согласно второму варианту осуществления. Устройство обработки данных, показанное на фиг. 16, представляет собой первое устройство обработки данных, которое обучает NN с использованием набора обучающих данных и набора оценочных данных и формирует кодированные данные информации модели NN и, например, представляет собой сервер 1, показанный на фиг. 1. Устройство обработки данных, показанное на фиг. 16, включает в себя блок 10A обработки данных, блок 11 кодирования и блок 12 декодирования.Fig. 16 is a block diagram showing the configuration of a data processing apparatus (encoder) according to the second embodiment. The data processing device shown in FIG. 16 is a first data processing apparatus that trains the NN using the training data set and the evaluation data set and generates encoded NN model information data, and is, for example, the
[0095] Блок 10A обработки данных представляет собой блок обработки данных, который создает и обучает NN, и включает в себя обучающий блок 101A, блок 102 оценки и блок 103 управления. Блок 11 кодирования кодирует информацию модели, сформированную посредством обучающего блока 101, за счет этого формируя кодированные данные, включающие в себя информацию заголовка, и послойные кодированные данные. Блок 12 декодирования декодирует информацию модели из кодированных данных, сформированных посредством блока 11 кодирования. Помимо этого, блок 12 декодирования выводит декодированную информацию модели в обучающий блок 101A.[0095] The
[0096] Аналогично первому варианту осуществления, обучающий блок 101A обучает NN с использованием набора обучающих данных и формирует информацию модели, указывающую конфигурацию обученной NN. Помимо этого, обучающий блок 101A создает NN с использованием декодированной информации модели и переобучает параметры созданной NN с использованием набора обучающих данных.[0096] Similar to the first embodiment, the training unit 101A trains the NN using the training data set and generates model information indicating the configuration of the trained NN. In addition, the training block 101A creates a NN using the decoded model information and retrains the parameters of the created NN using the training data set.
[0097] После вышеописанного переобучения, посредством выполнения переобучения с фиксированными некоторыми весовыми коэффициентами ребер, увеличение точности может достигаться, тогда как размер данных для кодированных данных поддерживается небольшим. Например, посредством выполнения переобучения с весовым коэффициентом, ненулевой флаг которого равен 0, фиксированно равным 0, оптимизация весовых коэффициентов является возможной, тогда как предотвращается превышение или равенство, посредством размера данных для кодированных данных, размеру данных для кодированных данных для весовых коэффициентов ребер перед переобучением.[0097] After the above-described retraining, by performing retraining with certain edge weights fixed, an increase in accuracy can be achieved while the data size of the encoded data is kept small. For example, by performing retraining with a weight whose non-zero flag is 0 fixed to 0, optimization of the weights is possible while preventing the data size of the encoded data from exceeding or equaling the data size of the encoded data for the edge weights before retraining. .
[0098] Как описано выше, устройство обработки данных согласно второму варианту осуществления включает в себя блок 12 декодирования, и блок 10A обработки данных обучает NN с использованием информации, декодированной посредством блока 12 декодирования. Таким образом, например, даже когда блок 11 кодирования выполняет необратимое кодирование, за счет которого возникает искажение при кодировании, устройство обработки данных согласно второму варианту осуществления может создавать и обучать NN на основе фактических результатов декодирования кодированных данных и в силу этого может обучать NN таким способом, который минимизирует влияние ошибок кодирования, при обстоятельствах, при которых налагается ограничение на размер данных для кодированных данных.[0098] As described above, the data processing apparatus according to the second embodiment includes a
[0099] Третий вариант осуществления [0099] Third Embodiment
Система обработки данных согласно третьему варианту осуществления имеет конфигурацию, идентичную конфигурации на фиг. 1, и включает в себя устройство обработки данных, показанное на фиг. 3, в качестве сервера 1, и включает в себя устройства обработки данных, показанные на фиг. 4, в качестве клиентов 3-1, 3-2, ..., 3-N. В системе обработки данных согласно третьему варианту осуществления, данные, выведенные из промежуточного слоя NN, используются в качестве одного или более признаков для обработки данных для данных изображений и аудиоданных, например, для извлечения или согласования изображений, описанного в нижеприведенном справочном документе.The data processing system according to the third embodiment has a configuration identical to that in FIG. 1 and includes the data processing apparatus shown in FIG. 3 as the
Справочный документ. ISO/IEC JTC1/SC29/WG11/m39219, "Improved retrieval and matching with CNN feature for CDVA", Chengdu, China, октябрь 2016 года.Reference document. ISO/IEC JTC1/SC29/WG11/m39219, "Improved retrieval and matching with CNN feature for CDVA", Chengdu, China, October 2016.
[0100] Например, когда выходные данные из промежуточного слоя NN используются в качестве признаков изображений для обработки изображений, такой как извлечение, согласование изображений или отслеживание объектов, замена или добавление признаков изображений выполняется для гистограммы ориентированных градиентов (HOG), масштабно-инвариантного преобразования признаков (SIFT) или ускоренных надежных признаков (SURF), которые представляют собой признаки изображений, используемые в вышеописанной традиционной обработке изображений. Как результат, посредством процедуры обработки, идентичной процедуре обработки изображений, которая использует традиционные признаки изображений, обработка изображений может реализовываться. В системе обработки данных согласно третьему варианту осуществления, блок 11 кодирования кодирует информацию модели, указывающую конфигурацию части NN вплоть до промежуточного слоя, которая выводит признаки изображений.[0100] For example, when outputs from an NN middle layer are used as image features for image processing such as extraction, image matching, or object tracking, replacement or addition of image features is performed on a histogram of oriented gradients (HOG), a scale-invariant feature transform (SIFT) or accelerated robust features (SURF), which are image features used in the above-described traditional image processing. As a result, through a processing procedure identical to an image processing procedure that uses traditional image features, image processing can be implemented. In the data processing system according to the third embodiment, the
[0101] Кроме того, устройство обработки данных, которое функционирует в качестве сервера 1, выполняет обработку данных, такую как извлечение изображения, с использованием признаков для вышеописанной обработки данных. Устройство обработки данных, которое функционирует в качестве клиента, создает NN вплоть до промежуточного слоя из кодированных данных и выполняет обработку данных, такую как извлечение изображений, с использованием, в качестве признаков, данных, выведенных из промежуточного слоя созданной NN.[0101] In addition, the data processing apparatus that functions as the
[0102] Как описано выше, в системе обработки данных согласно третьему варианту осуществления, блок 11 кодирования кодирует информацию модели, указывающую конфигурацию NN вплоть до промежуточного слоя. Таким образом, коэффициент сжатия данных параметров посредством квантования увеличивается, за счет этого обеспечивая уменьшение объема данных информации весовых коэффициентов перед кодированием. Клиент создает NN с использованием информации модели, декодированной посредством блока 201 декодирования, и выполняет обработку данных, которая использует, в качестве признаков, данные, выведенные из промежуточного слоя созданной NN.[0102] As described above, in the data processing system according to the third embodiment, the
[0103] Следует отметить, что настоящее изобретение не ограничено вышеописанными вариантами осуществления, и свободная комбинация вариантов осуществления, модификация любого компонента в каждом из вариантов осуществления либо опускание любого компонента в каждом из вариантов осуществления является возможным в пределах объема настоящего изобретения.[0103] It should be noted that the present invention is not limited to the above-described embodiments, and a free combination of embodiments, modification of any component in each of the embodiments, or omission of any component in each of the embodiments is possible within the scope of the present invention.
Промышленная применимостьIndustrial applicability
[0104] Устройство обработки данных согласно настоящему изобретению снижает нагрузку по обработке для кодирования информации относительно конфигурации нейронной сети и может уменьшать размер данных, которые должны передаваться в сторону декодирования, и в силу этого может использоваться, например, для технологии распознавания изображений.[0104] The data processing apparatus of the present invention reduces the processing load for encoding information regarding the neural network configuration and can reduce the size of data that must be transmitted to the decoding side, and can therefore be used for example in image recognition technology.
Список номеров ссылокList of reference numbers
[0105] 1 - сервер, 2 - сеть передачи данных, 3-1 - 3-N - клиент, 10, 10A - блок обработки данных, 10-1 - 10-9, 11-1 - 11-3 - узел, 11 - блок кодирования, 12 - блок декодирования, 12-1 - 12-15 - ребро, 20 - ядро, 101, 101A - обучающий блок, 102 - блок оценки, 103 - блок управления, 201 - блок декодирования, 202 - блок логического вывода, 300 - схема обработки, 301 - процессор, 302 - запоминающее устройство[0105] 1 - server, 2 - data network, 3-1 - 3-N - client, 10, 10A - data processing unit, 10-1 - 10-9, 11-1 - 11-3 - node, 11 - encoding block, 12 - decoding block, 12-1 - 12-15 - edge, 20 - core, 101, 101A - training block, 102 - evaluation block, 103 - control block, 201 - decoding block, 202 - logical inference block , 300 - processing circuit, 301 - processor, 302 - storage device
Claims (25)
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021124838A RU2021124838A (en) | 2023-03-28 |
RU2811535C2 true RU2811535C2 (en) | 2024-01-15 |
Family
ID=
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2566979C1 (en) * | 2014-12-15 | 2015-10-27 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тульский государственный университет" (ТулГУ) | Method of training artificial neural network |
WO2018142766A1 (en) * | 2017-02-03 | 2018-08-09 | パナソニックIpマネジメント株式会社 | Learned model provision method and learned model provision device |
JP2018206016A (en) * | 2017-06-02 | 2018-12-27 | 株式会社日立製作所 | Machine learning system and machine learning method |
WO2019008752A1 (en) * | 2017-07-07 | 2019-01-10 | 三菱電機株式会社 | Data processing device, data processing method, and compressed data |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2566979C1 (en) * | 2014-12-15 | 2015-10-27 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тульский государственный университет" (ТулГУ) | Method of training artificial neural network |
WO2018142766A1 (en) * | 2017-02-03 | 2018-08-09 | パナソニックIpマネジメント株式会社 | Learned model provision method and learned model provision device |
JP2018206016A (en) * | 2017-06-02 | 2018-12-27 | 株式会社日立製作所 | Machine learning system and machine learning method |
WO2019008752A1 (en) * | 2017-07-07 | 2019-01-10 | 三菱電機株式会社 | Data processing device, data processing method, and compressed data |
Non-Patent Citations (1)
Title |
---|
"Use cases and requirements for Compressed Representation of Neural Networks", ISO/IEC JTC1/SC29/WG11/N17924, опуб. 2018, URL: https://mpeg.chiariglione.org/standards/exploration/digital-representation-neural-networks/use-cases-and-requirements-compressed-1, разделы 5.4.1, 6, 7. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2747445C1 (en) | Data processing device, data processing method and data carrier | |
US20220188596A1 (en) | Data processing device, data processing system, and data processing method | |
KR102382125B1 (en) | Method and apparatus for neural network quantization | |
CA3126905C (en) | Data processing device, data processing system, and data processing method | |
RU2811535C2 (en) | Data processing device, data processing system and data processing method | |
RU2814940C1 (en) | Data processing device, data processing system and data processing method | |
Naik et al. | Survey on comparative study of pruning mechanism on mobilenetv3 model | |
JP7313515B2 (en) | DATA PROCESSING DEVICE, DATA PROCESSING SYSTEM AND DATA PROCESSING METHOD | |
JP7336995B2 (en) | Storage system and storage control method | |
US10891758B2 (en) | Geometry encoder | |
KR102454420B1 (en) | Method and apparatus processing weight of artificial neural network for super resolution | |
Hwang et al. | A layer-wise extreme network compression for super resolution | |
Yu et al. | Convolutional neural networks with compression complexity pooling for out-of-distribution image detection | |
CN112990434A (en) | Training method of machine translation model and related device | |
KR102500904B1 (en) | Method and apparatus for compressing data based on deep learning | |
CN114781604B (en) | Coding method of neural network weight parameters, coder and neural network processor | |
KR20230059435A (en) | Method and apparatus for compressing a neural network | |
Bischof et al. | Vector quantization and minimum description length |