Я всегда задаюсь вопросом, возможно ли построить модель, в которой я мог бы ввести несколько функций, связанных с биткойнами, которые могли бы предсказать цену биткойна? В этой статье обсуждается интуиция, стоящая за сетевой моделью LSTM, и функции/данные, которые я ввел в модель LSTM, поэтому здесь не показан код. Вместо этого мы испачкаем руки во Части 2.

Понимание LSTM

Этот раздел адаптирован из блога, который, я думаю, очень хорошо объяснил LSTM, я просто подытожу, что такое LSTM, если вам лень просматривать весь блог:

Для начала мы должны знать, что люди не начинают думать с нуля, например, когда вы читаете это, вы не думаете с нуля каждый раз, когда читаете новое предложение. Ваши мысли сохраняют настойчивость, поскольку вы вводите информацию из предыдущего предложения и соединяетесь с информацией из следующего предложения, которое вы читаете.

Но дело в том, что традиционная нейронная сеть (ANN/CNN) на самом деле не может сохранять память, поэтому для решения этой проблемы создается рекуррентная нейронная сеть (RNN), и название может звучать пугающе, но в основном это просто петля нейронных сетей.

Ограничения рекуррентной нейронной сети:

Помните, что основная цель RNN — связать предыдущую информацию с текущей задачей, что также известно как зависимости. В качестве примера, предположим, что у вас есть предложение «облака в небе», предсказать последнее слово не составит труда для модели, так как, просто взглянув на одно это предложение, мы, вероятно, обнаружим, что последнее слово — «небо». , никакого дополнительного контекста не требуется.

Итак, главное здесь заключается в том, что разрыв между соответствующей информацией невелик, RNN может легко узнать прошлую информацию.

Теперь взгляните на предложение «Я из Франции… Я свободно говорю по-французски», чтобы предсказать последнюю работу на французском языке, нам нужно предыдущее предложение, чтобы предоставить нам контекст «Франция» из более раннего. Представьте, если разрыв между релевантной информацией будет увеличиваться… тогда это сформирует долгосрочные зависимости, что является одним из больших ограничений RNN. Именно здесь создается LSTM для преодоления этого ограничения.

LSTM-архитектура

Давайте посмотрим на архитектуру общей модели LSTM с высокого уровня:

Ключом к модели LSTM является состояние ячейки, которое представляет собой горизонтальную линию, идущую поверх диаграммы. Он обладает способностью сохранять/забывать информацию, регулируемую структурами, называемыми воротами (элементы ниже горизонтальной линии). Это способ оптимального пропуска информации, состоящий из слоя сигмовидной нейронной сети и операции поточечного умножения (вы можете просто пропустить эту терминологию, лол).

Поэтапное прохождение через него:

Первые ворота: Забудьте о слое ворот

  • Просматривает ht-1 и xt (ввод) и выводит число от 0 до 1 для каждого числа в состоянии ячейки Ct-1. 1 означает «полностью оставить это», а 0 означает «полностью забыть об этом».
  • Например, в случае модели временных рядов (рынок акций/криптовалюты) состояние ячейки может запоминать долгосрочные тенденции во временном ряду, такие как сезонный характер или общие восходящие/нисходящие тренды. Однако, если мы столкнемся с внезапным изменением временного ряда, например, разовым событием или резким изменением тренда, модель забудет предыдущие долгосрочные тренды и сосредоточится на новом паттерне.

Вторые ворота: слой входных ворот (две части)

1. Во-первых: сигмовидный слой решает, какие значения мы будем обновлять

2. Во-вторых: слой tanh создает вектор новых значений-кандидатов Ct, которые можно добавить к состоянию.

Продолжая наш предыдущий пример, первый вентиль решит обновить сезонную составляющую состояния ячейки, если временной ряд имеет сезонный характер, сохраняя при этом общую тенденцию. В то время как вторые ворота могут генерировать новый вектор положительных значений, если временной ряд внезапно претерпевает сдвиг вверх, чтобы зафиксировать эту тенденцию.

Еще часть вторых ворот: обновить старое состояние ячейки Ct-1 до нового состояния ячейки Ct. Предыдущие шаги решают, что делать, на этом шаге нам просто нужно сделать это.

  • Умножьте старое состояние на ft (забудьте о выходе вентиля). Затем добавьте (it * Ct) [те новые значения-кандидаты, масштабированные в зависимости от того, насколько мы решили обновить каждое значение состояния].
  • Продолжая наш пример, это будет означать, что LSTM объединит значения-кандидаты, сгенерированные слоем tanh, с сезонным компонентом предыдущего состояния ячейки, чтобы создать обновленный сезонный компонент текущего состояния ячейки.

Финальные ворота (выходные ворота): решает, что выводить, в зависимости от состояния ячейки, но это будет отфильтрованная версия.

  • Сначала запустите сигмовидный слой, который решает, какие части состояния ячейки мы собираемся вывести.
  • Затем поместите состояние ячейки через tanh (чтобы масштабировать значения от -1 до 1) и умножьте на выход сигмовидного вентиля, поэтому мы выводим только части, выбранные вентилем.
  • Продолжая наш пример, это будет означать, что LSTM умножит масштабированное состояние ячейки на выходные данные сигмовидного вентиля, поэтому, ЕСЛИ выходной вентиль выбрал сезонный компонент состояния ячейки, он выведет только масштабированный сезонный компонент.

Биткойн Данные

Хорошо! Это почти все, что касается введения LSTM. Я знаю, что это все еще довольно техническое чтение, но я изо всех сил старался сжать его как можно лучше. Переходим к части сбора данных о биткойнах: Ops! Я забыл рассказать, что такое биткойн? Я думаю, что лучший способ объяснить это — привести пример по основам, но в противном случае обратитесь к этому отличному видео от 3Blue1Brown для более глубокого понимания того, как это работает.

Представьте, что вы и ваш друг живете в мире без наличных и банков. Вы хотите дать своему другу немного денег, но как вы это делаете?

Один из способов — использовать Биткойн. Биткойн — это цифровая валюта, которая позволяет людям совершать транзакции без необходимости в посреднике, таком как банк. Он работает в децентрализованной системе под названием блокчейн, что означает, что каждая транзакция записывается и проверяется сетью компьютеров по всему миру. Затем вы создаете цифровой кошелек, и ваш друг делает то же самое. Затем вы можете отправить своему другу немного биткойнов со своего кошелька на его кошелек, используя свой компьютер или телефон. Эта транзакция записывается в блокчейне (публичной книге).

Биткойн создается с помощью процесса, называемого «майнинг», когда мощные компьютеры решают сложные математические задачи для добавления новых транзакций в блокчейн. После добычи определенного количества биткойнов их можно покупать и продавать на различных биржах по всему миру.

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

Я получил оперативные данные с помощью CryptoCompare API, и я думаю, что эти данные каким-то образом влияют на цены биткойнов. Вот два основных типа данных, которые я собрал, используя эту страницу в качестве ссылки:

  1. Исторические данные о ценах и объемах
  2. Данные в цепочке (блокчейн)

Вкратце, ончейн-данные — это данные, хранящиеся в блокчейне. Данные общедоступны для всех, у кого есть подключение к Интернету (прелесть биткойнов!), и их можно разделить на 3 категории:

  1. Данные транзакции
  2. Блокировать данные
  3. Код смарт-контракта

Вот данные по цепочке, которые я извлек из CryptoCompare API:

· Распределение держателей (Распределение стоимости монет среди игроков в сети, увеличение адресов с непропорционально большим количеством монет интерпретируется как бычий признак, так как это признак того, что они становятся более оптимистичными. Я ориентируюсь в основном на количество адресов, которые вмещает от 1000 до 100000 $ BTC)

· Сложность (высокая цена -> привлечение большего количества майнеров в сеть (поскольку их привлекает высокое вознаграждение/отдача) -> увеличение скорости хеширования -> увеличение сложности)

· Хешрейт (тесно связан со сложностью)

· Активные адреса (уникальный адрес, который активно проводил транзакцию в сети в течение заданного периода времени, увеличение количества активных адресов в цепочке блоков может указывать на увеличение использования и принятие сети, следовательно, мощность сигнала этой монеты/сети )

· Количество транзакций (еще одна метрика для анализа использования и принятия блокчейна, относится к количеству транзакций, обработанных в этой сети за определенный период времени)

· Большое количество транзакций (транзакции, включающие значительное количество криптовалют, или известные как «транзакции китов», увеличение крупных транзакций может повлиять на рынок, поскольку это связано с покупкой или продажей большого количества криптовалюты, что влияет на спрос и предложение этой криптовалюты). )

Это все для этой статьи! Это сборка/введение для модели LSTM, которую я собираюсь построить с использованием этих данных, которую я напишу в отдельной статье, иначе эта статья будет очень длинной. Спасибо за прочтение !