.
Дневник разработчика торговой стратегии. Шаг 22. Тестирование передаточных функций нейросети
Автор megabax   
14.06.2014 г.
New Page 1

Дневник разработчика торговой стратегии. Шаг 22. Тестирование передаточных функций нейросети

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


На прошлом шаге мы проводили некоторые эксперименты. С тех пор программа тестирования стратегий была немного улучшена, см. Тесты торговых стратегий на C#. Урок 26. В нейросеть добавили передаточные функции. Сегодня продолжаем эксперименты.

Сначала проверим обучаемость однонейронной сети на различных передаточных функциях. Для этих целей добавим в проект еще одну нейросеть и сохраним его. Для чистоты эксперимента нам надо будет восстанавливать нейронную сеть в исходное состояние (когда весовые коэффициенты инициализированы случайными значениями):

Дневник разработчика торговой стратегии. Шаг 22. Тестирование передаточных функций нейросети

Берем нейросеть с передаточной функций "Пороговая", пороговое значение 1. Нейронная сеть обучилась за 32 итерации:

Дневник разработчика торговой стратегии. Шаг 22. Тестирование передаточных функций нейросети

Пороговое значение при этом уменьшилось до 0.05:

Дневник разработчика торговой стратегии. Шаг 22. Тестирование передаточных функций нейросети

Пробуем пороговую трехуровневую функцию, пороги стандартные, -1 и 1. Смотрим результат...

...

....И создаем обработчик события изменения значения этого поля:

        private void nudCandlesCount_ValueChanged(object sender, EventArgs e)

        {

            strategy.study_count = Convert.ToInt32(nudCandlesCount.Value);

            foreach (Neuron neuron in strategy.net.layers[0].neurons)

            {

                neuron.set_weights_count(strategy.study_count*4);

            }

            redraw_grid();

        }

При изменении значения количество входных свечей нам так же нужно изменить количество весовых коэффициентов нейронов входного слоя. Оно равно количество входных свечей, умноженное на 4 (так как у нас 4 поля open, high, low и close).

Как показало тестирование, если мы уменьшили количество входных свечей до 10 (было 30), то у нас по прежнему нейросеть обучается на синусоиде с периодом 10, но уже не может обучиться на синусоиде с белым шумом и периодом 200.

Но у нас есть еще один параметр, с которым можно поиграться...

...

Уменьшили количество входных свечей до 5, а количество свечей в обучающей матрице до 10:

Дневник разработчика торговой стратегии. Шаг 22. Тестирование передаточных функций нейросети

...

Последнее обновление ( 14.06.2014 г. )