Квантованные БМ сети: упрощаем типы данных
Как вы уже видели, регулярно читая наш блог, мы не только занимаемся разработкой промышленных систем распознавания документов (паспортов, кадрового документооборота, первички и т.п.), но и активно развиваем перспективные технологии в области компьютерного зрения. Сегодняшняя статья из области эффективных нейросетевых архитектур.
Биполярные морфологические (БМ) сети — нейронные сети от Smart Engines практически без умножения. Мы уже показали, что они успешно справляются с задачами классификации изображений и поиска объектов на изображениях. Однако для достижения высокой вычислительной и энергоэффективности важно не только максимально упростить используемые операции, но и взять максимально простой и компактный тип данных, то есть отквантовать нейронную сеть. Так что насчет квантования БМ сетей?
В этой модели в вычислительно-нагрузочной части слоя отсутствуют операции умножения, вместо этого мы используем сложение и взятие максимума. Подробное описание биполярных морфологических нейронных сетей можно прочитать тут, а Рис. 1 кратко напомнит, как они устроены. Основные моменты:
БМ нейроны заменяют классические в сверточных слоях, другие слои не меняются,
внутри БМ слоя используем только сложение и максимум,
на входе и выходе БМ слоя есть сложные функции — логарифм и экспонента, но не страшно, так как мы применяем их только к активации — вектору данных, который передается между слоями.

Схема квантования БМ слоя
Обычное линейное квантование входного вектора X к n-битам устроено так:
где,
— вещественный коэффициент масштаба.
У БМ слоя 2 матрицы весов и 1 вектор смещения. Будем квантовать их линейно, но со своими коэффициентами,
и
, где
— разрядность весов (такая же как и у входа слоя), а
— разрядность смещения.
Затем нам нужно выполнить операцию для
и
. Для этого мы используем предварительно вычисленную таблицу:
где обозначает округление до ближайшего целого числа, а
— выходной вектор.
Такая таблица содержит записей и хранит
-битные целые значения. Таким образом, ее размер составляет
, что составляет всего 512 байт даже для
и
. Обратите внимание, что параметры
и
определяются на этапе обучения и не изменяются во время работы сети.
Поскольку мы используем разные масштабные коэффициенты для весов и
, мы используем 2 таблицы поиска и получаем 4 логарифмированных вектора — по одному на каждый вычислительный путь.
Следующий шаг — суммирование и
, от которых мы берем максимумы и получаем
. Эту операцию можно выполнить напрямую с целыми значениями, поскольку сигнал и веса имеют одинаковый коэффициент масштаба.
Дальше мы вычисляем экспоненту с помощью таблицы:
Эта таблица использует-битные целочисленные значения в качестве входных данных и выводит
-битные значения, чтобы дальше можно было складывать их без масштабирования. Так как после обучения модели мы знаем параметры
и
, то можем подсчитать всю таблицу заранее. Ее размер составляет
бит и нам нужно 2 таких таблицы для вычисления
для всех 4 вычислительных путей БМ нейрона.
Наконец, мы выполняем суммирование результатов и добавление смещения. Затем результат квантуется обратно к
битам для дальнейшей обработки сетью. Например, дальше можно применить кусочно-линейную активацию
. Предлагаемая схема квантования проиллюстрирована на Рис. 2.
Ее параметры:
— разрядность входного вектора и весов;
— разрядность выхода таблицы логарифма;
— разрядность выхода таблицы экспоненты и смещения.
Мы решили рассмотреть квантовании с, поскольку 8-битное квантование для классических сетей работает практически без потерь с точки зрения качества распознавания. Однако
не обеспечивают достаточно точных вычислений из-за нелинейного роста диапазона после операций
и
. Собственно поэтому мы сделали их отдельными параметрами, которые подбираются экспериментально. При этом они не обязательно должны быть кратными 8, так как аппаратной реализации мы не ограничены по разрядности, как на центральных процессорах или видеокартах.

Наилучшие параметры квантования для входного или выходного вектораопределяются:
для всех репрезентативных значений.
Отметим, что в общем случае не является выпуклой, что сильно усложняет поиск экстремума. Поэтому мы использовали простое приближенное решение. Мы вычислили гистограмму значений
на обучающей выборке, а затем просто посчитали функцию
для набора равноудаленных точек
из которых и выбрали минимум.
Для весов и смещений все проще — они уже известны для обученной сети и поэтому нет необходимости приближать распределение гистограммой. Пример распределения весов сверточного БМ слоя показан на Рис. 3.

Резюме: полученный алгоритм квантования
Обработаем все БМ слои последовательно от первого к последнему. Для БМ слоя:
Определить параметры квантования
,
,
и
путем приближенного решения (1) на равномерной сетке.
Определить квантованные веса и смещения:
3. Заморозить новый квантованный слой и дообучить оставшуюся часть сети.
Эксперименты
Теперь мы экспериментально определим необходимые параметры схемы квантования на базовых моделях типа LeNet, обученных на наборе данных MNIST. Их архитектуры показаны в Таблице 1. Начальная точность на тестовом наборе составила 98.29% для BM-CNN1 и 98.65% для BM-CNN2.
Мы использовали 10% обучающего набора данных для оценки параметров квантования. Количество ячеек гистограммы было установлено равным 1000. Количество точек сетки для каждого квантованного вектора или матрицы было равно 1000 в диапазоне
, где
. Этот коэффициент масштаба позволяет нам представлять все значения из
. Дообучение выполнялось с помощью оптимизатора Adam с параметрами по умолчанию.
Таблица 1. Архитектуры рассмотренных моделей.
Модель | Архитектура | Число параметров |
BM-CNN1 | conv1(3, 3, 16) — relu — conv2(3, 3, 32) — relu — conv3(3, 3, 32) — relu — fc (10) — softmax | 28k |
BM-CNN2 | conv1(3, 3, 16) — relu — conv2(3, 3, 32) — relu — conv3(3, 3, 32) — relu — conv4(3, 3, 32) — relu — conv5(3, 3, 32) — relu — | 65k |
Определение разрядности логарифма
В нашем первом эксперименте мы исследовали точность классификации с различными разрядностями таблицы для вычисления логарифма (параметр в схеме квантования).
Мы начали с и увеличивали его до тех пор, пока не достигли оптимальной точности классификации. Битовая ширина
была установлена в 32, чтобы не влиять на результаты эксперимента. Результаты показаны в таблице 2.
Таблица 2. Точность классификации 8-битных BM-CNN с различной разрядностью логарифма.
Модель | Квант. слоев | Точность без дообучения, % | Точность с дообучением, % | |
BM-CNN1 | 1 | 8 | 98.0 | 98.2 |
9 | 98.0 | 98.3 | ||
10 | 98.0 | 98.1 | ||
2 | 8 | 52.0 | 98.1 | |
9 | 97.6 | 98.3 | ||
10 | 97.6 | 98.3 | ||
3 | 8 | 52.3 | 98.2 | |
9 | 95.2 | 98.2 | ||
10 | 95.2 | 98.2 | ||
BM-CNN2 | 1 | 8 | 98.2 | 98.4 |
9 | 98.2 | 98.7 | ||
10 | 98.2 | 98.5 | ||
2 | 8 | 46.1 | 98.6 | |
9 | 77.1 | 98.5 | ||
10 | 77.1 | 98.6 | ||
3 | 8 | 68.6 | 98.7 | |
9 | 92.7 | 98.7 | ||
10 | 92.7 | 98.6 | ||
4 | 8 | 72.6 | 98.7 | |
9 | 91.6 | 98.6 | ||
10 | 91.6 | 98.6 | ||
5 | 8 | 90.8 | 97.9 | |
9 | 90.1 | 98.6 | ||
10 | 90.1 | 98.7 |
Эти эксперименты показали, что дает лучшую конечную точность, чем
, но дальнейшее увеличение не дает большого выигрыша. Мы также видим, что квантование без дообучения приводит к существенному ухудшению точности, тогда как дообучение позволяет ее вернуть.
Определение разрядности экспоненты
Затем мы посмотрели, как на результат влияет разрядность экспоненты при фиксированном значении. Точность для BM-CNN2 без дообучения показана на Рис. 4. Мы видим, что для маленьких разрядностей, она очень низкая и для достижения разумной точности необходимо довольно большое
: не менее 17 бит.

Финальное качество после дообучения
Мы использовали схему квантования с наименьшими возможными разрядностями, то есть,
и
.
Результирующее качество после дообучения составило 98.2% для BM-CNN1 и 98.6% для BM-CNN2, то есть оказалось не хуже, чем у неквантованных аналогов.
Заключение
Итак, мы показали как квантовать БМ сети для основных задач классификации изображений. Квантованные слои BM используют целочисленные операции сложения/вычитания, беря максимум и выполняя поиск в предварительно вычисленных таблицах. Это означает, что они предоставляют возможности для простой и быстрой аппаратной реализации нейронных сетей на специализированных устройствах, таких как FPGA, ASIC и нейроморфные процессоры.
Поскольку квантованные БМ модели нацелены на энергоэффективные устройства, мы рассмотрели простые архитектуры семейства LeNet-5. Наши результаты показывают, что для успешного распознавания достаточно 8-битных весов, 7-битных логарифмов и 17-битных таблиц поиска экспоненты. Точность исходных сетей с 3 и 5 биполярными морфологическими сверточными слоями составила 98.3% и 98.7% и осталась неизменной для квантованных сетей после дообучения.