Procesamiento del lenguaje natural: creación de una red neuronal bidireccional recurrente

La dirección en la que leemos oraciones es unidireccional, pero cuando se recibe nueva información, el cerebro puede volver rápidamente al contenido anterior del texto. Los seres humanos pueden procesar información que no se presenta en el mejor orden. Sería genial si pudiéramos permitir que el modelo cambie entre entradas y salidas. Aquí es donde entra la red neuronal bidireccional recurrente.

La idea básica: coloque dos RNN uno al lado del otro, pase la entrada a uno de los RNN como la entrada de un RNN normal unidireccional y pase la misma entrada del reverso al otro RNN, como se muestra en la figura, luego En cada momento, las salidas de estas dos redes se empalman juntas como la entrada del momento correspondiente (mismo término de entrada) en la otra red. Después de obtener la salida en el último momento de la entrada, la concatenamos con la salida generada por el mismo término de entrada en el primer momento de la red inversa.

Inserte la descripción de la imagen aquí
Beneficios:
No solo se puede predecir y clasificar el texto, sino que también se puede modelar el idioma en sí y cómo se usa. Con él, podemos generar oraciones completamente nuevas, no solo imitando el texto que el modelo ha visto antes.

Código:

from keras.models import Sequential
from keras.layers import SimpleRNN
from keras.layers.wrappers import Bidirectional

num_neurons = 10
maxlen = 100
embedding_dims = 300

model = Sequential()
model.add(Bidirectional(SimpleRNN(
    num_neurons, return_sequences=True), input_shape=(maxlen, embedding_dims)))

Supongo que te gusta

Origin blog.csdn.net/fgg1234567890/article/details/113360020
Recomendado
Clasificación