مهم‌ترین سؤالی که با شنیدن اصطلاحاتی نظیر «بیت‌کوین» (Bitcoin) و «ارز مجازی» (Virtual Currency) در ذهن بسیاری از مردم شکل می‌گیرد این است که مفهوم «ارز دیجیتال» (Digital Currency) یا ارز مجازی چیست؟ ارز دیجیتال یا مجازی که در زبان انگلیسی به آن Cryptocurrency گفته می‌شود، ارزی دیجیتال است که از روش‌های «رمزنگاری» (Cryptography) بسیار قدرتمند برای تضمین امنیت آن استفاده می‌شود. به دلیل استفاده از روش‌های امنیتی و رمزنگاری بسیار قدرتمند، «جعل» (Counterfeit) ارزهای دیجیتال بسیار سخت است. ارز دیجیتال، یک دارایی دیجیتال است که با هدف ایجاد یک «واسط داد و ستد» (Medium of Exchange) برای «تراکنش‌های مالی» (Financial Transactions) و صحت سنجی «انتقال دارایی‌ها» (Transfer of Assets) ایجاد شده است. بسیاری از ارزهای دیجیتال، «سیستم‌های غیرمتمرکزی» (Decentralized Systems) هستند که بر اساس فناوری‌هایی نظیر «بلاک‌چین» (Blockchain) بنا نهاده شده‌اند. سودآوری بالای این ارز دیجیتال، بسیاری از افراد را به سمت ایجاد روش‌هایی برای پیش بینی قیمت بیت کوین سوق داده است. مهم‌ترین ارزهای دیجیتالی که تاکنون تولید شده‌اند، عبارتند از:

پیش بینی قیمت بیت کوین

در این میان، بیت‌کوین، پر استفاده‌ترین و مهم‌ترین ارز دیجیتالی است. در طی چند سال اخیر، بازار ارزهای دیجیتال نوسان به شدت زیادی را تجربه کرده است. قیمت ارز دیجیتالی بیت‌کوین، در تاریخ 16 دسامبر 2017 میلادی به بالاترین حد در تاریخ خود، یعنی رقم بی‌سابقه 20 هزار دلار رسید. با این حال، از ابتدای سال 2018 میلادی، شیب تند قیمت بیت‌کوین شروع شد و این ارز دیجیتال در سرازیری کاهش قیمت افتاد. به طور کلی، قیمت بیت‌کوین از ابتدای حیات خود تاکنون، فراز و نشیب زیادی به خود دیده است. با نگاهی گذرا به بازه تغییرات قیمت بیت‌کوین (شکل زیر) در طول چند سال اخیر، به راحتی مشخص می‌شود که قیمت آن، هنوز هم در سطح بالایی قرار دارد. با این اوصاف، پیش بینی قیمت بیت کوین می‌تواند سود سرشاری عاید افراد کند. واقعیت تکان‌دهنده دیگر در مورد ارز دیجیتالی بیت‌کوین این است که قیمت آن در سه سال پیش، چیزی در حدود یک دهم قیمت کنونی آن بود. نمودار تغییرات قیمت بیت‌کوین در طی چند سال گذشته، در شکل زیر نمایش داده شده است.

پیش بینی قیمت بیت کوین

بدون شک، ایجاد روش‌هایی برای پیش بینی قیمت بیت کوین، برای هر شخصی که با این حوزه آشنایی دارد، بسیار هیجان‌برانگیز و وسوسه‌انگیز خواهد بود. اولین قدم در جهت پیش بینی قیمت بیت کوین، مطالعه دلایل نوسان (سقوط یا افزایش) قیمت آن در جهان است. در این زمینه، نظربه‌های متفاوتی وجود دارد که ریشه در دلایل سیاسی، اقتصادی و اجتماعی دارد. با این حال، در این مطلب سعی شده است تا از دیدگاهی متفاوت برای مدل‌سازی نوسان قیمت بیت‌کوین در چند سال اخیر و پیش‌بینی قیمت آن در آینده استفاده شود. در این مطلب، از دیدگاه الگوریتمی برای پیش بینی قیمت بیت کوین استفاده شده است. به بیان دیگر، هدف این است که از «داده‌های تاریخی عددی» (Numerical Historical Data) برای آموزش یک «شبکه عصبی بازگشتی» (Recurrent Neural Network) استفاده شود. شبکه عصبی بازگشتی، رفتار داده‌های آموزشی را یاد می‌گیرد و آن را مدل‌سازی می‌کند. سپس، از شبکه عصبی آموزش دیده برای پیش بینی قیمت بیت کوین استفاده می‌شود.

جمع‌آوری قیمت‌های تاریخی بیت‌کوین

منابع اندکی برای جمع‌آوری داده‌های تاریخی، در رابطه با قیمت بیت‌کوین وجود دارد. برخی از این منابع، اطلاعات مرتبط با قیمت بیت‌کوین را در قالب مجموعه داده‌های ساخت یافته در اختیار کاربران قرار می‌دهند. کاربران، باید این اطلاعات را به صورت دستی از این منابع «بارگیری» (Download) و پس از آماده‌سازی، در الگوریتم‌های پیاده‌سازی شده استفاده کنند. منابع دیگر، یک «واسط برنامه‌نویسی کاربردی» (Application Programming Interface) در اختیار کاربران قرار می‌دهند تا از این طریق، اطلاعات مرتبط با قیمت بیت‌کوین را جمع‌آوری کنند. استفاده از واسط برنامه‌نویسی کاربردی برای جمع‌آوری داده‌ها، دو مزیت عمده برای الگوریتم پیاده‌سازی شده به ارمغان می‌آورند:

  • اطلاعات جمع‌آوری شده به روز خواهند بود؛ در نتیجه، دقت مدل پیش‌بینی قیمت بیت‌کوین افزایش خواهد یافت.
  • اطلاعات جمع‌آوری شده به صورت «بلادرنگ» (Real-Time)، برای یکپارچه‌سازی با مدل یادگیری پیاده‌سازی شده در دسترس خواهند بود.

از جمله بهترین واسط‌های برنامه‌نویسی کاربردی ارائه شده برای جمع‌آوری قیمت بیت‌کوین، واسط ارائه شده توسط وب‌سایت (CoinRanking.com) است که اطلاعات به روز و دقیقی از قیمت‌های لحظه‌ای بیت‌کوین در اختیار کاربران قرار می‌دهد.

شبکه‌های عصبی بازگشتی

از آنجایی که داده‌های تاریخی مرتبط با قیمت بیت‌کوین از نوع داده‌های «سری زمانی» (Time Series) هستند، استفاده از «شبکه‌های عصبی پیش‌خور» (Feedforward Neural Networks) پیشنهاد نمی‌شود. این دسته از شبکه‌های عصبی برای پیش‌بینی بر اساس داده‌های سری زمانی قیمت بیت‌کوین مناسب نیستند؛ زیرا، قیمت روز آینده بیت‌کوین همبستگی بسیار زیادی به قیمت امروز بیت‌کوین دارد و نه قیمت یک ماه گذشته آن. شبکه عصبی بازگشتی، دسته‌ای از «شبکه‌های عصبی مصنوعی» (Artificial Neural Networks) است که در آن ارتباطات میان نودها (نرون‌ها)، «گرافی جهت‌دار» (Directed Graph) در راستای یک «دنباله زمانی» (Temporal Sequence) تشکیل می‌دهد.

ویژگی مهم شبکه‌های عصبی بازگشتی، توانایی نمایش رفتار پویای یک دنباله زمانی است. شبکه عصبی بازگشتی قادر است از وضعیت داخلی خود برای پردازش این دنباله‌ها استفاده کند. در عمل، چنین امکانی از طریق اضافه کردن لایه‌هایی نظیر «حافظه کوتاه مدتِ بلند» (long Short-Term Memory) و «واحد بازگشتی محصور» (Gated Recurrent Unit) به شبکه‌های عصبی بازگشتی حاصل می‌شود. در شکل زیر، تفاوت میان معماری‌های یک شبکه عصبی پیش‌خور معمولی و یک شبکه عصبی بازگشتی نمایش داده شده است. همان‌طور که ملاحظه می‌شود برخلاف شبکه‌های عصبی پیش‌خور، در شبکه‌های عصبی بازگشتی، داده‌ها می‌توانند در دو جهت در شبکه جریان پیدا کنند؛ از سمت ورودی به سمت خروجی و برعکس.

پیش بینی قیمت بیت کوین

روش پیشنهادی برای پیش‌ بینی قیمت بیت‌ کوین

برای اینکه بتوان یک مدل هوشمند یادگیری برای آموزش شبکه عصبی بازگشتی روی داده‌های تاریخی قیمت بیت‌کوین و در نهایت، پیش بینی قیمت بیت کوین در روز آینده طراحی کرد، لازم است تا مراحل زیر، جهت تضمین عملکرد مناسب مدل پیشی‌بینی طی شوند:

  • جمع‌آوری، «پاک‌سازی» (Cleaning) و «نرمال‌سازی» (Normalizing) داده‌های تاریخی مرتبط با قیمت بیت‌کوین.
  • طراحی مدل شبکه عصبی بازگشتی با واحد حافظه کوتاه مدتِ بلند (LSTM).
  • آموزش شبکه عصبی بازگشتی طراحی شده روی داده‌های تاریخی مرتبط با قیمت بیت‌کوین و ذخیره‌‎سازی مدل آموزش داده شده.
  • پیش بینی قیمت بیت کوین در روز آینده توسط شبکه آموزش دیده و در آخر، «تبدیل» (Deserialize) خروجی شبکه عصبی (منظور از تبدیل در این مطلب، تبدیل فرم سری داده‌ها به فرمت داده‌های مورد نیاز برای نمایش قیمت بیت‌کوین است).

جمع‌آوری، پاک‌سازی و نرمال‌سازی داده‌ها

در این بخش، راهکارهای لازم برای جمع‌آوری داده‌های تاریخی مورد نیاز برای آموزش شبکه عصبی، پاک‌سازی داده‌های جمع‌آوری شده و در نهایت، نرمال‌سازی آن‌ها ارائه می‌شود.

جمع‌آوری داده‌های تاریخی قیمت بیت‌کوین

همانطور که پیش از این نیز اشاره شد، بهترین راه جمع‌آوری داده‌های مورد نیاز برای آموزش شبکه عصبی، استفاده از واسط‌های برنامه‌نویسی کاربردی ارائه شده برای چنین کاری است. در این مطلب، از واسط برنامه‌نویسی کاربردی وب‌سایت (CoinRanking.com) برای جمع‌آوری داده‌های مرتبط با قیمت بیت‌کوین استفاده شده است. چنین کاری به ما اجازه می‌دهد که بلافاصله پس از جمع‌آوری داده‌ها، آن‌ها را به ساختارهای داده‌ای قابل تعریف توسط بسته نرم‌افزاری (Pandas) در زبان برنامه‌نویسی پایتون تبدیل کنیم. برای چنین کاری از قطعه کد زیر استفاده می‌شود:

با مطالعه این کد مشخص می‌شود که تابع تعریف شده برای چنین کاری، داده‌های مرتبط با قیمت بیت‌کوین در پنج سال اخیر را جمع‌آوری می‌کند. همچنین، قیمت بیت‌کوین بر اساس «دلار آمریکا» (US Dollar) نمایش داده خواهد شد. با این حال، این امکان برای کاربران فراهم شده است تا داده‌های قیمت بیت‌کوین را در بازه‌های زمانی مختلف و با واحدهای قیمتی متفاوت جمع‌آوری کنند.

پاک‌سازی و نرمال‌سازی داده‌های جمع‌آوری شده

پس از جمع‌آوری داده‌ها و تبدیل آن‌ها به ساختارهای داده‌ای (Pandas)، لازم است توابعی تعریف شوند تا داده‌های جمع‌آوری شده، برای آموزش شبکه عصبی بازگشتی آماده شوند. این توابع عبارتند از:

  • یک تابع خاص برای تولید ماتریس داده‌های قیمت بیت‌کوین (در این ماتریس، هر سطر حاوی 30 ستون است و هر ستون بیانگر قیمت بیت‌کوین در یک روز خاص خواهد بود).
  • یک تابع خاص برای نرمال‌سازی داده‌های جمع‌آوری شده جهت آموزش شبکه عصبی (داده‌ها به شکلی نرمال‌سازی می‌شوند که هر نمونه، به جای نمایش قیمت بیت‌کوین، درصد تغییرات قیمت از نقطه آغازین را نشان دهد).
  • یک تابع خاص برای تقسیم داده‌های جمع‌آوری شده به داده‌های «آموزشی» (Train) و «تست» (Test) (در این مطلب، از توابع پیش فرض بسته نرم‌افزاری scikit-learn در زبان برنامه‌نویسی پایتون استفاده نشده است؛ دلیل این کار، حفظ ترتیب داده‌های سری زمانی جمع‌آوری شده برای آموزش صحیح شبکه عصبی است).

از قطعه کد زیر، برای آماده‌سازی داده‌های جمع‌آوری شده استفاده می‌شود.