雑記: NeurIPS 2020 pre-proceedings の「シーケンス」を含むタイトル(※)

f:id:cookie-box:20190101155733p:plain:w60

NeurIPS 2020 pre-proceedings をみるとタイトルに sequence/sequential を含む論文が…23件もありますね。多いので、特に「学習対象が系列データである」といえるものに絞りましょう(※ このセリフの最下部にある12件をスキップします)。それでも11件ありますね…。以下にあやしい理解をメモしておきます。

  • 粒子フィルタによる一般化ベイズフィルタリング ― βダイバージェンスを組み込んでモデルや観測の誤りにもロバストなフィルタリングを実現した。
  • 出力間の関連性を考慮した Sequence to Multi-Sequence モデル ― 出力間の関連性を考慮することで従来より高精度な音声分離を実現した。
  • Funnel-Transformer ― エンコーダ内で入力系列を徐々に短い系列に圧縮する「漏斗」transformer を導入し、入力系列を一つのベクトルに埋め込むタスクで transformer より高性能を発揮した。
  • ペアワイズシーケンスアラインメントのための Rank-One モデルの適応的学習 ― を考案した。
  • COT-GAN ― 「因果最適輸送距離(COT)」を導入し時系列を生成するGANを実現した。
  • 2つのBERTをアダプターでつないだ seq2seq モデル ― で効果的なファインチューニングを実現し、機械翻訳タスクで推論速度を半減させつつ SOTA と同等のスコアを達成した。
  • Temporal Spike Sequence Learning Backpropagation(TSSL-BP) ― スパイキングニューラルネットを精度よく学習するための新しい誤差逆伝播法を考案した(系列データの学習ではない)。
  • スパイク列を検出するための点過程モデル ― を考案した。
  • 長文学習のための Big Bird ― 普遍的な表現力を維持しつつアテンションを疎にすることで同じ計算資源で8倍の長さの系列を学習できるようにした。
  • 解釈可能な Covid-19 予測 ― SEIR のような感染症モデルに解釈可能なままに機械学習を導入した。
  • ユーザごとの特徴を考慮したイベントの種別と発生タイミングの予測 ― を考案した。
タイトルを sequence/sequential で検索すると transformer(BERT)の論文が中途半端にヒットしますが、これらを含む論文自体はさらにたくさんあることに留意が必要です。
Generalised Bayesian Filtering via Sequential Monte Carlo
Ayman Boustati, Omer Deniz Akyildiz, Theodoros Damoulas, Adam Johansen
状態空間モデルで分布がガウシアンでない一般的な場合であって、モデルが必ずしも正しく特定されていない場合(?)に、如何にフィルタリングするかという話なのでしょうか? 通常の逐次モンテカルロ法(粒子フィルタ)を何か改良しているのではないかと思いますが、ベータダイバージェンスとは何でしょうか。以下をみるとKLダイバージェンスの拡張のようですね。
Sequence to Multi-Sequence Learning via Conditional Chain Mapping for Mixture Signals
Jing Shi, Xuankai Chang, Pengcheng Guo, Shinji Watanabe, Yusuke Fujita, Jiaming Xu, Bo Xu, Lei Xie
seq2seq モデルならぬ、1つの系列を複数系列にマッピングするモデルでしょうか。AさんとBさんとCさんの会話が重なった音声データから、Aさんの声、Bさんの声、Cさんの声を分離するイメージのようですね。出力系列間の関連性を明示的にモデリングするということですが…Aさんの声を解読できたら、もとの音声データとAさんの声を元にBさんの声を出力するということですかね。それはそうした方がいいですよね。効果的な停止則ももっているようですが、この音声データにはもうしゃべっている人はいないよ、というのを何らかの方法で検知するのでしょうね。
後から大量のラベルなしデータで効果的にチューニングできるような、スケーラブルな言語モデルが望まれているということでしょうか。それはそうですよね。ここでは特に文章を単一のベクトルにエンコーディングするタスクを考えていると。そして、スケーラビリティのためにわざと冗長性をもたせるのでしょうか。隠れ状態の系列を徐々に圧縮していくということですか。funnel とは「漏斗」なんですね。エンコーダ層内で1層を経るごとに16単語→8単語→4単語になっていくんでしょうか。それで空いた計算資源を deeper なモデルや wider なモデルの学習に再投資すると。確かにメモリの節約になりますが再投資の仕方もアルゴリズムに含まれているんでしょうか。とにかく系列に対して1つの判定を下すようなモデルで通常の transformer より高性能であったということです。
シーケンスアラインメントとは2系列の類似箇所を検出する作業なのでしょうか。計算が高コストなんですね。そして、実際には多数のリード(調査対象の塩基配列?の1本?1本をリードというのでしょうか)のうちどの2本が似ているかにしか興味がないんですかね。それで提案手法では Rank-One モデルと多腕バンディットアルゴリズムを導入したということですが。アブストラクトにクラウドソーシングと出てきていますが、クラウドソーシングでも複数の人のアノテーションを統合しますが、Rank-One モデルも複数のセグメントの類似性を統合するのでクラウドソーシングの問題設定で用いられているんでしょうか。
COT-GAN: Generating Sequential Data via Causal Optimal Transport
Tianlin Xu, Wenliang Le, Michael Munn, Beatrice Acciaio
系列データを生成するGANということです。GAN(WGAN)は訓練データの分布と生成データの分布の Wasserstein 距離(最適輸送距離)を小さくしようとするんですよね。しかし、生成するデータが系列データの場合にどうやって分布を似せるべきかは自明でないですね。そこで「因果最適輸送距離(Causal Optimal Transport: COT)」を導入したということですが、どのようなものかはアブストラクトから推測することは難しいですね…。学習のアルゴリズムには Sinkhorn アルゴリズムという Wasserstein 距離を近似するアルゴリズムを適用しているんですね。
Incorporating BERT into Parallel Sequence Decoding with Adapters
Junliang Guo, Zhirui Zhang, Linli Xu, Hao-Ran Wei, Boxing Chen, Enhong Chen
BERT を如何に効果的に seq2seq モデルに組み込むかは自明ではないと。そこで本手法では2つのBERTモデルをエンコーダとデコーダとして採用し、その間に軽量な「アダプター」(これをタスクに応じてチューニングする)を挟む構成をとると。"catastrophic forgetting" というのはファインチューニング時に忘れるべきでない特徴抽出まで全て忘れてしまうことをいうんでしょうか。とりあえずそれを回避できるようです。機械翻訳タスクで推論速度を2倍にしながらアブストラクトに記述の BLEU スコアを達成したようですが、これはよいスコアなんでしょうか…あ、最後に SOTA と同等とありますね。…関係ないですが、英独翻訳と英仏翻訳の BLEU スコアに随分差がありますが、英独翻訳は英仏翻訳よりそんなに困難なものなのでしょうか。
そもそも Spiking neural networks(SNNs)をよく知らないですね…ニューラルネットワークだがスパイクを伝達させてさらに神経細胞に寄せたものなんでしょうか。しかし既存の誤差逆伝播法ではスパイクの不連続性を適切に扱えないと。また、まともな性能を達成するのに何ステップも要するのでスケーラブルでないと。なので Temporal Spike Sequence Learning Backpropagation(TSSL-BP)なる新しい誤差逆伝播法を考案したという話でしょうか。…これ系列データの学習の話ではなかったですね。
Point process models for sequence detection in high-dimensional neural spike trains
Alex Williams, Anthony Degleris, Yixin Wang, Scott Linderman
さっきの論文と紛らわしいですがこれは高次元のスパイク列が学習対象ですね(動物の神経データが学習データであるようです)。教師なしでパターンを発見するという話でしょうか。既存手法は時間ステップが離散化されていることが必要であるとか色々好ましくない点があるんですね。なので点過程モデルを提案したということですが、どのようなモデルなんでしょうか。
Big Bird: Transformers for Longer Sequences
Manzil Zaheer, Guru Guruganesh, Kumar Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed
長い系列(文章)のための BERT、ですよね。BERT はアテンションがあるために系列長の2乗のメモリを消費する、ということでしょうか。そうなんでしたっけ? まあそうとして、それを回避する疎なアテンションを導入したということですね。それでいて表現力をもつと。それで同じ計算資源で従来の8倍の長さの系列を扱えるようになったということです。長文を扱えるようになるのは可能性が広がりますね。
Interpretable Sequence Learning for Covid-19 Forecasting
Sercan Arik, Chun-Liang Li, Jinsung Yoon, Rajarishi Sinha, Arkady Epshteyn, Long Le, Vikas Menon, Shashank Singh, Leyou Zhang, Martin Nikoltchev, Yash Sonthalia, Hootan Nakhost, Elli Kanal, Tomas Pfister
感染症数理モデル(SEIR)のようなモデルに機械学習を組み込んで性能向上させかつ解釈は可能なようにしたということですかね。説明変数のエンコード、コンパートメント毎の時間変化、というコンポーネントを明示的に用意しているのが肝なのでしょうか。政策をサポートするモデルは特に解釈性が重要ということですね。アメリカの州単位や郡単位で検証しているようですね。
User-Dependent Neural Sequence Models for Continuous-Time Event Data
Alex Boyd, Robert Bamler, Stephan Mandt, Padhraic Smyth
ここでは金融商品の取引データや医学的データが意識されているのでしょうか。様々なタイプの出来事がいつ起きるかを予測するのは困難と。現在の SOTA は強度関数(いまこそこのイベントが起きるぞという強度を出力するのでしょうね)を RNN でモデリングしたものであると。しかし既存のモデルは"come from the same data distribution"? これは色々な性格の個々人がいることをきちんと考慮していないという意味でしょうか…。提案手法はユーザ行動のモデルを償却変分推論で学習するんですね。

※ 以下の12件をスキップします。sequential だと強化学習の論文が多くヒットしますね…。

つづかない

雑記: NeurIPS 2020 pre-proceedings の「時系列」を含むタイトル

キャラクターは架空のものです。何かありましたらご指摘いただけますと幸いです。
参考文献

関連記事

f:id:cookie-box:20190101155733p:plain:w60

NeurIPS 2020 pre-proceedings をみるとタイトルに time series を含む論文が…9件もありますね。上から順にメモしていきますか…面倒ですが…。なお、現時点でクリック先で閲覧できるアブストラクトを一通り読んだのみの妄想的な理解であることに留意ください。先に手短にまとめておきます。

  • ODE-LSTMs不定期的サンプルに強い ODE-RNNs を改良し長期依存性を学習できるようにした。
  • Adversarial Sparse Transformer(AST) ― ジェネレータで疎なアテンションを生成しディスクリミネータで予測性能を高めることで長期予測しても誤差が蓄積しないモデルを実現した。
  • Deep Rao-Blackwellised Particle Filters ― 提案分布の factorization と decoder を組み込んだディープなラオ・ブラックウェル化粒子フィルタを提案しスイッチングするシステムを予測できるようにした。
  • 自己相関をもつ時系列どうしの因果関係を高感度に発見する手法 ― を提案した。
  • NeuralCDE ― ODE モデルの途中経過を後から修正できるようにした。
  • temporal saliency rescaling(TSR― 時系列モデルの変数重要度を上手く出せるようにした。
  • STRIPE ― 非定常な幅広い時系列の分布予測を実現した。
  • Normalizing Kalman Filters ― ディープニューラルネットを用いた Normalizing Flow 付きのカルマンフィルタで複雑に分布する多変量時系列の分布予測を実現した。
  • 自己符号化器を用いた時系列からのストレンジアトラクタの再構築 ― カオティックな時系列から主要な成分を抜き出す自己符号化器を学習した。
さらに目的別に整理してみます。
  • 予測:
    • 観測が不規則: ODE-LSTMs、NeuralCDE
    • 長期予測: AST
    • スイッチングするシステムの分布予測: Deep Rao-Blackwellised Particle Filters
    • 非定常な幅広い時系列の分布予測: STRIPE
    • 複雑に分布する多変量時系列の分布予測: Normalizing Kalman Filters
  • 因果推論: 自己相関をもつ時系列どうしの因果関係を高感度に発見する手法
  • 予測モデルの解釈: TSR
  • 主成分の特定: 自己符号化器を用いた時系列からのストレンジアトラクタの再構築
大多数の目的が予測であることは昨年と変わりません。昨年に引き続き ODE モデルが複数提案されていますが、昨年と違い再帰 and/or 畳込みのみのモデルがありませんね。そして、予測に分類される論文の半数は昨年なかった(はず)の分布予測です。そして予測に分類されない発表は昨年に比してかなり実践的な興味に寄っているようにみえます。無論、昨年も今年もタイトルを "time series" でフィルタしているので ”sequential” や "recurrent" やその他のワードも確認しなければなりませんが疲れたので今回はこれで…。
「不規則にサンプリングされた時系列からの長期依存性の学習」…興味深いタイトルです。えっと、
  • 常微分方程式による連続的な隠れ状態をもつ RNN は不規則にサンプリングされた時系列のモデリングに有利であると(昨年 ODE-RNNs がありましたよね)。
  • しかし長期依存性の学習が難しいと。それは RNN の勾配消失/爆発に起因することを示すと。
  • なので ODE-LSTMs にすると。
素人考えでは ODE-RNNs が提案されたら一瞬で ODE-LSTMs が提案されそうな気もするんですが、LSTM への移行がそんなに単純ではないのか、LSTM にする意義が非自明なのか、ODE-RNNs 自体がまだ精査される段階であったんでしょうか。いっても翌年に提案されるのは一瞬でしょうか。昨年2つあった ODE 系が今年も2つありますね。
Adversarial Sparse Transformer for Time Series Forecasting
Sifan Wu, Xi Xiao, Qianggang Ding, Peilin Zhao, Ying Wei, Junzhou Huang
「時系列予測のための敵対的で疎なトランスフォーマー」でしょうか。「点予測モデルはデータの確率的な性質を捉えない」というのはわかりますが、確率的なモデルも同様だとはどういう意味でしょうか…。また、多くのモデルは長いステップ先の予測をすると誤差が蓄積されるとありますね。AR モデルのようなのを想定されているはずです。それらのような問題を GAN をベースにした Adversarial Sparse Transformer(AST) で解決すると。ええ…話がいきなりですね…いまの話のいったいどこから GAN が…。…ジェネレータが生成する疎なアテンションは「次のステップを予測するのに重要なのはこれまでのステップのこのステップとこのステップだけだ」みたいな雰囲気なのでしょうか、わかりませんが。ディスクリミネータの役割は、モデルが生成した次ステップと真の次ステップを見分けて「まだ全然見分けられるんだけど?」と叱咤する係なんですかね、妄想ですが。普通は単にモデルの予測値と真の値との誤差を小さくすればよさそうですが、特に自己回帰しながら長期予測する時系列モデルでは中間予測が重要なので特別にこういう工夫を入れてもよさそうです。…これは結構新鮮なアイデアな感じがしますね。
Deep Rao-Blackwellised Particle Filters for Time Series Forecasting
Richard Kurle, Syama Sundar Rangapuram, Emmanuel de Bézenac, Stephan Günnemann, Jan Gasthaus
「時系列予測のためのディープなラオ・ブラックウェル化粒子フィルタ」…粒子フィルタのラオ・ブラックウェル化がわからないので詰んだんですが…検索したら以下が出てきましたね。「粒子フィルタだが一部の状態については解析的にできるので解析的にやる」というのに「ラオ・ブラックウェル化」という名が付いているんでしょうか…? それでアブストラクトに入ると、スイッチングガウス線形動的システム? これは響き的に以下の図のようなシステムでいいんでしょうか。現実だとどんなデータがこうなるんでしょうか、コマースサイトのログデータはセール期間中と期間外でモードがスイッチする気はしますが。とりあえずこのようなシステムが生成する時系列をいい感じに学習できるんですね。これは元々ラオ・ブラックウェル化粒子フィルタで扱う問題という認識でいいんでしょうか。スイッチングしたらその先は解析的といった感じがしますし。…あ、ディープ化することで非線形にも対応できるんですかね。何やら提案分布を factorization するようですが…?
未知の交絡因子がある場合でも自己相関をもつ時系列どうしの因果関係を高感度に発見するということでいいんでしょうか。既存手法(FCI and variants?)は感度が低いことを示すと。なので新手法を提案するんですが、このアブストラクトは既存手法の知識がないと読むのが困難ですね…。以下にコードが公開されているようです。この論文はモデリングではなく因果関係の検知ですが(広義にはモデリングなんでしょうか)、その検知にもニューラルネットを使うということでもなさそうですね? アブストラクトにもそのようにありませんしリポジトリの setup.py でもそれらしいライブラリを入れていませんし。
Neural Controlled Differential Equations for Irregular Time Series
Patrick Kidger, James Morrill, James Foster, Terry Lyons
また常微分方程式ですね。不規則にサンプリングされた時系列のモデリングに有利だが途中経過が初期条件に縛られてしまい後から修正できないと。なので controlled differential equations なるものを導入して解決するんでしょうか? 提案する NeuralCDE は観測をまたいだ adjoint-based backpropagation を利用できるのも既存手法と異なるようです。これ、途中経過を後から修正できるから一気に複数時点のデータから誤差逆伝播できるという話なんでしょうか? わかりませんが。NeuralCDE が他の ODE モデルを包含していることも示されているようですね。あ、controlled differential equations で検索したときに本論文の GitHub が出てきたので張っておきます。
Benchmarking Deep Learning Interpretability in Time Series Predictions
Aya Abdelsalam Ismail, Mohamed Gunady, Hector Corrada Bravo, Soheil Feizi
Saliency 法とは何でしょうか…とりあえず入力特徴の重要度を出す手法のようですが、時系列データにはあまり適用されていないようですね。RNN、TCN、transformers などの多様なアーキテクチャ間で Saliency 法に基づく解釈手法のパフォーマンスを比較するようです? 解釈手法のパフォーマンスとは何でしょうか…? 精度と感度について以下のようにありますが。
  • 精度 ― 検知された特徴が重要な信号を発していたか。
  • 感度 ― (本当に重要な信号を発していたうち?)検知された特徴の数。
…しかし、これであるネットワーク構造が解釈しやすいとか解釈しにくいとか結論付けられるんでしょうか。Saliency 法がわかっていないからかもしれませんが、手法が悪いかどうかと区別できなさそうですし、どの特徴を重視するかもモデル依存なような…って、基本的には重要な特徴の検知に失敗するんですね? 2ステップの temporal saliency rescaling(TSR を用いると改善されるようですが…これはモデルに手を加えなくてもいいんでしょうか。よくわかりません。
非定常な様々な時系列の将来のある時点の分布を予測するのでしょうか。STRIPE というのがモデル名なのですかね。何の略なのか…STRIPE モデルは DPP(決定的点過程)カーネルというのを組み込んで用いるのでしょうか。寡聞にしてアブストラクトからどんなモデルの系譜なのかよくわかりません…非定常な時系列をそのまま分布予測しようとする自体が取り組まれてこなかったとかなんでしょうか。
Normalizing Kalman Filters for Multivariate Time Series Analysis
Emmanuel de Bézenac, Syama Sundar Rangapuram, Konstantinos Benidis, Michael Bohlke-Schneider, Richard Kurle, Lorenzo Stella, Hilaf Hasson, Patrick Gallinari, Tim Januschowski
カルマンフィルタを Normalizing Flow で強化したということですが、Normalizing Flow とは…以下の記事を参考にすると、ガウス分布にしたがう確率変数に非線形変換を繰り返して複雑な分布を表現するようですが、ディープニューラルネットを用いているのはこの非線形変換なんでしょうか。確かに「KF なので大規模な時系列に適応できるし Normalizing Flow を用いるので分布が複雑でもいい」となりそうな気もしますが。
「時系列からのストレンジアトラクタの再構築(ディープニューラルネットを用いた)」でしょうか。ストレンジアトラクタとは? ローレンツアトラクタを描いたことはありますが、あれはストレンジアトラクタの一種なんですね? 奇妙であればよいと。まあそれで、問題設定としては、普通はたくさんの変数を観測して主要な成分を突き止めるが、観測が少ないときに隠れた支配的な軸を見つけ出すことをしたいんですかね。入力空間を自己符号化器で理想の空間に埋め込むのでしょうか。損失関数が気になりますね。これが novel とありますが。しかし、これって少ない次元の観測から欠けた次元を復元できるといった話なんでしょうか。普通はできない気がしますが、カオスに動き回るのでその動きさえきちんと捉えればできるということなんでしょうか。わかりませんが。アブストラクト内にあるように、色々なデータについて主要な成分を取り出すのに応用できそうですね。

つづかない

Time Series Analysis: ノート5章 最尤推定(その1)

以下の本の5章を読みます。キャラクターは架空のものです。私の誤りは私に帰属します。お気付きの点がありましたらコメントでご指摘いただけますと幸いです。

Time Series Analysis

Time Series Analysis

f:id:cookie-box:20190101155733p:plain:w60

5章はそのタイトルも「最尤推定」ですね。これまでは ARMA 過程

 Y_t = c + \phi_1 Y_{t-1} + \cdots + \phi_p Y_{t-p} + \varepsilon_t +  \theta_1 \varepsilon_{t-1} + \cdots + \theta_q \varepsilon_{t-q}
のパラメータ  \theta = ( c, \, \phi_1, \, \cdots, \, \phi_p, \, \theta_1, \, \cdots, \, \theta_q, \, \sigma^2 )^\top が所与の下で、Y_t がどんな性質をもつかとか、あるステップまで観測した下で先のステップの値がどのように予測できるかを扱ったのですよね。対してこの章ではパラメータを未知として、Y_t の観測値 (y_1, \cdots, y_T) からそれを推定しにいくということです。
  • これまで: \theta が所与の下で Y_t の期待値や自己共分散、条件付き期待値を調べた。
  • ここでは: \theta が未知の下で Y_t の観測値 (y_1, \cdots, y_T) から \theta を推定する。
そして \theta の推定のやり方としては、(Y_1, \cdots, Y_T)確率密度関数  f_{Y_T, \, \cdots, \, Y_1}(y_T, \, \cdots, \, y_1 \, ; \, \theta) の観測値における値を最大にするような \hat{\theta} を推定値とするということです。なんと、そのような考え方があったとは…。

f:id:cookie-box:20190101160814p:plain:w60

それが「最尤推定」だからね。その確率密度関数は、パラメータ \theta の関数と考えると \theta の尤度関数というね。尤度関数の最大点 \hat{\theta}\theta最尤推定量だね。最尤推定量は観測値の関数 \hat{\theta}(y_1, \cdots, y_T) だね。

f:id:cookie-box:20190101155733p:plain:w60

それで、「最尤推定をするためにはホワイトノイズ \varepsilon_t の分布の形を特定しなければならない」? なぜですか?

f:id:cookie-box:20190101160814p:plain:w60

例えば AR(1) 過程  Y_t = c + \phi Y_{t-1} + \varepsilon_t のある1ステップだけの観測値 y_1 が手に入ったとき、尤度関数 L(c, \phi, \sigma^2) = f_{Y_1}(y_1 \, ; c, \phi, \sigma^2) ってどうなる? 過程は定常とするよ。

f:id:cookie-box:20190101155733p:plain:w60

y_1 だけ観測したとき、ですか。パラメータがある  (c, \phi, \sigma^2) だったときにその y_1 がどれくらい観測されやすいのかを考えなければなりませんね。うーん…そもそも定常 AR(1) 過程には期待値があったはずです。パラメータが  (c, \phi, \sigma^2) であるような定常 AR(1) 過程の期待値 E(Y_t) を計算して、y_1 がその期待値に近ければその  (c, \phi, \sigma^2) の尤度は大きいでしょうし、期待値から遠ければその  (c, \phi, \sigma^2) の尤度は小さいのではないかと思います。定常 AR(1) 過程の期待値を復習します。AR(1) 過程の式の両辺の期待値をとります。

 \begin{split} E(Y_t) &= E(c + \phi Y_{t-1} + \varepsilon_t) \\ \Longleftrightarrow \; E(Y_t) &= c + \phi E(Y_{t-1}) \end{split}
いま過程が定常であることを仮定していますから、期待値は時刻によらず  E(Y_t) = E(Y_{t-1}) のはずです。これより、E(Y_t) = c/ (1 - \phi) を得ます。…AR(1) 過程の期待値はわかりましたが、この期待値に照らし合わせて y_1 がどれくらい観測されやすいかは、AR(1) 過程の分散にもよりますね。分散が大きければ期待値から離れた値も観測されやすいですから。分散も先ほどと同様に求められます。
 \begin{split} V(Y_t) &= V(c + \phi Y_{t-1} + \varepsilon_t) \\ \Longleftrightarrow \; V(Y_t) &= V(\phi Y_{t-1}) + V(\varepsilon_t)+ 2{\rm Cov}(\phi Y_{t-1}, \varepsilon_t) \\ \Longleftrightarrow \; V(Y_t) &= \phi^2 V(Y_{t-1}) + \sigma^2 \end{split}
分散もまた時刻によらず  V(Y_t) = V(Y_{t-1}) ですから、V(Y_t) = \sigma^2/ (1 - \phi^2) を得ます。過程の期待値と分散がわかったので、これに照らし合わせて y_1 がどれくらい観測しやすいかを求めればいいです。

f:id:cookie-box:20190101160814p:plain:w60

期待値と分散だけで分布の形って決まる?

f:id:cookie-box:20190101155733p:plain:w60

! き、決まりませんでした…。で、では、歪度や尖度も求めれば…。

f:id:cookie-box:20190101160814p:plain:w60

きりがないな…というか、定常(弱定常)って歪度や尖度まで一定とはいっていないからね。そもそもそのやり方で求まらないよ。

f:id:cookie-box:20190101155733p:plain:w60

なんと…詰みました…。

f:id:cookie-box:20190101160814p:plain:w60

だから扱いやすいホワイトノイズを選べばいいんだよ。正規ホワイトノイズをね。それなら任意の tY_t の分布は正規分布だよ。正規分布は再生性をもつから、正規分布にしたがうノイズを足していっても正規分布にしたがうからね。なら、期待値と分散だけで分布の形が決まるね。

f:id:cookie-box:20190101155733p:plain:w60

確かに正規分布であれば期待値 \mu と分散 \sigma^2 だけで確率密度関数が特定できます。

 \displaystyle f(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left( - \frac{(x-\mu)^2}{2\sigma^2}\right)
でしたら Y_t の分布は先ほど求めた期待値と分散を上式に当てはめて、以下になるはずです。
 \displaystyle f_{Y_1}(y_1 \, ; c, \phi, \sigma^2) = \frac{1}{\sqrt{2 \pi \sigma^2/ (1 - \phi^2)}} \exp \left( - \frac{ \bigl( y_1 - c/ (1 - \phi) \bigr)^2}{2\sigma^2/ (1 - \phi^2)}\right)
これが尤度関数  L(c, \phi, \sigma^2) に他なりません。観測値 y_1 が手に入ったとき、 L(c, \phi, \sigma^2) を最も大きくする  (c, \phi, \sigma^2)y_1 を生成した AR(1) 過程のパラメータだったのだろうと推定すればいいんですね。正規分布のお陰で詰みを回避できました…しかし、ホワイトノイズが正規分布でなかったらどうなるんです? 確率密度関数が特定できなくてやはり詰みませんか?

f:id:cookie-box:20190101160814p:plain:w60

この章では扱われていないと思う。5.2~5.6 節の全てのタイトルに明示的に Gaussian って付いてるし。正規分布じゃなかったら尤度関数をかき下すことはできないからね。じゃあ正規分布じゃなかったらどうするのかは、maximum likelihood estimates of non-Gaussian ARMA processes とかで調べたら色々文献が出てくるんじゃないかな。

ところで、いまはある1ステップだけの観測値 y_1 が手に入ったときの尤度関数を計算したけど、普通は連続する観測値 (y_1, \cdots, y_T) からパラメータを推定するよね。じゃあ、連続する2ステップ (y_1, y_2) を観測したときの尤度関数はどうなる?

f:id:cookie-box:20190101155733p:plain:w60

2点観測したのであれば、その確率密度関数は、1点観測したときの確率密度関数を2乗すればいいのでは?

f:id:cookie-box:20190101160814p:plain:w60

Y_1Y_2 は独立じゃないからね…Y_2Y_1 に依存しているからこそ AR(自己回帰)過程なんだけど…。

f:id:cookie-box:20190101155733p:plain:w60

! す、すみません…AR(1) 過程は  Y_t = c + \phi Y_{t-1} + \varepsilon_t ですから、 Y_2 = c + \phi Y_1 + \varepsilon_2 ですね。Y_2 はこれにしたがって生成されなければなりません。これは、Y_1 = y_1 が観測されている下では、c + \phi y_1 にホワイトノイズ \varepsilon_2 を足したものですから、

 \displaystyle f_{Y_2 | Y_1}(y_2 \, | y_1 \, ; c, \phi, \sigma^2) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left( - \frac{ \bigl( y_2 - c - \phi y_1 \bigr)^2}{2\sigma^2}\right)
です。でしたら (y_1, y_2) の同時分布は、 f_{Y_2, Y_1}(y_2, y_1 \, ; c, \phi, \sigma^2) =f_{Y_2 | Y_1}(y_2 \, | y_1 \, ; c, \phi, \sigma^2)  f_{Y_1}(y_1 \, ; c, \phi, \sigma^2) より、以下ですね。これが (y_1, y_2) を観測したときの尤度関数です。
 \displaystyle f_{Y_2, Y_1}(y_2, y_1 \, ; c, \phi, \sigma^2) = \frac{\sqrt{1 - \phi^2}}{\left( \sqrt{2 \pi \sigma^2} \right)^2} \exp \left( - \frac{ \bigl( y_2 - c - \phi y_1 \bigr)^2}{2\sigma^2} - \frac{ \bigl( y_1 - c/ (1 - \phi) \bigr)^2}{2\sigma^2/ (1 - \phi^2)}\right)

f:id:cookie-box:20190101160814p:plain:w60

うん。さらに連続する3ステップ (y_1, y_2, y_3) を観測したときはこうなるね。

\begin{split} f_{Y_3, Y_2, Y_1}(y_3, y_2, y_1 \, ; c, \phi, \sigma^2) &= f_{Y_3 | Y_2, Y_1}(y_3 \, | y_2, y_1 \, ; c, \phi, \sigma^2) f_{Y_2, Y_1}(y_2, y_1 \, ; c, \phi, \sigma^2) \\ &= \;  f_{Y_3 | Y_2, Y_1}(y_3 \, | y_2, y_1 \, ; c, \phi, \sigma^2)  \\ & \quad \cdot  f_{Y_2 | Y_1}(y_2 \, | y_1 \, ; c, \phi, \sigma^2)  \\ & \quad \cdot f_{Y_1}(y_1 \, ; c, \phi, \sigma^2) \\ &= \; f_{Y_3 | Y_2}(y_3 \, | y_2 \, ; c, \phi, \sigma^2)  \\ & \quad \cdot  f_{Y_2 | Y_1}(y_2 \, | y_1 \, ; c, \phi, \sigma^2)  \\ & \quad \cdot f_{Y_1}(y_1 \, ; c, \phi, \sigma^2) \end{split}
最後の式への式変形は、AR(1) 過程が1ステップ前までにしか依存しないことによったよ。具体的に確率密度関数をかき下すとこうだね。
 \displaystyle f_{Y_3, Y_2, Y_1}(y_3, y_2, y_1 \, ; c, \phi, \sigma^2) = \frac{\sqrt{1 - \phi^2}}{\left( \sqrt{2 \pi \sigma^2} \right)^3} \exp \left( - \sum_{t=2}^3 \frac{ \bigl( y_t - c - \phi y_{t-1} \bigr)^2}{2\sigma^2} - \frac{ \bigl( y_1 - c/ (1 - \phi) \bigr)^2}{2\sigma^2/ (1 - \phi^2)}\right)
これはこのまま一般化できて、(y_1, \cdots, y_T) を観測したときの確率密度関数は以下になるね。
 \displaystyle f_{Y_T, \cdots, Y_1}(y_T, \cdots, y_1 \, ; c, \phi, \sigma^2) = \frac{\sqrt{1 - \phi^2}}{\left( \sqrt{2 \pi \sigma^2} \right)^T} \exp \left( - \sum_{t=2}^T \frac{ \bigl( y_t - c - \phi y_{t-1} \bigr)^2}{2\sigma^2} - \frac{ \bigl( y_1 - c/ (1 - \phi) \bigr)^2}{2\sigma^2/ (1 - \phi^2)}\right)
これが尤度関数 L(c, \phi, \sigma^2) であり、これを最大化する  (c, \phi, \sigma^2) を探すことになるけど、通常はこれの対数をとった対数尤度関数  \mathcal{L}(c, \phi, \sigma^2) を最大化するから、テキストではこちらで表記しているね。それで、上の式は(対数を取れば)予測誤差  y_t - c - \phi y_{t-1} の2乗を足していっているようにみえる。これを尤度関数の予測誤差分解(prediction-error decomposition)というみたいだね。

f:id:cookie-box:20190101155733p:plain:w60

おお、AR(1) 過程の尤度関数はこれで求まりましたね。…ん? 119ページからは AR(1) 過程の尤度関数を求める別の方法が紹介されていますね? y \equiv (y_1, \cdots, y_T)^{\top} と定義するようです。このようなベクトルを定義してどうするんでしょうか…。

f:id:cookie-box:20190101160814p:plain:w60

y が多変量正規分布にしたがうと考えるんだね。期待値ベクトル \mu と分散共分散行列 \Omega は以下になるね。

 \displaystyle \mu = \left(\begin{array}{c} E(Y_1) \\ E(Y_2) \\ \vdots \\ E(Y_T) \end{array}\right)= \left(\begin{array}{c} c/ (1 - \phi) \\ c/ (1 - \phi) \\ \vdots \\ c/ (1 - \phi) \end{array}\right)
 \displaystyle \Omega = \left( \begin{array}{c} V(Y_1) & {\rm Cov}(Y_1, Y_2) & \cdots &  {\rm Cov}(Y_1, Y_T) \\ {\rm Cov}(Y_1, Y_2) & V(Y_2) & \cdots & {\rm Cov}(Y_2, Y_T) \\ \vdots & \vdots & \ldots & \vdots \\ {\rm Cov}(Y_1, Y_T) & {\rm Cov}(Y_2, Y_T) & \cdots & V(Y_T) \end{array} \right)= \frac{\sigma^2}{1-\phi^2}\left(\begin{array}{c} 1 & \phi & \cdots & \phi^{T-1} \\ \phi & 1 & \cdots & \phi^{T-2} \\ \vdots & \vdots & \ldots & \vdots \\ \phi^{T-1} & \phi^{T-2} & \cdots & 1 \end{array}\right)
ちなみに AR(1) 過程の自己共分散は1時点ずれるごとに分散に \phi が1つかかってくるからね。
 {\rm Cov}(Y_t, Y_{t-1}) = {\rm Cov}(c + \phi Y_{t-1} + \varepsilon_t, Y_{t-1}) = \phi {\rm Cov}(Y_{t-1}, Y_{t-1}) = \phi V(Y_{t-1})
そうすると直接 y確率密度関数が出せる。
 \displaystyle f_Y(y \, ; c, \phi, \sigma^2) = \frac{1}{ \sqrt{ (2 \pi)^T | \Omega | } } \exp \left( - \frac{1}{2} (y - \mu)^\top \Omega^{-1}  (y - \mu)\right)
これはさっき求めた確率密度関数と一致する。計算には  \Omega = \sigma^2 V とおいたときに  L^{\top} L = V^{-1} を満たす L を利用しているね。

f:id:cookie-box:20190101155733p:plain:w60

いやいやいや、L が降って湧いていますよね?  L^{\top} L = V^{-1} が成り立つことは検算して確かめよというようにありますが、この L はどうやって考えついたものなんです?

f:id:cookie-box:20190101160814p:plain:w60

うーん、V^{-1} から L を求めるのは LU 分解ともちょっと違うかな? でも、L にはちゃんと意味があるよ。だって、\Omega^{-1} = \sigma^{-2} L\top L確率密度関数に代入したら、

 \displaystyle f_Y(y \, ; c, \phi, \sigma^2) = \frac{1}{ \sqrt{ (2 \pi)^T | \Omega | } } \exp \left( - \frac{1}{2 \sigma^2} (y - \mu)^\top L^\top L  (y - \mu)\right)
となるから、\hat{y} = L(y-\mu) とおくと \hat{y} は各成分が独立で各成分の分散が \sigma^2 になるわけだよね。y の各成分に対して上から順に、「前の成分と独立にした上で、平均を 0 にして、分散を \sigma^2 にする」という操作をやっていけば \hat{y} になるよ。 L はその変換を行列表示したものに他ならない。AR(1) 過程は1ステップ前に依存するだけだからそんな変換は求まるし、そんな変換を求めておけば、分散共分散行列の逆行列を計算する必要もないよね。

f:id:cookie-box:20190101155733p:plain:w60

なるほど? それで、122ページは実際に対数尤度関数の最大点を求める方法ですね。あれ? 対数尤度関数そのものではなくて、y_1 が所与の場合の対数尤度関数を最大化しているんですね?

f:id:cookie-box:20190101160814p:plain:w60

その場合は最小2乗法をかき下せるからね。長い系列を観測している場合、最初の観測値の影響は無視できるし。

つづいたらつづく

雑記: BERTが何をしているかを掘り下げる

貼り付けた Gist の幅では まとめ の箇所が改行されるのでコピペすると以下。

モデル:
  埋め込み層:
    文章内の各トークンの単語を1024次元に埋め込む.
    文章内の各トークンの位置を1024次元に埋め込む.
    文章内の各トークンのタイプを1024次元に埋め込む(※ 今回はすべて同じタイプ).
    3つの埋め込みベクトルを足す.
    正規化して1024次元の特徴ベクトルの列にする.
  エンコーダ層:
    エンコーダ層内の0層目:
      セルフアテンション層:
        マルチヘッドアテンション:
          各特徴ベクトルを64次元に写像する(Q). ※ これを16ヘッド分やる.
          各特徴ベクトルを64次元に写像する(K). ※ これを16ヘッド分やる.
          各特徴ベクトルを64次元に写像する(V). ※ これを16ヘッド分やる.
          softmax(Q・K/√64)・V を計算する. ※ これを16ヘッド分やる.
          ここまでで各トークンが64次元の特徴になる. ※ これが16ヘッド分ある.
          16ヘッドの結果をconcatする.
          ここまでで各トークンが1024次元の特徴になる.
        各トークンごとに1024次元に全結合して正規化する.
      各トークンごとに4096次元に全結合する.
      各トークンごとに1024次元に全結合して正規化する.
    エンコーダ層内の1層目:
    エンコーダ層内の2層目:
    (中略)
    エンコーダ層内の23層目:
      (中略)
      各トークンごとに1024次元に全結合して正規化する.

→ よって,最終的に各トークンが1024次元の特徴ベクトルになる.

雑記

bert-large-cased のパラメータ数は 340M とある。
Pretrained models — transformers 3.1.0 documentation
→ 333579264 だった。
  script.py · GitHub


----------- モデルの埋め込み層 ---------- word_embeddings.weight 29691904 position_embeddings.weight 524288 token_type_embeddings.weight 2048 LayerNorm.weight 1024 LayerNorm.bias 1024 ---------- モデルのエンコーダ層 ---------- attention.self.query.weight 1048576 attention.self.query.bias 1024 attention.self.key.weight 1048576 attention.self.key.bias 1024 attention.self.value.weight 1048576 attention.self.value.bias 1024 attention.output.dense.weight 1048576 attention.output.dense.bias 1024 attention.output.LayerNorm.weight 1024 attention.output.LayerNorm.bias 1024 intermediate.dense.weight 4194304 intermediate.dense.bias 4096 output.dense.weight 4194304 output.dense.bias 1024 output.LayerNorm.weight 1024 output.LayerNorm.bias 1024 エンコーダ層内の0層目計 12596224 エンコーダ層内の1層目計 12596224 エンコーダ層内の2層目計 12596224 エンコーダ層内の3層目計 12596224 エンコーダ層内の4層目計 12596224 エンコーダ層内の5層目計 12596224 エンコーダ層内の6層目計 12596224 エンコーダ層内の7層目計 12596224 エンコーダ層内の8層目計 12596224 エンコーダ層内の9層目計 12596224 エンコーダ層内の10層目計 12596224 エンコーダ層内の11層目計 12596224 エンコーダ層内の12層目計 12596224 エンコーダ層内の13層目計 12596224 エンコーダ層内の14層目計 12596224 エンコーダ層内の15層目計 12596224 エンコーダ層内の16層目計 12596224 エンコーダ層内の17層目計 12596224 エンコーダ層内の18層目計 12596224 エンコーダ層内の19層目計 12596224 エンコーダ層内の20層目計 12596224 エンコーダ層内の21層目計 12596224 エンコーダ層内の22層目計 12596224 エンコーダ層内の23層目計 12596224 ---------- モデルのプーラー層 ---------- dense.weight 1048576 dense.bias 1024 ========== パラメータ数 ========== 333579264