Авторы Арно Робен и Станислав I Славов

Введение

За последние несколько лет сверточные нейронные сети значительно улучшили производительность компьютерного зрения, достигнув почти или сверхчеловеческих характеристик на многих наборах данных.

Однако CNN трудно настроить, и их обучение требует очень много времени. Тогда развитие квантовых компьютеров могло бы стать определяющим фактором в повышении их скорости и точности.

Затем мы с нуля реализуем квантовый сверточный слой, представленный в [1], чтобы оценить, как простая сеть может работать по сравнению с ее классическим аналогом. Авторам удалось получить лучшие результаты на наборе данных MNIST, чем с традиционной CNN. Мы хотели бы воспроизвести эти результаты в наборе данных FashionMNIST.

Как работают CNN?

Персептроны были первыми реализованными нейронными сетями. Они состоят из одного плотного слоя, где все входные узлы соединены с одним выходным узлом. Даже если эта модель может быть эффективной для простой задачи, ей не хватает способности понять пространственные отношения в данных, которые обычно требуются при работе с изображениями.

CNN решают эту проблему пространственного распределения с помощью специальной операции, называемой сверткой. Затем после применения фильтра к исходному изображению получаются запутанные функции, как показано на следующем рисунке.

Однопиксельный вывод генерируется путем поэлементного умножения части изображения с помощью фильтра. Затем фильтр перемещается по исходному изображению, чтобы создать полный вывод.

Свертка лежит в основе всех CNN, и наилучшие результаты получаются при объединении нескольких таких слоев по нескольким каналам.

Квантовая модель

Идея сетей Quanvolutional точно такая же, как и у классической свертки. Мы хотим извлечь соответствующие функции из локализованного пространства изображения. Однако вместо применения линейного фильтра мы хотели бы использовать квантовую схему для доступа к многомерному пространству.

Кванволюционный слой должен быть в состоянии заменить любую классическую свертка, поддерживая все размеры ядра, а также все номера выходных каналов. Этот слой также должен иметь возможность накладываться поверх любых других слоев.

На следующей диаграмме показано, как такой уровень может быть интегрирован в классическую структуру CNN.

Давайте теперь погрузимся в дизайн слоя. Он состоит из 3 основных этапов:

  • Кодирование: Преобразование раздела изображения в квантовое состояние
  • Преобразование состояния через квантовую схему
  • Декодирование: преобразование квантового состояния обратно в скалярное

Теперь мы опишем процесс, используемый для каждого из этих элементов.

Для кодирования предположим, что у нас есть изображение в оттенках серого, где каждый пиксель имеет значение от 0 до 255. Кванволюционный слой применит пороговое значение к каждому из этих пикселей, установив для них значение 1, если их значение выше порогового значения. , и 0 в противном случае. Самый распространенный порог — 127.

Как только это будет сделано, квадратная секция будет сглажена и преобразована в квантовое состояние, как показано на изображении ниже.

Второй шаг нашего уровня — применить квантовую схему к этому начальному состоянию, чтобы использовать весь потенциал квантовых вычислений. Есть много способов выбрать схему. Некоторые архитектуры будут иметь возможность извлекать определенные функции лучше, чем другие. Мы также могли бы сделать эти схемы параметризуемыми и обучаемыми, как в случае с вариационными квантовыми алгоритмами [2]. Однако для нашего эксперимента мы просто сгенерируем случайную схему с помощью библиотеки Qiskit.

Пример такой схемы можно найти ниже.

Последний шаг — преобразовать обратно наше квантовое состояние в скалярный выход. Здесь снова есть много способов сделать это, но мы решили измерить наше выходное состояние и вычислить ожидаемое количество кубитов, равных единице. Наконец, мы масштабируем это число до [0,1], разделив его на количество кубитов.

Вот графический обзор этой операции:

Детали реализации

У нас пока нет доступа к надежным и быстрым квантовым компьютерам. Однако библиотека Qiskit, предлагаемая IBM, позволяет моделировать небольшие квантовые схемы. Затем мы воспользуемся этой возможностью для реализации нашей нейронной сети.

К сожалению, эти симуляции требуют больших вычислительных ресурсов. Чтобы сделать кваванволюционный слой быстрым, мы моделируем только один раз желаемый выход слоя для всех возможных входов. Мы сохраняем каждую пару ввода-вывода в справочной таблице, которую мы можем вызвать позже во время прямого прохода слоя. Затем нам приходится иметь дело с накладными расходами на моделирование только во время первоначальной компиляции модели.

Для ядра размером 2x2 требуется 16 симуляций, так как это 16 возможных состояний для схемы из 4 кубитов. Тогда ядро ​​размером 3x3 требует 512 симуляций. Подводя итог, кванволюционный слой требует экспоненциального количества вычислений на классическом оборудовании, но только полиномиальное количество на квантовом компьютере. Именно здесь мы можем увидеть потенциал для квантового ускорения.

Из-за этих ограничений мы ограничимся размером ядра 2. Мы реализовали следующую QCNN, состоящую из одной квантовой свертки и одной классической:

Полученные результаты

Мы будем тестировать нашу QCNN на известном наборе данных Fashion MNIST и сравнивать ее с обычной CNN, где мы заменили фильтр Quanv2D простой операцией Conv2D с теми же параметрами.

Во-первых, давайте посмотрим на влияние количества выходных каналов в фильтре Quanv2D. Кажется, что увеличение количества фильтров дает первоначальное повышение точности, однако добавление более 10 фильтров почти не дает улучшения.

Мы можем объяснить такое поведение случайностью схемы, используемой слоем. Если по какой-либо причине эта схема не выводит интересные функции, то нейронная сеть застревает и не может делать больших улучшений, тогда как при большом количестве каналов меньше шансов иметь несколько плохо работающих схем.

Давайте теперь сравним результаты QCNN с обычной CNN. Ниже мы показываем потери на тренировочном наборе, а также точность тестового набора.

Несмотря на то, что классическая CNN работает немного лучше (точность 88% против 82% после 30 эпох), результаты QCNN по-прежнему очень впечатляют, учитывая, что квантовые схемы были сгенерированы случайным образом и не поддаются обучению.

Будущие улучшения

Есть несколько способов улучшить нашу текущую quanvolutional сеть, чтобы превзойти результаты CNN:

  • Путем точной настройки параметра порога или изменения функции кодирования.
  • Путем выборки из определенного подмножества квантовых схем, например, путем рассмотрения схем, построенных как минимум с одним вентилем Адамара и одним вентилем CNOT.
  • Пробуя новые функции декодирования, такие как, например, наиболее распространенный вывод кубитов.

Заключение

Мы увидели, что даже если CNN, кажется, работают лучше, чем их квантовый аналог, все еще есть надежда, что квантовые свертки могут стать частью будущих моделей глубокого обучения.

Однако впереди еще много проблем, и еще далеко до того, как квантовые компьютеры смогут выполнять эти операции в масштабе, необходимом для обучения машинному обучению.

Рекомендации

[1] М. Хендерсон, С. Шакья, С. Прадхан и Т. Кук, Quanvolutional Neural Networks: Powering Image Recognition with Quantum Circuits, ArXiv190404767 Quant-Ph, апрель 2019 г., доступ : 23 января 2022 г. [Онлайн]. Доступно: http://arxiv.org/abs/1904.04767

[2] М. Сересо et al., Вариационные квантовые алгоритмы, Nat Rev Phys, vol. 3, нет. 9, стр. 625–644, сентябрь 2021 г., doi: 10.1038/s42254–021–00348–9.

[3] CNN для глубокого обучения | Convolutional Neural Networks, Analytics Vidhya, 1 мая 2021 г. https://www.analyticsvidhya.com/blog/2021/05/convolutional-neural-networks-cnn/ (по состоянию на янв. 27, 2022).