Red de Respuestas Legales - Derecho empresarial - Introducción detallada a la red de convolución de gráficos GCN

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

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 echemos un vistazo más profundo a las matemáticas detrás de esto.

Grupo de subtítulos originales bilingües: Introducción a GCN Graph Convolutional Network (GCN)

Inglés original: Graph Involuntary Network (GCN)

Tingfeng 1996, Da Cousin

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

Ejemplo de gráfico. (Imagen de [1])

En el gráfico, tenemos las características de los nodos (que representan los datos de los nodos) y la estructura del gráfico (que 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, no es fácil extraer información útil de él. Por ejemplo, si dos nodos están muy cerca uno del otro, ¿deberían tratarse de manera diferente a otros pares de nodos? ¿Cómo lidiar con nodos altos y bajos? 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.

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

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

Por eso necesitamos representaciones gráficas del aprendizaje.

Esperamos que Tu pueda aprender "ingeniería de funciones" por sí mismo. (Imagen de [1])

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

GCN es una red neuronal convolucional que puede trabajar directamente en gráficos y explotar su información estructural.

Resuelve el problema de clasificar nodos (como documentos) en gráficos (como redes de citas) etiquetando solo una pequeña cantidad de nodos (aprendizaje semisupervisado).

Un ejemplo de aprendizaje semisupervisado en la figura. Algunos nodos no tienen etiquetas (nodos desconocidos).

Como indica el nombre "convolución", la idea se originó a partir de imágenes y luego se introdujo en los gráficos. Sin embargo, cuando la imagen tiene una estructura fija, el gráfico es mucho más complejo.

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 de características de todos sus vecinos, incluidas sus propias características. Supongamos que usamos la función promedio (). Haremos lo mismo para todos los nodos. Finalmente, introducimos el promedio de estos cálculos en la red neuronal.

En la imagen siguiente, tenemos un ejemplo sencillo de cómo hacer referencia a una red. Cada nodo representa un trabajo de investigación y un borde representa una cita. Tenemos un paso de preprocesamiento aquí. Aquí no utilizamos el documento original como características, sino que lo convertimos en vectores (mediante 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 nuestro propio nodo, y luego tomamos el promedio. Finalmente, se devuelve un vector de resultados a través de la red neuronal como resultado final.

La idea principal de GCN. Tomemos como ejemplo el nodo verde. Primero, tomamos el promedio de todos sus vecinos, incluido nuestro 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 2D como salida (dos 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 un GCN más profundo. La salida de cada capa se considerará como la entrada de la siguiente capa.

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

Echemos un vistazo más de cerca a cómo funciona desde una perspectiva matemática.

Primero, necesitamos algunas notas.

Consideremos la Figura G, como se muestra a continuación.

De la Figura g, tenemos una matriz de adyacencia a y una matriz de grados d. Al mismo tiempo, también tenemos una matriz de características x.

Entonces, ¿cómo podemos obtener el valor característico de cada nodo de los nodos adyacentes? La solución está en la multiplicación de a y x.

Observando la primera fila de la matriz de adyacencia, podemos ver que existe una conexión entre el nodo A y el nodo E. La primera fila de la matriz es el vector propio que conecta el nodo E y A (como se muestra a continuación). De manera similar, la segunda fila de la matriz resultante es la suma de los vectores propios de D y e. De esta manera, podemos obtener la suma de los vectores de todos los nodos vecinos.

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

En la pregunta (1), ¿podemos resolverla sumando una matriz identidad I a A y obtener una nueva matriz de adyacencia? .

Establecemos lambda=1 (haciendo que las características del propio nodo sean tan importantes como las de sus vecinos), ¿qué tenemos? =A+I, tenga en cuenta que podemos pensar en lambda como un parámetro entrenable, pero ahora solo necesitamos asignarle a lambda un valor de 1. Incluso en el documento, a la lambda simplemente se le asigna el valor 1.

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

Para la pregunta (2): Para el escalado matricial, generalmente multiplicamos la matriz por la matriz diagonal. En el presente caso, ¿debería tomarse el promedio de las características agregadas o matemáticamente deberían compararse las matrices vectoriales agregadas en función del grado de los nodos? x zoom. La intuición nos dice que la matriz diagonal utilizada para escalar aquí es la matriz suma d? Cosas relacionadas (¿por qué d?, ¿no d?, ¿porque estamos considerando una nueva matriz de adyacencia?, ¿la matriz de grados d?, y ya no).

Ahora la pregunta es ¿cómo escalamos/normalizamos y vectorizamos? En otras palabras:

¿Cómo pasamos información de vecino a un nodo específico? Hablemos primero de los viejos amigos promedio. En este caso, d? (Es decir, la matriz inversa de d? {-1}) Eso es todo. Básicamente, d? Cada elemento de la matriz inversa de es el recíproco de la entrada correspondiente en la matriz diagonal d.

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

Entonces, ¿por d? Multiplicando el recíproco por x, podemos tomar el promedio de los vectores de características de todos los nodos vecinos (incluido nuestro propio nodo).

Hasta ahora todo bien. Pero, ¿qué pasa con el promedio ponderado()? Intuitivamente, debería ser mejor tratar los ganglios con grados altos y bajos de manera diferente.

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

Agrega un nuevo escalador a la columna.

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

Al agregar las características de los nodos vecinos en el nodo B, asignamos el peso máximo (grado 3) al propio nodo B y el peso mínimo (grado 5) al nodo E.

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

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

El método de cálculo de la función de pérdida es muy simple, que consiste en calcular el error de entropía cruzada de todas las muestras etiquetadas, donde Y_{l} es el conjunto de nodos etiquetados.

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

Cuando una capa se superpone a la primera capa, repetimos el proceso de recopilación de información, pero esta vez, los nodos vecinos ya tienen su propia información de 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 cuánta información creamos que un nodo debería obtener de la red, podemos establecer un número apropiado para #capas. Pero, de nuevo, en las imágenes 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 no tenga sentido.

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

Este artículo también realizó experimentos en GCN poco profundo y profundo, respectivamente. En la imagen siguiente podemos ver que los mejores resultados se obtienen utilizando un modelo de 2 o 3 capas. Además, para GCN profundos (más de 7 capas), normalmente el rendimiento es peor (línea discontinua azul). Una solución es utilizar las conexiones restantes entre capas ocultas (líneas moradas).

#Rendimiento de diferentes capas#. La imagen proviene del periódico [3]

Nota del autor del artículo

Este marco se limita actualmente a gráficos no dirigidos (ponderados o no ponderados). Sin embargo, podemos manejar los bordes dirigidos y las características de los bordes representando el gráfico dirigido original como un gráfico bipartito no dirigido y agregando nodos que representen los bordes en el gráfico original.

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

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

¿Cómo lidiar con diferentes relaciones (hermanos, amigos,...)?

[1] Las maravillosas diapositivas de Jure Leskovec (Stanford) sobre el aprendizaje de la representación gráfica:

[5] Demostración usando la biblioteca StellarGraph:-node-classification.html

Lei Feng Subtitle Group es un equipo de traducción compuesto por entusiastas de la IA, que reúne el poder de más de cinco voluntarios para compartir The La última información sobre IA en el extranjero, el intercambio de cambios industriales y la innovación tecnológica en el campo de la tecnología de inteligencia artificial.

Los miembros del equipo incluyen expertos en big data, ingenieros de algoritmos, ingenieros de procesamiento de imágenes, gerentes de productos, operaciones de productos, consultores de TI, profesores de escuelas y estudiantes de empresas reconocidas como IBM, AVL, Adobe, Alibaba y Baidu, así como institutos de investigación científica de universidades nacionales y extranjeras como la Universidad de Pekín, la Universidad de Tsinghua, la Universidad de Hong Kong, la Academia China de Ciencias, la Universidad de Carolina del Sur, la Universidad de Waseda, etc.

Si también eres un entusiasta de la IA y le encanta compartir. Bienvenido a aprender nuevos conocimientos y compartir el crecimiento con el grupo de subtítulos de Lei Feng.