53

Todos los ejemplos que he visto de redes neuronales son para un conjunto fijo de entradas que funciona bien para imágenes y datos de longitud fija. ¿Cómo se manejan los datos de longitud variable como oraciones, consultas o código fuente? ¿Hay alguna manera de codificar datos de longitud variable en entradas de longitud fija y aún obtener las propiedades de generalización de las redes neuronales?¿Cómo se usan las redes neuronales cuando el número de entradas puede ser variable?

Respuesta

27

Por lo general, extrae características de los datos y las alimenta a la red. No es recomendable tomar solo algunos datos y alimentarlo a la red. En la práctica, el preprocesamiento y la elección de las características correctas decidirán sobre su éxito y el rendimiento de la red neuronal. Desafortunadamente, en mi humilde opinión se necesita experiencia para desarrollar un sentido para eso y no es nada que uno pueda aprender de un libro.

Resumiendo: "La basura, sale basura"

+22

¿Qué pasa con el caso en el que desea que la red neuronal extraiga las características y la alimente a otra red para su clasificación/interpretación? O desea que la red aprenda una gramática de un conjunto de ejemplos. En ambos casos, la red necesitaría procesar conjuntos de datos de longitud variable. –

+0

Hay momentos en los que desea una memoria asociativa bidireccional y el tamaño de los elementos a asociar es diferente. (nombre de la persona, imagen de la persona) –

0

No estoy del todo seguro, pero diría que use la cantidad máxima de entradas (por ejemplo, para palabras, digamos que ninguna palabra tendrá más de 45 caracteres (palabra más larga encontrada en un diccionario según wikipedia), y si se encuentra una palabra más corta, configure las otras entradas en un carácter de espacio en blanco.

O con datos binarios, configúrelo en 0. el único problema con este enfoque es si una entrada llena de espacios en blanco/ceros/lo que colisiona con una entrada de longitud completa válida (no es tanto un problema con las palabras como con los números)

18

Algunos problemas podrían resolverse mediante una red neuronal recurrente. Por ejemplo, es bueno para calcular la paridad en una secuencia de entradas.

El recurrent neural network for calculating parity tendría una sola función de entrada. Los bits se pueden alimentar con el tiempo. Su salida también se retroalimenta a la capa oculta. Eso permite aprender la paridad con solo dos unidades ocultas.

Una red neuronal de dos capas feed-forward normal requeriría 2 ** unidades ocultas sequence_length para representar la paridad. Esto limitation holds para cualquier arquitectura con solo 2 capas (por ejemplo, SVM).

+1

¿Es esto similar a un modelo de markov oculto que solo usa redes neuronales? –

+2

Es más similar a una red neuronal con alguna salida alimentada a la siguiente entrada. La historia sin importancia se olvidará con el tiempo. –

2

Supongo que una forma de hacerlo es agregar un componente temporal a la entrada (red neuronal recurrente) y transmitir la entrada a la red un fragmento a la vez (básicamente creando el equivalente de red neuronal de un analizador y analizador) esto permitiría que la entrada sea bastante grande, pero tendría la desventaja de que no habría necesariamente un símbolo de detención para separar diferentes secuencias de entrada entre sí (el equivalente de un período en las representaciones)

25

He estado allí, y enfrenté este problema La ANN se hizo para la longitud del vector de características fijas, al igual que muchos otros clasificadores como KNN, SVM, bayesiano, etc. es decir, la capa de entrada debe estar bien definida y no variada, esto es un problema de diseño. Sin embargo, algunos investigadores optan por agregar ceros para llenar el vacío faltante, personalmente creo que esta no es una buena solución porque esos ceros (valores irreales) afectarán los pesos a los que la red convergerá. Además, podría haber una señal real que termina con ceros.

ANN no es el único clasificador, hay más e incluso mejor, como el bosque aleatorio. este clasificador es considerado el mejor entre los investigadores, utiliza un número pequeño de características aleatorias, creando cientos de árboles de decisión usando el arranque de un empaquetamiento, esto podría funcionar bien, el número de características elegidas normalmente es el cuadrado del tamaño del vector de características. esas características son aleatorias. cada árbol de decisión converge hacia una solución, usando las reglas de la mayoría, la clase más probable elegirá en ese momento.

Otra solución es usar el DTW dinámico de deformación en el tiempo, o incluso mejor utilizar los modelos Hidden Markov HMM.

Otra solución es la interpolación, interpolación (compensar los valores perdidos a lo largo de la señal pequeña) todas las señales pequeñas con el mismo tamaño que la señal máxima, los métodos de interpolación incluyen y no están limitados a promediar, B-spline, cúbico .....

otra solución es utilizar el método de extracción de características de utilizar las mejores características (la más distintivos), esta vez los hacen tamaño fijo, los que incluyen el método PCA, LDA, etc.

otra solución es utilizar la selección de características (normalmente después de la extracción de características) una forma fácil de seleccionar las mejores características que brinden la mejor precisión.

eso es todo por ahora, si no funcionó para usted, contácteme.

1

Para usar una red neuronal en imágenes de diferentes tamaños, las imágenes mismas a menudo se recortan y se escalan hacia arriba o hacia abajo para ajustarse mejor a la entrada de la red. Sé que realmente no responde a su pregunta, pero quizás algo similar sería posible con otros tipos de entrada, ¿usaría algún tipo de función de transformación en la entrada?

Cuestiones relacionadas