tipos redes oculta neuronales neuronal libro inteligencia funciones combativas capa bias artificial activacion algorithm neural-network prediction

algorithm - redes - Red neuronal y algoritmo(s), prediciendo el resultado futuro del pasado



redes neuronales libro pdf (3)

Estaba trabajando en un algoritmo, donde recibí información y me dieron resultados para ellos, y dado el resultado durante 3 meses (dar o recibir), necesito una forma de encontrar / calcular lo que podría ser el resultado futuro.
Ahora, este problema dado puede estar relacionado con la bolsa de valores, se nos dan ciertas restricciones y ciertos resultados, y tenemos que encontrar la próxima.
Me encontré con la predicción del mercado de valores de las redes neuronales, puedes buscarla en Google , o puedes leerla aquí , aquí y aquí .

Para comenzar a hacer el algoritmo, no pude determinar cuál debería ser la estructura de las capas.
La restricción dada es:

  • La salida siempre sería entera.
  • La salida siempre estará entre 1 y 100.
  • No hay una entrada exacta para decir, al igual que el mercado de valores, simplemente sabemos que el precio de las acciones fluctuaría por debajo de 1 y 100, por lo que podríamos (¿o no?) Considerar esto como la única entrada.
  • Tenemos registro de los últimos 3 meses (o más).

Ahora, mi primera pregunta es, ¿cuántos nodos tomo como entrada?

La salida es solo una, bien. Pero como dije, ¿debería tomar 100 nodos para la capa de entrada (dado que el precio de las acciones siempre sería entero y siempre sería por debajo de 1 y 100?)

¿Qué hay de la capa oculta? ¿Cuántos nodos hay? Digamos, si tomo 100 nodos allí también, no creo que entrenaría mucho a la red, porque lo que creo es que para cada entrada debemos tener en cuenta todas las entradas anteriores también.

Digamos que estamos calculando la salida para el primer día del cuarto mes, deberíamos tener 90 nodos en la capa oculta / intermedia (imaginando que cada mes es de 30 días para simplificar). Ahora hay dos casos

  • Nuestra predicción fue correcta y el resultado fue el mismo que predijimos.
  • Nuestra predicción falló, y el resultado fue diferente de lo que predijimos.

Cualquiera que sea el caso, ahora cuando estamos calculando la salida para el segundo día del 4to mes, necesitamos no solo esas 90 entradas, sino también el último resultado (y no la predicción, ¡sea lo mismo!) También, así que ahora tenemos 91 nodos en nuestra capa intermedia / oculta.

Y así sucesivamente, seguiría aumentando la cantidad de nodos cada día, AFAICT.

Entonces, mi otra pregunta es cómo definir / establecer el número de nodos en la capa oculta / intermedia si cambia dinámicamente.

Mi última pregunta es, ¿hay algún otro algoritmo particular por ahí (para este tipo de cosas / cosas) que no conozco? ¿Que debería usar en lugar de meterme con estas cosas de redes neuronales?

Por último, ¿hay algo que pueda extrañar que pueda hacerme (más bien, el algo que estoy haciendo) para predecir el resultado, quiero decir cualquier advertencia, o cualquier cosa que pueda hacer que salga mal que me podría estar perdiendo?


Este tipo de problema fue investigado especialmente por miles de personas que querían ganar el premio de 1M $ NetFlix .

Los envíos anteriores a menudo se basaban en K Neigbours más cercanos . Las presentaciones posteriores se realizaron mediante Descomposición de valores singulares , Máquinas de vectores de soporte y Descenso de gradiente estocástico . El ganador utilizó una combinación de varias técnicas.

Al leer los excelentes foros de la comunidad , obtendrá muchos conocimientos sobre los mejores métodos para predecir el futuro del pasado. También encontrarás un montón de código fuente para los diferentes métodos.

Curiosamente, las redes neuronales se abandonaron rápidamente, ya que no produjeron nada que valga la pena (y personalmente aún no he visto que una NN no trivial produzca nada de valor).

Si estás empezando, sugeriría SVD como primer camino; es bastante fácil de hacer y, a menudo, produce una comprensión sorprendente de los datos.

¡Buena suerte!


Estoy de acuerdo con Stan cuando dice

1) Debo decir que el problema es 99% sobre preprocesamiento de datos

He aplicado Neural Networks durante más de 25 años a diversas aplicaciones aeroespaciales, incluido el control de vuelo en helicóptero; la configuración del conjunto de datos de entrada / salida lo es todo; todo lo demás es secundario.

Estoy sorprendido, en el comentario de smirkman de que las Redes Neuronales se abandonaron rápidamente "ya que no produjeron nada que valga la pena", eso me dice que quienquiera que trabajara con Neural Networks tenía poca experiencia con ellas.

Dado que el tema analiza la predicción del mercado de valores de las redes neuronales, diré que lo he hecho funcionar. Los resultados de la prueba se pueden descargar desde mi sitio web en www.nwtai.com.

No revelo cómo se hizo, pero hay suficientes datos interesantes que deberían hacer que quieras explorar el uso de Neural Networks más en serio.


Hay mucho que contar como respuesta a tu pregunta. De hecho, su pregunta aborda el problema de la previsión de series de tiempo en general y la aplicación de redes neuronales para esta tarea. Estoy escribiendo aquí solo algunas de las claves más importantes, pero después de leer esto posiblemente debería profundizar en los resultados de Google para la time series prediction neural network . Hay muchos trabajos donde los principios están cubiertos en detalles. También existe una variedad de implementaciones de software (con códigos fuente) ( aquí hay solo uno de ejemplos con códigos en c ++ ).

1) Debo decir que el problema es el 99% sobre el preprocesamiento de datos y la elección de factores de entrada / salida correctos, y solo el 1% sobre el instrumento concreto que se utilizará, ya sean redes neuronales u otras. Solo como una nota al margen, las redes neuronales pueden implementar internamente la mayoría de otros métodos de análisis de datos. Por ejemplo, puede usar la red neuronal para el análisis de componentes principales (PCA) que está estrechamente relacionado con SVD, mencionado en otra respuesta.

2) Es muy raro que los valores de entrada / salida se ajusten estrictamente a una región específica. Los datos de la vida real se pueden considerar como ilimitados en valores absolutos (incluso si sus cambios parecen producir un canal, se puede descomponer en un momento), pero la red neuronal solo puede operar en condiciones estables. Esta es la razón por la que los datos se convierten normalmente en incrementos primero (calculando deltas entre i-th point e i-1, o tomando log de su relación). Sugiero que lo hagas con tus datos de todos modos, aunque declaras que está dentro de la región [0, 100]. Si no lo hace, la red neuronal muy probablemente degenerará a un predictor ingenuo llamado que produce un pronóstico con cada próximo valor igual al anterior.

Los datos se normalizan en [0, 1] o [-1, +1]. El segundo es apropiado para el caso de la predicción de series de tiempo donde +1 denota mover hacia arriba, y -1 - mover hacia abajo. Use la función de activación hypertanh para neuronas en su red.

3) Debe alimentar a NN con datos de entrada obtenidos de una sliding window de fechas. Por ejemplo, si tiene datos por un año y cada punto es un día, debe elegir el tamaño de la ventana, por ejemplo, un mes, y deslizarlo día a día, del pasado al futuro. El día justo en el límite derecho de la ventana es el resultado objetivo para NN. Este es un enfoque muy simple (hay mucho más complicado), lo menciono solo porque usted pregunta cómo manejar los datos que continuamente llegan. La respuesta es: no necesita cambiar / agrandar su NN todos los días. Simplemente use una estructura constante con un tamaño de ventana fijo y "olvide" (no proporcione al NN) el punto más antiguo. Es importante que no trates todos los datos que tienes como una sola entrada, sino que los dividas en muchos vectores pequeños y entrenes NN en ellos, para que la red pueda generalizar los datos y encontrar la regularidad.

4) El tamaño de la ventana deslizante es su tamaño de entrada NN. El tamaño de salida es 1. Debes jugar con el tamaño de capa oculta para encontrar un mejor rendimiento. Comience con un valor que entre entrada y salida, por ejemplo sqrt (in * out).

De acuerdo con las últimas investigaciones, las Redes Neuronales Recurrentes parecen funcionar mejor para las tareas de pronóstico de series de tiempo.