Графические сети внимания

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

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

Набор данных

Набор данных Cora состоит из 2708 научных публикаций, отнесенных к одному из нескольких классов. Сеть цитирования состоит из 5429 ссылок. Каждая публикация в наборе данных описывается вектором слов со значениями 0/1, указывающим на отсутствие/наличие соответствующей работы в словаре. Словарь состоит из 1433 уникальных слов.

Загрузите набор данных CORA

Разделить набор данных

Всего в наборе данных 2708 статей, из которых мы будем использовать 50% для обучения, а остальные для тестирования.

Каждый узел имеет 1433 бинарных вектора слов, указывающих на отсутствие/наличие соответствующего слова в словаре.

Edges shape:         (5429, 2)
Node features shape: (2708, 1433)

График сети внимания

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

Слой внимания с несколькими головками

Модель GAT реализует уровни внимания графа с несколькими заголовками. Слой MultiHeadGraphAttention представляет собой конкатенацию (или усреднение) нескольких слоев графа внимания (GraphAttention), каждый из которых имеет разные обучаемые веса w.

Учебный процесс

Модель GAT работает со всем графом, то есть с состояниями узлов и ребрами, на всех этапах обучения, проверки и тестирования. Следовательно, node_states и ребра передаются конструктору модели и используются как атрибуты.

Обучение

Я могу достичь 79,7% точности на тестовом наборе после 17 эпох на моем ноутбуке Mac.

Epoch 1/100
5/5 - 14s - loss: 1.8933 - acc: 0.2775 - val_loss: 1.5971 - val_acc: 0.3897 - 14s/epoch - 3s/step
Epoch 2/100
5/5 - 2s - loss: 1.2691 - acc: 0.5895 - val_loss: 1.0336 - val_acc: 0.6912 - 2s/epoch - 392ms/step
Epoch 3/100
5/5 - 2s - loss: 0.7311 - acc: 0.8013 - val_loss: 0.8310 - val_acc: 0.7721 - 2s/epoch - 380ms/step
Epoch 4/100
5/5 - 2s - loss: 0.4290 - acc: 0.8744 - val_loss: 0.7199 - val_acc: 0.8235 - 2s/epoch - 412ms/step
Epoch 5/100
5/5 - 2s - loss: 0.2929 - acc: 0.9204 - val_loss: 0.7799 - val_acc: 0.8162 - 2s/epoch - 447ms/step
Epoch 6/100
5/5 - 2s - loss: 0.1735 - acc: 0.9581 - val_loss: 0.7133 - val_acc: 0.8235 - 2s/epoch - 426ms/step
Epoch 7/100
5/5 - 2s - loss: 0.0950 - acc: 0.9844 - val_loss: 0.7527 - val_acc: 0.8309 - 2s/epoch - 428ms/step
Epoch 8/100
5/5 - 2s - loss: 0.0801 - acc: 0.9860 - val_loss: 0.7423 - val_acc: 0.8162 - 2s/epoch - 413ms/step
Epoch 9/100
5/5 - 2s - loss: 0.0527 - acc: 0.9951 - val_loss: 0.8043 - val_acc: 0.8162 - 2s/epoch - 427ms/step
Epoch 10/100
5/5 - 2s - loss: 0.0342 - acc: 0.9984 - val_loss: 0.7442 - val_acc: 0.8162 - 2s/epoch - 413ms/step
Epoch 11/100
5/5 - 2s - loss: 0.0258 - acc: 0.9975 - val_loss: 0.7425 - val_acc: 0.8309 - 2s/epoch - 426ms/step
Epoch 12/100
5/5 - 2s - loss: 0.0209 - acc: 0.9984 - val_loss: 0.7711 - val_acc: 0.8382 - 2s/epoch - 456ms/step
Epoch 13/100
5/5 - 2s - loss: 0.0146 - acc: 0.9992 - val_loss: 0.8193 - val_acc: 0.8088 - 2s/epoch - 439ms/step
Epoch 14/100
5/5 - 2s - loss: 0.0126 - acc: 0.9992 - val_loss: 0.8514 - val_acc: 0.8088 - 2s/epoch - 442ms/step
Epoch 15/100
5/5 - 2s - loss: 0.0106 - acc: 0.9992 - val_loss: 0.8677 - val_acc: 0.8088 - 2s/epoch - 430ms/step
Epoch 16/100
5/5 - 2s - loss: 0.0092 - acc: 0.9992 - val_loss: 0.8739 - val_acc: 0.8162 - 2s/epoch - 424ms/step
Epoch 17/100
5/5 - 2s - loss: 0.0081 - acc: 1.0000 - val_loss: 0.8784 - val_acc: 0.8309 - 2s/epoch - 430ms/step
----------------------------------------------------------------------------
Test Accuracy 79.7%

Предсказания

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

Example 1: Probabilistic_Methods
	Probability of Case_Based               =   2.075%
	Probability of Genetic_Algorithms       =   0.044%
	Probability of Neural_Networks          =  10.001%
	Probability of Probabilistic_Methods    =  86.855%
	Probability of Reinforcement_Learning   =   0.102%
	Probability of Rule_Learning            =   0.005%
	Probability of Theory                   =   0.918%
------------------------------------------------------------
Example 2: Genetic_Algorithms
	Probability of Case_Based               =   0.004%
	Probability of Genetic_Algorithms       =  99.995%
	Probability of Neural_Networks          =   0.000%
	Probability of Probabilistic_Methods    =   0.000%
	Probability of Reinforcement_Learning   =   0.000%
	Probability of Rule_Learning            =   0.000%
	Probability of Theory                   =   0.000%
------------------------------------------------------------
Example 3: Theory
	Probability of Case_Based               =   4.122%
	Probability of Genetic_Algorithms       =   0.337%
	Probability of Neural_Networks          =   0.037%
	Probability of Probabilistic_Methods    =   7.374%
	Probability of Reinforcement_Learning   =   0.456%
	Probability of Rule_Learning            =   5.195%
	Probability of Theory                   =  82.479%
------------------------------------------------------------
Example 4: Neural_Networks
	Probability of Case_Based               =   0.001%
	Probability of Genetic_Algorithms       =   0.000%
	Probability of Neural_Networks          =  99.911%
	Probability of Probabilistic_Methods    =   0.082%
	Probability of Reinforcement_Learning   =   0.000%
	Probability of Rule_Learning            =   0.000%
	Probability of Theory                   =   0.005%
------------------------------------------------------------
Example 5: Theory
	Probability of Case_Based               =  11.869%
	Probability of Genetic_Algorithms       =   7.918%
	Probability of Neural_Networks          =   5.025%
	Probability of Probabilistic_Methods    =   9.565%
	Probability of Reinforcement_Learning   =   0.815%
	Probability of Rule_Learning            =  39.300%
	Probability of Theory                   =  25.506%
------------------------------------------------------------
Example 6: Genetic_Algorithms
	Probability of Case_Based               =   0.000%
	Probability of Genetic_Algorithms       = 100.000%
	Probability of Neural_Networks          =   0.000%
	Probability of Probabilistic_Methods    =   0.000%
	Probability of Reinforcement_Learning   =   0.000%
	Probability of Rule_Learning            =   0.000%
	Probability of Theory                   =   0.000%
------------------------------------------------------------
Example 7: Neural_Networks
	Probability of Case_Based               =   0.020%
	Probability of Genetic_Algorithms       =   0.014%
	Probability of Neural_Networks          =  98.755%
	Probability of Probabilistic_Methods    =   1.164%
	Probability of Reinforcement_Learning   =   0.000%
	Probability of Rule_Learning            =   0.002%
	Probability of Theory                   =   0.045%
------------------------------------------------------------
Example 8: Genetic_Algorithms
	Probability of Case_Based               =   0.000%
	Probability of Genetic_Algorithms       = 100.000%
	Probability of Neural_Networks          =   0.000%
	Probability of Probabilistic_Methods    =   0.000%
	Probability of Reinforcement_Learning   =   0.000%
	Probability of Rule_Learning            =   0.000%
	Probability of Theory                   =   0.000%
------------------------------------------------------------
Example 9: Theory
	Probability of Case_Based               =   1.923%
	Probability of Genetic_Algorithms       =   1.753%
	Probability of Neural_Networks          =  56.142%
	Probability of Probabilistic_Methods    =  33.182%
	Probability of Reinforcement_Learning   =   1.071%
	Probability of Rule_Learning            =   0.484%
	Probability of Theory                   =   5.444%
------------------------------------------------------------
Example 10: Case_Based
	Probability of Case_Based               =  99.963%
	Probability of Genetic_Algorithms       =   0.000%
	Probability of Neural_Networks          =   0.001%
	Probability of Probabilistic_Methods    =   0.021%
	Probability of Reinforcement_Learning   =   0.000%
	Probability of Rule_Learning            =   0.010%
	Probability of Theory                   =   0.005%
------------------------------------------------------------

Визуализация

Если вам понравилось, пожалуйста, поделитесь историей с остальным сообществом…

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

P.S. Вы когда-нибудь пытались нажать кнопку хлопка на Medium более одного раза, чтобы посмотреть, что произойдет? ❤️

Нравится автор? Присоединяйтесь к сообществу Tech Insights

Давай будем друзьями! Вы можете найти меня в Твиттере. Пожалуйста, подпишитесь на меня, если вам нравятся статьи на похожие темы.