Список сокращений и определений . . . . . . . . . . . . . . . . . . . 4
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Глава 1. Способы уменьшения вычислительной сложности
нейронных сетей . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Разработка вычислительно эффективных архитектур на
примере задачи классификации . . . . . . . . . . . . . . . . . . . 14
1.2 Нейросетевой поиск архитектур . . . . . . . . . . . . . . . . . . . 17
1.3 Прунинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Квантование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5 Дистилляция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.6 Использование нестандартных типов данных . . . . . . . . . . . . 33
1.7 Матричные и тензорные разложения . . . . . . . . . . . . . . . . 35
1.8 Выводы по первой главе . . . . . . . . . . . . . . . . . . . . . . . . 38
Глава 2. Метод дообучения порогов как комбинация
дистилляции и квантования . . . . . . . . . . . . . . . . . . 40
2.1 Описание процесса квантования нейронных сетей в
программном пакете TensorflowLite . . . . . . . . . . . . . . . . . 40
2.2 Проблема выбросов в задаче квантования нейронных сетей . . . . 41
2.3 Дифференцируемый порог квантования . . . . . . . . . . . . . . . 42
2.4 Результаты экспериментов . . . . . . . . . . . . . . . . . . . . . . 46
2.5 Анализ алгоритма быстрых дообучаемых порогов с точки
зрения обратного распространения ошибки . . . . . . . . . . . . . 53
2.6 Описание процедуры перемасштабирования каналов для
скалярного квантования. . . . . . . . . . . . . . . . . . . . . . . . 54
2.7 Заключение по второй главе . . . . . . . . . . . . . . . . . . . . . 58
Глава 3. Анализ особенностей проектирования современных
аппаратных архитектур для исполнения нейронных
сетей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3
Стр.
3.1 Анализ распространенных слоев нейронных сетей на
возможность представления в унифицированном виде . . . . . . . 59
3.1.1 Описание принципа работы рекуррентной ячейки . . . . . 60
3.1.2 Анализ потребления вычислительных ресурсов
операцией свертки в современных нейронных сетях . . . . 63
3.1.3 Представление операции свертки в виде матричного
умножения . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Описание принципов работы аппаратных ускорителей
нейронных сетей на основе систолического массива . . . . . . . . 67
3.3 Заключение по третьей главе . . . . . . . . . . . . . . . . . . . . . 69
Глава 4. Процедура нахождения оптимальной разрядности
порядка и мантиссы . . . . . . . . . . . . . . . . . . . . . . . 73
4.1 Описание метода нахождения оптимальной разрядности
порядка и мантиссы . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.2 Нахождение оптимальной разрядности порядка и мантиссы для
сверточных нейронных сетей . . . . . . . . . . . . . . . . . . . . . 74
4.3 Нахождение оптимальной разрядности порядка и мантиссы для
рекуррентных нейронных сетей . . . . . . . . . . . . . . . . . . . . 77
4.3.1 Описание архитектуры нейронной сети DeepSpeech . . . . 77
4.3.2 Описание процедуры обработки входного звукового сигнала 78
4.3.3 Экспериментальные результаты . . . . . . . . . . . . . . . 81
4.4 Заключение по четвертой главе . . . . . . . . . . . . . . . . . . . . 82
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Список рисунков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Список таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98



