Последние достижения в методах объяснения GNN

Содержание

  • Что такое сверточные сети с графами (GNN)
  • Текущие проблемы с объяснимостью для GNN
  • Первая попытка: визуализация активации узлов
  • Повторное использование подходов сверточных нейронных сетей
  • Модельно-независимый подход: GNNExplainer
  • Обо мне
  • использованная литература

Предисловие

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

Что такое графические нейронные сети

В чем основное различие между сверточными нейронными сетями (CNN) и графическими нейронными сетями (GNN)?

Проще говоря, это входные данные.

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

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

Если вы хотите узнать больше, посмотрите сообщение в блоге Томаса Кипфа, которое представляет собой подробное введение в GCN. Еще одна интересная статья для чтения - MoleculeNet: эталон для молекулярного машинного обучения [2], которая дает хорошее введение в GNN и описывает популярные архитектуры GNN.

Текущая проблема с объяснимостью для GNN

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

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

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

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

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

Первая попытка: визуализация активации узлов

Новаторская работа по методам объяснения GNN была опубликована в 2015 году Duvenaud et al. в [3]. Основным вкладом статьи была новая модель отпечатков пальцев нейронного графа, но они также создали метод объяснения этой архитектуры. Основная идея модели заключалась в создании различимых отпечатков пальцев, которые были созданы непосредственно из самих данных графа. Для этого авторам пришлось переопределить операции объединения и сглаживания для графов. Затем эти операции были использованы для создания единого слоя.

Слои складываются n раз для создания векторного вывода, как показано на рисунке 4 (левое изображение). Глубина слоя также соответствует радиусу соседних узлов, из которых элементы узлов были собраны и объединены (в данном случае функция суммы). Это связано с тем, что для каждого уровня операция объединения собирает информацию от соседних узлов, как показано на рисунке 1. Для более глубоких уровней распространение операций объединения распространяется на узлы из более удаленных окрестностей. В отличие от обычных отпечатков пальцев, этот подход является дифференцируемым, что позволяет при обратном распространении ошибок обновлять свои веса аналогично CNN.

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

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

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

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

Повторное использование подходов сверточных нейронных сетей

Чувствительный анализ, Отображение активации классов или Обратное распространение возбуждения - это примеры техник объяснения, которые уже были успешно применены к CNN. Текущая работа над объяснимыми GNN пытается преобразовать эти подходы в область графов. Большая часть работы в этой области была проведена в [4] и [5].

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

Обобщение методов объяснения CNN

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

Если мы будем иметь в виду графическое обобщение изображения, мы можем сказать, что методы объяснения CNN не уделяют много внимания краям (соединениям между пикселями) и, скорее, сосредотачиваются на узлах (значениях пикселей). Проблема здесь в том, что данные графа содержат много полезной информации в виде ребер [4]. На самом деле мы ищем способ обобщения методов объяснения CNN, чтобы разрешить произвольные соединения между узлами [5], а не в порядке, подобном решетке.

Какие методы были преобразованы в графовую область?

До сих пор в литературе рассматривались следующие методы объяснения:

  • Анализ чувствительности [4]
  • Управляемое обратное распространение [4]
  • Послойное распространение релевантности [4]
  • Тепловые карты на основе градиента [5]
  • Карты активации классов (CAM) [5]
  • Градиентно-взвешенное отображение активации классов (Grad-CAM) [5]
  • Возбуждение, обратное распространение [5]

Обратите внимание, что авторы [4] и [5] не предоставили реализацию этих методов с открытым исходным кодом, поэтому их пока невозможно использовать.

Модельно-независимый подход: GNNExplainer

Хранилище кода статьи можно найти здесь.

Не волнуйтесь, на самом деле есть инструмент объяснения GNN, который вы можете использовать!

GNNExplainer - это метод объяснения GNNs с открытым исходным кодом, не зависящий от модели! Он также довольно универсален, так как может применяться для классификации узлов, классификации графов и для прогнозирования ребер. Это самая первая попытка создать метод объяснения, специфичный для графов, и он был опубликован исследователями из Стэнфорда [6].

Как это работает?

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

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

Одно очень важное предположение, которое делают авторы, - это формулировка модели GNN. Архитектура модели может быть более или менее произвольной, но она должна выполнять 3 ключевых вычисления:

  • Вычисление нейронного сообщения между двумя соседними узлами
  • Агрегация сообщений из окрестностей узла
  • Нелинейное преобразование агрегированного сообщения и представления узла

Эти требуемые вычисления несколько ограничивают, но большинство современных архитектур GNN в любом случае основаны на архитектурах передачи сообщений [6].

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

GNNExplainer на практике

Для сравнения результатов они использовали 3 различных метода объяснения: GNNExplainer, метод на основе градиента (GRAD) и модель внимания на графике (GAT). GRAD упоминался в предыдущем разделе, но модель GAT требует небольшого пояснения. Это еще одна архитектура GNN, которая изучает веса внимания для ребер, которые помогут нам определить, какие ребра в сети графа действительно важны для классификации узлов [6]. Это можно использовать как еще один метод объяснения, но он работает только для этой конкретной модели и не объясняет функции узла, в отличие от GNNExplainer.

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

Набор данных BA-Shapes основан на графике Барабаши-Альберта (BA), который представляет собой тип сети графов, размер которой мы можем свободно изменять, изменяя некоторые из ее параметров. К этому базовому графу мы будем прикреплять небольшие графы (мотивы) со структурой домов, которые проиллюстрированы как Базовая Истина на Рисунке 8. Эта структура дома имеет 3 разных метки для узлов: верхний, средний и нижний. Эти метки узлов просто указывают положение узла в доме. Итак, для одного узла, похожего на дом, у нас есть 1 верхний, 2 средних и 2 нижних узла. Также есть одна дополнительная метка, которая указывает, что узел не принадлежит структуре графа, подобного дому. В целом, у нас есть 4 метки и граф BA, состоящий из 300 узлов и 80 домообразных структур, которые добавляются к случайным узлам в графе BA. Мы также добавляем немного случайности, добавляя 0,1N случайных ребер.

BA-Community представляет собой объединение двух наборов данных BA-Shapes, поэтому в общей сложности у нас есть 8 разных меток (по 4 метки на каждый набор данных BA-Shapes) и вдвое больше узлов.

Посмотрим на результаты.

Результаты кажутся многообещающими. GNNExplainer, кажется, объясняет результаты наиболее точно, потому что выбранный подграф совпадает с основной истиной. Методы Grad и Att не дают подобных объяснений.

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

Мутаг - это набор данных, состоящий из молекул, классифицируемых на основе мутагенного воздействия на определенный тип бактерий. В наборе данных много разных меток. Он содержит 4337 молекулярных графов.

Reddit-Binary - это набор данных, который представляет потоки онлайн-обсуждений в Reddit. В этой сети графов пользователи представлены в виде узлов, а ребра обозначают ответ на комментарий другого пользователя. Есть 2 возможных метки, которые зависят от типа взаимодействия с пользователем. Это может быть взаимодействие «вопрос-ответ» или интерактивное обсуждение. Всего он содержит 2000 графиков.

Для набора данных Mutag GNNExplainer правильно определяет химические группы (например, NO2, NH2), которые известны как мутагенные. GNNExplainer также объясняет графики скважин, классифицируемые как онлайн-обсуждение для набора данных Reddit-Binary. Этот тип взаимодействий обычно можно представить в виде древовидной структуры (посмотрите на основную истину).

Обо мне

Я будущий выпускник Саутгемптонского университета по специальности «Электронная инженерия» и научный сотрудник в Центре инноваций в области информационных технологий. В свободное время вы можете обнаружить, что я возился с данными или отлаживаю свою модель глубокого обучения (клянусь, это сработало!). Еще люблю походы :)

Вот мои профили в социальных сетях, если вы хотите оставаться на связи с моими последними статьями:

использованная литература

[1] Еще раз о молекулярных хэшированных отпечатках пальцев https://chembioinfo.wordpress.com/2011/10/30/revisiting-molecular-hashed-fingerprints/

[2] MoleculeNet: тест для молекулярного машинного обучения https://arxiv.org/abs/1703.00564

[3] Сверточные сети на графах для изучения молекулярных отпечатков пальцев https://arxiv.org/abs/1509.09292

Репозиторий кода: https://github.com/HIPS/neural-fingerprint/blob/master/examples/visualization.py

[4] Методы объяснения сверточных сетей с графами https://arxiv.org/pdf/1905.13686.pdf

[5] Методы объяснения для сверточных нейронных сетей с графами http://openaccess.thecvf.com/content_CVPR_2019/papers/Pope_Explainability_Methods_for_Graph_Convolutional_Neural_Networks_CVPR_2019_paper.pdf

[6] GNNExplainer: Генерация объяснений для графических нейронных сетей https://cs.stanford.edu/people/jure/pubs/gnnexplainer-neurips19.pdf

Репозиторий кода: https://github.com/RexYing/gnn-model-explainer