Presentación

La gente no comienza su intuición sin preparación. Al leer este artículo, verá que cada palabra depende de su comprensión de palabras pasadas. No se descarta todo y se empieza a pensar sin ninguna preparación una vez más. Sus consideraciones tienen diligencia.

Las redes neuronales convencionales no pueden hacer esto, y parece ser una deficiencia significativa. Por ejemplo, imagina que necesitas organizar qué tipo de ocasión ocurre en cada punto de la película. Es confuso cómo un sistema neural convencional podría utilizar su pensamiento sobre las ocasiones pasadas en la película para aconsejar otras posteriores.

Las redes neuronales repetitivas abordan este tema. Son sistemas con círculos en ellos, permitiendo que los datos perduren.

En el esquema anterior, un trozo del sistema neural A, ve alguna información xt y produce un valor ht. Un círculo permite que los datos se pasen comenzando con una etapa del sistema y luego a la siguiente. Un sistema neural intermitente puede considerarse como numerosos duplicados de un sistema similar, cada uno de los cuales pasa un mensaje a su sucesor. Piense en lo que ocurre en el caso de que desenrollemos el círculo:

Esta naturaleza similar a una cadena descubre que los sistemas neuronales repetitivos se identifican personalmente con agrupaciones y registros. Son la ingeniería habitual de los sistemas neuronales para utilizar para tal información. Además, ¡seguro que se utilizan! En los últimos dos años, ha habido logros alucinantes aplicando los RNN a una variedad de temas: reconocimiento del discurso, visualización del lenguaje, interpretación, subtitulado de imágenes… La lista continúa.

A pesar de que no es obligatorio, sería útil que el usuario comprendiera lo que son los WordVectores. Aquí está mi anterior blog sobre Word2Vec, un procedimiento para hacer vectores de palabras.
¿Qué son los sistemas neuronales repetitivos

Una limitación evidente de los sistemas neurales de vainilla (y además de los sistemas convolucionales) es que su interfaz de programación está excesivamente obligada: reconocen un vector de tamaño fijo como información (por ejemplo, una imagen) y producen un vector de tamaño fijo como rendimiento (por ejemplo, probabilidades de diversas clases). No sólo eso: estos modelos llevan a cabo esta cartografía utilizando una medida fija de avances computacionales (por ejemplo, el número de capas en el modelo).

La explicación central de que las redes repetitivas son tanto más energizantes es que nos permiten trabajar sobre sucesiones de vectores: Disposiciones en la información, el rendimiento, o en el caso más amplio ambos.

Un par de modelos pueden hacer esto cada vez más concreto:

Cada forma cuadrada es un vector y los pernos hablan de capacidades (por ejemplo, el duplicado del marco). Los vectores de información están en rojo, los vectores de rendimiento están en azul y los vectores verdes mantienen el estado del RNN (más sobre esto pronto). De izquierda a derecha:

Método de manejo sin RNN, desde la contribución de tamaño fijo hasta el rendimiento de tamaño fijo (por ejemplo, agrupación de imágenes).

Rendimiento de agrupación (por ejemplo, el subtitulado de imágenes toma una imagen y produce una frase de palabras).

Agrupación de la aportación (por ejemplo, investigación de opiniones en la que se delega una frase dada comunicando suposiciones positivas o negativas)

La información sobre la sucesión y el rendimiento de los arreglos (por ejemplo, la interpretación mecánica: un RNN examina una frase en inglés y después produce una frase en francés).

Información de agrupación y rendimiento (por ejemplo arreglo de video donde deseamos marcar cada cuadro del video).

Obsérvese que para cada situación no hay imperativos preestablecidos sobre las sucesiones de longitudes a la luz del hecho de que el cambio repetitivo (verde) es fijo y puede aplicarse el mismo número de veces que queramos.
Cálculo del RNN

Entonces, ¿cómo logran esto?

Reconocen un vector de información x y dan un vector de rendimiento y. Sin embargo, urgentemente la sustancia de este vector de rendimiento se ve afectada no sólo por la información que acabas de reforzar, sino también por toda la historia de las fuentes de datos que has sostenido antes. Compuesto como una clase, la interfaz de programación del RNN comprende un trabajo en solitario:

rnn = RNN()

y = rnn.step(x) # x es un vector de información, y es el vector de rendimiento del RNN

La clase de RNN tiene un expreso interior que tiene la oportunidad de refrescar cada vez que se llama a un paso. En el caso menos difícil, este estado comprende un solitario vector envuelto h. Aquí está una ejecución del trabajo de progresión en un RNN de vainilla: El estado cubierto self.h se introduce con el vector cero. El trabajo np.tanh (digresión hiperbólica) actualiza una no linealidad que aplasta las iniciaciones en el rango [-1, 1].
clase RNN:

def step(self, x):

actualizar el estado oculto

self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x))

computar el vector de salida

y = np.dot(self.W_hy, self.h)

Devuelve y
Lo anterior especifica el paso adelante de un RNN de vainilla. Los parámetros de este RNN son las tres matrices –
W_hh : Matriz basada en el estado oculto anterior
W_xh : Matriz basada en la entrada de corriente
W_hy : Matriz basada entre el estado oculto y la salida
Así que como funciona

Hay dos términos dentro del tanh: uno depende del estado de amortajamiento pasado y otro depende de la información actual. En numpy np.dot es aumento de la red. Los dos intermediarios colaboran con la expansión, y después son aplastados por el tanh en el vector del nuevo estado.
La notación matemática para la actualización del estado oculto es –

donde el tanh se aplica de forma elemental.
Introducimos las redes del RNN con números irregulares y la mayor parte del trabajo durante la preparación va en la búsqueda de las redes que ofrecen ascenso a la conducta seductora, como se estima con algún trabajo desafortunado que comunica su inclinación a qué tipo de rendimientos le gustaría encontrar a la luz de sus sucesiones de información x
Encontraremos en una pieza, que los RNNs unen el vector de información con su vector de estado con una capacidad fija (aún aprendida) para entregar otro vector de estado.
Ahora, profundizando…
y1 = rnn1.paso(x)
y = rnn2.step(y1)
Al final del día, tenemos dos enfermeras diplomadas separadas: Un RNN está aceptando los vectores de información y el segundo RNN está obteniendo el rendimiento del primer RNN como su información. Pero ninguno de estos RNNs sabe o se preocupa – es todo, sólo vectores que entran y salen, y unos pocos ángulos que recorren cada módulo durante la retropropagación.

Me gustaría hacer referencia rápidamente a una gran parte de nosotros que utiliza un plan marginalmente inesperado en comparación con lo que exhibí anteriormente llamado una organización de memoria larga y momentánea (LSTM). La LSTM es un tipo específico de sistema intermitente que funciona marginalmente mejor, inferible a partir de sus condiciones de actualización más dominantes y de algunos elementos de retropropagación atractivos. No entraré en detalles, pero todo lo que he dicho sobre las RNNs permanece precisamente equivalente, con la excepción de que la estructura científica para procesar la actualización (la línea self.h = … ) se vuelve algo más enrevesada. A partir de aquí utilizaré las expresiones “RNN/LSTM” a la inversa, pero todos los exámenes de este post utilizan un LSTM.