2 votos

Número de células en una RNN

He estado leyendo sobre las RNN y tengo cierta confusión entre el número de pasos de tiempo y el número de unidades en una capa de RNN (que después de buscar una respuesta) parece ser algo común.
Entiendo que la idea de usar una RNN es capturar la relación entre cada elemento de la secuencia con otros elementos. En un ejemplo de clasificación de texto con tweets con una longitud de 20 palabras, el número de unidades en una capa -que entiendo es el mismo que el número de pasos de tiempo- debería ser igual a la longitud de la secuencia de entrada, que es 20.
También he visto algunos ejemplos que tratan del número de unidades como un hiperparámetro a afinar.
¿Cuál de ellas es correcta?

enter image description here

Esta foto es de un curso en coursera de Andrew Ng. El súper guión Tx indica el número de pasos de tiempo que es el mismo que el número de unidades en la red.

4voto

user777 Puntos 10934

El número de celdas y la longitud de la secuencia son conceptos distintos. Creo que la forma más clara de demostrarlo es escribir las ecuaciones. Por ejemplo, la RNN simple de Elman tiene ecuaciones

$$ \begin{align} a_t &= f_a\left(W_a x_t + U_a a_{t-1} + b_a\right) \\ y_t &= f_y\left(W_y a_t + b_y\right) \end{align} $$

donde $a_t$ es el vector de estado oculto en el momento $t$ , $y_t$ es la predicción en el momento $t$ y $x_t$ es la entrada en el momento $t$ . Cada $x_t$ es un vector con un cierto número de características $k$ y el estado oculto tiene alguna dimensión $p$ . Así que $W_a$ debe tener forma $p \times k$ para que la multiplicación de la matriz funcione. Asimismo, la matriz $U_a$ debe tener forma $p\times p$ y el sesgo $b_a$ debe tener forma $p\times 1$ . Las funciones $f_a, f_y$ son sólo la(s) función(es) de activación que estás utilizando -- sigmoide o ReLU o cualquier otra activación.

Si desea aplicar una RNN a una secuencia, primero inicialice $a_0$ y luego hacer un bucle sobre la relación de recurrencia. En psuedocódigo, se ve algo así:

for t in 1 ... T:
    a[t] = f_a(x[t], a[t-1])
    y[t] = f_y(a[t])

donde f_a y f_y aplicar las ponderaciones y los sesgos, así como la no linealidad.

Le site número de unidades es $p$ . Debe quedar claro que se puede cambiar $p$ y el número total de pasos de tiempo $T$ de forma independiente, ya que la relación de recurrencia nos permite realizar el bucle de predicción durante tantos pasos como queramos, siempre que podamos proporcionar $x_t$ .

Podemos hacer lo mismo con el lstm y gru redes.

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