En LSTM, ¿cómo calculas qué tamaño deben tener los pesos?

Comencemos con un modelo LSTM general para comprender cómo desglosamos las ecuaciones en pesos y vectores.

Aquí, H = Tamaño del estado oculto de una unidad LSTM. Esto también se llama la capacidad de un LSTM y es elegido por un usuario dependiendo de la cantidad de datos disponibles y la capacidad de LSTM requerida. Por lo general, se considera que es 128, 256, 512, 1024 para modelos pequeños.

B = Tamaño del lote de entrada. Las entradas rara vez se alimentan una por una. Por lo general, se introducen en cualquier modelo basado en LSTM en forma de un subconjunto del número total de ejemplos, es decir, por lotes. Para entender un poco más sobre el lote, puede leer esto. Tenga en cuenta que puede elegir B ​​= 1.

Ahora, he desglosado cada elemento de la ecuación de un LSTM mencionado en el blog de Cris Olah.

Ecuaciones

[matemáticas] f_t = \ sigma (W_f. [h_ {t-1}, x_t] + b_f) = \ sigma (W_ {hf} .h_ {t-1} + W_ {xf} x_t + b_f) [/ matemáticas ]

[matemáticas] i_t = \ sigma (W_i. [h_ {t-1}, x_t] + b_i) = \ sigma (W_ {hi} .h_ {t-1} + W_ {xi} x_t + b_i) [/ matemáticas ]

[matemáticas] C’_t = tanh (W_C. [h_ {t-1}, x_t] + b_C) = tanh (W_ {hC} .h_ {t-1} + W_ {xC} x_t + b_C) [/ math ]

[math] o_t = \ sigma (W_o. [h_ {t-1}, x_t] + b_o) = \ sigma (W_ {ho} .h_ {t-1} + W_ {xo} x_t + b_o) [/ math ]

[matemáticas] C_t = f_t * C_ {t-1} + i_t * C’_t [/ matemáticas]

[matemáticas] h_t = o_t * tanh (C_t) [/ matemáticas]

Como puede ver si elige el tamaño de lote B = 1, [math] x_t [/ math] se convierte en un vector en lugar de una matriz y también lo hacen todas las demás variables como [math] C_t [/ math] y [math] h_t. [/ math]

Para averiguar las dimensiones de los pesos aquí en adelante, todo lo que necesita hacer es mantener los pesos y los sesgos de tal manera que las multiplicaciones y adiciones de la matriz sean posibles.

Ahora, llegando a las ecuaciones mencionadas por usted:

Podemos poner sus tamaños para que sean:

[math] i_t \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] f_t \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] c_t \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] o_t \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] h_t \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] x_t \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ D [/ math]

[math] h_ {t-1} \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] c_ {t-1} \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[matemáticas] W_ {xi} \ in \ mathbb {R} ^ D \ times \ mathbb {R} ^ H [/ matemáticas]

[matemáticas] W_ {xf} \ in \ mathbb {R} ^ D \ times \ mathbb {R} ^ H [/ matemáticas]

[matemáticas] W_ {xo} \ in \ mathbb {R} ^ D \ times \ mathbb {R} ^ H [/ matemáticas]

[matemáticas] W_ {hi} \ in \ mathbb {R} ^ H \ times \ mathbb {R} ^ H [/ math]

[matemáticas] W_ {hf} \ in \ mathbb {R} ^ H \ times \ mathbb {R} ^ H [/ matemáticas]

[matemáticas] W_ {ho} \ in \ mathbb {R} ^ H \ times \ mathbb {R} ^ H [/ matemáticas]

[math] b_i \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] b_f \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] b_c \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

[math] b_o \ in \ mathbb {R} ^ B \ times \ mathbb {R} ^ H [/ math]

Ahí tienes, todas tus ecuaciones desglosadas en dimensiones.

Puede verificar cada uno si siguen todas las restricciones de la multiplicación y suma de matrices.

Editar: Tenga en cuenta que los sesgos siempre tienen una dimensión si 1xH, que se replica o explota B veces para dar BxH.

Según el lado izquierdo y el primer término de multiplicación en la primera ecuación, el tamaño de W_ {xi} es size_of_i por size_of_x. Los tamaños de todas las demás matrices se pueden calcular con el mismo token.
El tamaño de x es determinista ya que es la entrada de red.
El tamaño de h es un hiperparámetro. Una vez que se elige, el tamaño de todas las puertas y la celda de memoria debe ser el mismo. Esto se debe a que, de acuerdo con la última ecuación, o y c deben ser del mismo tamaño que h, lo que, según la ecuación n. ° 3, dicta que el tamaño de f e i también debe ser el mismo (como c, y a su vez , como o y h). Como resultado, W_ {h *} y W_ {c *} deben ser matrices cuadradas.
Sin embargo, el tamaño de xy el tamaño de h no tienen que estar de acuerdo (y hay trabajos publicados donde no lo están, por ejemplo, [1504.00548] Aprendiendo a comprender frases al incrustar el diccionario, Sección 2.2), y por lo tanto las matrices W_ Los {x *} no son necesariamente cuadrados.

Todas las “variables de estado” ([matemáticas] i_t, f_t, c_t, o_t, h_t [/ matemáticas]) en la celda de memoria descrita son vectores n-dimensionales.

Cada [matemática] W_ {ab} [/ matemática] es una matriz que representa una transformación lineal del espacio de a al espacio de b. Como todas las variables de estado tienen la misma dimensionalidad, cada matriz W es nx n.

EDITAR: Como Ehsan señala en el comentario a mi respuesta, la entrada x podría tener un tamaño diferente de las variables de estado, por lo que W_x * no es necesariamente cuadrado.

More Interesting

¿Es posible que una computadora aprenda a distinguir gatos de perros de solo un conjunto de imágenes sin que le digamos qué imágenes son gatos y cuáles son perros, o incluso si hay cosas como gatos y perros, y si es así, cómo es exactamente esto? ¿hecho?

¿Cómo compararías hacer un doctorado en ML (principalmente aprendizaje profundo) en Duke, UC Irvine y Georgia Tech?

¿Cuáles son las mejores bibliotecas de redes neuronales de Python y Java con soporte multi gpu y multiplataforma?

Antes de elegir y aplicar incluso el modelo de aprendizaje automático lineal más simple, ¿qué aspectos estadísticos de los datos debo considerar?

¿Por qué debería usar TensorFlow sobre NumPy o scikit-learn para construir redes neuronales (excepto para CPU o GPU)?

¿El desarrollo teórico en el aprendizaje automático está llegando a un punto muerto (significa que no habrá necesidad de continuar)?

Composición musical algorítmica: idea para una investigación

¿Por qué hay una disminución en el rendimiento de los modelos pre-entrenados?

¿Por qué son escasos los autoencoders escasos?

¿Qué enfoque debo tomar para manejar los datos de desequilibrio para crear un modelo de aprendizaje automático?

¿Cuáles son las principales diferencias entre TensorFlow y SciKit Learn?

¿Qué es apilar en el aprendizaje automático?

RNN para modelado de idiomas en Tensorflow. ¿Cómo puedo rellenar las secuencias si mi entrada está constituida por la incorporación de palabras?

¿Tiene sentido entrenar clasificador para cada clase?

Cómo seleccionar efectivamente un tamaño de lote óptimo para la actualización de parámetros de aprendizaje profundo, basado en las especificaciones de GPU