論文版はてなブックマーク(その10:ディープラーニング×株価予測)の話。

はじめに。

==========

ちょくちょく宣伝しているが、新型コロナウイルスの論文を使って、「研究者がどうやって未知のウイルスの正体を暴くのか?」について説明した文章を一般の人向けに書いたので興味のある方はどうぞ。
blog.sun-ek2.com

加えて、PCR検査の仕組みと、それに代わるかもしれないゲノム編集技術を応用した新しい検査方法に関する論文を一般向けに説明したので興味のある方はどうぞ。
blog.sun-ek2.com

==========

「論文版はてなブックマークとは何ぞや?」という話は、以前したので、以下の文章を参照のこと。
blog.sun-ek2.com


前回の話はこちらから。
blog.sun-ek2.com






An ensemble of LSTM neural networks for high-frequency stock market classification

papers.ssrn.com

著者・雑誌名。

Svetlana Borovkova, Ioannis Tsiamas
Journal of Forecasting, March 2019



内容。

12個のLSTMを学習させ、それぞれのLSTMの出力にAUCスコアで重み付けし、株価の上昇・下落を予想するシステムに関する論文。


2.3 GHzの2コアCPUと8 GBのRAMが載ったPCで研究を行ったらしい。
(平凡なPCスペックでもニューラルネットワークの研究ができることを知って、少し希望を持った)


使うのは、Stacked LSTM。LSTMは、2つ直列に並んでいる。本当かどうかは知らないが、論文曰く、CNNみたいに前半のLSTMはデータの全体的な特徴を抽出し、後半のLSTMはデータの細部の情報を抽出するらしい。cellの中では、hyperbolic tangent、sigmoidに通す前にLayer Normalizationが行われている。損失関数は、普通の交差エントロピーに加えて、重みの正則化(weight decay)のためにパラメータのL2ノルムが罰則項として加えられている。重みの正規化によって過学習が防げるらしい。これに加えて、過学習を防ぐためにdropoutもLSTMに入る前、softmaxに入る前の全結合層で行われている。LSTM内でdropoutをやると、cellの記憶性能が落ちるらしいので、この論文ではやっていない。バッチ数は32で、入力データ長さは5。Optimizerは、RMSProp。


予測するのは22銘柄。使用する株価データは22銘柄に加えて、それら企業に対応する企業22銘柄の計44銘柄。株価データは、5分足。予測したい株価データ、ライバル企業の株価データ、部門の株価データ、全株価データ、相関のある株価データを使い、それそれの株価データを元にテクニカル指標を導出すると、600個ぐらいの特徴量が出てくる。そこからランダムに250個の特徴量を選び、LSTMに加える。特徴量はランダムに選ばれていて、かつパラメータが大量にあるので、12個のLSTMは、それぞれ違う特徴を持っている。


検証時の入力データは390個。390個のデータを入力して、391個目のデータを予測する。入力データを1個ずつずらしていって、どんどんとデータを予測していき、それぞれのLSTMのROC曲線を求め、曲線の下の積分値(AUC)を算出する。このAUCを使って、それぞれのLSTMの出力に加重平均を取り、最終的な出力にする(ROC曲線は、医療で使われる検査などの性能を表す指標。縦軸が真陽性率、横軸が偽陽性率。AUCが1に近づくほど、その検査試薬の性能は良い)。


このAUCで加重平均したLSTMアンサンブルの結果は、それぞれのLSTMの出力を平均したものを予測結果にするもの、過去の予測で成績が良い(AUCが高い)LSTMを予測結果にするものよりも性能が良い。






Genetic Algorithm-Optimized Long Short-Term Memory Network for Stock Market Prediction

www.mdpi.com

著者・雑誌名。

Hyejung Chung, Kyung-shik Shin
MDPI, October 2018



内容。

遺伝的アルゴリズムで、LSTMの最適なハイパーパラメータを探索し、入力データの翌日の株価予測を行っている論文。


使っているデータは、韓国総合株価指数(KOSPI)。特徴量として使用するのは、始値、終値などの生データ5種類と移動平均などのテクニカル指標5種類。どれも最大値が1、最小値が0になるように正規化されている。


探索するハイパーパラメータは、入力データ長と隠れ層のパーセプトロン数。この2つのハイパーパラメータをビット列にエンコードしたものを「染色体」とする。染色体の数は70本。組み換え率は0.7。変異率は0.15。「染色体」にエンコードされたハイパーパラメータに従って、LSTMを構築し、学習させ、染色体に組み換え、変異を起こし、再び、LSTMを構築する。このサイクルをLSTMの平均自乗誤差が一定以下になるまで続ける。


遺伝的アルゴリズムを行った結果、入力データ長は10日、隠れ層のパーセプトロンの数は15個、もしくは7個が最適。






Financial series prediction using Attention LSTM

arxiv.org

著者・雑誌名。

Sangyeon Kim, Myungjoo Kang
arXiv, February 2019



内容。

LSTMに注意機構を加えたニューラルネットワークを使って、株式の値上げ・値下げを予測している論文。


ここ最近、ニューラルネットワークを使った自然言語処理分野(英語の翻訳、文章作成とか)で革命が起きていて、遂に言語を扱う作業で機械が人間を上回る事例が多発している。そして、その革命の中心にいるのが注意機構(Attention)という技術。Googleさんが2017年に"Attention Is All You Need"っていうむちゃくちゃ挑発的な論文を出し、Transformerというニューラルネットワークを提案したことを皮切りに、いろんなモデル(BERT、XLNetとか)が登場している(注意機構(Attention)は昔からあって、Transformerは、自己注意機構(Self-Attention)を使っている)。そして今年の7月には、GPT-3という化け物みたいなニューラルネットワークが登場して業界が騒然とした。
deeplearning.hatenablog.com


注意機構(Attention)は、その名の通り、データのどこに注意を向けるか決める機構。例えば、30 cmくらい離して本を読むと、本以外の風景は目に入ってくるが、それでもちゃんと本を読むことができる。人間は余計な情報を遮断して、本に注意を向けることができるからである。この注意を機械学習に応用したのが注意機構。また、従来の再帰的ニューラルネットワークは、一つの隠れ層の情報しか次の層に伝えることができない。一方で、注意機構を使うと、これまでの隠れ層全部の情報を活用することができる。


予測するデータは、韓国総合株価指数(KOSPI)。株価を予測するためにKOSPIに加えて、様々な経済指標をニューラルネットワークに加える。


この論文では、Luongの注意機構を使っている。Attention層は、1つ目のLSTMの前と2つ目のLSTMの前に加える。一つ目のLSTMの前には、時系列に関するAttention層と特徴量に関するAttention層があり、それぞれの結果を組み合わせて入力データが作られる。


詳しいことは、書かれていなかったので、よく分からないが、、、。
多分、特徴量をベクトル成分としてまとめた時系列ベクトル、時系列をベクトル成分としてまとめた特徴量ベクトル、それぞれのAttention確率(ベクトル)を算出し、両者のテンソル積を取り、そこで得られた行列とオリジナルデータとのアダマール積をとって、入力データとしているのだと思う。あくまでも多分。テンソル積って言葉は、本文中に出てこなかったが、fig.5にテンソル積の記号があった。Luongの注意機構では、オリジナルデータにweight matrixをかけるのだが、最終的に得られたものをテンソル積するのであれば、1×nの行列だと思う。


2回目のAttention層は、2つ目のLSTMの前。入力データと1つ目のLSTMのそれぞれの時刻における隠れ層の出力を使って、新たに入力データを作る。損失関数は、少し特殊なものを使っていて、通常の交差エントロピーに株価の変動率を掛けている。株価が急激に変動した時に正しい予測ができていればいるほど、損失関数が小さくなる。


最後にAttentionベクトルを可視化していた。注意機構の利点の一つが説明可能性。ニューラルネットワークを使えば、色々な問題を解くことができるが、「なぜ、解けるか?」を人間が解釈するのは困難であった。一方で、注意機構を使えば、ニューラルネットワークがどのデータに注意を向けたか可視化することができ、上手く問題が解けるようになった原因の一端を突き止めることができる。最近、XAI (Explainable Artificial Intelligence)っていうのが大事らしい。


Attentionベクトルがどれのことを指すのかよく分からなかったが、個人的にはAttention層の1×nのweight matrixを可視化すのが妥当だと思っている。






Stock Market Prediction Using Optimized Deep-ConvLSTM Model

pubmed.ncbi.nlm.nih.gov

著者・雑誌名。

Amit Kelotra, Prateek Pandey
Big Data, February 2020



内容。

Sparse-FCM algorithmで入力データの次元を削り、畳み込み層が内部に搭載されたLSTMをRider-MBO algorithmにて学習させるという論文。


FCMはFuzzy C-meansの略で、クラスタリング法の一種。Sparse-FCM algorithmは、高次元で密度が薄いデータ群をクラスタリングする手法。
www.sciencedirect.com


様々なテクニカル指標から得られるデータをSparse-FCM algorithmでクラスタリングし、それぞれのクラスタの重心から一番近い指標をそれぞれのクラスタの代表として用いる(クラスタ内のデータは、似たようなもんだから1個あれば十分じゃないかっていう考え)。これによって、入力データの次元数が削減されて、計算コストが低くなる。


Rider-MBO algorithmは、Rider Optimization algorithmとMonarch Butterfly Optimizationを融合させたアルゴリズム。どちらも群知能。Rider Optimization Algorithmは、Bypass rider、Follower、Overtaker、Attackerの4種類からなる個体群で数理最適化問題を解くアルゴリズム。Bypass riderは、暫定の最適解上にいる個体(Leading rider)とは関係なく、新たな最適解を探索する。Followerは、今いる座標の一成分をランダムに選び、それをLeading riderの座標成分+ノイズに置き換える。Overtakerは、Leading riderの方に向かって、今いる座標を更新する。Attackerは、常にLeading rider近傍で解を探索する。この論文だとちょこちょこ説明が省かれているので、詳しく知りたければ、元論文をどうぞ。
ieeexplore.ieee.org


普通のRider Optimization Algorithmは、4種類の個体群の座標更新を繰り返すだけであるが、Rider-MBO algorithmは、4種類の個体群の座標を更新した後、更にOvertakerの座標をMonarch Butterfly OptimizationのButterfly adjusting operatorにて再更新する。
link.springer.com


Deep-ConvLSTMの構成は、(式23)~(式30)と、fig.3、fig.4に詳しく書かれてある。*で表されているのが、畳み込み演算。このDeep-ConvLSTMは、誤差逆伝播ではなく、Rider-MBO algorithmによって学習が進む。


この研究は、どこからも研究費を取らずに行われたらしい。
(お金がなくても研究できる!)






NSE Stock Market Prediction Using Deep-Learning Models

www.sciencedirect.com

著者・雑誌名。

Hiransha M, Gopalakrishnan E.A, Vijay Krishna Menon, Soman K.P
Procedia Computer Science, June 2018



内容。

再帰的ニューラルネットワーク、LSTM、畳み込みニューラルネットワーク、多層パーセプトロン間の株価予測の性能を比較した論文。
と言っても、それぞれのネットワークの詳細な構造が論文に載っていなかった...。謎。


線形モデルである自己回帰移動平均モデル(ARIMA)よりも非線形モデルであるディープラーニングの方が株価予測の精度が高い。時系列データには、再帰的ニューラルネットワークやLSTMが使われがちだが、意外にも畳み込みニューラルネットワークの予測性能が一番高いとのこと(ネットワークの詳細が論文に書かれていないので、鵜呑みにするのは微妙かも)。特に急激な株価変動も捉えることができる。



この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。もちろん任意です。
ofuse.me


ブログランキング・にほんブログ村へ
にほんブログ村