УСТРОЙСТВО ОБРАБОТКИ ДАННЫХ, СПОСОБ ОБРАБОТКИ ДАННЫХ И НОСИТЕЛЬ ДАННЫХ
DATA PROCESSING DEVICE, DATA PROCESSING METHOD AND DATA CARRIER

Область изобретения
[0001] Изобретение относится к устройству обработки данных и способу обработки данных, которые кодируют и сжимают информацию о конфигурацию нейронной сети, и относится к сжатым данным.
Предшествующий уровень техники
[0002] В качестве способа для решения проблем классификации и проблем регрессии входных данных, существует машинное обучение.
Для машинного обучения, существует метод, называемый нейронной сетью, который имитирует нейронную схему (нейроны) мозга. В нейронной сети, классификация (дискриминация) или регрессия входных данных выполняется с использованием вероятностной модели (дискриминативной модели или генеративной модели), представленной сетью, в которой нейроны взаимно соединены друг с другом.
Более того, в сверточной нейронной сети, которая представляет собой нейронную сеть, имеющую не только полносвязный слой, но также сверточный слой и пулинговый слой (слой субдискретизации), может быть создана сеть, которая реализует обработку данных иную, чем классификация и регрессия, например, сеть, которая реализует процесс фильтрации данных. Например, сверточная нейронная сеть может реализовывать процесс фильтрации изображения или аудио, который осуществляет удаление шума входного сигнала, улучшение в качестве или тому подобное, с входным изображением или аудио, процесс высокочастотного восстановления для аудио с отсутствующими высокими частотами, такого как сжатое аудио, восстановление (подрисовка) для изображения, область которого частично отсутствует, процесс супер–разрешения для изображения и т.д.
В дополнение к вышеизложенному, в последние годы, также была выпущена новая нейронная сеть, называемая генеративной состязательной сетью, в которой сеть создается путем комбинирования генеративной модели и дискриминативной модели, которые используются, чтобы определять, являются ли данные реальными, путем ввода данных в дискриминативную модель, которая определяет, являются ли данные, сгенерированные генеративной моделью, реальными данными (не являются ли данные данными, сгенерированными генеративной моделью), и генеративная модель состязательно обучается таким образом, что дискриминативная модель не может отличать сгенерированные данные как сгенерированные данные, и дискриминативная модель состязательно обучается так, чтобы быть способной отличать сгенерированные данные как сгенерированные данные, посредством чего создание генеративной модели реализуется с высокой точностью.
[0003] В этих нейронных сетях, путем оптимизации параметров сети посредством обучения с использованием большого количества данных, может быть достигнуто улучшение в производительности.
Отметим, однако, что имеет место тенденция, что размер данных нейронной сети становится большим, и вычислительная нагрузка на компьютер с использованием нейронной сети также увеличивается.
[0004] Касательно этого, Непатентный документ 1 описывает метод для скалярного квантования и кодирования весов ребер, которые представляют собой параметры нейронной сети. Путем скалярного квантования и кодирования весов ребер, размер данных для данных о ребрах сжимается.
Список цитированных документов
Патентные документы
[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.
Краткое описание сущности изобретения
Техническая проблема
[0006] Однако, оптимальные значения весов, назначенные соответственному множеству ребер в нейронной сети, варьируются в зависимости от результатов обучения сети и не являются фиксированными.
Таким образом, возникают вариации в размере сжатия весов ребер, и метод, описанный в Непатентном документе 1, имеет проблему в том, что высокое сжатие данных параметров о ребрах нейронной сети не может достигаться.
[0007] Изобретение направлено на решение вышеописанной проблемы, и задача изобретения состоит в получении устройства обработки данных и способа обработки данных, которые могут в высокой степени сжимать данные параметров нейронной сети, и сжатых данных.
Решение проблемы
[0008] Устройство обработки данных в соответствии с изобретением включает в себя блок обработки данных, блок управления сжатием и блок кодирования. Блок обработки данных обрабатывает входные данные с использованием нейронной сети. Блок управления сжатием определяет шаги квантования и генерирует информацию квантования, которая определяет шаги квантования, причем шаги квантования используются, когда данные параметров нейронной сети квантуются. Блок кодирования кодирует информацию конфигурации сети и информацию квантования, чтобы сгенерировать сжатые данные, информация конфигурации сети включает в себя данные параметров, квантованные с использованием шагов квантования, определенных блоком управления сжатием.
Полезные результаты изобретения
[0009] В соответствии с изобретением, информация квантования, которая определяет шаги квантования, которые используются, когда данные параметров нейронной сети квантуются, и информация конфигурации сети, включающая в себя данные параметров, квантованные с использованием шагов квантования в информации квантования, кодируются, чтобы генерировать сжатые данные. Соответственно, данные параметров нейронной сети могут быть сжаты в высокой степени.
Путем использования информации квантования и информации конфигурации сети, которые декодируются из сжатых данных, нейронная сеть, оптимизированная на стороне кодирования, может создаваться на стороне декодирования.
Краткое описание чертежей
[0010] Фиг. 1 представляет собой блок–схему, показывающую конфигурацию устройства обработки данных (кодера) в соответствии с первым вариантом осуществления изобретения.
Фиг. 2 представляет собой блок–схему, показывающую конфигурацию устройства обработки данных (декодера) в соответствии с первым вариантом осуществления.
Фиг. 3A представляет собой блок–схему, показывающую аппаратную конфигурацию, которая реализует функции устройства обработки данных в соответствии с первым вариантом осуществления, и фиг. 3B представляет собой блок–схему, показывающую аппаратную конфигурацию, которая исполняет программное обеспечение, которое реализует функции устройства обработки данных в соответствии с первым вариантом осуществления.
Фиг. 4 представляет собой блок–схему последовательности операций, показывающую операцию устройства обработки данных (кодера) в соответствии с первым вариантом осуществления.
Фиг. 5 представляет собой блок–схему последовательности операций, показывающую операцию устройства обработки данных (декодера) в соответствии с первым вариантом осуществления.
Фиг. 6 представляет собой диаграмму, показывающую примерную конфигурацию нейронной сети в первом варианте осуществления.
Фиг. 7 представляет собой диаграмму, показывающую пример процесса свертки для одномерных данных в первом варианте осуществления.
Фиг. 8 представляет собой диаграмму, показывающую пример процесса свертки для двумерных данных в первом варианте осуществления.
Фиг. 9 представляет собой диаграмму, показывающую матрицу информации весов ребер по каждому узлу в l–ом слое нейронной сети.
Фиг. 10 представляет собой диаграмму, показывающую матрицу шагов квантования для информации весов ребер по каждому узлу в l–ом слое нейронной сети.
Фиг. 11 представляет собой диаграмму, показывающую матрицу информации весов ребер в сверточном слое.
Фиг. 12 представляет собой диаграмму, показывающую матрицу шагов квантования для информации весов ребер в сверточном слое.
Фиг. 13 представляет собой диаграмму, показывающую синтаксис информации, включенной в информацию квантования в первом варианте осуществления.
Фиг. 14 представляет собой диаграмму, показывающую синтаксис для каждой матрицы информации, включенной в информацию квантования в первом варианте осуществления.
Фиг. 15 представляет собой диаграмму, показывающую синтаксис для каждого слоя информации, включенной в информацию квантования в первом варианте осуществления.
Описание вариантов осуществления
[0011] Чтобы более конкретно описать изобретение, режимы для осуществления изобретения будут описаны ниже со ссылкой на прилагаемые чертежи.
Первый вариант осуществления.
Фиг. 1 представляет собой блок–схему, показывающую конфигурацию устройства 100 обработки данных в соответствии с первым вариантом осуществления изобретения. На фиг. 1, устройство 100 обработки данных обрабатывает введенные (входные) данные с использованием обученной нейронной сети и выводит результаты обработки.
К тому же, устройство 100 обработки данных функционирует как кодер, который кодирует информацию квантования и информацию конфигурации сети, и включает в себя блок 101 обработки данных, блок 102 управления сжатием и блок 103 кодирования.
[0012] Блок 101 обработки данных обрабатывает входные данные с использованием вышеописанной нейронной сети.
Кроме того, блок 101 обработки данных принимает, в качестве ввода, информацию квантования, сгенерированную блоком 102 управления сжатием, и квантует данные параметров нейронной сети с использованием шагов квантования, определенных в информации квантования. Затем, блок 101 обработки данных выводит информацию конфигурации сети, включающую в себя вышеописанные квантованные данные параметров, на блок 103 кодирования.
[0013] Для вышеописанной нейронной сети, используемой блоком 101 обработки данных, может использоваться предопределенная нейронная сеть, или данные параметров могут быть оптимизированы путем обучения.
Когда данные параметров нейронной сети обучены, обучение нейронной сети выполняется на нейронной сети в предопределенном начальном состоянии (начальных значениях данных параметров) с использованием входных данных, подлежащих обучению, и затем информация квантования, сгенерированная блоком 102 управления сжатием, вводится, и данные параметров нейронной сети квантуются с использованием шагов квантования, определенных в информации квантования.
Затем, при помощи квантованной нейронной сети, представляющей собой начальное состояние для следующего обучения, выполняются вышеописанные обучение и квантование. Нейронная сеть, полученная в результате повторения процессов обучения и квантования L раз (L представляет собой целое, большее или равное одному) выводится, как часть информации конфигурации сети, на блок 103 кодирования.
Отметим, что когда L=1, квантованная нейронная сеть не обучается повторно, и, таким образом, можно сказать, что это представляет собой тот же самый процесс, что и использование нейронной сети, которая обучена извне без обучения блоком 101 обработки данных. То есть разница состоит только в том, выполняется ли обучение блоком 101 обработки данных или извне.
[0014] Информация конфигурации сети представляет собой информацию, указывающую конфигурацию нейронной сети, и включает в себя, например, число сетевых слоев, число узлов для каждого из слоев, ребра, которые связывают узлы, информацию веса, назначенную каждому из ребер, функции активации, представляющие выходы из узлов, и информацию типа для каждого из слоев (например, сверточный слой, пулинговый слой или полносвязный слой).
Данные параметров нейронной сети включают в себя, например, информацию веса, назначенную ребрам, которые связывают узлы нейронной сети.
[0015] Блок 102 управления сжатием определяет шаги квантования, которые используются, когда данные параметров нейронной сети квантуются, и генерирует информацию квантования, которая определяет шаги квантования.
Например, блок 102 управления сжатием определяет шаги квантования, которые изменяются на основе от ребра к ребру, от узла к узлу, от ядра к ядру или от слоя к слою в нейронной сети.
[0016] Информация квантования представляет собой информацию, которая определяет шаги квантования, которые используются, когда данные параметров нейронной сети квантуются. Шаг квантования представляет собой ширину (ширину квантования), используемую, когда данные параметров квантуются, и чем больше шаг квантования, тем более грубо разбиваются данные параметров, и, таким образом, коэффициент сжатия увеличивается. Чем меньше шаг квантования, тем более точно разбиваются данные параметров, и, таким образом, коэффициент сжатия уменьшается.
Конкретно, квантованное значение k представлено следующим уравнением (1):
0
1
k=floor((x/Q) + d) + d(1)
0
0
1
1
В вышеописанном уравнении (1), x представляет значение параметра, подлежащего квантованию, Q представляет шаг квантования, d (0≤d<1) представляет смещение коррекции в диапазоне значений, подлежащих квантованию, которые соответствуют соответственным квантованным значениям, d (0≤d<1) представляет смещение, которое корректирует квантованное значение, и floor() представляет функцию обработки с округлением в меньшую сторону. Более того, существует также способ для обеспечения мертвой зоны, в которой квантованные значения k для значений x, подлежащих квантованию в пределах диапазона, установленного в вышеописанном уравнении (1), равны 0.
Кроме того, значение y квантованного параметра является таким, как показано в следующем уравнении (2):
y=kQ (2)
Когда минимальная единица изменения шагов квантования, описанных выше, изменяется от единиц ребер на единицы слоев, коэффициент сжатия данных параметров путем квантования увеличивается, и, таким образом, данные параметров предкодирования могут быть уменьшены.
[0017] Блок 103 кодирования кодирует информацию конфигурации сети, включающую в себя данные параметров, квантованные блоком 101 обработки данных, и информацию квантования, сгенерированную блоком 102 управления сжатием, чтобы сгенерировать сжатые данные.
Отметим, что информация конфигурации сети, введенная в блок 103 кодирования из блока 101 обработки данных, представляет собой информацию конфигурации сети, включающую в себя данные параметров, которые квантуются блоком 101 обработки данных с использованием шагов квантования, определенных блоком 102 управления сжатием.
[0018] Фиг. 2 представляет собой блок–схему, показывающую конфигурацию устройства 200 обработки данных в соответствии с первым вариантом осуществления. На фиг. 2, устройство 200 обработки данных обрабатывает входные данные с использованием нейронной сети, полученной путем декодирования сжатых данных, и выводит результаты обработки. Результаты обработки включают в себя результаты классификации или результаты регрессионного анализа входных данных, как при помощи устройства 100 обработки данных.
Устройство 200 обработки данных функционирует в качестве декодера, который декодирует информацию квантования и информацию конфигурации сети из сжатых данных, и включает в себя блок 201 декодирования и блок 202 обработки данных.
[0019] Блок 201 декодирования декодирует информацию квантования и информацию конфигурации сети из сжатых данных, закодированных блоком 103 кодирования, как описано выше.
Информация конфигурации сети, декодированная блоком 201 декодирования, включает в себя результаты (квантованные значения k), полученные путем квантования данных параметров, таких как информация весов ребер, причем информация весов ребер была оптимизирована в результате выполнения обучения на стороне устройства 100 обработки данных, которое представляет собой кодер.
Информация квантования, декодированная блоком 201 декодирования, определяет шаги Q квантования, которые используются, когда данные параметров квантуются. Из вышеописанных результатов k, полученных путем квантования данных параметров, и вышеописанных шагов Q квантования, квантованные параметры y декодируются в соответствии с вышеописанным уравнением (2). Эти результаты декодирования выводятся из блока 201 декодирования на блок 202 обработки данных.
[0020] Блок 202 обработки данных обрабатывает входные данные с использованием нейронной сети.
К тому же, блок 202 обработки данных обратно квантует информацию весов ребер, которая представляет собой данные параметров, с использованием информации квантования и информации конфигурации сети, декодированной из сжатых данных блоком 201 декодирования. Более того, блок 202 обработки данных создает нейронную сеть с использованием информации конфигурации сети, включающей в себя обратно квантованные данные параметров.
[0021] Таким образом, блок 202 обработки данных создает нейронную сеть, включающую в себя данные параметров, такие как информация весов ребер, которая была оптимизирована в результате выполнения обучения на стороне устройства 100 обработки данных, с использованием информации, декодированной из сжатых данных, и обрабатывает введенные данные с использованием нейронной сети. Соответственно, размер сжатия оптимизированных данных параметров может делаться единообразным между устройством 100 обработки данных и устройством 200 обработки данных, тем самым обеспечивая возможность достижения высокой степени сжатия данных параметров.
[0022] Фиг. 3A представляет собой блок–схему, показывающую конфигурацию аппаратных средств, которая реализует функции устройства 100 обработки данных. На фиг. 3A, схема 300 обработки представляет собой специализированную схему, которая функционирует как устройство 100 обработки данных. Фиг. 3B представляет собой блок–схему, показывающую конфигурацию аппаратных средств, которая исполняет программное обеспечение, которое реализует функции устройства 100 обработки данных. На фиг. 3B, процессор 301 и память 302 соединены друг с другом посредством сигнальной шины.
[0023] Функции блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования в устройстве 100 обработки данных реализуются схемой обработки.
А именно, устройство 100 обработки данных включает в себя схему обработки для выполнения процессов на этапе ST1–ST3, которые будут описаны ниже со ссылкой на фиг. 4.
Схема обработки может представлять собой специализированные аппаратные средства, но может представлять собой центральный процессор (CPU), который исполняет программы, хранящиеся в памяти.
[0024] Когда вышеописанная схема обработки представляет собой специализированные аппаратные средства, показанные на фиг. 3A, схема 300 обработки соответствует, например, одной схеме, составной схеме, программируемому процессору, параллельно программируемому процессору, специализированной интегральной схеме (ASIC), программируемой вентильной матрице (FPGA) или их комбинации.
Отметим, что функции блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования могут быть реализованы посредством разных соответственных схем обработки, или функции могут быть совместно реализованы посредством одной схемы обработки.
[0025] Когда вышеописанная схема обработки представляет собой процессор, показанный на фиг. 3B, функции блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования реализуются посредством программного обеспечения, прошивки или комбинации программного обеспечения и прошивки.
Программное обеспечение или прошивка описывается как программы и хранится в памяти 302.
Процессор 301 реализует функции блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования путем считывания и исполнения программ, хранящихся в памяти 302. А именно, устройство 100 обработки данных включает в себя память 302 для хранения программ, которые, при исполнении процессором 301, вызывают последовательное выполнение процессов на этапах ST1–ST3, показанных на фиг. 4.
Программы побуждают компьютер выполнять процедуры или способы блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования.
Память 302 может представлять собой считываемый компьютером носитель данных, имеющий сохраненные на нем программы для побуждения компьютера функционировать в качестве блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования.
[0026] Память 302 соответствует, например, энергонезависимой или энергозависимой полупроводниковой памяти, такой как память с произвольным доступом (RAM), постоянная память (ROM), флэш–память, стираемая программируемая постоянная память (EPROM) или электрически–стираемая программируемая ROM (EEPROM), магнитный диск, гибкий диск, оптический диск, компакт–диск, MiniDisc или DVD.
[0027] Отметим, что некоторые из функций блока 101 обработки данных, блока 102 управления сжатием и блока 103 кодирования могут быть реализованы посредством специализированных аппаратных средств, и некоторые из функций могут быть реализованы посредством программного обеспечения или прошивки.
Например, функция блока 101 обработки данных может быть реализована схемой обработки, которая представляет собой специализированные аппаратные средства, и функции блока 102 управления сжатием и блока 103 кодирования могут быть реализованы процессором 301, считывающим и исполняющим программы, хранящиеся в памяти 302.
Например, схема обработки может реализовывать вышеописанные функции посредством аппаратных средств, программного обеспечения, прошивки или их комбинации.
[0028] Отметим, что хотя описано устройство 100 обработки данных, то же самое также применимо к устройству 200 обработки данных. Например, устройство 200 обработки данных включает в себя схему обработки для выполнения процессов на этапах ST1a–ST4a, которые будут описаны далее со ссылкой на фиг. 5. Схема обработки может представлять собой специализированные аппаратные средства, но может представлять собой CPU, который исполняет программы, хранящиеся в памяти.
[0029] Когда вышеописанная схема обработки представляет собой специализированные аппаратные средства, показанные на фиг. 3A, схема 300 обработки соответствует, например, одной схеме, составной схеме, программируемому процессору, параллельно программируемому процессору, ASIC, FPGA или их комбинации.
Отметим, что функции блока 201 декодирования и блока 202 обработки данных могут быть реализованы разными соответственными схемами обработки, или функции могут быть совместно реализованы одной схемой обработки.
[0030] Когда вышеописанная схема обработки представляет собой процессор, показанный на фиг. 3B, функции блока 201 декодирования и блока 202 обработки данных реализуются посредством программного обеспечения, прошивки или комбинации программного обеспечения и прошивки.
Программное обеспечение или прошивка описывается в качестве программ и хранится в памяти 302.
Процессор 301 реализует функции блока 201 декодирования и блока 202 обработки данных путем считывания и исполнения программ, хранящихся в памяти 302.
А именно, устройство 200 обработки данных включает в себя память 302 для хранения программ, которые, при исполнении процессором 301, вызывают последовательное выполнение процессов на этапах ST1a–ST4a, показанных на фиг. 5.
Программы побуждают компьютер выполнять процедуры или способы блока 201 декодирования и блока 202 обработки данных.
Память 302 может представлять собой считываемый компьютером носитель данных, имеющий сохраненные на нем программы для побуждения компьютера функционировать в качестве блока 201 декодирования и блока 202 обработки данных.
[0031] Отметим, что некоторые из функций блока 201 декодирования и блока 202 обработки данных могут быть реализованы посредством специализированных аппаратных средств, и некоторые из функций могут быть реализованы посредством программного обеспечения или прошивки.
Например, функция блока 201 декодирования может быть реализована схемой обработки, которая представляет собой специализированные аппаратные средства, и функция блока 202 обработки данных может быть реализована процессором 301, считывающим и исполняющим программу, хранящуюся в памяти 302.
[0032] Далее следует описание работы.
Фиг. 4 представляет собой блок–схему последовательности операций, иллюстрирующую работу устройства 100 обработки данных.
Далее описан случай, в котором данные параметров нейронной сети представляют собой информацию весов ребер.
Блок 102 управления сжатием определяет шаг квантования, который используется, когда информация весов каждого из множества ребер, включенных в обученную нейронную сеть, квантуется, и генерирует информацию квантования, которая определяет шаг квантования (этап ST1). Информация квантования выводится из блока 102 управления сжатием на блок 101 обработки данных и блок 103 кодирования.
[0033] Когда блок 101 обработки данных принимает, в качестве ввода, информацию квантования из блока 102 управления сжатием, блок 101 обработки данных квантует вышеописанную информацию весов ребер нейронной сети с использованием шага квантования в информации квантования (этап ST2). Блок 101 обработки данных генерирует информацию конфигурации сети, включающую в себя квантованную информацию весов ребер, и выводит информацию конфигурации сети на блок 103 кодирования.
[0034] Блок 103 кодирования кодирует вышеописанную информацию конфигурации сети, введенную из блока 101 обработки данных, и вышеописанную информацию квантования, введенную из блока 102 управления сжатием (этап ST3).
Сжатые данные вышеописанной информации конфигурации сети и информации квантования, закодированной блоком 103 кодирования, выводятся на устройство 200 обработки данных.
[0035] Фиг. 5 представляет собой блок–схему последовательности операций, показывающую операцию устройства 200 обработки данных.
Блок 201 декодирования декодирует информацию квантования и информацию конфигурации сети из вышеописанных сжатых данных, закодированных блоком 103 кодирования (этап ST1a). Информация квантования и информация конфигурации сети выводятся из блока 201 декодирования на блок 202 обработки данных.
[0036] Затем, блок 202 обработки данных вычисляет информацию весов ребер, которая обратно квантуется с использованием информации квантования и информации конфигурации сети, декодированной из сжатых данных блоком 201 декодирования (этап ST2a).
[0037] После этого, блок 202 обработки данных создает нейронную сеть с использованием информации конфигурации сети, включающей в себя обратно квантованную информацию весов ребер (этап ST3a).
Соответственно, устройство 200 обработки данных может создавать нейронную сеть, обученную устройством 100 обработки данных.
[0038] Блок 202 обработки данных обрабатывает введенные данные с использованием нейронной сети, созданной на этапе ST3a (этап ST4a).
[0039] Фиг. 6 представляет собой диаграмму, показывающую примерную конфигурацию нейронной сети в первом варианте осуществления.
1
2
N1
1
NL
В нейронной сети, показанной на фиг. 6, входные данные (x, x, …, x) обрабатываются каждым слоем, и результаты обработки (y, …, y) выводятся.
l
На фиг. 6, N (I=1, 2, …, L) представляет число узлов в l–ом слое, и L представляет число слоев в нейронной сети.
Как показано на фиг. 6, нейронная сеть включает в себя входной слой, скрытые слои и выходной слой и структурирована таким образом, что в каждом из этих слоев множество узлов связаны ребрами.
Выходное значение каждого из множества узлов может вычисляться из выходного значения узла на непосредственно предыдущем слое, который связан с соответствующим узлом из множества узлов посредством ребра, информации веса ребра и функции активации, установленной на основе по каждому слою.
[0040] Пример нейронной сети включает в себя сверточную нейронную сеть (CNN). В скрытых слоях CNN, сверточные слои и пулинговые слои поочередно связаны друг с другом, и один или несколько полносвязных слоев нейронной сети (полносвязных слоев) обеспечены в соответствии с конечными выходами. Для функций активации для сверточных слоев, например, используются функции ReLU.
Отметим, что сеть, называемая глубокой нейронной сетью (DNN) (которая также называется глубоко обученной, глубокой CNN (DCNN) и т.д.), представляет собой сеть, включающую в себя множество слоев CNN.
[0041] Фиг. 7 представляет собой диаграмму, показывающую пример процесса свертки для одномерных данных в первом варианте осуществления, и показывает сверточный слой, который выполняет процесс свертки для одномерных данных. Одномерные данные включают в себя, например, аудиоданные и данные временной последовательности.
Сверточный слой, показанный на фиг. 7, включает в себя девять узлов от 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 могут все иметь разные значения, или некоторые или все из весов могут иметь одно и то же значение.
[0042] Из девяти узлов от 10–1 до 10–9 в предыдущем слое, пять узлов связаны с одним узлом в последующем слое с вышеописанными весами. Размер K ядра составляет пять, и ядро определяется комбинацией этих весов.
Например, как показано на фиг. 7, узел 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.
[0043] Узел 10–3 связан с узлом 11–2 через ребро 12–6, узел 10–4 связан с узлом 11–2 через ребро 12–7, узел 10–5 связан с узлом 11–2 через ребро 12–8, узел 10–6 связан с узлом 11–2 через ребро 12–9, и узел 10–7 связан с узлом 11–2 через ребро 12–10. Ядро определяется комбинацией весов ребер от 12–6 до 12–10.
Узел 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.
[0044] В процессе для входных данных с использованием CNN, блок 101 обработки данных или блок 202 обработки данных выполняет, для каждого ядра, операцию свертки в интервале количества шагов S (на фиг. 7, S=2) с использованием соответствующей комбинации весов ребер сверточного слоя. Комбинация весов ребер определяется для каждого ядра путем обучения.
Отметим, что в CNN, используемой для распознавания изображений, сеть часто создается с использованием сверточного слоя, включающего в себя множество ядер.
[0045] Фиг. 8 представляет собой диаграмму, показывающую пример процесса свертки для двумерных данных в первом варианте осуществления, и показывает процесс свертки для двумерных данных, таких как данные изображения.
x
y
x
y
В двумерных данных, показанных на фиг. 8, ядро 20 представляет собой область блока с размером K в направлении x и размером K в направлении y. Размер K ядра представлен посредством K=K×K.
x
y
x
y
В двумерных данных, блок 101 обработки данных или блок 202 обработки данных выполняет операцию свертки на данных для каждого ядра 20 с интервалом количества шагов S в направлении x и интервале количества шагов S в направлении y. Здесь, шаги S и S представляют собой целые числа, большие или равные одному.
[0046] Фиг. 9 представляет собой диаграмму, показывающую матрицу информации весов ребер по каждому узлу (от узла к узлу) в l–ом слое (l=1, 2, …, L), который представляет собой полносвязный слой нейронной сети.
Фиг. 10 представляет собой диаграмму, показывающую матрицу шагов квантования для информации весов ребер от узла к узлу в l–ом слое (l=1, 2, …, L), который представляет собой полносвязный слой нейронной сети.
ij
l
l–1
[0047] В нейронной сети, комбинация весов w для каждого слоя, показанного на фиг. 9, представляет собой данные для создания сети. Таким образом, в многослойной нейронной сети, такой как DNN, количество данных обычно составляет несколько сотен Мбайт или более и также требуется большой размер памяти. Отметим, что i представляет собой индекс узла и i=1, 2, …, N, и j представляет собой индекс ребра и j=1, 2, …, N.
ij
ij
[0048] Таким образом, чтобы уменьшить количество данных информации весов ребер, устройство 100 обработки данных в соответствии с первым вариантом осуществления квантует информацию весов. Как показано на фиг. 10, шаги квантования q установлены для соответственных весов w ребер.
Более того, общий шаг квантования может использоваться среди множества индексов узлов или множества индексов ребер, или среди множества индексов узлов и индексов ребер. Таким образом, информация квантования, подлежащая кодированию, может быть уменьшена.
[0049] Фиг. 11 представляет собой диаграмму, показывающую матрицу информации весов ребер в сверточном слое.
Фиг. 12 представляет собой диаграмму, показывающую матрицу шагов квантования для информации весов ребер в сверточном слое. В сверточном слое, вес ребра для одного ядра является общим для всех узлов, и путем уменьшения числа связанных ребер на узел, т.е. размера K ядра, область ядра может быть сделана малой.
i'j'
i'j'
[0050] Фиг. 11 показывает данные весов w ребер, установленные на основе от ядра к ядру, и фиг. 12 показывает данные шагов q квантования, установленных на основе от ядра к ядру.
l
l
Отметим, что i' представляет собой индекс ядра и i'=1, 2, …, M (l=1, 2, …, L), и j' представляет собой индекс ребра и j'=1, 2, …, K.
Более того, общий шаг квантования может использоваться среди множества индексов ядер или множества индексов ребер, или среди множества индексов ядер и индексов ребер. Таким образом, информация квантования, подлежащая кодированию, может быть уменьшена.
ij
i'j'
[0051] На этапе ST1 на фиг. 4, блок 102 управления сжатием определяет шаги квантования, которые используются в процессе квантования веса, выполняемом блоком 101 обработки данных, и выводит шаги квантования в качестве информации квантования на блок 101 обработки данных. Шаги квантования представляют собой шаги квантования q, показанные на фиг. 10, и шаги квантования q, показанные на фиг. 12.
ij
ij
ij
[0052] На этапе ST2 согласно фиг. 4, блок 101 обработки данных квантует веса w ребер, показанные на фиг. 9, с использованием шагов квантования q, показанных на фиг. 10, и выводит информацию конфигурации сети, включающую в себя квантованные веса w, на блок 103 кодирования.
i'j'
ij
i'j'
Подобным образом, на этапе ST2 согласно фиг. 4, блок 101 обработки данных квантует веса w ребер, показанные на фиг. 11, с использованием шагов q квантования, показанных на фиг. 12, и выводит информацию конфигурации сети, включающую в себя квантованные веса w, на блок 103 кодирования.
Отметим, что информация конфигурации сети включает в себя, в дополнение к квантованным весам, число сетевых слоев, число узлов для каждого из слоев, ребра, которые связывают узлы, информацию веса, назначенную каждому из ребер, функции активации, представляющие выходы из узлов, информацию типа для каждого из слоев (например, сверточный слой, пулинговый слой или полносвязный слой) и т.д. Отметим, однако, что информация, которая фиксирована (определена) заранее между устройством 100 обработки данных и устройством 200 обработки данных, не включена в информацию конфигурации сети, подлежащую кодированию.
[0053] Фиг. 13 представляет собой диаграмму, показывающую синтаксис информации, включенной в информацию квантования в первом варианте осуществления.
Фиг. 14 представляет собой диаграмму, показывающую синтаксис для каждой матрицы информации, включенной в информацию квантования в первом варианте осуществления.
Фиг. 15 представляет собой диаграмму, показывающую синтаксис для каждого слоя информации, включенной в информацию квантования в первом варианте осуществления.
[0054] На фиг. 13, флаг "quant_enable_flag", флаг "layer_adaptive_quant_flag", флаг "matrix_adaptive_quant_flag" и шаг квантования "fixed_quant_step" представляют собой параметры кодирования информации квантования, подлежащей кодированию блоком 103 кодирования.
Кроме того, L представляет собой число слоев.
[0055] На фиг. 14, шаг квантования "base_quant_step[j]", флаг "prev_quant_copy_flag[i–1]" и разностное значение "diff_quant_value[i–1][j]" представляют собой параметры кодирования информации квантования, подлежащей кодированию блоком 103 кодирования.
layer_id
layer_id
layer_id–1
layer_id
Дополнительно, C представляет собой число узлов N или число ядер M. Кроме того, E представляет собой число ребер N или размер ядра K.
[0056] На фиг. 15, шаг квантования "base_layer_quant_step", флаг "layer_quant_copy_flag[i–2]" и шаг квантования "layer_quant_step[i–2]" представляют собой параметры кодирования информации квантования, подлежащей кодированию блоком 103 кодирования. Кроме того, L представляет собой число слоев.
[0057] Информация, показанная на фиг. 13, включает в себя флаг "quant_enable_flag", который устанавливает, следует ли квантовать информацию весов ребер в сети.
Когда флаг "quant_enable_flag" представляет собой 0 (ложно), вся информация весов ребер в сети не квантована. А именно, шаги квантования не установлены в информации квантования.
С другой стороны, когда флаг "quant_enable_flag" представляет собой 1 (истинно), блок 102 управления сжатием обращается к флагу "layer_adaptive_quant_flag".
[0058] Когда флаг "layer_adaptive_quant_flag" представляет собой 0 (ложно), блок 102 управления сжатием устанавливает, в информации квантования, шаг квантования "fixed_quant_step", который является общим для всех ребер в сети.
Когда флаг "layer_adaptive_quant_flag" представляет собой 1 (истинно), блок 102 управления сжатием обращается к флагу "matrix_adaptive_quant_flag".
[0059] Когда флаг "matrix_adaptive_quant_flag" представляет собой 0 (ложно), блок 102 управления сжатием определяет шаг квантования, который является общим на послойной основе, в качестве шага квантования для информации веса каждого из множества ребер в сети.
Отметим, однако, что входной слой (первый слой) не имеет ребер, и, таким образом, шаги квантования не установлены для входного слоя.
Отметим, что фиг. 15 показывает синтаксис относительно шага квантования, который является общим на послойной основе.
[0060] Когда флаг "matrix_adaptive_quant_flag" представляет собой 1 (истинно), блок 102 управления сжатием определяет шаги квантования, показанные на фиг. 10, или шаги квантования, показанные на фиг. 12, в качестве шагов квантования для информации весов множества соответственных ребер в сети. Фиг. 14 показывает синтаксис шагов квантования, показанных на фиг. 10 или 12.
[0061] Далее описывается синтаксис, показанный на фиг. 14.
Как описано выше, входной слой (первый слой) не имеет ребер.
Таким образом, шаги квантования устанавливаются для layer_id+1–го слоя, в котором информация ID "layer_id" представляет собой 1, в L–1.
Сначала, в layer_id+1–ом слое, блок 102 управления сжатием устанавливает base_quant_step[j] (j=0, 1, …, E–1), указывающий шаг квантования для первого узла, показанного на фиг. 10 (первого ядра на фиг. 12).
layer_id
layer_id+1
Отметим, что E представляет собой число ребер N или размер Kядра.
[0062] Затем, для второго и последующих узлов (или ядер) (i≥1), блок 102 управления сжатием обращается, на поузловой основе (или по каждому ядру), к флагу "prev_quant_copy_flag[i–1]", указывающему, является ли шаг квантования тем же самым, что и таковой для узла (или ядра) с непосредственно предшествующим индексом.
Когда флаг "prev_quant_copy_flag[i–1]" представляет собой 1 (истинно), i+1–ый узел (или ядро) имеет тот же самый шаг квантования, что и таковой для i–го узла (или ядра).
С другой стороны, когда флаг "prev_quant_copy_flag[i–1]" представляет собой 0 (ложно), блок 102 управления сжатием устанавливает разностное значение "diff_quant_value[i–1][j]" (i=1, 2, …, C–1, и j=0, 1, …, E–1) в качестве информации для генерирования шага квантования для i+1–го узла (или ядра).
[0063] Шаг квантования может генерироваться путем суммирования шага квантования, установленного для непосредственно предыдущего узла (ядра), с разностным значением "diff_quant_value[i–1][j]".
А именно, во втором узле (или ядре) (i=1), base_quant_step[j]+diff_quant_value[0][j] представляет собой шаг квантования. В третьем и последующих узлах (или ядрах) (i≥2), diff_quant_value[i–2][j]+diff_quant_value[i–1][j] представляет собой шаг квантования.
[0064] Отметим, что хотя разностное значение "diff_quant_value[i–1][j]" между шагами квантования узлов (или ядер) показано как параметр кодирования, независимый шаг квантования может быть установлен на поузловой основе (или по каждому ядру).
Конфигурирование, таким образом, повышает эффективность кодирования в блоке 103 кодирования, когда имеет место тенденция, что корреляция между шагами квантования узлов (или ядер) низкая.
[0065] Далее описан синтаксис, показанный на фиг. 15.
Как описано выше, входной слой (первый слой) не имеет ребер.
Таким образом, блок 102 управления сжатием устанавливает base_layer_quant_step в качестве шага квантования, который является общим для всей информации весов ребер во втором слое.
Затем, для третьего и последующих слоев (i≥2), блок 102 управления сжатием обращается к флагу "layer_quant_copy_flag[i–2]" (i=2, 3, …, L–1), указывающему, является ли шаг квантования, который является общим для всей информации весов ребер в i+1–ом слое, тем же самым, что и шаг квантования, который является общим для всей информации весов ребер в i–ом слое.
[0066] Когда флаг "layer_quant_copy_flag[i–2]" представляет собой 1 (истинно), блок 102 управления сжатием устанавливает тот же самый шаг квантования, что и шаг квантования, который является общим для всей информации весов ребер в i–ом слое, в качестве шага квантования, который является общим для всей информации весов ребер в i+1–ом слое. С другой стороны, когда флаг "layer_quant_copy_flag[i–2]" представляет собой 0 (ложно), блок 102 управления сжатием устанавливает layer_quant_step[i–2] в качестве шага квантования, который является общим для всей информации весов ребер в i+1–ом слое.
[0067] Отметим, что хотя показан случай, в котором блок 102 управления сжатием определяет layer_quant_step[i–2] в качестве шага квантования, который является независимым на послойной основе, layer_quant_step[i–2] может определяться как разностное значение к шагу квантования для непосредственно предыдущего слоя (i–го слоя). Путем определения layer_quant_step[i–2] как разностного значения, возникает множество разностных значений, близких к 0, тем самым обеспечивая возможность повышения эффективности кодирования в блоке 103 кодирования.
[0068] Блок 103 кодирования кодирует параметры кодирования на фиг. 13–15 в качестве информации квантования, чтобы генерировать сжатые данные.
Отметим, что хотя минимальная единица изменения шагов квантования представляет собой единицы ребер, как показано на фиг. 10, минимальная единица изменения шагов квантования может представлять собой единицы узлов (на фиг. 12, единицы ядер). Это имеет то же самое значение, что и установка E=1 на фиг. 14. В этом случае, шаги квантования могут независимо кодироваться на поузловой основе (на основе по каждому ядру на фиг. 12).
[0069] К тому же, минимальная единица изменения шагов квантования может представлять собой единицы слоев.
Это имеет то же самое значение, что и исполнение всегда только layer_quant_coding() без флага "matrix_adaptive_quant_flag", когда флаг "layer_adaptive_quant_flag" = 1 (истинно) на фиг. 13. Таким образом, делая минимальную единицу изменения шагов квантования большей, чем единицы ребер, размер данных информации квантования предкодирования может быть уменьшен.
[0070] Как описано выше, в устройстве 100 обработки данных в соответствии с первым вариантом осуществления, блок 101 обработки данных обрабатывает входные данные с использованием нейронной сети. Блок 102 управления сжатием определяет шаги квантования и генерирует информацию квантования, которая определяет шаги квантования. Блок 103 кодирования кодирует информацию конфигурации сети, включающую в себя данные параметров, которые квантуются с использованием шагов квантования, определенных блоком 102 управления сжатием, и информацию квантования, чтобы сгенерировать сжатые данные.
Конкретно, в приведенном выше описании, представлен пример, в котором информация весов, назначенная ребрам, которые соединяют узлы в нейронной сети, обрабатывается как данные параметров нейронной сети. При этих конфигурациях, информация квантования, которая определяет шаги квантования, и информация конфигурации сети, включающая в себя данные параметров, которые квантуются с использованием шагов квантования в информации квантования, кодируются в сжатые данные. Соответственно, данные параметров нейронной сети могут быть сжаты в высокой степени.
Кроме того, с использованием информации квантования и информации конфигурации сети, которые декодируются из сжатых данных, нейронная сеть, оптимизированная на стороне кодирования, может создаваться на стороне декодирования.
[0071] В устройстве 200 обработки данных в соответствии с первым вариантом осуществления, блок 202 обработки данных обрабатывает входные данные с использованием нейронной сети. Блок 201 декодирования декодирует сжатые данные.
В этой конфигурации, блок 202 обработки данных обратно квантует данные параметров с использованием информации квантования и информации конфигурации сети, которые декодируются из сжатых данных блоком 201 декодирования, и создает нейронную сеть с использованием информации конфигурации сети, включающей в себя обратно квантованные данные параметров.
Соответственно, нейронная сеть, оптимизированная на стороне кодирования, может создаваться с использованием информации квантования и информации конфигурации сети, декодированных из сжатых данных.
[0072] В устройстве 100 обработки данных в соответствии с первым вариантом осуществления, блок 102 управления сжатием изменяет шаги квантования на основе от ребра к ребру (по каждому ребру). Блок 103 кодирования кодирует информацию квантования, которая определяет шаги квантования по каждому ребру. Посредством такой конфигурации данные параметров могут квантоваться с высокой точностью.
[0073] В устройстве 100 обработки данных в соответствии с первым вариантом осуществления, блок 102 управления сжатием изменяет шаги квантования на основе по каждому узлу или по каждому ядру. Блок 103 кодирования кодирует информацию квантования, которая определяет шаги квантования по каждому узлу или по каждому ядру.
Посредством такой конфигурации, также, данные параметров могут квантоваться с высокой точностью.
[0074] В устройстве 100 обработки данных в соответствии с первым вариантом осуществления, блок 102 управления сжатием изменяет шаги квантования на основе по каждому слою нейронной сети. Блок 103 кодирования кодирует информацию квантования, которая определяет шаги квантования по каждому слою для нейронной сети.
Посредством такой конфигурации, коэффициент сжатия данных параметров путем квантования увеличивается, и, таким образом, количество данных информации весов предкодирования может быть уменьшено.
[0075] Второй вариант осуществления.
Первый вариант осуществления описывает пример, в котором выходные результаты нейронной сети непосредственно используются в качестве результатов обработки данных, но существует примерное применение, в котором выходы промежуточного слоя нейронной сети используются в качестве признаков для обработки данных на данных изображения и аудиоданных, например, поиска или сопоставления изображений в следующей ссылке, и признаки подвергаются другому методу обработки данных, как показано в следующей ссылке, посредством которого получают конечные результаты обработки данных.
Например, когда выходы промежуточного слоя нейронной сети используются в качестве признаков изображения для обработки изображения, такой как поиск изображения, сопоставление или отслеживание объекта, путем замены выходов или добавления выходов к признакам изображения, таким как гистограмма ориентированных градиентов (HOG), масштабно–инвариантная трансформация признаков (SIFT) и Speeded Up Robust Features (SURF (ускоренные устойчивые признаки)), которые являются признаками изображения, используемыми в вышеописанной традиционной обработке изображений, обработка изображения может быть реализована с использованием того же самого потока обработки, что и поток обработки изображения, который использует вышеописанные обычные признаки изображения.
В этом случае, то, что подлежит кодированию в качестве информации конфигурации сети и информации квантования устройством 100 обработки данных, представляет собой часть нейронной сети вплоть до промежуточного слоя, на котором получают выходы, служащие в качестве признаков для обработки данных.
Более того, устройство 100 обработки данных выполняет обработку данных, такую как поиск изображения, с использованием вышеописанных признаков для обработки данных. Устройство 200 обработки данных декодирует часть нейронной сети вплоть до промежуточного слоя из сжатых данных и выполняет обработку данных, такую как поиск изображения, с использованием выходов, полученных путем ввода входных данных, в качестве признаков для обработки данных.
(Ссылка) ISO/IEC JTC1/SC29/WG11/m39219, "Improved retrieval and matching with CNN feature for CDVA", Chengdu, China, Oct. 2016.
[0076] Поэтому, в устройстве 100 обработки данных в соответствии со вторым вариантом осуществления, коэффициент сжатия данных параметров путем квантования увеличивается, тем самым позволяя уменьшать количество данных информации весов предкодирования. В устройстве 200 обработки данных в соответствии со вторым вариантом осуществления, путем создания нейронной сети декодированием сжатых данных, которые выводятся из устройства 100 обработки данных, может выполняться обработка данных.
[0077] Отметим, что настоящее изобретение не ограничено вышеописанными вариантами осуществления, и модификации любого компонента вариантов осуществления или опущения любого компонента вариантов осуществления возможны в пределах объема настоящего изобретения.
Промышленная применимость
[0078] Устройства обработки данных в соответствии с изобретением могут в высокой степени сжимать данные параметров нейронной сети и, таким образом, могут использоваться, например, в методах распознавания изображения.
Список ссылочных позиций
[0079]
10–1 по 10–9, 11–1 по 11–3: узел,
12–1 по 12–15: ребро,
20: ядро,
100, 200: устройство обработки данных,
101, 202: блок обработки данных,
102: блок управления сжатием,
103: блок кодирования,
201: блок декодирования,
300: схема обработки,
301: процессор,
302: память.