Перейти к основному содержимому

Обучение графовых нейросетей

Генерация минибатчей

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

Классификация/регрессия графа целиком

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

Классификация/регрессия отдельных узлов

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

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

  1. Вырезать минимальное число вершин, чтобы разбить исходный граф на нужное число несвязанных подграфов (graph partitioning). Для этого есть стандартные алгоритмы из теории графов. После такой минимально инвазивной процедуры вершины минибатчей уже не будут разрастаться до всего графа целиком, поскольку он будет состоять из набора несвязанных друг с другом компонент, как показано ниже [1]:

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

Регуляризация

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

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

  • делать параметры каждого слоя (каждой итерации алгоритма передачи сообщений) одинаковыми (weight sharing);

  • при обучении использовать DropOut, при котором отбрасывать случайное подмножество рёбер графа.

Литература

  1. Prince S. J. D. Understanding deep learning. – MIT press, 2023.