Применение квантовых графовых нейронных сетей

Реконструкция частиц с помощью гибридных квантово-классических графовых нейронных сетей

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

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

Готовы начать? Вот карта, которой мы будем следовать.

  1. Мы начнем с понимания постановки проблемы в ЦЕРНе, коснемся того, что делается для ее решения прямо сейчас, и почему graphML может стать потенциальным ключом к ее решению.
  2. Затем мы сделаем перерыв, чтобы понять классические графовые нейронные сети.
  3. Чтобы мы могли подробно разобрать нейронную сеть квантового графа.
  4. И закончите рассказом о том, как моя группа и я внесли свой вклад в существующую работу.

Контекст

Когда в конце февраля появился Xanadu’s QHack, мы с моей командой искали привлекательные проекты QML. Мы взглянули на эту бумажную нейронную сеть с квантовым графом и поняли, что она не разочарует. На самом деле это не так.

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

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

Теория графов. Машинное обучение. Квантовые вычисления.

И это также зажгло несколько новых увлечений: физика высоких энергий. Не менее того, работа над этим проектом научила меня сочетанию этих концепций. И поэтому в этом посте я хотел бы поделиться с вами этим экзотическим сплавом. В деталях.

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

Аллонс-у!

Раздел 1: GraphML и физика высоких энергий

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

ЦЕРН общие операции

Большой адронный коллайдер (БАК) в Женеве, Швейцария, является крупнейшим и самым мощным ускорителем частиц в мире. Это 27-километровое кольцо, в котором используются сверхпроводящие магниты вместе с рядом ускоряющих структур для увеличения энергии частиц на пути.

Учитывая, что на его создание ушло десять лет, а его стоимость составила около 4,75 млрд долларов, у вас может возникнуть резонный вопрос: что он вообще делает такого дорогого?

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

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

Такого рода столкновения и полученные данные позволяют нам добиться ощутимого прогресса в решении таких вопросов, как «из чего на самом деле состоит Вселенная и какие силы управляют ее природой?» Это как получить возможность наблюдать рассвет Вселенной — рядом с Большим Взрывом!

Решение таких фундаментальных вопросов невероятно привлекательно для расширения нашего базового понимания мира, в котором мы живем, и, возможно, попутно зародит некоторые полезные технологии.

Для более подробного объяснения того, что происходит на LHC, посетите этот сайт, чтобы узнать больше.

Описание проблемы реконструкции треков частиц

Имея представление о том, что происходит в ЦЕРН, давайте определим конкретную задачу, которую мы пытаемся решить с помощью нейронных сетей с квантовым графом.

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

В задаче реконструкции частиц цель состоит в том, чтобы соединить попадания, принадлежащие одним и тем же частицам, чтобы точно определить истинные траектории, по которым шли отдельные частицы. Однако при работе с примерно 80 000 кумулятивных попаданий по всем слоям детектора , отслеживание путей каждой частицы превращается в сложную проблему.

Статус-кво и возможности

Прямо сейчас вычислительные алгоритмы для реконструкции частиц работают с текущей частотой столкновений, но они страдают от более высокой частоты столкновений, поскольку они масштабируются хуже, чем квадратично (например, O(n⁶) ). Тем не менее, ЦЕРН в настоящее время модернизирует LHC, чтобы иметь большее количество частиц в каждом луче (высокая светимость), а это означает, что каждое столкновение будет порождать еще больше частиц и вызывать больше попаданий. Ученые понимают, что текущие алгоритмы станут громоздкими для использования в предстоящих экспериментах с высокой светимостью LHC. Итак, эффективная реконструкция траекторий частиц является одной из самых важных задач при обновлении HL-LHC.

Учитывая встречные ветры, с которыми сталкиваются современные подходы к масштабированию, привлекательность квантовых вычислений (КК) и их недавние разработки побудили физиков высоких энергий исследовать эти вычислительные проблемы с новой точки зрения. Было приложено много усилий для проверки того, можно ли использовать новые инструменты контроля качества для достижения высоких скоростей.

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

Постановка задачи графа и мотивация для графовых нейронных сетей

Простое переосмысление проясняет, как эта проблема живет непосредственно в области теории графов.

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

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

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

Раздел 2: Классические графовые нейронные сети

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

Если вы считаете, что уже хорошо разбираетесь в graphML, можете пропустить этот раздел.

Проблемы представления графа

Графики повсюду! Графики — это математические объекты, представляющие отношения (ребра) между наборами сущностей (узлы). Другими словами, это набор узлов, соединенных ребрами.

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

Примеры графиков в дикой природе

  • Понимание естественного языка (семантический анализ)
  • Данные о трафике
  • Моделирование молекул

Хотя какие проблемы вращаются вокруг графов? Представьте себе эти задачи:

  • Учитывая данные о трафике в американских городах, каков прогнозируемый трафик в Нью-Йорке завтра (классификация узлов)?
  • Зная сеть связей LinkedIn, насколько вероятно, что Генри уже встречался с Терри (прогноз связи)?
  • Учитывая молекулу, какова вероятность того, что она будет токсичной (предсказание уровня глобального графа)?

Не нужно много усилий, чтобы увидеть, что каждая из этих задач имеет базовую функцию, диктующую так называемые «ответы». Ага! Нейронные сети зарекомендовали себя как мощный инструмент для аппроксимации функций. Так не разумно ли задаться вопросом, можем ли мы найти способ использовать нейронные сети для изучения этой функции и, таким образом, для получения точных прогнозов?

Действительно, это и есть цель нейронных сетей на основе графов! Проще говоря, они учатся предсказывать определенные свойства данных, структурированных на основе графов. Для наглядности мы говорим, что все задачи на основе графов попадают в следующие 3 сегмента (см. выше задачи для соответствующих примеров):

  1. Уровень узла - предсказание некоторого свойства для каждого узла в графе.
  2. Edge-level — предсказание свойства или наличия ребер в графе.
  3. Уровень графа — предсказание свойства для всего графа

Проблемы с графическими данными

И все же это не так тривиально. Как нейронная сеть вообще принимает график в качестве входных данных? Ответить на этот вопрос сложно, поскольку нейронные сети традиционно использовались для работы с входными данными фиксированного размера и/или в обычном порядке (такими как предложения, изображения и видео). Так что же вообще означает, что нейронная сеть получает на вход необработанные графики? Нейронные сети, естественно, не говорят на языке графов.

Мы понимаем, что это не работает, но в чем именно проблема с вводом данных в виде графа?

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

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

Но скажем, мы предполагаем, что каждый граф содержит одинаковое количество узлов, и определяем матрицу признаков узла N, назначая каждому узлу индекс i и сохраняя вектор признаков узла n_i в N. Если мы сделаем то же самое с ребрами, определив список смежности, в котором будут храниться все векторы признаков ребер e_k, соединяющие узлы (n_i, n_j ), мы получим способ представления графа, который инвариантен к перестановкам!

То есть назначение определенного индекса каждому ребру и узлу позволило нам определить регулярную структуру для каждого графа, которая не меняется в зависимости от порядка узлов или ребер.

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

Например, два приведенных выше графика идентичны, но расположены по-разному. Индексация позволила нам это увидеть.

Ясно, что если предсказания нейронной сети отличались между этими двумя графиками, то она еще не поняла, что они идентичны! Увы, перестановочная инвариантность существенна.

Обратите внимание, что многие экземпляры графа не содержат векторы признаков ребер.

Нейронная сеть с наивным графом

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

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

Важное замечание о встраиваниях: для незнакомого читателя встраивание – это вектор того же размера, что и вектор признаков, но вместо того, чтобы содержать закодированные нами интуитивно понятные функции (т. е. номер атома, трафик том и т. д.), он содержит значения, которые плотно кодируют много полезной информации, несмотря на то, что кажутся нам тарабарщиной. Через несколько итераций векторы встраивания эволюционируют, чтобы выявить основные свойства определенного узла/ребра, что позволяет упростить линейную классификацию.

Так почему же это наивно? Ну, во-первых, он совершенно не обращает внимания на присущую графу структуру данных. В этой GNN отсутствует концепция, согласно которой соседние узлы, разделяющие ребро, могут хранить важные данные о взаимосвязях во встраивании ребра. Он просто не понимает, что они связаны.

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

Граф сверточной нейронной сети (GCN)

Я показал вам, как выглядят плохо спроектированные GNN, но как насчет хороших? Чтобы прийти к этому, давайте подумаем над несколькими вопросами и сверим то, что мы уже знаем.

Мы знаем, что приведенному выше простому GNN не хватает понимания связанной природы графа, что приводит к тому, что он обучается значительно медленнее из-за плохих вложений. Итак, вот убийственный вопрос. Существует ли процедура встраивания, особенно подходящая для графических данных? Действительно, есть! Чтобы представить его, давайте подойдем к нему с точки зрения, которая может показаться вам знакомой.

Как вы, возможно, знаете, современная классификация изображений использует сверточные нейронные сети (CNN).

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

Так почему же CNN работают? Это в названии! Применение обучаемых сверточных фильтров к каждому изображению позволяет сети получать подробные карты объектов. «Расширенные карты объектов» — это, в конце концов, встраивания. Эти карты характеристик определяют основные атрибуты данного изображения, прежде чем пытаться его классифицировать. Это огромное преимущество.

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

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

Эти подходы, лежащие в основе сверток, имеют поразительное сходство с нашей новой формулировкой графовых нейронных сетей.

Обратите внимание, что изображения представляют собой сеткообразные графики с регулярной структурой. Пиксели представляют собой узлы (поплавки в оттенках серого или векторы RGB) и общие ссылки между каждыми соседними краями формы пикселя (по 8 для каждого пикселя без границы). Каждый узел также имеет абсолютную позицию, определяемую координатами x и y его пикселя.

Итак, если изображения — это графики, почему мы не можем просто применить этот сверточный метод к нашей нейронной сети на основе графов?

Топология наших графов, скорее всего, будет лишена любой такой однородной прямоугольной структуры, а это означает, что форма подходящего сверточного фильтра должна будет измениться по мере его работы с нашими графами. Например, у одного узла может быть 100 соседних узлов, а у следующего может быть только 1 — как в этом случае выглядит свертка?

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

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

Вернемся к нашему первоначальному вопросу:

Существует ли логическая процедура встраивания, которая могла бы использовать уникальные свойства графически структурированных данных?

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

Передача сообщений

Но что такое передача сообщений? Современные графовые нейронные сети используют локализованную свертку с 1 шагом, и они обычно называют варианты этого подхода «передачей сообщений». Подобно фильтру изображений 3x3 в CNN, свертывающемся по соседям с 1 переходом:

Идея действительно проста: каждый слой сверток агрегирует информацию о ближайших соседних узлах h_u для u ∈ N(h_i), где N(h_i) является набором индексов всех соседних векторов признаков.

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

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

Свертки графа

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

На изображении выше показана индивидуальная свертка, примененная к верхнему правому узлу. Один раунд/уровень передачи сообщений — это когда для каждого узла повторяется следующее (следуйте вместе с изображением):

1. Шаг 1 — это простой расчет, при котором каждый узел собирает информацию от окружающих узлов для обновления своих вложений. Векторы признаков от каждого соседнего узла предыдущего слоя объединяются с самим верхним правым узлом. Обычно это осуществляется через поэлементную сумму, среднее или максимальное значение всех 5 векторов признаков. Ниже приводится математическое представление, если мы решили агрегировать путем вычисления среднего значения:

2. Шаг 2 применяет нелинейное (обычно обучаемое) преобразование к агрегированному вектору узлов (шага 1), чтобы получить обновленное вложение. В целях демонстрации мы выбираем это преобразование как обучаемую весовую матрицу, за которой следует активация ReLU (эквивалентно одному полностью связанному слою нейронной сети, за которым следует ReLU).

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

3. Соответствующий узел последующего слоя обновляется до конечного внедрения функции.

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

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

Объединение

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

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

Процедуры объединения — это обобщенные методы распространения информации между ребрами, узлами или даже глобальными узлами. Вот несколько примеров, когда каждый из них может пригодиться:

  • (Ребро→Узел) Если задачей GNN является классификация узлов, но у вас есть ключевая информация, хранящаяся в ребрах, вам потребуется объединить информацию с ребер в узлы. Это делается путем агрегирования (сумма/максимум/среднее) всех векторов признаков соприкасающихся ребер данного узла и либо непосредственного обновления встраивания узла с результатом, либо обновления узла с выходными данными функции обновления, которая была передана агрегированному вектору. .

И наоборот, если у вас есть только функции узлов и вам нужно выполнить задачу прогнозирования на уровне ребер:

  • (Узел → Край) это процедура, описанная в начале этого раздела.

CNN и GCN

Чтобы представить GCN в перспективе, давайте рассмотрим основные отличия прямого прохода слоя:

Раздел 3: Гибридная квантово-классическая графовая нейронная сеть (QGNN)

Помните задачу о реконструкции частиц? Давайте рассмотрим внутреннюю работу этой гибридной квантово-классической графовой нейронной сети, предназначенной именно для этого.

Общий обзор

Напомним, что цель нашей QGNN — предсказать вероятность того, что каждое ребро во введенном графе событий является сегментом дорожки. Каждое «событие», представляющее собой столкновение двух пучков частиц, генерирует граф попаданий из более чем 80 000 узлов. Итак, в конце всего этого мы надеемся передать новые графы событий в обученный QGNN, чтобы вывести прогнозы краев, которые, будучи соединены вместе, формируют траектории частиц.

Архитектура QGNN состоит из 3 частей. Следуйте инструкциям, используя рисунок ниже.

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

где N_V — количество узлов/соответствий, а N_D — количество скрытых измерений, составляющих размер пространства встраивания, к которому была приведена каждая координата. Обратите внимание, что матрица представляет собой просто массив, каждая строка которого заполнена конкатенированным вектором признаков узлов.

Во-вторых, функции узлов периодически передаются в одни и те же граничные сети и сети узлов, каждая из которых сверточно обновляет функции узлов и краев (элементы краев — это просто числа с плавающей запятой/веса [0,1], которые описывают вероятность того, что проверяемое ребро является дорожкой). сегмент). Количество итераций (N_I) между пограничной сетью и сетью узлов — это гиперпараметр, который частично определяет полноту внедрения каждого узла. Мы коснемся этого позже.

Наконец, та же граничная сеть используется в последний раз для получения окончательных предсказанных вероятностей краев (e ∈ [0,1]^{N_E}), где N_E — количество краев.

Давайте теперь более подробно рассмотрим каждую часть этого пайплайна.

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

Входная сеть

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

Где X — матрица входных признаков, W^{(i)} — матрица весов для полностью связанного слоя, а σ — функция активации.

Входная форма — матрица признаков имеет N_V строк и 3 столбца (N_V — количество совпадений/узлов), несущих каждый вектор узлов совпадений [r_i, φ_i, z_i ] (местоположение в цилиндрических координатах).

Выходная форма — выход представляет собой матрицу из N_V строк и N_D столбцов, представляющих вложения узлов для каждого попадания.

Пограничная сеть

Краевая сеть используется для прогнозирования вероятности того, что данная частица пройдет от своего внутреннего узла к внешнему узлу. Другими словами, он отвечает на вопрос: существует ли это ребро? Стоит отметить, что это ненаправленные ребра, поскольку частицы перемещаются только наружу от начала координат.

Сеть принимает пару векторов признаков узлов в качестве входных данных и возвращает число с плавающей запятой, представляющее вероятность того, что пара узлов соединена. Вектор признаков каждого узла представляет собой объединение 3 фиксированных пространственных координат и N_D обучаемых значений встраивания.

Если мы допустим, что h_i^(k) и h_o^(k) будут вектором входных и выходных признаков ребра на kth слое соответственно, а e_k будет возвращаемой вероятностью на kth слое, то мы можем представить функцию как:

Итак, давайте рассмотрим функцию EdgeNetwork с помощью этой диаграммы, взятой из статьи.

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

Давайте рассмотрим это по частям. Входной классический слой используется для наилучшего уплотнения измерения от 2 × (3+N_D) до N_Q, где N_Q — количество кубитов. Выходы классического уровня N_Q перемасштабируются [0,π], что затем параметризует схему кодирования информации (IEC).

Здесь часть схемы IEC относится к части кодирования информации, которая встраивает выходной вектор предыдущего уровня размерности N_Q (количество кубитов) в квантовую нейронную сеть. Эта схема кодирования не поддается обучению, и для наших целей мы будем использовать угловое встраивание, что означает, что мы должны ограничить выходные данные предыдущего слоя в диапазоне π, учитывая периодичность параметрических квантовых вентилей. Здесь мы используем схему встраивания углов RY, поэтому часть IEC выглядит так:

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

Как граничная сеть может узнать, существует ли грань, имея только пару узлов?

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

Почему бы просто не использовать квантовую нейронную сеть напрямую?

Размещение квантовой нейронной сети между двумя классическими слоями дает нам большую гибкость в отношении входных и выходных данных совокупной сети. Поскольку размер входного слоя сильно зависит от размера скрытого измерения, мы могли бы легко представить сценарий, в котором количество кубитов превышает наши возможности удобного моделирования (~ 20+), если бы мы использовали только квантовую нейронную сеть.

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

Сеть узлов

Поскольку граничная сеть является подкомпонентом QGNN, отвечающим за прогнозирование сегментов пути, легко предположить, что сеть узлов не имеет большого значения. Это не может быть дальше от истины. Сеть узлов играет жизненно важную роль в итеративном обновлении вложений узлов, которые уплотняют скрытые атрибуты графа. Это позволяет пограничной сети работать с более богатыми подсказками.

Подключение сверток графа к сети узлов

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

Сеть узлов QGNN достигает тех же целей, но немного другим способом. Вместо подачи 1 агрегированного вектора узлов в функцию обновления (обучаемая нейронная сеть), как в GCN, наша сеть узлов принимает 3 вектора узлов. 2 агрегируются в зависимости от того, находится ли сосед на предыдущем или последующем уровне, а третий является самим вектором целевого узла.

Индуктивное смещение на входе/выходе

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

Сеть узлов принимает в качестве входных данных сцепленную тройку векторов признаков трех узлов (достигая фиксированного значения по мере необходимости). Первый — h’_{j,input} — представляет собой взвешенную сумму всех признаков соседних узлов, находящихся в слое детектора перед слоем h_j. Второй — h’_{j,output} — представляет собой взвешенную сумму по всем признакам соседних узлов, которые лежат в слое детектора непосредственно перед слоем h_j, а последним является сам вектор признаков целевого узла — h_j.

Чтобы сделать это конкретным, давайте рассмотрим математическое определение:

Где N_{input}(h_j) — это набор индексов всех векторов признаков соседних узлов, расположенных в 1 слое детекторов до h_j, и аналогично N_{output}(h_j) — это набор индексов всех соседних узлов, расположенных на 1 детектор впереди h_j. e_{ij} — это вес ребра, назначенный предшествующим выполнением сети ребра на ребре, соединяющем h_i и h_j.

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

Внимание проходит

Вопрос Почему сумма взвешена? И почему веса являются краевыми вероятностями?

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

В частности, мы замечаем, что веса представляют собой вероятности ребер, соответствующие ребрам между h_i и h_j. Это более глубоко, чем кажется на первый взгляд. Мы эффективно используем прогнозы пограничной сети в самой QGNN, чтобы подсказать сети узлов, на какие соседние узлы следует обращать больше или меньше внимания.

Чем больше вероятность того, что соседний узел сформирует сегмент дорожки с h_j, тем сильнее влияние соседнего узла на окончательное вложение h_j.

Таким образом, пограничная сеть служит моделью внимания, которая передает информацию в сеть узлов, на которые важно обратить внимание окружающим узлам (отсюда и название модели внимания)! Это, в свою очередь, помогает граничной сети определить наличие сегмента пути, поскольку существует более высокая корреляция между двумя узлами, которые с большей вероятностью образуют ребро.

Архитектура

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

Как видно, архитектура гибридной квантово-классической нейронной сети почти такая же, как у граничной сети, за исключением входного и выходного классических слоев. Входное измерение — 3 × (3+N_D), а выход — вложение узла измерения N_D.

Кроме того, схема кодирования (IEC) остается встраиванием угла RY, а параметризованная квантовая схема обучаема с весами θ, назначенными для сети узлов.

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

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

Выбор анзаца

До сих пор мы кратко рассматривали PQC, но никогда не видели, как на самом деле выглядит схема. Отчасти потому, что она может сильно различаться!

Наиболее очевидно, что ширина схемы зависит от гиперпараметра N_Q. Но менее тривиальным является то, что по-прежнему проводится много активных исследований, чтобы понять, какие анзацы (параметризованные структуры квантовых цепей) лучше всего работают в квантовых нейронных сетях.

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

Первый ниже взят из Sim2019, а другой был сделан одним из членов моей команды в QHack! Интересно, что мы обнаружили, что последний был более устойчивым к Бесплодным плато при обучении QGNN (измерено используя дисперсию градиента по каждому слою)!

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

Функция обучения и потерь

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

Чтобы обучить QGNN:

  1. Подайте пакет событий (отдельные графики попаданий) и выполните прямой проход, чтобы получить прогнозируемую структуру границ для каждого события.
  2. Вычислите бинарную кросс-энтропийную потерю между предсказанными значениями края и метками. См. ниже математическую формулировку.
  3. Обратно распространите потерю, чтобы найти градиенты каждого классического и квантового веса. Квантовые градиенты находятся аналитически с использованием правила сдвига параметра. Классические градиенты вычисляются, как обычно, с использованием автодифференциации.
  4. Обновите каждый вес, используя рассчитанные градиенты с оптимизатором по вашему выбору. [4] использует оптимизатор ADAM со скоростью обучения 0,01.
  5. Повторите вышеописанное для всех партий в эпоху, более 10–100 эпох.

(2 расширенный) Как и некоторые другие модели бинарной классификации, мы обучаем QGNN, используя бинарную функцию кросс-энтропийных потерь, где y_i — метка истинности, а hat{y_i} — прогноз модели для ребра i.

Повторение QGNN

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

Вот высокоуровневая дистилляция того, как QGNN выполняет один прямой проход и его значение.

После ввода пространственных координат каждого попадания InputNetwork преобразует их в пространство встраивания N_D размерности. Затем вложения узлов, связанные с их соответствующими пространственными координатами, периодически передаются через граничную сеть, а затем через сеть узлов, повторно для N_I итераций. Скрытые переменные узла (вложения в N_D) и веса ребер поочередно обновляются при каждом прохождении составляющих сетей.

Необходимость итераций

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

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

Необходимость повторения

Кто-то может спросить, почему мы решили использовать единую граничную сеть и сеть узлов во всей QGNN вместо использования нескольких. Взгляните на то, что сказал Дженк (ведущий автор) из [4], когда я упомянул об этом:

Использование разных слоев было бы очень дорого. Для обучения потребуется больше ресурсов и, возможно, больше эпох из-за увеличения количества параметров в N_I раз.
— Дженк Тюйсюз (ведущий автор [4])

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

Взаимодействие пограничной и узловой сети

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

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

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

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

Чтобы кристаллизовать процесс, давайте сравним 3 основных аспекта между QGNN и GCNN, которые мы рассмотрели ранее:

Раздел 4: Усовершенствования архитектуры, сделанные в QHack

До сих пор я подробно описал, как работает исходный QGNN, представленный в [4].

В этом необязательном разделе я подробно расскажу, как моя команда и я расширили работу, чтобы расширить возможности этого конкретного QGNN.

Проблема исчезающего/взрывающегося градиента

Известная проблема рекуррентных нейронных сетей — проблема исчезающего градиента, и используемая здесь QGNN не является исключением. Обучение RNN требует использования обратного распространения во времени (BPTT), что означает, что вы выбираете количество временных шагов N и развертываете свою сеть таким образом, чтобы она стала нейронной сетью с прямой связью (FFNN) с N дубликатами исходной. сеть.

Изменение функции активации решило проблему исчезающего градиента

Анализируя существующую архитектуру QGNN, наша команда заметила преобладание сигмовидных функций активации на всех уровнях сети.

Естественно, мы задались вопросом, почему. После разговора с ведущим автором оригинальной статьи мы поняли, что она просто использовалась для соблюдения ограничений параметров квантовых вентилей, [-π, π].

Кроме того, из-за периодичности этих квантовых вентилей квантовые параметры должны быть ограничены в пределах [0, π]. Такое ограничение эффективно достигается путем применения коэффициента π к выходным данным каждой сигмоиды. Итак, мы поняли, что мотивация использования сигмовидных функций активации во всей сети заключалась в том, чтобы придерживаться границ [0,1].

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

Как видите, градиент для сигмовидной функции будет насыщаться, а при использовании цепного правила он будет уменьшаться. Напротив, производная для выпрямленной линейной единицы (ReLU) всегда равна 1 или 0. Аргумент в пользу использования функций активации ReLU в скрытых слоях становится еще сильнее, если учесть, что ReLU остается наиболее широко используемой функцией активации в классических графовых нейронных сетях.

Итак, вдохновленная привлекательностью ReLU, наша группа исследовала вопрос о том, можно ли адаптировать функцию ReLU к QGNN таким образом, чтобы оба могли извлечь выгоду из богатых градиентов, которые предоставляет ReLU, при соблюдении [0,1] выходных границ, которые требуются для всех классических слоев, поступающих в параметризованную квантовую схему.

В этом проекте мы доказали утвердительный ответ. Мы заменили все сигмовидные функции активации, за исключением выходных данных граничной сети, активациями ReLU, которые соединены со слоем масштабирования, который используется для масштабирования всех значений тензора. быть в [0,1].

Применив этот метод, QGNN был невосприимчив к исчезающим градиентам еще на 50 слоев по сравнению с исходной архитектурой, основанной на сигмовидной активации.

Я также рад сообщить, что эти изменения теперь объединены в основной репозиторий проекта!



Предположения, пробелы и будущая работа

  • Предположения. Ограничение по времени в 5 дней означало, что мы никогда не сможем обучить полную QGNN на полном наборе всех событий (на обучение уходит целая неделя). Это означает, что есть шанс, что наши результаты с проблемой исчезающего градиента не обязательно сработают где-то на пути при полной тренировке.
  • Будущая работа. Остается еще много работы, которую можно сделать с архитектурой этого примитивного QGNN, чтобы увидеть, как можно улучшить производительность. В частности, мне было бы интересно увидеть производительность GNN с более традиционным методом передачи и агрегирования сообщений.

Если вам понравилась статья или вы многому научились, свяжитесь со мной по адресу pavanjay.com или @pavanjayasinha.

Ресурсы

[1] https://distill.pub/2021/gnn-intro/

[2] https://distill.pub/2021/understanding-gnns/

[3] https://arxiv.org/pdf/1909.12264

[4] Основная статья — https://link.springer.com/article/10.1007/s42484-021-00055-9

[5] https://backup-openlab.web.cern.ch/sites/default/files/2021-06/QTrkX_0.pdf

[6] https://towardsdatascience.com/understanding-graph-convolutional-networks-for-node-classification-a2bfdb7aba7b

[7] https://cms.cern/index.php/news/what-cms