En redes neuronales, ¿cómo se transporta la propagación hacia atrás a través de las capas de maxpool?

Considere que cuatro subordinados están trabajando debajo de usted y están dando sus opiniones para un tema en particular (muestra). Si sigues la agrupación máxima, solo tomarás una opinión, lo que es más convincente, ignorando a los demás.

Por lo tanto, si obtiene éxito de esta opinión, solo le dará crédito a esa persona. Del mismo modo, por el fracaso, solo se culpará a esa persona.

Como no ha considerado otras tres opiniones, no se culpará a otros por este problema en particular, independientemente de sus opiniones.

Entonces, para culpar o acreditar, debes hacer un seguimiento de la opinión que has tomado.

A lo largo del año (época) puede tener muchos problemas de este tipo. Puede agregar todas las culpas y créditos para cada subordinado y aplicar al final del año (por lotes) o puede aplicar para cada problema por separado (estocástico).

Andre ha dado la justificación matemática; Complementaré proporcionando algo de intuición.

Piense en la propagación hacia atrás como una forma ordenada de calcular gradientes. Olvidemos la propagación hacia atrás por el momento. Por lo tanto, su objetivo es realmente calcular los gradientes: considere un peso en alguna capa antes de una capa de agrupación. El gradiente de la salida con respecto a este peso es: ¿cuánto se mueve la salida si mueve este peso en una pequeña cantidad? Entonces, si el elemento al que contribuye este peso se selecciona en la agrupación máxima (antes o después de mover), entonces obtienes un gradiente distinto de cero, de lo contrario obtienes un gradiente cero.

Esto es exactamente lo que te darán las matemáticas.

Para la propagación hacia atrás a través de una capa, necesitará

  1. la derivada del error en la salida de la capa con respecto a los parámetros de la capa
  2. La derivada del error en la salida de la capa con respecto a sus entradas.

En términos matemáticos, si [matemática] F_n (X_ {n-1}, W_n) [/ matemática] es la función implementada por la enésima capa, [matemática] X_ {n-1} [/ matemática] son ​​las entradas a la capa n (que son las salidas de la capa n-1) y [matemática] W_n [/ matemática] los parámetros (‘pesos’) de la capa n y E es la función de error global (‘pérdida’) en la salida de la totalidad red, se calcula la derivada del error en la entrada de la enésima capa de la siguiente manera:

[matemáticas] \ dfrac {\ partial E} {\ partial X_ {n-1}} = \ dfrac {\ partial E} {\ partial X_n} \ cdot \ dfrac {\ partial F_n (X_ {n-1}, W_n )} {\ parcial X_n} [/ matemáticas]

En el caso de las capas de maxpool, no hay parámetros ajustables [math] W_n [/ math], por lo que solo se aplica (2). Nos queda calcular [math] \ dfrac {\ partial F_n (X_ {n-1}, W_n)} {\ partial X_n} [/ math]


Para una capa maxpool simple que toma dos entradas x e y y una salida donde

[matemáticas] z = \ max (x, y) [/ matemáticas]

Esto también se puede escribir como una función por partes:

z = x si x> y más y

Las derivadas parciales se pueden tomar en los intervalos. Entonces, la derivada parcial de la salida con respecto a x:

[matemática] \ dfrac {\ parcial z} {\ parcial x} [/ matemática]

es 1 si x> y y 0 de lo contrario (de manera similar para la derivada parcial con respecto a y). Esto también se puede escribir en términos de la función de paso Heaviside como:

[matemáticas] \ dfrac {\ partial z} {\ partial x} = H (x – y) [/ matemáticas]

Nadie lo ha mencionado todavía, pero hay una aproximación diferenciable de la función max.

[matemática] max (x_1, x_2,…, x_n) \ underset {d \ to + \ infty} = (\ sum \ limits_ {i = 1} ^ n x_i ^ {d}) ^ \ frac {1} {d }[/mates]

Incluso el valor relativamente pequeño de d da una aproximación correcta para su función de agrupación máxima.

int main () {
lista automática = {2, 3, 4, 5, 2, 1, 7};
auto d = 5;
cout << * std :: max_element (list.begin (), list.end ()) << endl;
auto res = 0;
for (const auto & element: list) {
res + = powf (elemento, d);
}
cout << powf (res, 1.0 / d);
}

El programa me dio:

7 7

7.33718

Por supuesto, no es una solución perfecta pero vale la pena mencionarlo.

Los gradientes de la capa superior se copian en las ubicaciones de los puntos máximos en la capa inferior. Todo lo demás está configurado en ceros.

More Interesting

¿Está de acuerdo en que las computadoras con tecnologías de inteligencia artificial (sistemas expertos en diagnóstico de fallas) exhiben inteligencia? ¿Cuales son las razones?

¿Qué es un núcleo en una red neuronal?

¿Qué no admite OpenAI conceptos como TINU (https://tinu.live)?

Inteligencia artificial: ¿Qué tan difícil sería crear una criatura robot de la vida real con la IA y la capacidad de entrenamiento de la criatura Blanco y Negro?

¿Cuál es la diferencia entre el procesamiento de señales estadísticas y el aprendizaje automático?

¿Podrían los robots de IA conscientes, en cierto modo, ser el siguiente paso lógico en la evolución humana?

¿La inversión de Google en aprendizaje automático y aprendizaje profundo valdrá la pena en su competencia contra Apple?

¿Podemos mejorar el rendimiento de las redes neuronales simplemente aumentando su profundidad?

¿Cuándo esperamos que la 'carga mental' se convierta en realidad y nos ayude a 'aprender habilidades' al instante? ¿Cómo funcionará el mundo entonces?

¿Qué tipo de matemática se usa en el aprendizaje automático y cómo se puede aprender?

¿Cuál es la diferencia entre una red bayesiana y una red neuronal artificial?

¿Sería eventualmente posible transferir la mente humana a la nube para que el humano virtual continúe 'viviendo' en la red informática?

¿Cuáles son las mejores aplicaciones de IA?

¿Importa la CPU de una PC de aprendizaje profundo si tengo una gran GPU?

¿Dónde dibujan la inteligencia artificial y la inteligencia humana una línea muy fina?