¿Cómo se usa LSTM para la clasificación?

Primero, para dar un poco de contexto, recuerde que LSTM se utilizan como redes neuronales recurrentes (RNN).

Los RNN son redes neuronales que utilizan salidas anteriores como entradas.

Desenrollar la red neuronal recurrente a lo largo del tiempo (crédito: C. Olah).

Consideramos que los RNN tienen un tipo de dimensión interna, que será la dimensión de los vectores [math] h_i [/ ​​math]. Esta dimensión es constante en el tiempo.

Después de que uno alimente todas las entradas [math] x_i [/ ​​math] en el RNN, se supone que la última salida, [math] h_t [/ math], contiene información sobre toda la oración. Esto es teóricamente cierto, pero muestra debilidad por secuencias largas. Eso es lo que LSTM intenta resolver.


LSTM facilita la repetición de entradas sin mucha alteración. Esto no parece realmente interesante, pero de hecho permite mantener información importante durante mucho tiempo: no olvida la información solo por el tiempo (tenga en cuenta que él puede olvidarlo activamente).

El modo en que LSTM funciona en detalle está fuera del alcance de esta pregunta y no es relevante para la respuesta, pero podría sugerir el muy buen artículo de Cristopher Olah al respecto: Comprender las redes LSTM.


Clasificación con salida RNN

Como dije, RNN generalmente genera vectores de tamaño fijo. A partir de esto, una práctica común es agregar una capa de proyección, así como una capa softmax. La idea es:

  1. proyecte la salida de [math] rnn \ _size [/ math] (dimensión interna rnn) a [math] num \ _class [/ math] (número de clase de clasificación (también conocido como etiquetas) que tiene.
  2. Obtener una distribución de probabilidad. Una función softmax proyectará su vector de salida (resultado del punto anterior) en un vector de probabilidad, es decir, cada valor en [0,1] y la suma es igual a 1.

La proyección es una función lineal [matemática] f (x) = W x + b [/ matemática]

(donde x es la variable de entrada, W es una matriz aprendida (llamada ponderaciones ), ab vector aprendido (llamada sesgo )

Entonces obtienes una distribución de probabilidad sobre algunas clases a partir de tu entrada, ¿no suena como una clasificación?


Ejemplo: adivinar la siguiente palabra

Puede construir un modelo RNN que adivine la siguiente palabra dada las anteriores. Por lo tanto, tendrá tantas clases como palabras. Podemos tomar un vocabulario bastante medio como 10,000 palabras. Luego, por razones computacionales, es mejor que tomemos una dimensión RNN mucho más pequeña, como 200. Luego, su modelo procesa de la siguiente manera, para cada paso [math] i [/ math]:

  1. alimentar una palabra ([matemática] x_i [/ ​​matemática]), y la última salida ([matemática] h_ {i-1} [/ matemática] si> 0) al RNN
  2. Proyecte esas informaciones: [math] h_i [/ ​​math] es entonces un vector de 200 dimensiones
  3. proyecte este vector en nuestro espacio de clasificación: es decir, obtenga un vector de 10.000 dimensiones
  4. aplique softmax en él, la misma dimensión pero valores en [math] [0, 1] [/ math] y sum = 1

More Interesting

¿Son todos los problemas de programación cuadrática convexos?

He realizado el curso de aprendizaje automático de Andrew Ng pero no lo he programado. ¿Debo decir que tengo los conocimientos básicos?

¿Cómo utilizan los RNN estándar la información de los pasos de tiempo anteriores?

¿En qué se diferencia la investigación de Machine Learning en la academia de la investigación en la industria?

¿Tiene sentido entrenar clasificador para cada clase?

¿Tener un conocimiento profundo del aprendizaje por refuerzo cambia su perspectiva hacia la vida? ¿Cómo?

¿Cuáles son los algoritmos principales detrás de Google Translate?

Cómo explicar el aprendizaje automático y la minería de datos a personas no informáticas

¿Cuál es el lenguaje más utilizado para el aprendizaje automático en la industria?

¿Qué enfoque se recomienda para aprender Machine Learning?

¿El aprendizaje supervisado se usa más?

Cómo aprender y construir un chatbot inteligente basado en inteligencia artificial como Google Allo desde cero, con un mayor enfoque en el modelo de dominio cerrado basado en la recuperación y el aprendizaje de ML y NLP

¿Se pueden usar los modelos ocultos de Markov como clasificadores binarios? Si es así, ¿cómo?

Estoy usando Weka e implementé la ganancia de información forestal aleatoria usando Java. ¿Cuáles son algunos consejos sobre cómo imprimir cuántas funciones tiene después de aplicar la ganancia de información y cómo imprimir los nombres de las funciones y sus valores de ganancia de información en orden descendente (solo funciones de ganancia de información)?

¿Qué implica el e-Discovery?