17 votos

¿Cómo exactamente lo use redes neuronales convolucionales circunvolución en lugar de multiplicación de la matriz?

Estaba leyendo Yoshua Bengio, el Libro de aprendizaje profundo y dice en la página 224:

Convolucional redes son, simplemente, las redes neuronales que el uso de la convolución en el lugar de la multiplicación de la matriz en al menos uno de sus capas.

sin embargo, yo no estaba 100% seguro de cómo "reemplazar la multiplicación de la matriz por convolución" en un matemáticamente preciso sentido.

Lo que realmente me interesa es la definición de este para los vectores de entrada en 1D (como en $x \in \mathbb{R}^d$), por lo que no tiene entrada como imágenes y tratar de evitar la convolución en 2D.

Así, por ejemplo, en "normal" de las redes neuronales, las operaciones y el feed ward patrón pueden ser expresados concisamente como en Andrew Ng notas:

$$ W^{(l)} a^{(l)} = z^{(l+1)}$$ $$ f(z^{(l+1)}) = a^{(l+1)}$$

donde $z^{(l)}$ es el vector calculado antes de pasar a través de la no-linealidad $f$. La no-linealidad de los actos pero la entrada en el vector $z^{(l)}$ $a^{(l+1)}$ es la salida de activación de unidades ocultos por la capa en cuestión.

Este cálculo es claro para mí, porque la multiplicación de la matriz es claramente definidos para mí, sin embargo, sólo la sustitución de la multiplicación de la matriz por convolución parece claro para mí. es decir,

$$ W^{(l)} * a^{(l)} = z^{(l+1)}$$ $$ f(z^{(l+1)}) = a^{(l+1)}$$

Quiero asegurarme de que entiendo la ecuación anterior matemáticamente precisa.

El primer problema que tengo con sólo reemplazar la multiplicación de la matriz con la convolución es que por lo general, uno se identifica una fila de $W^{(l)}$ con un producto escalar. Así que, evidentemente, sabe cómo toda la $a^{(l)}$ se refiere a los pesos y a la que se asigna a un vector $z^{(l+1)}$ de la dimensión, como se indica por $W^{(l)}$. Sin embargo, cuando uno la reemplaza por circunvoluciones, no es claro para mí que la fila o pesos, que corresponde a las entradas en $a^{(l)}$. Tampoco me queda claro que tiene sentido para representar los pesos como una matriz más en el hecho (voy a poner un ejemplo para explicar ese punto más adelante)

En el caso de que la entrada y las salidas son todos los de 1D, no se acaba de calcular la convolución de acuerdo a su definición y, a continuación, pasar a través de una singularidad?

Por ejemplo, si tenemos la siguiente vector como entrada:

$$x = [1,2,3,4]$$

y tuvimos la siguiente ponderación (tal vez hemos aprendido con backprop):

$$W = [5,6,7] $$

a continuación, la convolución es:

$$ x * W = [5, 16, 34, 52, 45, 28]$$

sería correcto para pasar la no-linealidad a través de eso y tratar el resultado como el de la capa oculta y la representación (suponga que no se acumule por el momento)? es decir, como sigue:

$$ f(x * W) = f([5, 16, 34, 52, 45, 28]) = [f(5), f(16), f(34), f(52), f(45), f(28)])$$

(stanford UDLF tutorial creo que recorta los bordes donde la convolución convovles con 0 por alguna razón, necesitamos recortar?)

¿Es esta la forma que debe trabajar? Al menos para un vector de entrada en 1D? Es el $W$ no un vector más?

Incluso me dibujó una red neuronal de cómo esto se supone para parecer creo:

enter image description here

5voto

lmjohns3 Puntos 579

Me suena como que estás en el camino correcto, pero tal vez yo pueda ayudar a aclarar.

Salida única

Imaginemos una tradicional neuronal de la capa de red con $n$ unidades de entrada y 1 de salida (supongamos también hay sesgo). Esta capa tiene un vector de pesos $w\in\mathbb{R}^n$ que puede ser aprendido mediante diversos métodos (backprop, algoritmos genéticos, etc.), pero vamos a ignorar el aprendizaje y sólo se centran en la propagación hacia adelante.

La capa tiene una entrada $x\in\mathbb{R}^n$ y la asigna a una activación $a\in\mathbb{R}$ calculando el producto escalar de a $x$ $w$ y, a continuación, aplicar una no linealidad $\sigma$: $$ a = \sigma(x\cdot w) $$

Aquí, los elementos de $w$ especificar cuánto peso de los elementos correspondientes de a $x$ para calcular el total de la activación de la salida de la unidad. Incluso se podría pensar en esto como un "convolución", donde la señal de entrada ($x$) es de la misma longitud que el filtro ($w$).

En un convolucional de configuración, hay más valores en $x$$w$; supongamos ahora que nuestra entrada $x\in\mathbb{R}^m$$m>n$. Podemos calcular la activación de la salida de la unidad en este establecimiento mediante el cálculo del producto escalar de a $w$ contiguos de subconjuntos de $x$: $$\begin{eqnarray*} a_1 &=& \sigma(x_{1:n} \cdot w) \\ a_2 &=& \sigma(x_{2:n+1} \cdot w) \\ a_3 &=& \sigma(x_{3:n+2} \cdot w) \\ \dots \\ a_{m-n+1} &=& \sigma(x_{m-n+1:m} \cdot w) \end{eqnarray*}$$

(Aquí estoy repitiendo el mismo molesto confusión entre correlación cruzada y la convolución de que muchas de las redes neuronales autores hacen; si fuéramos a hacer estas circunvoluciones, nos gustaría que nos voltear los elementos de $w$. También estoy asumiendo un "válido" de convolución de la que sólo se conserva elementos computados donde la señal de entrada y el filtro se superponen completamente, es decir, sin ningún tipo de relleno.)

Ya lo pone en la pregunta básicamente, pero estoy tratando de caminar a través de la conexión con la vainilla red neuronal de capas usando el producto escalar para hacer un punto. La principal diferencia con la vainilla capas de red es que si el vector de entrada es mayor que el peso del vector, una convolución convierte la salida de la capa de red en un vector en la convolución de las redes, los vectores de todo el camino hacia abajo! Esta salida vector se llama una "característica de ruta" para la salida de la unidad en esta capa.

Varias salidas

Ok, así que vamos a imaginar que queremos añadir una nueva salida a nuestra capa de red, por lo que ha $n$ entradas y 2 salidas. Habrá un vector $w^1\in\mathbb{R}^n$ para la primera salida, y un vector $w^2\in\mathbb{R}^n$ para la segunda salida. (Estoy usando superíndices para denotar la capa de salidas.)

Para una capa de vainilla, estos normalmente son apilados juntos en una matriz de $W = [w^1 w^2]$ cuando el peso individual de los vectores de las columnas de la matriz. Luego, cuando el cómputo de la salida de esta capa, se calculan $$\begin{eqnarray*} a^1 &=& \sigma(x \cdot w^1) \\ a^2 &=& \sigma(x \cdot w^2) \end{eqnarray*}$$ or in shorter matrix notation, $$a = [a^1 a^2] = \sigma(x \cdot W)$$ donde la no linealidad se aplica elementwise.

En el convolucional caso, los resultados de nuestra capa todavía están asociados con el mismo parámetro de vectores $w^1$$w^2$. Al igual que en el single-output caso, la convolución de la capa genera el vector de valores de las salidas para cada capa de salida, así que no hay $a^1 = [a^1_1 a^1_2 \dots a^1_{m-n+1}]$ $a^2 = [a^2_1 a^2_2 \dots a^2_{m-n+1}]$ (asumiendo nuevamente "válido" circunvoluciones). Estos filtros mapas, uno para cada capa de salida, comúnmente son apilados juntos en una matriz de $A = [a^1 a^2]$.

Si usted piensa de él, la entrada en el convolucional caso podría también considerarse como una matriz, que contiene sólo una columna ("un canal de entrada"). Así, se podría escribir de la transformación de esta capa como $$A = \sigma(X * W)$$ where the "convolution" is actually a cross-correlation and happens only along the columns of $X$ and $W$.

Estos notación de los accesos directos son en realidad muy útil, porque ahora es fácil ver que para agregar otra salida a la capa, sólo tenemos que añadir otra columna de pesos a $W$.

Esperemos que sea útil!

1voto

user29025 Puntos 16

No, eso es no cómo debe para trabajar. La operación de convolución siempre hacer la entrada más pequeña (para los filtros con tamaño > 1), no más grande como en su ejemplo.

Es simplemente una multiplicación elementwise. Al hacer la convolución en los 3 primeros elementos de la entrada, la salida podría ser $1∗5+2∗6+3∗7=38$. (véase deeplearning.stanford.edu para un ejemplo)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X