red de convolución figura al final cómo hacerlo - helicóptero a pequeña escala

GCN es una especie de muy potente arquitectura de red neuronal para datos de los mapas. De hecho, es muy fuerte, incluso si los dos inicialización aleatoria también puede generar característica útil GCN figura caracterizado nodos en la red. La siguiente figura muestra una caracterización de dos dimensiones de tales capas generan cada GCN nodo. Tenga en cuenta que, incluso sin ningún tipo de formación, es posible guardar estos caracterización bidimensional de la proximidad relativa de los nodos en el diagrama.

Más formalmente, la red convolucional figura (GCN) es un operativo de red neural de los datos en la figura. Dado un grafo G = (V, E), las entradas GCN son:

 

  • En el que una dimensión de entrada de N × F⁰ matriz X, donde N es el número de nodos en la red de la figura F⁰ es el número de las características de entrada de cada nodo.

  • estructura dimensional figura es una representación de la matriz de N x N, por ejemplo de adyacencia gráfico G matriz A. [1]

 

Por lo tanto, en la capa oculta puede escribirse GCN Hⁱ = f (Hⁱ⁻¹, A)). En el que, H⁰ = X, f es una regla de propagación [1]. Cada ocultos corresponde capa Hⁱ a una dimensión de la matriz se caracteriza por la N × Fⁱ, cada fila de la matriz se caracteriza por las características de un nodo. En cada capa, utilizando reglas de propagación f GCN se agregarán a la información, a fin de formar las características de la capa inferior. Por lo tanto, las características de cada capa sucesiva se vuelve más abstracta. En este marco, GCN diversas variantes difieren sólo en la elección de las reglas de propagación f.

 

Un ejemplo simple de reglas de propagación

 

A continuación, el artículo presenta un ejemplo simple de regla de propagación [1]:

 

f (Hⁱ, A) = σ (AHⁱWⁱ)

 

En el que, el peso Wⁱ de la capa I es la matriz de peso, σ es una función de activación no lineal (por ejemplo  relu  función). Peso dimensión matriz Fⁱ × Fⁱ⁺¹, es decir, la matriz de ponderación determina el tamaño de la segunda dimensión del número característico de la siguiente capa. Si está familiarizado con la red neuronal de convolución, entonces se dará cuenta de que a medida que estos pesos son compartidos entre los nodos en el gráfico, la operación es similar a la operación de filtrado de convolución kernel.

 

Simplificar

 

A continuación, se estudia la regla de propagación en el nivel más simple. orden:

 

  • i = 1, (f es una función de la restricción aplicada a la matriz de función de entrada)

  • σ es la función identidad

  • Los pesos se eligen (restricción: AH⁰W⁰ = AXW⁰ = AX)

 

En otras palabras, f (X, A) = AX. Las reglas de propagación pueden ser demasiado simple, más adelante en este artículo complementará la parte que falta. Además, AX es equivalente a la MLP capa de entrada.

 

Un simple ejemplo de la figura.

 

Vamos a utilizar la siguiente tabla como un simple ejemplo:

 

Numpy preparó utilizando la siguiente representación de la matriz del pilar de la figura:

A = np.matrix ([
    [0, 1, 0, 0],
    [0, 0, 1, 1], 
    [0, 1, 0, 0],
    [1, 0, 1, 0]],
    dtype = float
)

 

A continuación, tenemos que extraer características! Hemos generado dos números enteros para los que el índice de cada nodo basa en la característica, lo que simplifica las operaciones de la matriz manualmente proceso de verificación más adelante en este documento.

En [3]: X = np.matrix ([
            [i, -i]
            para i en el rango (A.shape [0])
        ], dtype = float)
        X
Fuera [3]: matriz ([
           [0., 0 .],
           [1., -1.],
           [2., -2.],
           [3., -3.]
        ])

 

reglas de propagación Aplicación

 

Ahora hemos establecido una gráfica, que es la matriz de adyacencia A, el conjunto de características de entrada es X. Vamos a echar un vistazo a lo que podemos cuando se producen después de aplicar reglas de propagación:

En [6]: A * X
Fuera [6]: matriz ([
            . [1., -1],
            . [5., -5],
            . [1., -1],
            [2., -2. ]]

Caracterización de cada nodo (cada línea) se caracteriza ahora por sus vecinos y! En otras palabras, las capas de la figura de convolución cada nodo representa un nodo vecino para la polimerización. Esto se puede comprobar usted mismo el cálculo. Tenga en cuenta que, en este caso, si no es el borde de V a n, el nodo n es un nodo v vecinos.

 

 

problema

 

Es posible que haya encontrado el problema que:

 

  • Caracterización del nodo de polimerización no contiene su propia identidad! El caracterizadora características del nodo vecino se polimeriza, por lo tanto tener solamente el bucle de retorno (auto-loop) comprenderá su propio nodo caracterizado porque la polimerización en [1].

  • Nodo que tiene valor un mayor grado en la caracterización adicional, un pequeño grado del nodo que tiene un valor más pequeño. Esto puede causar una explosión o desaparece gradiente de gradiente [1, 2], también afectará el algoritmo de descenso de gradiente estocástico (estocástico pendiente de descenso algoritmo se utiliza generalmente para la formación de una red de este tipo, y el tamaño (o intervalo de valores para cada característica de entrada) muy sensible).

 

A continuación, vamos a discutir cada uno de estos temas.

 

Aumentar la auto-loop

 

Para resolver el primer problema, podemos añadir directamente a cada nodo de un auto-loop [1, 2]. Específicamente, esto puede ser antes de aplicar la regla A de propagación matriz de adyacencia y de añadir a la matriz unidad I.

En [4]: I = np.matrix (np.eye (A.shape [0]))
        I
Fuera [4]: matriz ([
            [1., 0., 0., 0.],
            [0., 1., 0., 0.],
            [0., 0., 1., 0.],
            [0., 0., 0., 1.]
        ])
En [8]: A_hat = A + I
        A_hat * X
Fuera [8]: matriz ([
            . [1., -1],
            . [6., -6],
            . [3., -3],
            . [5., -5]])

 

Ahora, ya que cada nodo son sus propios vecinos, cada nodo cuenta con la suma de los nodos también incluirá su propia identidad vecino!

 

Para caracterizar ser normalizado

 

Al multiplicar la matriz inversa de la matriz de adyacencia A y D, y transformarlos, por lo que por el caracterizan grado nodo normalizó. Por lo tanto, las reglas de propagación después de que simplificarse de la siguiente manera:

 

f (X, A) = D⁻¹AX

 

Vamos a ver qué pasa. Primero calculamos los nodos de la matriz.

En [9]: D = np.array (np.sum (A, eje = 0)) [0]
        D = np.matrix (np.diag (D))
        D
Fuera [9]: matriz ([
            [1. , 0., 0., 0.],
            [0., 2., 0., 0.],
            [0., 0., 2., 0.],
            [0., 0., 0., 1 .]
        ])

 

Antes de aplicar reglas de propagación, echar un vistazo a lo que sucede después transformamos la matriz de adyacencia.

 

antes de la conversión

A = np.matrix ([
    [0, 1, 0, 0],
    [0, 0, 1, 1], 
    [0, 1, 0, 0],
    [1, 0, 1, 0]],
    dtype = float
)

después de la transformación

En [10]: D ** - 1 * Una
salida [10]: matriz ([
             [0., 1., 0., 0.],
             [0., 0., 0,5, 0,5],
             [0., 0,5, 0., 0.],
             [0,5, 0., 0,5, 0.]
])

Se puede observar, la matriz de adyacencia para cada fila en el peso correcto (valor) de la línea dividido por el nodo correspondiente. A continuación, se aplican reglas de propagación transformamos matriz de adyacencia:

En [11]: D ** - 1 * A * X
Fuera [11]: matriz ([
             . [1., -1],
             [2,5, -2,5],
             [0,5, -0,5],
             [2., - 2.]
         ])

 

nodo de Caracterización para obtener las características medias correspondientes a los nodos adyacentes. Esto es porque el (transformada) de adyacencia derecha matriz correspondiente a un peso nodo adyacente y el peso de las características ponderadas. Puede verificar los resultados usted mismo.

 

integrar

 

Ahora, ya que vamos a sonar y las técnicas de normalización juntos. Además, también vamos a volver a introducir los pesos correspondientes y omitido para simplificar la discusión antes de la función de activación de la operación.

 

Adición de peso

 

Lo primero que debe hacer es pesos de uso. Nota, D_hat aquí es A_hat = A + I correspondiente a la matriz, es decir, la matriz A con una forzado desde el anillo de matriz.

En [45]: W = np.matrix ([
             [1, -1],
             [-1, 1]
         ])
         D_hat ** - 1 * A_hat * X * W
de salida [45]: matriz ([
            [1., -1.],
            [4., -4.],
            [2., -2.],
            [5., -5.]
        ])

Si queremos reducir la dimensión caracterizan la producción, podemos reducir el tamaño de la matriz de pesos W de:

En [46]: W = np.matrix ([
             [1],
             [-1]
         ])
         D_hat ** - 1 * A_hat * X * W
de salida [46]:. Matriz ([[1],
        [4.] ,
        [2.],
        [5.]]
)

La adición de la función de activación

Caracterizar selecciona de contención de artículos dimensión, y la aplicación de la función de activación relu.

En [51]: W = np.matrix ([
             [1, -1],
             [-1, 1]
         ])
         relu (D_hat ** - 1 * A_hat * X * W)
de salida [51]: matriz ([[ 1., 0.],
        [4., 0.],
        [2., 0.],
        [5., 0.]])

 

Esta es una matriz de adyacencia con las características de entrada, los pesos y la función de activación de la capa oculta intacto!

 

Aplicación en una escena real

 

Por último, vamos a trazar las aplicaciones de red a la convolución en un mapa real. Este artículo muestra cómo generar las características de lectores mencionados anteriormente caracterización.

 

Zachary Club de Karate

 

Zachary Karate Club es una red social muy utilizado, donde los nodos en nombre de los miembros del club de karate, bordes representan la relación entre los miembros. Año, Zachary estudiar club de karate cuando los administradores y maestros se enfrentaron, lo que lleva el club en dos. La siguiente figura muestra un diagrama de la caracterización de la red, donde los nodos se etiquetan según el cual parte de los nodos que pertenecen al club obtenido, "A" y "I", respectivamente, pertenecen al administrador del sitio y el campo de la facultad.

 

 

Construcción de GCN

 

A continuación, vamos a construir un diagrama de red de convolución. En realidad no entrenar a la red, pero será una inicialización aleatoria simple para generar la caracterización características que vemos al principio de este artículo. Vamos a utilizar NetworkX, mapa caracteriza Zachary Karate Club, que tiene una fácil de lograr. a continuación, vamos a calcular A_hat y D_hat matriz.

 

from networkx import to_numpy_matrix
zkc = karate_club_graph()
order = sorted(list(zkc.nodes()))
A = to_numpy_matrix(zkc, nodelist=order)
I = np.eye(zkc.number_of_nodes())
A_hat = A + I
D_hat = np.array(np.sum(A_hat, axis=0))[0]
D_hat = np.matrix(np.diag(D_hat))

 

A continuación, vamos a inicializado aleatoriamente pesos.

W_1 = np.random.normal(
    loc=0, scale=1, size=(zkc.number_of_nodes(), 4))
W_2 = np.random.normal(
    loc=0, size=(W_1.shape[1], 2))

 

A continuación, vamos a GCN capas apiladas. Aquí caracterizamos utilizadas solamente como una matriz, es decir, cada nodo se representa como un uno en caliente variables de codificación categóricas.

def gcn_layer(A_hat, D_hat, X, W):
    return relu(D_hat**-1 * A_hat * X * W)
H_1 = gcn_layer(A_hat, D_hat, I, W_1)
H_2 = gcn_layer(A_hat, D_hat, H_1, W_2)
output = H_2

 

Nos caracterizar mejor las características extraídas.

feature_representations = {
    node: np.array(output)[node] 
    for node in zkc.nodes()}

 

Usted ve, esta característica puede ser bien caracterizado por Zachary Club de Karate dividirá a las dos comunidades separadas. Hasta el momento, ni siquiera hemos empezado a formar el modelo!

Debemos tener en cuenta que en este ejemplo la función relu acción, el eje X o Y se pesos inicializados al azar por lo tanto pueden requerir repiten varias veces con el fin de generar un azar inicializado a 0 en la anterior figura.

 

epílogo

 

se introdujeron FIG redes en el presente documento convolucionales hipermetropía, y caracteriza en la que cada capa se caracteriza nodo GCN en función de cómo construye su polimerización vecinos. Los lectores pueden aprender a utilizar numpy para construir estas redes, así como su fuerte: Incluso inicialización aleatoria de GCN también puede red Zachary Club de Karate de la comunidad separada.

 

 

 

 

 

 

Publicado 25 artículos originales · ganado elogios 8 · vistas 4436

Supongo que te gusta

Origin blog.csdn.net/weixin_42414405/article/details/104758643
Recomendado
Clasificación