Por favor, explique la función seed() y su uso en el código, ya que no pude encontrar en el código donde se está utilizando .. (excepto que se utiliza dentro de OnStart() función, pero se puede comentar allí, sin ningún problema ni fallos en absoluto)
Aunque, si cambio el número de semilla de 42 a cualquier otro, muchas cosas en el entrenamiento y los resultados son diferentes.
¿Cómo es posible que comentar la función seed() en absoluto no afecte a los resultados, pero cambiar su valor inicial afecte a todos los resultados?
Seguro que me estoy perdiendo algún punto aquí, ya que no podía entender esas relaciones y sus efectos sobre los resultados. ¿Hay algo especial con el número "42"?
Gracias de antemano
......
El uso de la semilla es para la generación de números pseudoaleatorios, por lo que su uso es sólo para que los resultados sean reproducibles. La generación de la muestra depende de un generador de números aleatorios que es controlado por una semilla. Cada vez que se llama al comando (rand (), MathRand ()) se producen diferentes elementos de la muestra, porque la semilla del generador es modificada automáticamente por la función. En general, el usuario no tiene que preocuparse de este mecanismo. Pero si es necesario, se puede utilizar la función _RandomSeed para controlar el comportamiento del generador de números aleatorios. Esta función define el estado actual de la semilla que se cambia con cada generación posterior de números aleatorios. Así, para generar dos muestras idénticas, basta con utilizar un número para definir la semilla.
El uso del número 42 es una broma que se produce porque el número 42 es la masa atómica del calcio, 42 es número primario, un pseudo-perfecto y también es la máxima puntuación en las olimpiadas de matemáticas, Si doblamos una hoja de papel A4 por la mitad y la volvemos a doblar 42 veces, con las medidas añadidas sería posible llegar a la luna (al menos eso dicen, kkkkk), astrónomos de Cambridge descubrieron que 42 es el valor de una constante científica esencial - una que determina la edad del universo. Y lo más genial, en 1979 Douglas Adams, autor de "La guía del autoestopista galáctico", describe cómo una raza alienígena programa un ordenador llamado Pensamiento Profundo para dar la respuesta definitiva a "La vida, el universo y todo lo demás". Tras siete millones y medio de complejas ecuaciones y difíciles cálculos, devuelve la respuesta: 42, pero ¿por qué 42? Douglas Adams explicó una vez de dónde venía este número:
"La respuesta es muy sencilla. Era una broma. Tenía que ser un número, uno normal y corriente, pequeño, y elegí éste". Las representaciones binarias, la base 13, los monos tibetanos carecen totalmente de sentido. Me senté a la mesa, miré al jardín y pensé "42 funcionará" y escribí. Fin de la historia".
Estos y otros juegos en torno al número 42 hacen que se elija recurrentemente cuando vamos a fijar un valor para la semilla, pero en realidad puede ser cualquier número.
Nuevo artículo Multilayer Perceptron Machine with Backpropagation Algorithm ha sido publicado:
Por Jonathan Pereira
Hola Jonathan
He disfrutado leyendo tu artículo. Me ayudó mucho para llegar más lejos con la implementación de una red neuronal en MQL5.
En primer lugar... ¡Muchas gracias! Excelente artículo.
Creo que nos falta el archivo: Util.mqh.
Probablemente tiene la función Random.
¿Podrías incluirlo? O describir la función aleatoria dentro de él.
Gracias de nuevo. Estoy estudiando tu artículo con mucha atención.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Perceptrón Multicapa y Algoritmo de Retropropagación:
Recientemente, al aumentar la popularidad de estos dos métodos, se han desarrollado tantas bibliotecas en Matlab, R, Python, C++, etc., que reciben el conjunto de entrenamiento como entrada y construyen automáticamente una red neuronal apropiada para el supuesto problema. Vamos a entender cómo funciona un tipo básico de red neural, (perceptrón de una sola neurona y perceptrón multicapa), y un fascinante algoritmo encargado del aprendizaje de la red, (gradiente descendente y retropropagación). Estos modelos de red servirán como base para los modelos más complejos que existen hoy en día.
El descenso de gradientes es el proceso de minimizar una función siguiendo los gradientes de la función de costo.
Esto implica conocer la forma del costo, así como la derivada para que a partir de cierto punto conozcamos la pendiente y podamos movernos en tal dirección, por ejemplo, cuesta abajo hacia el valor mínimo.
En el aprendizaje automático, podemos usar una técnica -que evalúa y actualiza los pesos para cada iteración- llamada descenso de gradiente estocástico, para minimizar el error de un modelo en nuestros datos de entrenamiento.
La forma en que funciona este algoritmo de optimización es que cada instancia de entrenamiento se muestra al modelo de una en una. El modelo hace una predicción para una instancia de entrenamiento, se calcula el error y el modelo se actualiza para reducir el error para la próxima predicción.
Este procedimiento se puede utilizar para encontrar el conjunto de pesos en un modelo que dé como resultado el menor error para el modelo dentro de los datos de entrenamiento.
Autor: Jonathan Pereira