Cómo manejar el cambio de la longitud del vector de entrada con redes neuronales

9

Quiero entrenar una red neuronal con una secuencia de caracteres como un vector de entrada. Los ejemplos de aprendizaje tienen una longitud diferente y por esta razón no sé cómo representarlos.

Digamos que tengo dos ejemplos de secuencias, aquí los nombres:

john doe
maurice delanoe

El primer ejemplo es de longitud 8, el segundo es de longitud 15.

¿Hay alguna manera de aprender ambos ejemplos? Lo que significa usar un vector de entrada de tamaño 8 y 15 en el mismo sistema de aprendizaje.

Gracias por tu ayuda !

mazieres
fuente

Respuestas:

4

Hay tres estrategias generales que se me ocurren para NN con diferentes tamaños de entrada:

  1. Preprocese las entradas para guardar el mismo tamaño. Por ejemplo, las personas a menudo cambian el tamaño de las imágenes (ignorando la relación de aspecto) a una resolución cuadrada estándar para NN. En el caso del lenguaje, puede convertir todas las palabras en una representación simbólica (por ejemplo, "juan" = 1, "james" = 2, "maurice" = 3, "kelly" = 4, "doe" = 5) si eso tiene sentido en su solicitud
  2. Usa una ventana corrediza. La red puede ver una porción de tamaño fijo de la entrada, y luego desliza la ventana por un paso fijo y la ejecuta nuevamente (desde cero), repite hasta llegar al final y luego combina todas las salidas de alguna manera.
  3. Igual que # 2, pero usando una red neuronal recurrente para que la red tenga algún estado interno que se transfiera entre cada zancada. Así es como los NN procesan el audio de voz, por ejemplo. Obviamente, este es un cambio más dramático en la arquitectura que las otras opciones, pero para muchas tareas de lenguaje esto puede ser necesario (si tiene entradas largas y necesita combinar información a través de la cadena de una manera complicada).
Chris
fuente