![](https://habrastorage.org/getpro/habr/upload_files/cf6/3ea/29c/cf63ea29cb91e6a3488be1f0cb127c41.png)
Для начала пару слов об обработке текстовой информации, рекуррентных сетях и методах защиты конфиденциальности пользователя.
Рекуррентные нейронные сети (Recurrent Neural Networks, RNNs) — популярные модели, используемые в обработке естественного языка (NLP). Идея RNN - в последовательном использовании информации. В классических нейронных сетях имеется ввиду, что все входы и выходы автономны. Но для предсказания следующего слова необходимо иметь представление о предыдущем - для этого отлично подходят RNNs, которые выполняют одинаковые задачи для каждого элемента последовательности (или грубо говоря сети с "памятью", которая учитывает прошлую информацию).
![Картинка 2 - развертка RNN Картинка 2 - развертка RNN](https://habrastorage.org/getpro/habr/upload_files/33a/860/d52/33a860d52bb59aaaf202663238c5b11b.jpeg)
На картинке показана развертка RNN, обозначу основные составляющие формул, задающих RNN:
x_t — вход на временном шаге t
s_t — скрытое состояние на шаге t. Оно определяет ту самую "память" сети, скрытое состояние определяется как функция предыдущих состояний - данная функция называется функцией активации. Есть различный варианты функций активации, такие как ступенчатая (A = 1, если Y > граница, иначе А = 0), линейная (A = cx), сигмоида (sigmoid A = 1/(1 + exp(-x)) ), гиперболический тангенс (tahn), ReLu (A(x) = max(0,x) ). Выбор функции активации может сильно влиять на скорость выхода, в чем мы убедимся в дальнейшем
o_t — выход на шаге t
Далее рассмотрим криптосистемы и способы создания безопасных интерфейсов вывода.
Рассмотрим искажения в нашей модели угроз, когда сервер S размещает модель, а клиенты C отправляют входные данные для вывода с использованием модели S ’. Клиент и сервер придерживаются протокола, но пытаются получить информацию о вводе другой стороны. Наш протокол скрывает веса модели, смещения и активации сетевой модели, которые, скорее всего, будут проприетарными.
HE (Homomorphic encryption - Гомоморфное шифрование) - криптосистема, которая поддерживает вычисления с зашифрованным текстом без дешифрования.
GC (Garbled circuit) - протокол, позволяющий двум сторонам (клиенту и серверу) совместно вычислять функцию над своими личными данными, при этом не раскрывая данные, выходящие за рамки вывода каждой из них.
Функция GC представлена логическими схемами с 2-мя входными воротами. Суммарные расходы на связь с GC пропорциональны количеству элементов без XOR в функции активации - например, 12-битный ReLU требует только 30 элементов без XOR, в то время как 12-битный tanh требует> 2K элементов без XOR.
Современные исследования представляют следующие нейронные сети с безопасным выводом : GC-only , HE-only и гибрид HE+GC. GC-only сети отличаются длительной задержкой вывода, HE-only сети не могут точно реализовать нелинейные активации только гомоморфными умножениями и сложениями. Потому предпочитают реализовать линейные слои с операциями HE и нелинейные активации с операциями GC, они называются GRU(Gated Recurrent Units).
![Картинка 3 - ячейка обычной GRU замененная на GRU с ReLU и квантованием далее Картинка 3 - ячейка обычной GRU замененная на GRU с ReLU и квантованием далее](https://habrastorage.org/getpro/habr/upload_files/d9a/9fa/55c/d9a9fa55c232e7df593dff208815a5a0.png)
В типичной ячейке GRU есть девять этапов линейных операций и две нелинейные операции. В исходном состоянии нелинейные операции занимают до 91,37%. Поэтому нелинейные операции на основе GC являются узким местом в этой структуре.
Потому был предложен способ ускорить GRU - давайте же в нем разберемся!
Замена tanh на ReLU
В GRU нелинейной функцией активации обычно является tanh, но она также может быть реализована с помощью выпрямительного линейного блока ReLU. Для активации 8-битного ReLU требуется примерно в 4 раза меньше задержки, чем для 8-битной активации tanh, поскольку для 8-битного ReLU требуется только 24 логических элемента без XOR, а для tanh требуется 95 элементов без XOR. Ниже представлена таблица сравнения tanh и ReLU на различных датасетах в задачах бинарной классификации, из которой видно, что ReLU не проигрывает по точности и значительно выигрывает по скорости вывода.
Точность | Задержка | |||
Датасет | tahn | ReLU | tahn | ReLU |
IMDB | 84.8% | 84.6% | 14860ms | 3779ms |
Yelp Reviews | 77.3% | 78.1% | 5383ms | 1852ms |
Таблица 1 - сравнение активации через tahn с ReLU
Квантование сигмоиды и ReLU
Как было сказано ранее, время вычисления для нелинейных операций составляет около 91,37% для типичного случая. В основном это связано с тем, что вычислительная сложность зашифрованного текста в значительной степени пропорциональна базовой длине битов. Чтобы упростить вычислительную сложность еще больше было предложено квантовать всю длину в битах по умолчанию от 20 до 8 в активациях. Во-первых, конструкция схем с GC пропорционально проще после квантования, поскольку они чувствительны к длине битов. Во-вторых, поскольку эти функции активации не имеют весовых параметров, общая точность нейронных сетей с квантованными функциями активации сохраняется. В таблице ниже представлено сравнение задержек у разных типов GRU, улучшенный вариант GRU быстрее всех.
Схема | Задержка |
Обычная GRU | 15675.85 ms |
GRU с ReLU | 3590.65 ms |
GRU с ReLU и квантованием | 1655.56 ms |
Обычная GRU | 5382.91 ms |
GRU с ReLU | 1851.32 ms |
GRU с ReLU и квантованием | 913.32 ms |
Таблица 2 - сравнение типов GRU
Заключение
Прогнозирование на основе машинного обучения - очень перспективная область, и многие компании стремятся внедрить новейшие технологии. В связи с этим остро стоит вопрос конфиденциальности пользователей(например, при отправке открытого текста на модельные серверы для вывода). Для сохранения безопасности важно использовать такие схемы как GRU, а также совершенствовать их. Один из способов улучшения работы GRU описан в статье - упрощение вычислительной сложности за счет замены функции активации RNN tahn на ReLU и дальнейшего квантования сигмоиды и ReLU, что ведет к уменьшению задержки вывода и сохранению точности.