26 votos

¿Cuándo "añadir" capas y cuándo "concatenar" en las redes neuronales?

Estoy utilizando "add" y "concatenate" tal y como se define en keras. Básicamente, a mi entender , add sumará las entradas (que son las capas, en esencia tensores). Así que si la primera capa tenía un peso particular como 0.4 y otra capa con la misma forma exacta tenía el peso correspondiente siendo 0.5 después de la add el nuevo peso pasa a ser 0.9 .

Sin embargo, con concatenar, digamos que la primera capa tiene dimensiones 64x128x128 y la segunda capa tenía unas dimensiones 32x128x128 después de concatenar, las nuevas dimensiones son 96x128128 (suponiendo que pasas la segunda capa como primera entrada en concatenar).

Suponiendo que mi intuición anterior sea cierta, ¿cuándo utilizaría una sobre la otra? Conceptualmente, add parece un intercambio de información que potencialmente da lugar a una distorsión de la información, mientras que concatenar es un intercambio de información en sentido literal.

31voto

mclaughlinj Puntos 1099

Añadir es bueno si quieres interpretar una de las entradas como una "corrección" residual o "delta" de la otra entrada. Por ejemplo, las conexiones residuales en ResNet suelen interpretarse como un refinamiento sucesivo de los mapas de características. Concatenar puede ser más natural si las dos entradas no están muy relacionadas. Sin embargo, la diferencia es menor de lo que se piensa.

Tenga en cuenta que $W[x,y] = W_1x + W_2y$ donde $[\ ]$ denota concat y $W$ se divide horizontalmente en $W_1$ y $W_2$ . Compárelo con $W(x+y) = Wx + Wy$ . Así que se puede interpretar la suma como una forma de concatenación en la que las dos mitades de la matriz de pesos están limitadas a $W_1 = W_2$ .

0voto

Bob Puntos 1

No soy un experto, pero según mis lecturas, la "adición" se utiliza para los "enlaces de identidad" en construcciones como los bloques de residuos para conservar la información antes de la convolución, que, como dicen los profesionales, es útil cuando la red es más profunda.

La concatenación es bastante confusa cuando se trata de "¿cómo ayuda?". Como has dicho, se trata de añadir información en un sentido literal, que parece centrarse en obtener una toma más amplia simplemente apilando filtros llegados de distintas operaciones (tras dividir los mapas de características) en un bloque. Parece que se utiliza mucho para el "pre-stemming".

Los dos suenan parecidos al principio, pero funcionalmente no deberían compararse.

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