Как ускорить обучение нейронной сети
Сегодня нейросеть считается одним из наиболее перспективных направлений для создания искусственного интеллекта. Именно нейросетью является мозг человека, поэтому, чтобы приблизиться к его мощностям, большинство разработчиков идут по пути конструирования искусственных нейросетей.
Каждая такая сеть способна обучаться, в этом главное её достоинство для разработчика. Но и главный источник проблем, потому что обучить нейросеть намного сложнее, чем её построить.
На пути создания подобной системы приходится проходить два этапа:
- Структурный: выбор модели, структуры и алгоритма работы нейросети.
- Обучающий: сеть тестируется и настраивается, пока не избавится от ошибок в процессе работы.
На первом этапе приходится делать выбор между однослойной и многослойной сетью, а также между прямой (не допускающей обратного направления сигнала) и рекуррентной, которая это разрешает.
Однако обычно больше всего сложностей на этапе настройки. Если сеть не настраивается, то есть смысл подумать о выборе другой её структур (возвращаемся к первому этапу).
Достаточность результата как путь к уменьшению времени обучения
Настройка нейросети (обучение) проводится до тех пор, пока такая система не перестанет давать ошибки. Однако если стремиться к идеальному результату, то нужно понимать, что процесс может затянуться на нецелесообразно долгое время.
Если нейросеть сложная, а проходящие через неё объекты имеют много параметров, то нужно добиться отсутствия ошибки в распознавании каждого из них. Для этого после каждого «цикла», когда система приходит к отличающемуся от нужного результату, её корректируют, чтобы уменьшить ошибку. Затем требуется повторить все предыдущие циклы и убедиться, что внесение изменений не повлияло на обработку тех сигналов, под которые она уже была скорректирована ранее.
Если объектов тысяча, а на обработку каждого требуется 10 минут, то мы получаем уже почти сутки чистого времени. А поскольку их требуется «прогонять» десятки и сотни раз, то в итоге получаем весьма пессимистичный прогноз по затратам времени на обучение.
Однако если не ставить таких целей, как отсутствие ошибок вообще, то можно принять некое отклонение результата от нужного значения. Даже уменьшение точности с 98% до 97% уже позволяет заметно снизить время обучения. Если же «добавить» лишние 5% погрешности, то время на обучение может быть значительно сокращено. Это относится ко всем методам обучения, включая и метод обратного распространения ошибки.
Таким образом, прежде чем приступать к обучению нейросети, полезно понять, какое количество ошибок можно будет принять за достаточный результат. Это определяется, исходя из практического назначения нейросети. Как только такой результат будет достигнут, можно начинать использование сети по её назначению, избегая при этом и опасности переобучения – «затачивания» системы под похожие сигналы, что приводит к большим ошибкам, если подавать сигналы с большим уровнем отличия.
В принципе, используя нейронные сети, при разработке алгоритмов возможно реализовать широкий набор торговых идей и тогда она будет работать как полноценная торговая система, портфель стратегий, к которому уже многие привыкли, кто занимается системным трейдингом. Жалко, что до этого ещё далеко.
Почему же далеко, уже есть работающие нейросети. Их можно использовать и обучать. Пусть они не все виды торговых техник смогут принимать, но какую-то часть точно. Зато они также, как и любой робот торгуют без эмоций, а это порой играет важную роль.