Нейронная сеть случайных семян, влияющих на результаты - PullRequest
0 голосов
/ 26 октября 2018

Я играл с кодом из интересной статьи Джеймса МакКаффри о регрессии временных рядов ( download ).

Это, в основном, использует машинное обучение для генерации прогноза и прогноза данных авиакомпании.

Это мой график, созданный с использованием кода и данных из его статьи. Как видите, все работает нормально.

Проблема возникает, когда я пытаюсь связываться со случайной переменной. Он специально отсеивает объект System.Random с 0, как показано здесь: this.rnd = new System.Random(0); (в конструкторе NeuralNetwork). Программа использует переменную rnd только тогда, когда она присваивает начальные веса сети и когда она рандомизирует порядок данных для обработки. Начальное число должно быть независимым от данных (то есть обработанный порядок и назначенные случайные веса не должны влиять на результаты).

Однако обратите внимание на то, что происходит, когда я изменяю только строку this.rnd = new System.Random(0); на this.rnd = new System.Random(1);. Здесь я ничего не сделал, кроме как засеял объект System.Random с 1 вместо 0. Теперь посмотрим на результаты:

enter image description here

Он все еще может изучать и предсказывать данные, однако, прогноз совершенно неверный! Почему смена семян оказывает такое значительное влияние на результаты? Теоретически не должно иметь значения, какие данные заказа обрабатываются или каковы начальные веса, поскольку это является точкой сети, чтобы изменить смещение, пока оно не достигнет решения. Я что-то упускаю?

...