artificial intelligence - pronosticos - ¿Cómo se usan las redes neuronales cuando el número de entradas puede ser variable?
redes neuronales para la prediccion (6)
Algunos problemas podrían ser resueltos por una red neuronal recurrente. Por ejemplo, es bueno para calcular la paridad en una secuencia de entradas.
La red neuronal recurrente para calcular la paridad tendría solo una función de entrada. Los bits podrían alimentarse 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 unidades ocultas 2 ** sequence_length para representar la paridad. Esta limitación se aplica a cualquier arquitectura con solo 2 capas (por ejemplo, SVM).
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?
He estado allí, y me enfrenté a 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 que falta, 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 y aún 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 usar modelos HMM de Hidden Markov.
Otra solución es la interpolación, interpolar (compensar los valores perdidos a lo largo de la señal pequeña) todas las señales pequeñas para ser del mismo tamaño que la señal máxima, los métodos de interpolación incluyen y no se limitan a promediar, B-spline, cúbico .... .
Otra solución es usar el método de extracción de características para usar las mejores características (las más distintivas), esta vez hacerlas de tamaño fijo, esos métodos incluyen PCA, LDA, etc.
Otra solución es usar la selección de características (normalmente después de la extracción de características), una manera fácil de seleccionar las mejores características que brinden la mejor precisión.
eso es todo por ahora, si ninguno de esos funcionó para usted, contácteme.
No estoy del todo seguro, pero yo diría que use la cantidad máxima de entradas (por ejemplo, para palabras, digamos que ninguna palabra tendrá más de 45 caracteres (la palabra más larga se encuentra en un diccionario según wikipedia), y si es más corta se encuentra la palabra, configure las otras entradas a un carácter de espacio en blanco.
O con datos binarios, establézcalo en 0. el único problema con este enfoque es si una entrada llena de espacios en blanco / ceros / lo que sea colisiona con una entrada de longitud completa válida (no tanto un problema con las palabras como con los números).
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?
Por lo general, extrae características de los datos y los alimenta a la red. No es recomendable tomar solo algunos datos y alimentarlos 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.
En resumen: "basura adentro, basura afuera"
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, crear el equivalente de la red neuronal de un lector y analizador) esto permitiría la la entrada es bastante grande, pero tendría la desventaja de que no necesariamente habría un símbolo de parada para separar las diferentes secuencias de entrada entre sí (el equivalente de un período en sentances)