¿Cómo utilizan los RNN estándar la información de los pasos de tiempo anteriores?

Recientemente comencé a buscar RNN para mi investigación y esta fue una de las preguntas más fundamentales que enfrenté a la hora de comprender los RNN. Espero que mi explicación pueda convencerlo sobre la capacidad de los RNN para aprender relaciones temporales en pasos más largos. Primero, consideraremos una estructura RNN simple de la siguiente manera:

[matemáticas] h_ {t} = \ sigma_ {1} (W ~ h_ {t-1} + U ~ x_ {t} + b_ {1}) [/ matemáticas]

[matemáticas] y_ {t} = \ sigma_ {2} (V ~ h_ {t} + b_ {2}) [/ matemáticas]

Aquí, [math] h_ {t} [/ math] representa la salida de capa oculta en el instante de tiempo t, [math] x_ {t} [/ math] denota la entrada en el instante de tiempo ty [math] y_ {t} [/ math] denota la salida en el mismo instante. A partir de estas ecuaciones, se ve claramente que las entradas al RNN en el instante t son la salida de capa oculta en el instante (t-1) y la entrada actual. Pero, el punto importante a tener en cuenta es el hecho de que los valores de la capa oculta en el instante de tiempo (t-1) dependerían de los valores de la capa oculta en el instante de tiempo (t-2) y así sucesivamente. Esto se vuelve evidentemente claro si considera la estructura abierta del RNN. Por lo tanto, es razonable esperar que un RNN sea capaz de aprender dependencias temporales mucho más largas que solo un instante.

La capacidad de un RNN para aprender dependencias a largo plazo está estrechamente relacionada con el número de unidades en la capa oculta. En aras de la simplicidad y para mantener las cosas manejables, nos apegaremos a un RNN lineal, es decir, las capas ocultas y de salida no tienen ninguna no linealidad involucrada. En tal caso, el valor de la capa oculta en el instante t puede escribirse de la siguiente manera:

[matemáticas] h_ {t} = W ~ h_ {t-1} + U ~ x_ {t} + b_ {1} = W ^ 2 ~ h_ {t-2} + W ~ U ~ x_ {t-1} + U ~ x_ {t} + (W + 1) ~ b_ {1} =… [/ matemáticas]

Podemos expandir esto aún más en una suma infinita y afirmar que:

  1. El coeficiente de [matemática] x_ {tk} [/ matemática] es [matemática] W ^ {k} ~ U [/ matemática].
  2. El coeficiente de [math] b_ {1} [/ math] es [math] (1 + W + W ^ 2 +…) [/ math]

Ahora, consideremos un ejemplo específico donde entrenamos el RNN lineal anterior en las secuencias [matemáticas] x_ {t} ~ y ~ y_ {t} [/ matemáticas] que están relacionadas como, [matemáticas] y_ {t} = x_ { t} + x_ {t-2} [/ matemáticas]. Para aprender esta relación temporal, el RNN no requiere una no linealidad. Sin embargo, necesita una capa de salida, cuyo motivo se vería a continuación. Aquí, se espera que el RNN aprenda los pesos ([matemática] W, U, b_ {1}, V [/ matemática] y [matemática] b_ {2} [/ matemática] valores tales que:

  1. [matemáticas] W ^ {k} ~ U = 0 [/ matemáticas] para [matemáticas] k = 3 [/ matemáticas],
  2. [matemáticas] V ~ W ^ {2} ~ U = 1 [/ matemáticas],
  3. [matemáticas] V ~ W ~ U = 0 [/ matemáticas] y
  4. [matemáticas] V ~ U = 1 [/ matemáticas]

Claramente, este sistema de ecuaciones no tiene una solución cuando [math] h_ {t} [/ math] es una secuencia unidimensional. Un segundo punto a destacar aquí es que, una vez que el RNN aprende que el coeficiente de [math] x_ {t-3} [/ math] es [math] 0 [/ math], todos los términos más altos, es decir, entradas de instantes antes de t -3 se descartaría automáticamente. Esto se puede ver por el hecho de que [matemáticas] W ^ {k} ~ U = W ^ {k-3} ~ W ^ {3} ~ U ~ para ~ k \ gt3 [/ matemáticas]. Esta es también la razón por la cual el RNN requeriría una capa de salida que realice una multiplicación de matriz por V. Sin esta capa, el RNN no podría ignorar [matemática] x_ {t-1} [/ matemática] sino retener [matemática ] x_ {t-2} [/ math] en su salida. Por cierto, podemos escribir la relación entre [matemáticas] h_ {t} [/ matemáticas] y [matemáticas] x_ {t} [/ matemáticas] como una ecuación matricial de la siguiente manera:

[matemáticas] h_ {t} = \ left [W ^ {2} U ~~ WU ~~ U \ right] \ left [x_ {t} ~ x_ {t-1} ~ x_ {t-2} \ right] ^ {T}. [/matemáticas]

Ignoramos los términos con coeficientes cero en esta representación. Para que este sistema de ecuaciones tenga una solución, necesitamos una [matemática] h_ {t} [/ matemática] de 3 dimensiones. Esto implica que la capa oculta debe tener al menos 3 unidades para aprender una dependencia temporal de entrada de 2 unidades de tiempo. Generalizando aún más esta idea, para aprender una dependencia temporal de k unidades de tiempo, el RNN requiere una capa oculta de (k + 1) unidades ocultas al menos, es decir, la entrada debe transformarse en un espacio dimensional (k + 1) al menos eligiendo formas de peso RNN adecuadas. Es importante señalar aquí que incluir una no linealidad en la definición RNN modifica la arquitectura RNN y oscurece dicho análisis. Aunque es difícil analizar una estructura RNN no lineal, se puede verificar empíricamente que la condición en el número de unidades ocultas consideradas anteriormente también se mantiene para una estructura RNN no lineal. (Una forma simple de verificar esto es entrenar a un RNN para que realice un Ex o problema secuencial binario definido sobre las entradas [math] x_ {t} [/ math] y [math] x_ {tk} [/ math])

Para resumir, el RNN no mira la secuencia de entrada [matemática] x [/ matemática] solo en términos de su valor de muestra actual. En cambio, en el instante t, lee la entrada en términos de bloques o fragmentos de valores de muestra de [matemática] x_ {t} [/ matemática] a [matemática] x_ {tk} [/ matemática] donde [matemática] k + 1 [/ math] es el número de unidades ocultas. Por lo tanto, el tamaño de este bloque se decide por la dimensionalidad de la capa oculta. Dado este bloque de muestras de datos de entrada, la capa de salida identifica las muestras relevantes en el bloque que se combinan para formar la muestra de salida actual [math] y_ {t} [/ math].

Un problema fundamental con esta estructura RNN es el hecho de que las entradas pasadas se multiplican en potencias crecientes de W. Por lo tanto, los gradientes del costo con respecto a los parámetros RNN también se multiplican proporcionalmente por la secuencia [matemáticas] (1 + W + W ^ 2 + …) [/ math] (Esto se puede verificar calculando matemáticamente los gradientes de la estructura expandida del RNN). Si el valor eigen más pequeño de [math] W \ gt 1 [/ math], entonces los gradientes comienzan a aumentar sin límites, causando el conocido problema de explosión de gradiente. Esto dificulta la capacitación del RNN ya que las actualizaciones fluctuarían peligrosamente sin permitir una convergencia a una solución particular. El forzamiento del maestro reduce la posibilidad de explosión de gradiente y permite entrenar al RNN.