- Оригинальный адрес:A Guide For Time Series Prediction Using Recurrent Neural Networks (LSTMs)
- Оригинальный автор:Neelabh Pant
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:haiyang-tju
- Корректор:TrWestdoor, yzrds
Использование сетей с долгой краткосрочной памятью (LSTM) для прогнозирования будущих изменений обменного курса валюты
StatsbotКоманда опубликовала статью оОбнаружение аномалий с использованием анализа временных рядовстатья. Сегодня мы обсудим использование моделей долговременной кратковременной памяти (LSTM) для прогнозирования временных рядов. Мы попросили специалиста по данным Нилаба Панта поделиться своим опытом использования рекуррентных нейронных сетей для прогнозирования изменений обменного курса.
Поскольку я индиец, живущий в США, между моей семьей и мной существует постоянный поток денег. Если доллар на рынке укрепится, то индийская рупия (INR) упадет, поэтому индиец будет использовать больше рупий для покупки доллара. Если доллар слабеет, вы потратите меньше рупий, чтобы купить тот же доллар.
Если вы можете предсказать, какой будет цена доллара завтра, это поможет вам принять решение, что очень важно для минимизации риска и максимизации вознаграждения. Глядя на преимущества нейронных сетей, особенно рекуррентных нейронных сетей, я подумал о прогнозировании обменного курса доллара США и индийской рупии.
Существует множество способов прогнозирования обменных курсов, например:
- Паритет покупательной способности (ППС), который учитывает инфляцию и вычисляет разницу в инфляции.
- Метод относительной экономической мощности, который учитывает экономический рост различных стран для прогнозирования тенденции обменных курсов.
- Эконометрическая модель— это еще один широко используемый метод прогнозирования обменного курса, который можно настроить на основе факторов или атрибутов, которые прогнозист считает важными. Такими факторами или атрибутами могут быть такие характеристики, как разница в процентных ставках, темпы роста ВВП и темпы роста доходов, которые существуют между странами.
- модель временных рядовОн основан исключительно на прошлых изменениях поведения и ценовых моделях для прогнозирования будущих цен, соответствующих обменному курсу.
В этой статье мы покажем вам, как использовать машинное обучение для анализа временных рядов, чтобы прогнозировать будущие изменения обменного курса.
проблема последовательности
Начнем с проблемы последовательности. Простейшие задачи машинного обучения, связанные с последовательностями, — это задачи «один к одному».
один на один
В этом случае у модели есть только одни входные данные или входной тензор, и модель генерирует соответствующий прогноз на основе заданных входных данных. В эту категорию попадают линейная регрессия, классификация и классификация изображений с использованием сверточных сетей. Расширьте это, чтобы позволить модели использовать старые значения входов и выходов.
Это проблема один ко многим. Проблема «один ко многим» начинается так же, как и проблема «один к одному», когда модель имеет один вход и производит один выход. Однако выходные данные модели теперь возвращаются в модель в качестве новых входных данных. Теперь модель может генерировать новый вывод, и мы можем продолжать цикл до бесконечности. Теперь вы понимаете, почему они называются рекуррентными нейронными сетями.
один ко многим
Задачи последовательности решаются с помощью рекуррентных нейронных сетей, поскольку все они могут быть соединены в направленный цикл. Другими словами, они могут поддерживать состояние от одной итерации к другой, используя свои собственные выходные данные в качестве входных данных для следующего шага. С точки зрения программирования это похоже на запуск фиксированной программы с определенными входными данными и некоторыми внутренними переменными. Если мы поместим это на временную шкалурасширять, простейшую рекуррентную нейронную сеть можно рассматривать как полносвязную нейронную сеть.
RNN развернулся на временной шкале
В этом одномерном случае участвуют только два веса. Весаuумножить текущий вводxt, а другой весwУмножить предыдущий выводyt-1. Эта формула аналогична методу экспоненциально взвешенного скользящего среднего (EWMA), который объединяет прошлые выходные значения с текущими входными значениями.
Глубокая рекуррентная нейронная сеть может быть построена путем простого объединения блоков нейронной сети. Простая рекуррентная нейронная сеть работает только с кратковременной памятью. Если у нас есть потребность в долговременной памяти, она сочтет ее принципиально неадекватной для этого.
долговременная нейронная сеть
Как мы уже говорили, простая рекуррентная сеть страдает от фундаментальной проблемы, заключающейся в том, что она не захватывает долгосрочные зависимости в последовательности. Создаваемые нами RNN включают в себя отслеживание длинных последовательностей слов при анализе текста и ответах на вопросы, так что это будет проблемой.
В конце 1990-х гг.LSTM был предложен Зеппом Хохрайтером и Юргеном Шмидхубером., используемые для замены методов обучения последовательностей в RNN, скрытых марковских моделях и многих других приложениях, по сравнению с их LSTM, которые нечувствительны к длине временного интервала.
Структура сети LSTM
Модель представляет собой операционную единицу, которая включает в себя несколько основных операций. LSTM имеют внутреннюю переменную состояния, которая передается от одного устройства к другому иОперационная дверьмодифицировать.
- Забытые ворота
Используйте сигмовидный слой, чтобы получить предыдущий узел времениt-1Выходной и текущий временной узелt, объединить их в тензор, а затем применить после него линейное преобразование. После сигмовидной функции активации выходом вентиля забывания является значение от 0 до 1. Это значение будет умножено на внутреннее состояние, поэтому его называют воротами забвения. еслиft=0, то полностью забыть предыдущее внутреннее состояние, еслиft=1, пройдет без изменений.
- входные ворота
Входной вентиль принимает предыдущий выход и новый вход и передает их другому сигмовидному слою. Входной вентиль также возвращает значение от 0 до 1. Затем значение, возвращаемое входным вентилем, умножается на выход слоя-кандидата.
Этот слой смешивает входные данные с выходными данными предыдущего слоя, затем применяет активацию гиперболического тангенса, возвращая вектор-кандидат для добавления к внутреннему состоянию.
Внутренние правила обновления состояния следующие:
Предыдущее состояние умножается на выходной сигнал вентиля забывания и добавляется к новым кандидатам, разрешенным выходным вентилем.
- выходные ворота
Выходной вентиль контролирует, сколько внутреннего состояния передается на выход, и он работает как другие вентильные структуры.
Три структуры вентилей, описанные выше, имеют независимые веса и смещения, поэтому сети необходимо узнать, сколько прошлых выходных данных сохранить, сколько текущих входных данных сохранить и сколько внутреннего состояния передать на выход.
В рекуррентную нейронную сеть необходимо вводить не только входные данные текущей сети, но и данные о состоянии сети в предыдущий момент. Например, если я скажу: «Эй! Со мной что-то случилось, пока я вел машину», а затем какая-то часть вашего мозга начнет щелкать выключателем и говорить: «О, это история, которую рассказал мне Нилаб, главный герой история. Это Нилабх, что-то случилось по дороге». Теперь вы сохраните часть сообщения предложения, которое я только что сказал вам. Когда вы слушаете, как я произношу другие предложения, чтобы понять всю историю, вы должны помнить информацию из предыдущего предложения.
Другой пример — использование рекуррентных нейронных сетей дляобработка видео. То, что происходит в текущем кадре, сильно зависит от содержимого предыдущего кадра. Со временем рекуррентная нейронная сеть должна научиться политике того, что сохранять, сколько сохранять из прошлых данных и сколько сохранять из текущего состояния, что делает ее более мощной, чем простая нейронная сеть с прямой связью.
прогнозирование временных рядов
Впечатленный преимуществами рекуррентных нейронных сетей, я решил использовать их для прогнозирования обменного курса доллара США и индийской рупии. Набор данных, используемый в этом проекте, представляет собой данные об обменном курсе со 2 января 1980 года по 10 августа 2017 года. Позже я предоставлю ссылку, чтобы загрузить этот набор данных и поэкспериментировать.
Таблица 1 Примеры наборов данных
Набор данных показывает стоимость 1 доллара в рупиях. Со 2 января 1980 г. по 10 августа 2017 г. у нас всего 13730 записей.
Доллар США в INR
Цена рупии на уровне 1 доллара росла в течение всего периода. Мы видим, что экономика США резко упала в период между 2007 и 2008 годами, в основном из-за Великой рецессии того периода. Мировые рынки обычно переживали рецессию в конце 2000-х и начале 2010-х годов.
Этот период не был удачным для развитых экономик мира, особенно Северной Америки и Европы (включая Россию), которые уже находятся в глубоком спаде. Многие новые страны с развитой экономикой пострадали гораздо меньше, особенно Китай и Индия, которые значительно выросли за этот период.
Разделение данных Train-Test
Теперь, чтобы обучить модель, нам нужно разделить данные на тестовый набор и обучающий набор. При работе с временным рядом важно разделить его на обучающую выборку и проверочную выборку на конкретную дату. Итак, чего мы не хотим видеть, так это того, что тестовые данные появляются перед обучающими данными.
В нашем эксперименте мы определим дату, скажем, 1 января 2010 года, как нашу отдельную дату. Данные обучения относятся к периоду со 2 января 1980 г. по 31 декабря 2009 г. и содержат примерно 11 000 точек данных обучения.
Набор тестовых данных за период с 1 января 2010 г. по 10 августа 2017 г. содержит примерно 2700 точек данных.
Раздел данных тестового обучения
Следующее, что нужно сделать, это нормализовать набор данных. Просто настройте и преобразуйте обучающие данные, а затем преобразуйте тестовые данные. Причина этого состоит в том, чтобы предположить, что мы не знаем размер тестовых данных.
Нормализация или преобразование данных означает применение новой переменной масштабирования от 0 до 1.
модель нейронной сети
Полностью подключенная модельпредставляет собой простую модель нейронной сети, построенную как модель регрессии с одним входом и одним выходом. В основном берут цену предыдущего дня, чтобы предсказать цену следующего дня.
Мы используем среднеквадратичную ошибку в качестве функции потерь и стохастический градиентный спуск в качестве оптимизатора, и после обучения достаточному количеству эпох будет найден хороший локальный оптимум. Ниже представлен обзор полносвязного слоя.
Обзор полносвязного слоя
После обучения модели до 200 эпох или в зависимости от того, что наступитearly_callbacks(т. е. обратный вызов с досрочным завершением, который удовлетворяет условию), модель изучает шаблон и поведение данных посредством обучения. Поскольку мы разделили данные на обучающий и тестовый наборы, теперь мы можем предсказать значения, соответствующие тестовым данным, и сравнить их с истинными значениями.
Истинное значение (синий) и прогнозируемое значение (оранжевый)
Как видите, эта модель работает не очень хорошо. По сути, он повторяет предыдущие данные с одним небольшим изменением. Полносвязная модель не может предсказать будущие данные по одному предыдущему значению. Теперь давайте попробуем использовать рекуррентную нейронную сеть и посмотрим, как она работает.
долговременная и кратковременная память
Модель рекуррентной сети, которую мы используем, представляет собой одноуровневую последовательную модель. 6 узлов LSTM используются в слое, где наше входное измерение имеет форму (1,1), т. е. в сети есть только один вход.
Обзор модели LSTM
Последний слой — это плотный слой (то есть полностью связанный слой), функция потерь — это среднеквадратическая ошибка, а оптимизатор использует алгоритм стохастического градиентного спуска. Мы используемearly_stoppingОбратный вызов обучает эту модель 200 раз. Схема модели показана выше.
Прогноз LSTM
Модель научилась воспроизводить общую форму данных за год без задержек, которые ранее использовались с простой нейронной сетью с прямой связью. Но он по-прежнему недооценивает некоторые наблюдения, поэтому модель определенно имеет место для улучшения.
Модификация модели
В эту модель можно внести множество изменений, чтобы сделать ее лучше. Как правило, вы можете изменить конфигурацию обучения модели напрямую, изменив оптимизатор. Другая важная модификация заключается в использованиискользящее временное окнометод, который является методом из области систем управления потоковыми данными.
Этот подход исходит из идеи, что важны только последние данные. Вы можете использовать модельные данные за один год и попытаться сделать прогноз на первый день следующего года. Методы скользящего временного окна очень полезны для выявления важных закономерностей в наборах данных, которые сильно зависят от большого количества прошлых наблюдений.
Вы можете поэкспериментировать с модификациями модели на основе ваших личных предпочтений и посмотреть, как модель реагирует на эти модификации.
набор данных
Я в репозитории в моей учетной записи githubdeep learning in pythonЭтот набор данных предоставляется. Не стесняйтесь скачать и использовать его.
полезные ресурсы
Я лично слежу за некоторыми из моих любимых специалистов по данным, такими какKirill Eremenko,Jose PortillaиDan Van Boxel(например, знаменитый Дэн делает данные) и так далее. Большинство из них можно найти на разных сайтах блогов по разным темам, таким как RNN, Convolutional Neural Networks и LSTM, даже самые последниеНейронная машина ТьюрингаТехнологии.
держать в курсеконференция по искусственному интеллектуНовости. Кстати, если интересно, Кирилл Еременко расскажетв ноябре этого годаПриехал в Сан-Диего, чтобы поговорить со своей командой о машинном обучении, нейронных сетях и науке о данных.
в заключении
Модели LSTM достаточно мощны, чтобы изучить наиболее важные прошлые модели поведения и понять, являются ли эти прошлые модели поведения важными функциями для прогнозирования будущего. Есть много приложений, в которых LSTM активно используются. Некоторыми приложениями являются распознавание речи, синтез музыки и распознавание рукописного ввода, даже в моем текущем исследовании мобильности населения и прогнозировании туризма.
На мой взгляд, LSTM похожа на модель с собственной памятью, которая может вести себя как умный человек при принятии решений.
Еще раз спасибо и удачи в изучении машинного обучения!
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.