Introducción detallada a la red convolucional de gráficos GCN

Este artículo es una reimpresión de "Introducción detallada a la red de convolución de gráficos GCN"

Enlace de reimpresión: Introducción detallada a la red convolucional de gráficos GCN | Leifeng.com

En este artículo, analizaremos más de cerca una conocida red neuronal gráfica llamada GCN. Primero, comprendamos intuitivamente cómo funciona y luego profundicemos en las matemáticas detrás de esto.

¿Por qué utilizar Graph?

Muchos problemas son esencialmente gráficos. En nuestro mundo, vemos muchos datos en forma de gráficos, como moléculas, redes sociales y redes de citas en papel.

Introducción detallada a la red convolucional de gráficos GCN

 Ejemplo de figura. (Imagen de [1])

Tareas en el gráfico

  • Clasificación de nodos: prediga el tipo de un nodo específico.

  • Predicción de enlace: predice si dos nodos están conectados

  • Detección de comunidades: identificación de comunidades de nodos densamente conectados.

  • Similitud de red: ¿Qué tan similares son dos (sub)redes? 

Ciclo de vida del aprendizaje automático

En un gráfico, tenemos las características de los nodos (datos que representan los nodos) y la estructura del gráfico (representa cómo están conectados los nodos).

Para los nodos, podemos obtener fácilmente los datos de cada nodo. Pero cuando se trata de la estructura de un gráfico, extraer información útil de él no es una tarea fácil. Por ejemplo, si dos nodos están muy cerca uno del otro, ¿deberíamos tratarlos de manera diferente a otros pares de nodos? ¿Cómo lidiar con nodos de alto y bajo grado? De hecho, para cada trabajo específico, solo la ingeniería de características, es decir, convertir la estructura del gráfico en nuestras características, consumirá mucho tiempo y energía.

Introducción detallada a la red convolucional de gráficos GCN

Ingeniería de características en gráficos. (Imagen de [1])

Sería mejor si de alguna manera pudiéramos obtener tanto las características de los nodos como la información estructural del gráfico como entrada y dejar que la máquina juzgue qué información es útil.

Es por eso que necesitamos el aprendizaje de representación gráfica.

Introducción detallada a la red convolucional de gráficos GCN

Queremos que el gráfico aprenda "ingeniería de características" por sí solo. (Imagen de [1]) 

Graficar redes neuronales convolucionales (GCN)

Artículo : Clasificación semisupervisada basada en una red neuronal gráfica (2017)[3]

GCN es una red neuronal convolucional que trabaja directamente en gráficos y explota la información estructural del gráfico.

Resuelve el problema de clasificar nodos (como documentos) en un gráfico (como una red de citas) donde solo una pequeña fracción de los nodos tienen etiquetas (aprendizaje semisupervisado).

Introducción detallada a la red convolucional de gráficos GCN

Ejemplo de aprendizaje semi-supervisado sobre Graphs. Algunos nodos no tienen etiquetas (nodos desconocidos).  

La idea principal

Como indica el nombre "convolución", la idea surgió de imágenes y luego se introdujo en gráficos. Sin embargo, los gráficos son mucho más complejos cuando las imágenes tienen una estructura fija.

Introducción detallada a la red convolucional de gráficos GCN

Ideas de convolución de imágenes a gráficos. (Imagen de [1])

La idea básica de GCN: para cada nodo, obtenemos su información característica de todos sus nodos vecinos, incluidas sus propias características. Supongamos que usamos la función promedio (). Haremos lo mismo para todos los nodos. Finalmente, introducimos estos promedios calculados en la red neuronal.

En la imagen a continuación tenemos un ejemplo simple de una red de citas. Cada nodo representa un trabajo de investigación y los bordes representan citas. Tenemos un paso de preprocesamiento aquí. Aquí no utilizamos los artículos originales como características, sino que los convertimos en vectores (mediante el uso de incrustaciones de PNL, como tf-idf). Incorporación de PNL, como TF-IDF).

Consideremos el nodo verde. Primero, obtenemos los valores propios de todos sus vecinos, incluido su propio nodo, y luego tomamos el promedio. Finalmente, se devuelve un vector de resultados a través de la red neuronal y se utiliza como resultado final.

Introducción detallada a la red convolucional de gráficos GCN

La idea principal de GCN. Tomemos como ejemplo el nodo verde. Primero, tomamos el promedio de todos sus nodos vecinos, incluido su propio nodo. Luego, el promedio pasa a través de la red neuronal. Tenga en cuenta que en GCN solo utilizamos una capa completamente conectada. En este ejemplo, obtenemos un vector bidimensional como salida (2 nodos de la capa completamente conectada).

En la práctica, podemos utilizar funciones agregadas más complejas que la función promedio. También podemos apilar más capas para obtener GCN más profundos. La salida de cada capa se considera la entrada de la siguiente capa.

Introducción detallada a la red convolucional de gráficos GCN

Ejemplo de GCN de 2 capas: la salida de la primera capa es la entrada de la segunda capa. Además, tenga en cuenta que la red neuronal en GCN es solo una capa completamente conectada (imagen de [2]).

Echemos un vistazo a las matemáticas para ver cómo funciona.

Sentimientos intuitivos y principios matemáticos detrás.

Primero, necesitamos algunas anotaciones.

Consideramos el gráfico G, como se muestra a continuación.

Introducción detallada a la red convolucional de gráficos GCN

 Del gráfico G, tenemos una matriz de adyacencia A y una matriz de grados D. Al mismo tiempo también tenemos la matriz de características X.

Introducción detallada a la red convolucional de gráficos GCN

Entonces, ¿cómo podemos obtener los valores propios de cada nodo de sus nodos vecinos? La solución está en multiplicar A y X.

Al observar la primera fila de la matriz de adyacencia, vemos que existe una conexión entre el nodo A y el nodo E. La primera fila de la matriz obtenida es el vector propio del nodo E conectado a A (como se muestra a continuación). De la misma forma, la segunda fila de la matriz obtenida es la suma de los vectores propios de D y E. Mediante este método, podemos obtener la suma de los vectores de todos los nodos vecinos.

Introducción detallada a la red convolucional de gráficos GCN

Calcule la primera fila de la "matriz vectorial de suma" AX.

  • Todavía hay margen de mejora en este aspecto.

  1. Ignoramos las características de los propios nodos. Por ejemplo, la primera fila de la matriz calculada también debe contener las características del nodo A.

  2. En lugar de utilizar la función sum(), necesitamos tomar un promedio, o mejor aún, un promedio ponderado de los vectores de características del nodo vecino. Entonces, ¿por qué no utilizamos la función suma()? La razón es que cuando se usa la función suma (), es probable que los nodos con grados grandes generen vectores v grandes, mientras que los nodos con grados bajos tienden a obtener vectores agregados pequeños, lo que puede causar una explosión o desaparición del gradiente en el futuro (por ejemplo , , cuando se utiliza sigmoide). Además, las redes neuronales parecen ser sensibles al tamaño de los datos de entrada. Por lo tanto, necesitamos normalizar estos vectores para eliminar posibles problemas.

En el problema (1), podemos resolverlo sumando una matriz identidad I a A para obtener una nueva matriz de adyacencia Ã.

Introducción detallada a la red convolucional de gráficos GCN

Tomando lambda = 1 (haciendo que las características del nodo en sí sean tan importantes como las de sus vecinos), tenemos à = A + I. Tenga en cuenta que podemos tratar a lambda como un parámetro entrenable, pero ahora solo necesitamos asignar lambda a 1. Incluso en el artículo, a la lambda simplemente se le asigna un valor de 1.

Introducción detallada a la red convolucional de gráficos GCN

Al agregar un bucle automático a cada nodo, obtenemos una nueva matriz de adyacencia

Para la pregunta (2): Para el escalado matricial, normalmente multiplicamos la matriz por la matriz diagonal. En el caso actual, queremos tomar el promedio de las características agregadas, o matemáticamente hablando, escalar la matriz vectorial agregada ÃX según el grado del nodo. La intuición nos dice que la matriz diagonal utilizada para escalar aquí es algo relacionado con la matriz de grados D (¿por qué Dmber, no D? Porque estamos considerando la matriz de grados Dmber de la nueva matriz de adyacencia Ã, ya no A).

La pregunta ahora es ¿cómo escalamos/normalizamos el vector de suma? en otras palabras:

¿Cómo pasamos información de vecinos a un nodo específico? Empezamos con nuestro viejo amigo promedio. En este caso, entra en juego la matriz inversa de Dmber (es decir, Dmber^{-1}). Básicamente, cada elemento de la matriz inversa de D̃ es el recíproco de la entrada correspondiente en la matriz diagonal D.

Introducción detallada a la red convolucional de gráficos GCN

Por ejemplo, el grado del nodo A es 2, entonces multiplicamos el vector agregado del nodo A por 1/2, y el grado del nodo E es 5, debemos multiplicar el vector agregado de E por 1/5, y así sucesivamente. .

Por lo tanto, al invertir D̃ y multiplicar X, podemos tomar el promedio de los vectores propios de todos los nodos vecinos (incluido su propio nodo).

Introducción detallada a la red convolucional de gráficos GCN

Hasta ahora, todo bien. Pero, ¿qué pasa con el promedio ponderado()? Intuitivamente, sería mejor si tratáramos los nodos con grados altos y bajos de manera diferente.

Introducción detallada a la red convolucional de gráficos GCN

Introducción detallada a la red convolucional de gráficos GCN

 Pero solo escalamos por fila pero ignoramos la columna correspondiente (cuadro discontinuo). 

Introducción detallada a la red convolucional de gráficos GCN

Introducción detallada a la red convolucional de gráficos GCN

Agrega un nuevo escalador a la columna.

El nuevo método de escala nos da un promedio "ponderado". Lo que hacemos aquí es agregar más peso a los nodos de bajo grado para reducir la influencia de los nodos de alto grado. La idea detrás de este promedio ponderado es que suponemos que los nodos de bajo grado tendrán un mayor impacto en los nodos vecinos, mientras que los nodos de alto grado tendrán un impacto menor porque su influencia se distribuye entre demasiados nodos vecinos.

Introducción detallada a la red convolucional de gráficos GCN

Al agregar características de nodos adyacentes en el nodo B, asignamos el peso más grande (grado 3) al propio nodo B y el peso más pequeño (grado 5) al nodo E.

Introducción detallada a la red convolucional de gráficos GCN

Introducción detallada a la red convolucional de gráficos GCN

Debido a que normalizamos dos veces, cambie "-1" a "-1/2"

Introducción detallada a la red convolucional de gráficos GCN

Introducción detallada a la red convolucional de gráficos GCN

Por ejemplo, tenemos un problema de clasificación múltiple con 10 clases y F se establece en 10. Después de tener vectores de 10 dimensiones en la capa 2, predecimos estos vectores mediante una función softmax.

El método de cálculo de la función de pérdida es muy simple: calcula el error de entropía cruzada de todos los ejemplos etiquetados, donde Y_ {l} es el conjunto de nodos etiquetados.    

Introducción detallada a la red convolucional de gráficos GCN

número de capas

significado de capas

El número de capas se refiere a la distancia más lejana a la que se pueden transmitir las características del nodo. Por ejemplo, en un GCN de capa 1, cada nodo solo puede obtener información de sus vecinos. El proceso de recopilación de información para cada nodo se realiza de forma independiente y al mismo tiempo para todos los nodos.

Al agregar otra capa encima de la primera capa, repetimos el proceso de recopilación de información, pero esta vez, los nodos vecinos ya tienen información sobre sus propios vecinos (del paso anterior). Esto hace que el número de capas sea el salto máximo que puede realizar cada nodo. Entonces, dependiendo de hasta qué punto creemos que un nodo debería obtener información de la red, podemos establecer un número apropiado para #capas. Pero, de nuevo, en un diagrama normalmente no queremos ir demasiado lejos. Al configurarlo en 6-7 saltos, podemos obtener casi el gráfico completo, pero esto hace que la agregación sea menos significativa.

Introducción detallada a la red convolucional de gráficos GCN

Ejemplo: el proceso de recopilación de información de dos capas del nodo objetivo i

¿En cuántas capas se debe apilar GCN?

En el artículo, el autor también realizó algunos experimentos en GCN poco profundo y profundo, respectivamente. En la imagen a continuación, podemos ver que usar un modelo de 2 o 3 capas da los mejores resultados. Además, para GCN profundo (más de 7 capas), a menudo se obtiene un rendimiento deficiente (línea azul discontinua). Una solución es recurrir a conexiones residuales entre capas ocultas (líneas moradas).

Introducción detallada a la red convolucional de gráficos GCN

Rendimiento con diferente número de capas#. Imagen tomada del papel[3]

Toma nota

  • Los GCN se utilizan para el aprendizaje semisupervisado en gráficos.

  • Los GCN se entrenan utilizando tanto las características como la estructura del nodo.

  • La idea principal de GCN es tomar el promedio ponderado de las características de todos los nodos vecinos (incluido su propio nodo). Los nodos con grados más bajos reciben mayor peso. Después de eso, entrenamos los vectores de características obtenidos a través de la red neuronal.

  • Podemos apilar más capas para hacer que GCN sea más profundo. Considere conexiones residuales para GCN profundos. Normalmente, elegiremos GCN de 2 o 3 capas.

  • Notas de matemáticas: cuando vea una matriz diagonal, piense en el escalamiento de la matriz.

  • Aquí hay una demostración de GCN utilizando la biblioteca StellarGraph [5]. El repositorio también proporciona muchos otros algoritmos GNN.

Nota del autor del artículo.

Actualmente, el marco está limitado a gráficos no dirigidos (ponderados o no ponderados). Sin embargo, los bordes dirigidos y las características de los bordes se pueden manejar representando el gráfico dirigido original como un gráfico no dirigido de dos terminales y agregando nodos que representen los bordes en el gráfico original.

¿Que sigue?

Para GCN, parece que podemos explotar tanto las características del nodo como la estructura del gráfico. Sin embargo, ¿qué pasa si las aristas del gráfico son de diferentes tipos? ¿Deberíamos tratar cada relación de manera diferente? ¿Cómo agregar nodos vecinos en este caso? ¿Cuáles son los métodos avanzados recientes?

En el próximo artículo sobre el tema de los gráficos, veremos algunos métodos más sofisticados.

Introducción detallada a la red convolucional de gráficos GCN

  ¿Cómo afrontar las diferentes relaciones entre partes (hermanos, amigos,...)?

referencias

[1] Excelentes diapositivas sobre el aprendizaje de la representación gráfica de Jure Leskovec (Stanford): https://drive.google.com/file/d/1By3udbOt10moIcSEgUQ0TR9twQX9Aq0G/view?usp=sharing

[2] Redes convolucionales (GCN) de gráficos de vídeo simplificadas: https://www.youtube.com/watch?v=2KRAOZIULzw

[3] Clasificación semisupervisada en papel con redes convolucionales gráficas (2017): https://arxiv.org/pdf/1609.02907.pdf

[4] Código fuente de GCN: https://github.com/tkipf/gcn

[5] Demostración con la biblioteca StellarGraph: https://stellargraph.readthedocs.io/en/stable/demos/node-classification/gcn-node-classification.html

Supongo que te gusta

Origin blog.csdn.net/SmartLab307/article/details/125181176
Recomendado
Clasificación