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

はじめに。

==========

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

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

==========

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


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


株式自動売買プログラム開発関連の文章は、以下のカテゴリーにまとめているので、興味のある方はどうぞ。

blog.sun-ek2.com



今回はAttention-based Recurrent Neural Network関連の論文。最初の論文は、機械翻訳の話。未来予測ではないが、このモデルは、他の論文を読むための基礎になるので、最初に紹介した。


論文では、RNNではなく、Long short-term memory (LSTM)が使われていることがほとんどであったが、LSTMもRNNの亜種ということで、attention-based LSTMではなく、attention-based RNNと呼ばれている事例が結構あった。


AI・ディープラーニング技術の勉強方法。

以下の文章は、AI・ディープラーニング関係の論文紹介なので、それらの知識がないと読み解くことはできない。


最近、AI・ディープラーニングに力を入れたオンラインプログラミングスクールがどんどん誕生している。AI・ディープラーニングは、僕がやっているような株価予測、それ以外の幅広い分野で、ものすごく役に立つ技術である。AI・ディープラーニングは、覚えていて損はない技術であるし、なんなら今後、知らないままでいると損をしてしまう技術だと思う。


オンライン相談会や体験レッスンなどが用意されているので、色々なところを見て回って、自分に合うプログラミングスクールを見つけて、そこで勉強してみるのがおすすめ。












Effective Approaches to Attention-based Neural Machine Translation

arxiv.org


著者・雑誌名。

Minh-Thang Luong, Hieu Pham, Christopher D. Manning
arXiv, August 2015



内容。

注意機構(Attention mechanism)を用いたニューラルネットワークによる機械翻訳の話。注意機構(Attention mechanism)は、最近、よく自然言語処理の分野で出てくる技術。


注意機構(Attention mechanism)の利点は色々。この論文では、異なる様式のデータ(「文章と音声」とか)を学習することができる点を例に挙げていた。(音声データを元にAttention layerを構築して、文字データを通すとか?)ここら辺は、引用している論文をちゃんと読んでいないのでよく分からない。


論文では、2つのAttentional model (global, local)とInput-feeding approachを提案していた。後者の考え自体は、よくあるものだと思う。モデルは、機械翻訳でよく見られる再帰的ニューラルネットワークをencoder、decoderに使ったSeq2Seq。ここに注意機構(Attention mechanism)がくっついている。


global attentional modelは、encoderの隠れ層を全て使ったattentional model。score (dot, general, concat)を計算→式(7)→ \displaystyle a_{t}\left(S\right) \displaystyle \bar{h_{t}}から \displaystyle c_{t}を計算→式(5)→式(6)。式(8)から \displaystyle a_{t}\left(S\right)を求める場合もある。


local attentional modelは、encoderの隠れ層の一部を使ったattentional model。global attentional modelは、隠れ層を全部使うため、翻訳する文章が長くなればなるほど、計算コストがどんどんと増加するという欠点がある。その欠点を改善するのがlocal attentional model。


具体的には、 \displaystyle \left[p_{t}-D, p_{t}+D\right]の隠れ層を対象にattention layerを構築する。Dはハイパーパラメータ。 \displaystyle p_{t}はMonotonic alignment (local-m)であれば、 \displaystyle p_{t}=t、Predictive alignment (local-p)であれば、式(9)となる。 \displaystyle \left[p_{t}-D, p_{t}+D\right]は、attention layerのそれぞれの \displaystyle a_{t}\left(S\right)が同程度の重みを持つ。一方で、式(10)のような形で \displaystyle a_{t}\left(S\right)を決めると、 \displaystyle p_{t}近辺を重めに加重してくれる。


Input-feeding approachは、decoderのn番目の出力をn+1番目の入力データに結合させて、入力する方式。これにより、より深いネットワークが作れるらしい。


base(普通のRNN?)、reverse(1段目の情報の流れは順方向、2段目の情報の流れは逆方向のstacked RNN?)、dropout、global attention、local-p attention、feed input、unk replace(難解な言葉を記号に置き換える?)を色々と組み合わせた複数のモデルを使って、提案手法の検証を行っていた。


Attentionに使うscoreはlocal-p のgeneralが一番成績がよい。


それぞれのモデルで翻訳させるより、違う構造を持ったニューラルネットワークをアンサンブル化した方が好成績(論文では8つのモデルをアンサンブル化している)。






Sequence-to-Sequence Model with Attention for Time Series Classification

ieeexplore.ieee.org


著者・雑誌名。

Yujin Tang; Jianfeng Xu; Kazunori Matsumoto; Chihiro Ono
2016 IEEE 16th International Conference on Data Mining Workshops (ICDMW), December 2016



内容。

Seq2Seqを使って、時系列データから分類問題を解くという論文。モデルの名前は、Sequence-to-Sequence model with Attentionで、略してS2SwA。


モデルの構造は、一般的なAttention-based seq2seq。時系列データをencoderにあたるLSTMに入力し、encoderの出力をdecoderにあたるLSTMに入力する。decoderでは、それぞれのtime stepの出力を次のLSTMの入力にする。これを繰り返すと全てのtime stepの出力が得られる。これらを全結合層で繋ぎ、最終出力を得る。詳しくは、fig1を参照のこと。with attentionといっているが論文の図のどこにもattention layerが明記されていない…。構造は、先ほどの「Effective Approaches to Attention-based Neural Machine Translation」のモデルと同じだと思う。


このモデルの隠れ層は3層ある。ということは、3層に重なったstacked LSTM?それぞれの層の後にはdropout層が繋がっている。また、このモデルではL2 regularizationが行われている(ネットワークの重みの自乗和が損失関数に足されていて、重みのノルムが大きくなり過ぎないようにしている)。






Temporal pattern attention for multivariate time series forecasting

link.springer.com


著者・雑誌名。

Shun-Yao Shih, Fan-Keng Sun, Hung-yi Lee
Machine Learning, June 2019



内容。

多次元時系列データ間の時間に依存しない関係性「temporal pattern attention」をattentionで抽出し、それをRNNに使うという論文。


論文の導入では、原油、ガソリン、木材の価格を例にとっていた。原油とガソリンには、価格変動に相関があるが、木材には相関がない。そのため、ガソリンの値段を予測する際には、木材価格、原油価格の時系列データを等しく取り扱うよりも、木材価格の時系列データをあまり考慮に入れず、原油価格の時系列データを考慮に入れるようなモデルを作った方がよさそうである。多次元時系列データから特定の時系列データだけに注目して、目的の時系列データを予測しようというのが今回の話。


式(10)のように、一次元畳み込みフィルターを使って、temporal patternを抽出する。m次元時系列データのw個のデータをk個のフィルターで畳み込むと、k個のm次元ベクトルが得られる(wはwindow size)。その後、式(11)で定義されているscore関数で得られた値を元にattention layerを構築する。通常は、score関数で得られた値をsoftmax関数の引数に渡して、attention layerを構築するのだが、この論文では式(12)のようにsigmoid関数に値を渡している。次にcontent vectorを構築する。先ほどのk個のm次元ベクトルとk個のm次元 attention layerのアダマール積を取って、k個のベクトルをすべて足し合わせる。これがcontent vector(式(13))。最後にRNNの最終出力とcontent vectorにそれぞれ重み掛け合わせたものを足し合わせ、そこにさらに重みを掛けたものをこのモデルの最終出力としていた(式(14)、式(15))。


はじめに簡単な例を用いて、提案手法の有用性を検証していた。周波数の違う互いに独立した6つの三角関数を入力して、特定の関数の時間発展を予測すると、attentionがあろうがなかろうが大して結果は変わらない。(Luong attentionは、最初に紹介した論文のattentionだと思う。モデルの隠れ層のサイズは大体、一緒になるようにしてある。そのため、attentionなしのモデルは、ありのモデルと比べてRNNの隠れ層のサイズが大きい)一方で、先ほどの6つの三角関数に対して、それぞれ他の三角関数の成分少しだけ混ぜたシグナル(式(16))を入力し、予測を行うと、提案手法の方がattentionなしのモデルよりも誤差が小さくなることが示されていた。その後、実際のデータセットを使って、モデルの性能を評価していた。






Stock Price Prediction Using Attention-based Multi-Input LSTM

proceedings.mlr.press


著者・雑誌名。

Hao Li, Yanyan Shen, Yanmin Zhu
Proceedings of The 10th Asian Conference on Machine Learning, PMLR, 2018.



内容。

複数の入力(multi-input)を受け付けるattention-based LSTMを使って、株価予測を行ったという論文。Attention-based Multi-Input LSTMに入力されるのは、予測したい株価由来のデータ(Y)、予測したい株価データと正の相関をもつ株価由来のデータ(P)、負の相関を持つ株価由来のデータ(N)、何らかの指標(日経平均株価とか)由来のデータ(I)の4種類。


データの予測は、入力データ量が多くなればなるほど、精度が上がるように思えるが、実際にはそう簡単にいく話ではない。入力データ量が多くなると、計算量もそれに従って増大するだけではなく、例えば、そのデータの中に予測したい時系列データとあまり相関がないデータが混じっていると、そのデータが逆に正確な予測を邪魔してしまう。


そういった事態を避けるために注意機構が用いられる。attention layerがあれば、モデルは自動的にデータの取捨選択を行うようになる。


はじめにP、Nを用意する。 \displaystyle -T_{r}~ \displaystyle Tまでの予測したい株価データと他の株価データのPearsonの相関係数を調べ、正の相関が高い銘柄(P)と負の相関が高い銘柄(N)をそれぞれ複数、選定する(Tは、window size)。


その後、普通のLSTMにY, P, N, Iの株価データを入力し、出力を得る。それぞれのLSTMの重みは共有しておく。PとNに関しては、相関している銘柄を複数(5~20)選んでいるので、出力の平均値を取る。その後、この4種類のデータをmulti-input LSTMに入力する。


multi-input LSTMの詳細は、fig1を参照のこと。multi-inputではあるが、全ての入力データは同等の扱いを受けることはなく、予測したい株価データ(Y)と、それ以外のデータ(P、N、I)の扱いは異なっている。


Yは、入力、入力ゲート、忘却ゲート、出力ゲート全てに影響を及ぼすが、P、N、Iは、入力にしか影響を及ぼさない。P、N、Iの入力ゲートもYによって制御されている。通常のLSTMとattention-based multi-input LSTMの違いは、Yに加えて、P、N、Iの入力(入力ゲートの制御は全てY)がある点と、その先にattention layerがある点。


Attentionの詳細は、式(32)~式(38)。入力と入力ゲートのアダマール積、cell stateでattention layerの重みを構築する。


attention-based multi-input LSTMのそれぞれのtime stepにおける出力は、attention layerに入力される。このattentionの詳細は、式(43)~式(45)を参照のこと。このattention layerの出力は、全結合層に入力され、その後、最終的な出力となる。






DSTP-RNN: A dual-stage two-phase attention-based recurrent neural network for long-term and multivariate time series prediction

arxiv.org


著者・雑誌名。

Yeqi Liu, Chuanyang Gong, Ling Yang, Yingyi Chen
arXiv, April 2019



内容。

spatial attentionとtemporal attentionで、多次元時系列データの空間方向、時間方向の関係性をあぶり出して、それを未来予測に使おうという論文。


モデルの名前は、タイトル通り、dual-stage two-phase attention-based recurrent neural network。略して、DSTP-RNN。ヒトの神経系のシグナルの注意機構からヒントを得たらしい。


まずは、spatial attentionから。spatial attentionは、2回行う。first phase attentionとsecond phase attention。この論文では、2種類のfirst phase attentionを提案していて、採用するattentionによって、モデルはDSTP-RNN、SDTP-RNN-Ⅱと呼び分けられる。


first phase attentionの詳細は、式(2)~式(4)の通り。DSTP-RNNでは、予測したい時系列データ(Y)以外の時系列データ(X)をspatial attention layerに加える。その後、その出力をLSTMに加える。window sizeはT、次元数はn。spatial attentionは、その名の通り、空間方向(n次元方向)に行うため、attention層を通った後は、T次元のベクトルになる。attention層の構築には、time stepがt-1の時のLSTMの隠れ層とcell stateを結合したものを使うので、それぞれのtime stepのattentionの重みは異なる。


DSTP-RNN-Ⅱは、先ほどのattention (first phase attention-Ⅰ)と並列して、別のattention (first phase attention-Ⅱ) layerが備え付けられている。first phase attention-Ⅰの入力はXのみであったが、first phase attention-Ⅱは、Xに加えて、予測したい時系列データ(Y)も入力に加える。それ以外にⅠとⅡの違いはない。phase attention-Ⅱがあることで、よりXとYの関係性を抽出することができる。


first phase attentionの後は、second phase attention。詳細は、式(5)~式(7)。second phase attentionには、first phase attentionのattention層からの出力と予測したい時系列データ(Y)を結合したものを入力する。DSTP-RNNの場合、入力データの次元数はn+1、DSTP-RNN-Ⅱの場合、入力データの次元数は2n+2。window sizeはどちらもTである。second phase attentionの構造は、first phase attentionと同じ。


first phase attentionの重みはviolentだがdecentralizedで、second phase attentionの重みはstationaryでconcentratedであると論文に書いてあったが、おそらくこれはfig3を見る限り、first phase attentionの重みは、それぞれで値が大きく異なり、かつデータ全体をattentionするように学習され、second phase attentionの重みは、first phase attentionと比べて、それぞれの重みの値の差異が小さく、データの一部をattentionするように学習される…ということなのだろう。temporal attentionの前にthird phase attentionを加えてみても、重みが均一になるように学習されるので、attentionとしての役割を果たさない。first phase attentionとsecond phase attentionでは、attentionの仕方が異なるように学習し、third phase attentionは、attention層として機能していない。そのため、このモデルのspatial attentionは、first phase attentionとsecond phase attentionの2つ。


spatial attentionで、予測したい時系列データ(Y)と、それ以外の時系列データ(X)の関係性を抽出した。今度は、時系列データの各time step間の関係性をtemporal attentionにて抽出する。


second phase attentionにはfirst phase attentionのattention層の出力を渡していたが、temporal attentionにはsecond phase attentionのLSTMの隠れ層を渡している。その隠れ層にattentionをかけることで、予測に重要なtime stepの隠れ層をより重く加味して、最終出力を出すことができる。 詳細は、式(8)~式(10)。attention層の重みは、second phase attentionのLSTMの隠れ層とtemporal attentionのLSTMの隠れ層から構築される(式(8))。temporal attentionの重みは、temporal attentionのLSTMの隠れ層を固定し、second phase attentionのLSTMの隠れ層を振って構築する(式(8), 式(9))。重み付けされたsecond phase attentionのLSTMの隠れ層は、式(10)の通り。それぞれのtemporal attentionのLSTMの隠れ層に対して、重みづけされたsecond phase attentionのLSTMの隠れ層がそれぞれ存在する。最後にそれら重みづけた隠れ層をattention layerの重みで再度、重み付し、足し合わせて、context vectorをつくる(式(11))。


temporal attentionのLSTMには、予測したい時系列データ(Y)とcontext vectorを結合し、線形変換を行ったものを入力する(式(13))。temporal attentionのLSTMの隠れ層は、attention層の構築と、最終出力の構築に使われる(式(15))。


window sizeが短いとDSTP-RNN-Ⅱの性能が良く、window sizeが長いとDSTP-RNNの性能が良い。DSTP-RNN-Ⅱは、spatial attentionのfirst phase attention層が並列して、2枚あるので、より細かな多次元時系列データ間の相関関係を抽出しやすく、一方でDSTP-RNNは、短期間で見られる細かな相関関係ではなく、より長期的で安定的な相関関係を抽出することができる。

 

 

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

ofuse.me

 

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