Por lo que puedo decir, las redes neuronales tienen un número fijo de neuronas en la capa de entrada.
Si las redes neuronales se usan en un contexto como PNL, las oraciones o bloques de texto de diferentes tamaños se alimentan a una red. ¿Cómo se concilia el tamaño de entrada variable con el tamaño fijo de la capa de entrada de la red? En otras palabras, ¿cómo se hace que dicha red sea lo suficientemente flexible como para manejar una entrada que puede ser desde una palabra hasta varias páginas de texto?
Si mi suposición de un número fijo de neuronas de entrada es incorrecta y se agregan / eliminan nuevas neuronas de entrada de la red para que coincidan con el tamaño de entrada, no veo cómo se pueden entrenar.
Doy el ejemplo de PNL, pero muchos problemas tienen un tamaño de entrada inherentemente impredecible. Estoy interesado en el enfoque general para lidiar con esto.
Para las imágenes, está claro que puede subir / bajar la muestra a un tamaño fijo, pero, para el texto, esto parece ser un enfoque imposible ya que agregar / eliminar texto cambia el significado de la entrada original.
Respuestas:
Tres posibilidades vienen a la mente.
Lo más fácil es el relleno cero . Básicamente, toma un tamaño de entrada bastante grande y simplemente agrega ceros si su entrada concreta es demasiado pequeña. Por supuesto, esto es bastante limitado y ciertamente no es útil si su entrada varía desde unas pocas palabras hasta textos completos.
Los NN recurrentes (RNN) son un NN muy natural para elegir si tiene textos de diferentes tamaños como entrada. Introduce palabras como vectores de palabras (o incrustaciones) solo una tras otra y se supone que el estado interno del RNN codifica el significado de la cadena completa de palabras. Este es uno de los documentos anteriores.
Otra posibilidad es usar NN recursivos . Esto es básicamente una forma de preprocesamiento en el que un texto se reduce de forma recursiva a un número menor de vectores de palabras hasta que solo quede uno: su entrada, que se supone que codifica todo el texto. Esto tiene mucho sentido desde el punto de vista lingüístico si su entrada consiste en oraciones (que pueden variar mucho en tamaño), porque las oraciones están estructuradas de manera recursiva. Por ejemplo, la palabra vector para "el hombre" debe ser similar a la palabra vector para "el hombre que confundió a su esposa con un sombrero", porque las frases nominales actúan como sustantivos, etc. A menudo, puede usar información lingüística para guiar tu recursividad en la oración. Si quieres ir más allá del artículo de Wikipedia, este es probablemente un buen comienzo .
fuente
Otros ya mencionaron:
entonces agregaré otra posibilidad: usar convoluciones diferentes números de veces dependiendo del tamaño de la entrada. Aquí hay un excelente libro que respalda este enfoque:
Tomado de la página 360. Puede leerlo más para ver otros enfoques.
fuente
En PNL tiene un orden inherente de las entradas, por lo que los RNN son una opción natural.
Para entradas de tamaño variable donde no hay un orden particular entre las entradas, se pueden diseñar redes que:
La estructura tiene el siguiente aspecto:
Se han utilizado redes similares para aprender las relaciones entre objetos ( arxiv: 1702.05068 ).
Aquí se proporciona un ejemplo simple de cómo aprender la varianza muestral de un conjunto de valores de tamaño variable (descargo de responsabilidad: soy el autor del artículo vinculado).
fuente