Introducción al aprendizaje profundo (62) Red neuronal recurrente - Red neuronal recurrente profunda

prefacio

El contenido principal proviene del enlace 1 del blog. Enlace 2 del blog. Espero que puedas apoyar mucho al autor.
Este artículo se usa para registros para evitar el olvido.

Redes neuronales recurrentes - Redes neuronales recurrentes profundas

cursos

Resumen: redes neuronales recurrentes


Actualizar estado oculto: ht = ϕ ( W hhht − 1 + W hxxt − 1 ) + bh h_t=\phi(W_{hh}h_{t-1}+W_{hx}x_{t-1})+b_hht=ϕ ( Wehht 1+Wh xXt 1)+bh
Exportar: ot = ϕ ( W hoht + bo ) o_t=\phi(W_{ho}h_t+b_o)ot=ϕ ( Whola _ht+bo)

¿Cómo obtener más no linealidad?

PLANA:No linealidad en las unidades

inserte la descripción de la imagen aquí
ht = ϕ ( W hhht − 1 + W hxxt − 1 ) + bh h_t=\phi(W_{hh}h_{t-1}+W_{hx}x_{t-1})+b_hht=ϕ ( Wehht 1+Wh xXt 1)+bh
ot = ϕ ( W hoht + bo ) o_t=\phi(W_{ho}h_t+b_o)ot=ϕ ( Whola _ht+bo)

Reemplazar ϕ \phiϕ

Más adentro

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Resumir

  • Las redes neuronales recurrentes profundas usan múltiples capas ocultas para una mayor no linealidad

cursos

Hasta ahora, solo hemos discutido las redes neuronales recurrentes con una capa oculta unidireccional. La forma en que las variables ocultas y las observaciones interactúan con la forma funcional específica es bastante arbitraria. Este no es un gran problema siempre que haya suficiente flexibilidad en el modelado de los tipos de interacción. Sin embargo, esto puede ser bastante desafiante para una sola capa. Anteriormente, en modelos lineales, resolvimos este problema agregando más capas. Y en las redes neuronales recurrentes, primero debemos descubrir cómo agregar más capas y dónde agregar la no linealidad adicional, por lo que este problema es un poco más complicado.

De hecho, podemos apilar varias capas de redes neuronales recurrentes, lo que da como resultado un mecanismo flexible a través de la composición de unas pocas capas simples. En particular, los datos pueden relacionarse con pilas de diferentes capas. Por ejemplo, es posible que deseemos mantener disponibles los macrodatos sobre las condiciones del mercado financiero (bajista o alcista), mientras que los microdatos solo capturan la dinámica temporal a más corto plazo.

La siguiente figura muestra una red neuronal recurrente profunda con N capas ocultas, cada estado oculto pasa continuamente al siguiente paso de tiempo de la capa actual y al paso de tiempo actual de la siguiente capa.
inserte la descripción de la imagen aquí

1 Dependencias funcionales

Podemos formalizar las dependencias funcionales en la arquitectura profunda, que LL describe en la figura anteriorConsta de L capas ocultas. Las discusiones posteriores se centran en los modelos clásicos de redes neuronales recurrentes, pero estas discusiones también son aplicables a otros modelos de secuencias.

Supongamos que en el paso de tiempo ttt tiene un pequeño lote de datos de entradaX t ∈ R n × d \mathbf{X}_t \in \mathbb{R}^{n \times d}XtRn × d (número de muestras:nnn , el número de entradas en cada muestra:ddd ). Al mismo tiempo,el lthl^\mathrm{th}yoª capa oculta (l = 1 , … , L l=1,\ldots,Lyo=1 ,,L)El estado oculto se establece enH t ( l ) ∈ R n × h \mathbf{H}_t^{(l)} \in \mathbb{R}^{n \times h}Ht( l )Rn × h (número de unidades ocultas:hhh ), la variable de la capa de salida se establece enO t ∈ R n × q \mathbf{O}_t \in \mathbb{R}^{n \times q}OtRn × q (Número de salidas:qqq)。 设置H t ( 0 ) = X t \mathbf{H}_t^{(0)} = \mathbf{X}_tHt( 0 )=Xt, el llEl estado oculto de la capa oculta l usa la función de activaciónϕ l \phi_lϕyo,则:
H t ( l ) = ϕ l ( H t ( l − 1 ) W xh ( l ) + H t − 1 ( l ) W hh ( l ) + bh ( l ) ) , \mathbf{H}_t ^{(l)} = \phi_l(\mathbf{H}_t^{(l-1)} \mathbf{W}_{xh}^{(l)} + \mathbf{H}_{t-1 }^{(l)} \mathbf{W}_{hh}^{(l)} + \mathbf{b}_h^{(l)}),Ht( l )=ϕyo( Ht( l - 1 )Wxh _( l )+Ht - 1( l )WS.S( l )+bh( l )) ,
donde, pesoW xh ( l ) ∈ R h × h \mathbf{W}_{xh}^{(l)} \in \mathbb{R}^{h \times h}Wxh _( l )Rh × h ,W hh ( l ) ∈ R h × h \mathbf{W}_{hh}^{(l)} \in \mathbb{R}^{h \times h}WS.S( l )Rh × h y sesgobh ( l ) ∈ R 1 × h \mathbf{b}_h^{(l)} \in \mathbb{R}^{1 \times h}bh( l )R1 × h es elllLos parámetros del modelo de las l capas ocultas.

Finalmente, el cálculo de la capa de salida se basa únicamente en el ll-ésimoEl estado oculto final de l
capas ocultas: O t = H t ( L ) W hq + bq , \mathbf{O}_t = \mathbf{H}_t^{(L)} \mathbf{W}_{hq} + \mathbf{b}_q,Ot=Ht( L )Wh q+bq,
donde, el pesoW hq ∈ R h × q \mathbf{W}_{hq} \in \mathbb{R}^{h \times q}Wh qRh × q y sesgobq ∈ R 1 × q \mathbf{b}_q \in \mathbb{R}^{1 \times q}bqR1 × q son los parámetros del modelo de la capa de salida.

Al igual que el perceptrón multicapa, el número de capas ocultas LLL y el número de unidades ocultashhh es un hiperparámetro. Es decir, pueden ser ajustados por nosotros. Además, reemplazaH t ( l ) = ϕ l ( H t ( l − 1 ) W xh ( l ) + H t − 1 ( l ) W hh ( l ) + bh ( l ) ) , \mathbf{H}_t ^{(l)} = \phi_l(\mathbf{H}_t^{(l-1)} \mathbf{W}_{xh}^{(l)} + \mathbf{H}_{t-1 }^{(l)} \mathbf{W}_{hh}^{(l)} + \mathbf{b}_h^{(l)}) ,Ht( l )=ϕyo( Ht( l - 1 )Wxh _( l )+Ht - 1( l )WS.S( l )+bh( l )) , el estado oculto en , se puede obtener fácilmente en una red neuronal recurrente cerrada profunda o en una red neuronal profunda de memoria a corto plazo.

2 Implementación concisa

Muchos de los detalles lógicos necesarios para implementar redes neuronales recurrentes multicapa están disponibles en la API de alto nivel. Para simplificar, solo demostramos implementaciones usando tales funciones integradas. Tomando el modelo de red LSTM como ejemplo, el código es muy similar al código que usamos anteriormente en la sección LSTM, la única diferencia es que especificamos el número de capas en lugar de usar el valor predeterminado de una sola capa. Como de costumbre, comenzamos cargando el conjunto de datos.

import torch
from torch import nn
from d2l import torch as d2l

batch_size, num_steps = 32, 35
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)

Las decisiones arquitectónicas, como elegir hiperparámetros, también son muy similares a las de la sección LSTM. Dado que tenemos diferentes fichas, se elige el mismo número tanto para la entrada como para la salida, es decir vocab_size, . El número de unidades ocultas sigue siendo 256. La única diferencia es que ahora pasamos num_layersel valor para establecer el número de capas ocultas.

vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
device = d2l.try_gpu()
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)

3 Entrenamiento y Predicción

Dado que el modelo de red LSTM se usa para instanciar dos capas, la velocidad de entrenamiento se reduce considerablemente.

num_epochs, lr = 500, 2
d2l.train_ch8(model, train_iter, vocab, lr*1.0, num_epochs, device)

producción:

perplexity 1.0, 224250.2 tokens/sec on cuda:0
time travelleryou can show black is white by argument said filby
travelleryou can show black is white by argument said filby

4 Resumen

  • En las redes neuronales recurrentes profundas, la información del estado oculto se pasa al siguiente paso de tiempo de la capa actual y al paso de tiempo actual de la siguiente capa.

  • Hay muchos sabores diferentes de redes neuronales recurrentes profundas, como redes de memoria a corto plazo, unidades recurrentes cerradas o redes neuronales recurrentes clásicas. Estos modelos están cubiertos en las API de alto nivel de los marcos de aprendizaje profundo.

  • En general, las redes neuronales recurrentes profundas requieren un ajuste extenso de los parámetros (como la tasa de aprendizaje y la poda) para garantizar una convergencia adecuada, y la inicialización del modelo también requiere cuidado.

Supongo que te gusta

Origin blog.csdn.net/qq_52358603/article/details/128376643
Recomendado
Clasificación